206 lines
7.9 KiB
C#
206 lines
7.9 KiB
C#
using System;
|
||
using System.Configuration;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Drawing;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Net;
|
||
using System.Net.Security;
|
||
using System.Net.NetworkInformation;
|
||
using System.Security.Cryptography.X509Certificates;
|
||
using System.Text;
|
||
using System.Text.RegularExpressions;
|
||
using System.Windows.Forms;
|
||
using Newtonsoft.Json;
|
||
using Newtonsoft.Json.Linq;
|
||
using WebService.SDK;
|
||
|
||
namespace CloudSearch
|
||
{
|
||
public partial class MainForm : Form
|
||
{
|
||
protected static string _connectstring = ConfigurationManager.AppSettings["connectstring"].ToString();
|
||
private const String host = "https://ali-barcode.showapi.com";
|
||
private const String path = "/barcode";
|
||
private const String method = "GET";
|
||
private const String appcode = "99f7d21d35e647e98706f75109f4b655";
|
||
|
||
public MainForm()
|
||
{
|
||
InitializeComponent();
|
||
timer1.Start();
|
||
}
|
||
|
||
private void timer1_Tick(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1],
|
||
_connectstring.Split(',')[2], _connectstring.Split(',')[3]);
|
||
DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet(
|
||
"SELECT * FROM HIGHWAY_EXCHANGE.T_BARCODESEARCH WHERE NVL(BARCODESEARCH_STATE,0) = 0").Tables[0];
|
||
foreach (DataRow _DataRow in _DataTable.Rows)
|
||
{
|
||
BarcodeSearch(_DataRow["BARCODE"].ToString(), _OracleHelper);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteSendLog(ex.Message);
|
||
}
|
||
}
|
||
|
||
protected void BarcodeSearch(string Barcode, OracleHelper _OracleHelper)
|
||
{
|
||
string SqlString = "", _COMMODITY_TYPE = "", _COMMODITY_NAME = "", _COMMODITY_UNIT = "",
|
||
_COMMODITY_RULE = "", _COMMODITY_ORI = "", _COMMODITY_RETAILPRICE = "", _IMAGE_URL = "";
|
||
JObject _JObject = GetBarcodeJson(Barcode);
|
||
|
||
if (_JObject != null && _JObject["showapi_res_body"] != null && _JObject["showapi_res_body"].ToString() != "")
|
||
{
|
||
#region 商品云库查询
|
||
try
|
||
{
|
||
//商品类型
|
||
_COMMODITY_TYPE = _JObject["showapi_res_body"]["goodsType"].ToString().Replace("'", " ");
|
||
_COMMODITY_TYPE = _COMMODITY_TYPE.Split('>').Length > 0 ?
|
||
_COMMODITY_TYPE.Split('>')[_COMMODITY_TYPE.Split('>').Length - 1] : _COMMODITY_TYPE;
|
||
}
|
||
catch
|
||
{
|
||
_COMMODITY_TYPE = "便利店商品";
|
||
}
|
||
try
|
||
{
|
||
//商品名称
|
||
_COMMODITY_NAME = _JObject["showapi_res_body"]["goodsName"].ToString().Replace("'", " ");
|
||
}
|
||
catch
|
||
{
|
||
_COMMODITY_NAME = "便利店商品";
|
||
}
|
||
try
|
||
{
|
||
//商品单位
|
||
_COMMODITY_UNIT = _JObject["showapi_res_body"]["units"].ToString().Replace("'", " ");
|
||
}
|
||
catch
|
||
{
|
||
_COMMODITY_UNIT = "个";
|
||
}
|
||
try
|
||
{
|
||
//商品规格
|
||
_COMMODITY_RULE = _JObject["showapi_res_body"]["spec"].ToString().Replace("'", " ");
|
||
}
|
||
catch
|
||
{
|
||
_COMMODITY_RULE = "个";
|
||
}
|
||
try
|
||
{
|
||
//商品产地
|
||
_COMMODITY_ORI = _JObject["showapi_res_body"]["ycg"].ToString().Replace("'", " ");
|
||
}
|
||
catch
|
||
{
|
||
_COMMODITY_ORI = "*";
|
||
}
|
||
try
|
||
{
|
||
//商品价格
|
||
_COMMODITY_RETAILPRICE = string.IsNullOrEmpty(_JObject["showapi_res_body"]["price"].ToString()) ?
|
||
"NULL" : Regex.Replace(_JObject["showapi_res_body"]["price"].ToString().Replace("'", " "), @"\D+", "");
|
||
}
|
||
catch
|
||
{
|
||
_COMMODITY_RETAILPRICE = "NULL";
|
||
}
|
||
try
|
||
{
|
||
_IMAGE_URL = _JObject["showapi_res_body"]["img"].ToString().Replace("'", " ");
|
||
}
|
||
catch
|
||
{
|
||
_IMAGE_URL = "";
|
||
}
|
||
#endregion
|
||
|
||
string _BARCODELIBRARY_ID = _OracleHelper.ExcuteSqlGetDataSet(
|
||
"SELECT HIGHWAY_EXCHANGE.SEQ_BARCODELIBRARY.NEXTVAL FROM DUAL").Tables[0].Rows[0][0].ToString();
|
||
|
||
SqlString = @"INSERT INTO HIGHWAY_EXCHANGE.T_BARCODELIBRARY (BARCODELIBRARY_ID,COMMODITY_TYPE,
|
||
COMMODITY_CODE,COMMODITY_NAME,COMMODITY_BARCODE,COMMODITY_UNIT,COMMODITY_RULE,
|
||
COMMODITY_ORI,COMMODITY_RETAILPRICE,ADDTIME,IMAGE_URL)
|
||
VALUES (" + _BARCODELIBRARY_ID + ",'" + _COMMODITY_TYPE + "','" + _BARCODELIBRARY_ID.PadLeft(8, '0') +
|
||
"','" + _COMMODITY_NAME + "','" + Barcode + "','" + _COMMODITY_UNIT + "','" +
|
||
_COMMODITY_RULE + "','" + _COMMODITY_ORI + "'," + _COMMODITY_RETAILPRICE +
|
||
",SYSDATE,'" + _IMAGE_URL + "')";
|
||
_OracleHelper.ExcuteSql(SqlString);
|
||
}
|
||
|
||
SqlString = "UPDATE HIGHWAY_EXCHANGE.T_BARCODESEARCH SET BARCODESEARCH_STATE = 9 WHERE BARCODE = '" + Barcode + "'";
|
||
_OracleHelper.ExcuteSql(SqlString);
|
||
}
|
||
|
||
#region 方法 -> 商品库查询
|
||
protected JObject GetBarcodeJson(string Barcode)
|
||
{
|
||
string querys = "code=" + Barcode, bodys = "", url = host + path;
|
||
HttpWebRequest httpRequest = null;
|
||
HttpWebResponse httpResponse = null;
|
||
|
||
if (0 < querys.Length)
|
||
{
|
||
url = url + "?" + querys;
|
||
}
|
||
|
||
if (host.Contains("https://"))
|
||
{
|
||
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
|
||
httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
|
||
}
|
||
else
|
||
{
|
||
httpRequest = (HttpWebRequest)WebRequest.Create(url);
|
||
}
|
||
httpRequest.Method = method;
|
||
httpRequest.Headers.Add("Authorization", "APPCODE " + appcode);
|
||
if (0 < bodys.Length)
|
||
{
|
||
byte[] data = Encoding.UTF8.GetBytes(bodys);
|
||
using (Stream stream = httpRequest.GetRequestStream())
|
||
{
|
||
stream.Write(data, 0, data.Length);
|
||
}
|
||
}
|
||
try
|
||
{
|
||
httpResponse = (HttpWebResponse)httpRequest.GetResponse();
|
||
|
||
//using作为语句,用于定义一个范围,在此范围的末尾将释放对象
|
||
using (StreamReader sr = new StreamReader(httpResponse.GetResponseStream()))
|
||
{
|
||
//ReadToEnd适用于小文件的读取,一次性的返回整个文件
|
||
JObject _JObject = (JObject)JsonConvert.DeserializeObject(sr.ReadToEnd());
|
||
sr.Close();
|
||
return _JObject;
|
||
}
|
||
}
|
||
catch (WebException ex)
|
||
{
|
||
LogHelper.WriteReceiveLog(ex.Message);
|
||
return null;
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
|
||
{
|
||
return true;
|
||
}
|
||
}
|
||
}
|