2025-03-28 09:49:56 +08:00

206 lines
7.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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