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; } } }