using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Net.Sockets; using System.Reflection; using System.Text; using System.Threading; using System.Windows.Forms; using SocketTransfer.SDK; namespace WeChatPushTransfer { public partial class Sender : Form { protected string _OracleConnStr = ConfigurationManager.AppSettings["OracleConnStr"].ToString(); protected string _HostIP = ConfigurationManager.AppSettings["HostIP"].ToString(); protected string _HostPort = ConfigurationManager.AppSettings["HostPort"].ToString(); public Sender() { InitializeComponent(); } private void Sender_Load(object sender, EventArgs e) { Assembly assembly = Assembly.LoadFrom("SocketTransfer.SDK.dll"); Type type = typeof(EndAccountReceive); object _object = Activator.CreateInstance(type); propertyGrid1.SelectedObject = _object; string strIPAddress = string.Empty; IPAddress[] arrIPAddresses = System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName()); foreach (IPAddress _IPAddress in arrIPAddresses) { if (!_IPAddress.AddressFamily.Equals(AddressFamily.InterNetwork)) continue; strIPAddress = _IPAddress.ToString(); break; } if (!string.IsNullOrEmpty(strIPAddress)) textBoxIP.Text = strIPAddress; else textBoxIP.Text = "127.0.0.1"; textBoxIP.Text = strIPAddress; textBoxPort.Text = "6060"; timer1.Start(); //timer2.Start(); //timer3.Start(); timer99.Start(); //StartProcess(); } #region 自动发送 -> AutoSend private void AutoSend(WeChatPushReceive _WeChatPushReceive) { try { _WeChatPushReceive.ResetSize(); byte[] _buffer = _WeChatPushReceive.Source; byte[] feedback; feedback = socketor1.Send(_buffer, new IPEndPoint(IPAddress.Parse(_HostIP.Split(',')[0]), int.Parse(_HostPort.Split(',')[0]))); #if DEBUG string dir = Application.StartupPath + "//Log"; string fil = dir + "//" + CommonHelper.GetSendType(_WeChatPushReceive.ReceiveType) + "Send" + DateTime.Now.ToString("yyyyMMdd") + ".log"; if (!Directory.Exists(dir)) { System.IO.Directory.CreateDirectory(dir); } FileStream FileStreamSend = new FileStream(fil, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None); StreamWriter StreamWriterSend = new StreamWriter(FileStreamSend, System.Text.Encoding.UTF8); StreamWriterSend.BaseStream.Seek(0, SeekOrigin.End); StreamWriterSend.WriteLine("{0}", _WeChatPushReceive.Encoding.GetString(_buffer).Trim('\0')); StreamWriterSend.Flush(); StreamWriterSend.Close(); FileStreamSend.Close(); string dir2 = Application.StartupPath + "//Log"; string fil2 = dir2 + "//" + CommonHelper.GetSendType(_WeChatPushReceive.ReceiveType) + "Receive" + DateTime.Now.ToString("yyyyMMdd") + ".log"; if (!Directory.Exists(dir2)) { System.IO.Directory.CreateDirectory(dir2); } FileStream FileStreamReceive = new FileStream(fil2, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None); StreamWriter StreamWriterReceive = new StreamWriter(FileStreamReceive, System.Text.Encoding.UTF8); StreamWriterReceive.BaseStream.Seek(0, SeekOrigin.End); StreamWriterReceive.WriteLine("{0}", _WeChatPushReceive.Encoding.GetString(feedback).Trim('\0')); StreamWriterReceive.Flush(); StreamWriterReceive.Close(); FileStreamReceive.Close(); #endif UpdateDatas(_WeChatPushReceive.ReceiveType, feedback); } catch (Exception ex) { //MessageBox.Show(ex.ToString()); if (!Directory.Exists(Application.StartupPath + "\\ErrorLog")) { System.IO.Directory.CreateDirectory(Application.StartupPath + "\\ErrorLog"); } LogHelper.WriteSendLog(ex.Message, "ErrorLog\\日志_Send" + DateTime.Now.ToString("yyyyMMddHHmmss")); } } #endregion #region 更新 -> UpdateDatas private void UpdateDatas(int ReceiveType, byte[] feedback)//EndAccountSend _EndAccountSend) { string SqlString = ""; try { OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); switch (ReceiveType) { case 4: WeChatPushDetailSend _WeChatPushDetailSend = new WeChatPushDetailSend(feedback); propertyGrid2.SelectedObject = _WeChatPushDetailSend; SqlString = "SELECT 1 FROM HIGHWAY_STORAGE.T_WECHATPUSHDETAIL WHERE PROVINCE_CODE = '" + _WeChatPushDetailSend.PROVINCE_CODE + "' AND WECHATPUSHDETAIL_ID = " + _WeChatPushDetailSend.WECHATPUSHDETAIL_ID; try { if (_OracleHelper.ExcuteSqlGetDataSet(SqlString, "T_WECHATPUSHDETAIL").Tables[0].Rows.Count > 0) { SqlString = "UPDATE HIGHWAY_STORAGE.T_WECHATPUSHDETAIL SET TRANSFER_STATE = 9 WHERE PROVINCE_CODE = '" + _WeChatPushDetailSend.PROVINCE_CODE + "' AND WECHATPUSHDETAIL_ID = " + _WeChatPushDetailSend.WECHATPUSHDETAIL_ID; _OracleHelper.ExcuteSql(SqlString); } } catch (Exception ex) { LogHelper.WriteReceiveLog(ex.Message, "日志_Receive(WECHATPUSHDETAIL_ID)_" + _WeChatPushDetailSend.WECHATPUSHDETAIL_ID); } break; case 5: WeChatPushSaleSend _WeChatPushSaleSend = new WeChatPushSaleSend(feedback); propertyGrid2.SelectedObject = _WeChatPushSaleSend; SqlString = "SELECT 1 FROM HIGHWAY_STORAGE.T_WECHATPUSHSALES WHERE PROVINCE_CODE = '" + _WeChatPushSaleSend.PROVINCE_CODE + "' AND WECHATPUSHSALES_ID = " + _WeChatPushSaleSend.WECHATPUSHSALES_ID; try { if (_OracleHelper.ExcuteSqlGetDataSet(SqlString, "T_WECHATPUSHSALES").Tables[0].Rows.Count > 0) { SqlString = "UPDATE HIGHWAY_STORAGE.T_WECHATPUSHSALES SET TRANSFER_STATE = 9 WHERE PROVINCE_CODE = '" + _WeChatPushSaleSend.PROVINCE_CODE + "' AND WECHATPUSHSALES_ID = " + _WeChatPushSaleSend.WECHATPUSHSALES_ID; _OracleHelper.ExcuteSql(SqlString); } } catch (Exception ex) { LogHelper.WriteReceiveLog(ex.Message, "日志_Receive(WECHATPUSHSALES_ID)_" + _WeChatPushSaleSend.WECHATPUSHSALES_ID); } break; } } catch (Exception ex) { LogHelper.WriteReceiveLog(ex.Message); } } #endregion #region 传输内容 -> StartProcess protected void StartProcess(object _object = null) { try { string SQLString = null; OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); if (_object == null) { #region 检测工具状态 SQLString = "SELECT * FROM HIGHWAY_EXCHANGE.T_SYSCODE ORDER BY SERVERPARTCODE"; try { foreach (DataRow _DataRow in _OracleHelper.ExcuteSqlGetDataSet(SQLString, "T_TRANSFERTOOL").Tables[0].Rows) { TransferTool _TransferTool = new TransferTool(); _TransferTool.SERVERPARTCODE = _DataRow["SERVERPARTCODE"].ToString(); _TransferTool.SERVERPART_NAME = _DataRow["SERVERPART_NAME"].ToString(); _TransferTool.TRANSFERTOOL_DATE = DateTime.Now.ToString(); _TransferTool.TRANSFER_ID = 99; _TransferTool.ReceiveType = 99; byte[] _buffer = _TransferTool.Source; byte[] feedback; feedback = socketor1.Send(_buffer, new IPEndPoint(IPAddress.Parse(_HostIP.Split(',')[0]), int.Parse(_HostPort.Split(',')[0]))); } } catch { } #endregion } else { switch (_object.ToString()) { case "4": #region 推送信息 try { _OracleHelper.ExcuteSql(@"UPDATE HIGHWAY_STORAGE.T_WECHATPUSHDETAIL SET TRANSFER_STATE = 1 WHERE NVL(TRANSFER_STATE,0) = 0 AND PROVINCE_CODE IS NOT NULL AND WECHATPUSHDETAIL_ID IS NOT NULL"); foreach (DataRow _DataRow in _OracleHelper.ExcuteSqlGetDataSet( @"SELECT * FROM HIGHWAY_STORAGE.T_WECHATPUSHDETAIL WHERE TRANSFER_STATE = 1 AND ROWNUM <= 1", "T_WECHATPUSHDETAIL").Tables[0].Rows) { try { if (string.IsNullOrEmpty(_DataRow["WECHATPUSHDETAIL_ID"].ToString())) { continue; } WeChatPushDetailReceive _WeChatPushDetailReceive = new WeChatPushDetailReceive(); _WeChatPushDetailReceive.ReceiveType = 4; _WeChatPushDetailReceive.WECHATPUSHDETAIL_ID = int.Parse(_DataRow["WECHATPUSHDETAIL_ID"].ToString()); _WeChatPushDetailReceive.RTWECHATPUSH_ID = string.IsNullOrEmpty(_DataRow["RTWECHATPUSH_ID"].ToString()) ? 0 : int.Parse(_DataRow["RTWECHATPUSH_ID"].ToString()); _WeChatPushDetailReceive.DIRECTION_IDS = _DataRow["DIRECTION_IDS"].ToString(); _WeChatPushDetailReceive.GROUP_TYPE = string.IsNullOrEmpty(_DataRow["GROUP_TYPE"].ToString()) ? 0 : int.Parse(_DataRow["GROUP_TYPE"].ToString()); _WeChatPushDetailReceive.USER_NAME = _DataRow["USER_NAME"].ToString(); _WeChatPushDetailReceive.STATISTICS_DATE = _DataRow["STATISTICS_DATE"].ToString(); _WeChatPushDetailReceive.CURRENT_TOTALPRICE = string.IsNullOrEmpty(_DataRow["CURRENT_TOTALPRICE"].ToString()) ? 0 : double.Parse(_DataRow["CURRENT_TOTALPRICE"].ToString()); _WeChatPushDetailReceive.CASHPAY = string.IsNullOrEmpty(_DataRow["CASHPAY"].ToString()) ? 0 : double.Parse(_DataRow["CASHPAY"].ToString()); _WeChatPushDetailReceive.DIFFERENT_PRICE_MORE = string.IsNullOrEmpty(_DataRow["DIFFERENT_PRICE_MORE"].ToString()) ? 0 : double.Parse(_DataRow["DIFFERENT_PRICE_MORE"].ToString()); _WeChatPushDetailReceive.DIFFERENT_PRICE_LESS = string.IsNullOrEmpty(_DataRow["DIFFERENT_PRICE_LESS"].ToString()) ? 0 : double.Parse(_DataRow["DIFFERENT_PRICE_LESS"].ToString()); _WeChatPushDetailReceive.TICKETCOUNT = string.IsNullOrEmpty(_DataRow["TICKETCOUNT"].ToString()) ? 0 : double.Parse(_DataRow["TICKETCOUNT"].ToString()); _WeChatPushDetailReceive.TOTALOFFAMOUNT = string.IsNullOrEmpty(_DataRow["TOTALOFFAMOUNT"].ToString()) ? 0 : double.Parse(_DataRow["TOTALOFFAMOUNT"].ToString()); _WeChatPushDetailReceive.MOBILEPAYMENT = string.IsNullOrEmpty(_DataRow["MOBILEPAYMENT"].ToString()) ? 0 : double.Parse(_DataRow["MOBILEPAYMENT"].ToString()); _WeChatPushDetailReceive.PASS_COUNT = string.IsNullOrEmpty(_DataRow["PASS_COUNT"].ToString()) ? 0 : double.Parse(_DataRow["PASS_COUNT"].ToString()); _WeChatPushDetailReceive.COMMODITY_COUNT = string.IsNullOrEmpty(_DataRow["COMMODITY_COUNT"].ToString()) ? 0 : double.Parse(_DataRow["COMMODITY_COUNT"].ToString()); _WeChatPushDetailReceive.TOTAL_COUNT = string.IsNullOrEmpty(_DataRow["TOTAL_COUNT"].ToString()) ? 0 : double.Parse(_DataRow["TOTAL_COUNT"].ToString()); _WeChatPushDetailReceive.HOLIDAY_REVENUE = string.IsNullOrEmpty(_DataRow["HOLIDAY_REVENUE"].ToString()) ? 0 : double.Parse(_DataRow["HOLIDAY_REVENUE"].ToString()); _WeChatPushDetailReceive.HOLIDAY_TICKETCOUNT = string.IsNullOrEmpty(_DataRow["HOLIDAY_TICKETCOUNT"].ToString()) ? 0 : double.Parse(_DataRow["HOLIDAY_TICKETCOUNT"].ToString()); _WeChatPushDetailReceive.HOLIDAY_TOTALCOUNT = string.IsNullOrEmpty(_DataRow["HOLIDAY_TOTALCOUNT"].ToString()) ? 0 : double.Parse(_DataRow["HOLIDAY_TOTALCOUNT"].ToString()); _WeChatPushDetailReceive.HOLIDAY_DAYS = string.IsNullOrEmpty(_DataRow["HOLIDAY_DAYS"].ToString()) ? 0 : double.Parse(_DataRow["HOLIDAY_DAYS"].ToString()); _WeChatPushDetailReceive.PROMOTION_REVENUES = _DataRow["PROMOTION_REVENUES"].ToString(); _WeChatPushDetailReceive.WEEK_REVENUE = string.IsNullOrEmpty(_DataRow["WEEK_REVENUE"].ToString()) ? 0 : double.Parse(_DataRow["WEEK_REVENUE"].ToString()); _WeChatPushDetailReceive.WEEK_AVERAGEPRICE = string.IsNullOrEmpty(_DataRow["WEEK_AVERAGEPRICE"].ToString()) ? 0 : double.Parse(_DataRow["WEEK_AVERAGEPRICE"].ToString()); _WeChatPushDetailReceive.WEEK_YEARONYEAR = string.IsNullOrEmpty(_DataRow["WEEK_YEARONYEAR"].ToString()) ? 0 : double.Parse(_DataRow["WEEK_YEARONYEAR"].ToString()); _WeChatPushDetailReceive.MONTH_REVENUE = string.IsNullOrEmpty(_DataRow["MONTH_REVENUE"].ToString()) ? 0 : double.Parse(_DataRow["MONTH_REVENUE"].ToString()); _WeChatPushDetailReceive.MONTH_AVERAGEPRICE = string.IsNullOrEmpty(_DataRow["MONTH_AVERAGEPRICE"].ToString()) ? 0 : double.Parse(_DataRow["MONTH_AVERAGEPRICE"].ToString()); _WeChatPushDetailReceive.MONTH_YEARONYEAR = string.IsNullOrEmpty(_DataRow["MONTH_YEARONYEAR"].ToString()) ? 0 : double.Parse(_DataRow["MONTH_YEARONYEAR"].ToString()); _WeChatPushDetailReceive.YEAR_REVENUE = string.IsNullOrEmpty(_DataRow["YEAR_REVENUE"].ToString()) ? 0 : double.Parse(_DataRow["YEAR_REVENUE"].ToString()); _WeChatPushDetailReceive.YEAR_AVERAGEPRICE = string.IsNullOrEmpty(_DataRow["YEAR_AVERAGEPRICE"].ToString()) ? 0 : double.Parse(_DataRow["YEAR_AVERAGEPRICE"].ToString()); _WeChatPushDetailReceive.YEAR_YEARONYEAR = string.IsNullOrEmpty(_DataRow["YEAR_YEARONYEAR"].ToString()) ? 0 : double.Parse(_DataRow["YEAR_YEARONYEAR"].ToString()); _WeChatPushDetailReceive.YEAR_TOTALPRICE = string.IsNullOrEmpty(_DataRow["YEAR_TOTALPRICE"].ToString()) ? 0 : double.Parse(_DataRow["YEAR_TOTALPRICE"].ToString()); _WeChatPushDetailReceive.MARKET_REVENUE = string.IsNullOrEmpty(_DataRow["MARKET_REVENUE"].ToString()) ? 0 : double.Parse(_DataRow["MARKET_REVENUE"].ToString()); _WeChatPushDetailReceive.RESTAURANT_REVENUE = string.IsNullOrEmpty(_DataRow["RESTAURANT_REVENUE"].ToString()) ? 0 : double.Parse(_DataRow["RESTAURANT_REVENUE"].ToString()); _WeChatPushDetailReceive.SNACK_REVENUE = string.IsNullOrEmpty(_DataRow["SNACK_REVENUE"].ToString()) ? 0 : double.Parse(_DataRow["SNACK_REVENUE"].ToString()); _WeChatPushDetailReceive.OTHER_REVENUE = string.IsNullOrEmpty(_DataRow["OTHER_REVENUE"].ToString()) ? 0 : double.Parse(_DataRow["OTHER_REVENUE"].ToString()); _WeChatPushDetailReceive.COMPREHENSIVE_REVENUE = string.IsNullOrEmpty(_DataRow["COMPREHENSIVE_REVENUE"].ToString()) ? 0 : double.Parse(_DataRow["COMPREHENSIVE_REVENUE"].ToString()); _WeChatPushDetailReceive.THEME_REVENUE = string.IsNullOrEmpty(_DataRow["THEME_REVENUE"].ToString()) ? 0 : double.Parse(_DataRow["THEME_REVENUE"].ToString()); _WeChatPushDetailReceive.STANDARD_REVENUE = string.IsNullOrEmpty(_DataRow["STANDARD_REVENUE"].ToString()) ? 0 : double.Parse(_DataRow["STANDARD_REVENUE"].ToString()); _WeChatPushDetailReceive.PAKINGZONE_REVENUE = string.IsNullOrEmpty(_DataRow["PAKINGZONE_REVENUE"].ToString()) ? 0 : double.Parse(_DataRow["PAKINGZONE_REVENUE"].ToString()); _WeChatPushDetailReceive.SERVERPART_REVENUE = _DataRow["SERVERPART_REVENUE"].ToString(); _WeChatPushDetailReceive.PROVINCE_CODE = _DataRow["PROVINCE_CODE"].ToString(); _WeChatPushDetailReceive.WECHATPUSHDETAIL_DESC = _DataRow["WECHATPUSHDETAIL_DESC"].ToString(); AutoSend(_WeChatPushDetailReceive); } catch (Exception ex) { LogHelper.WriteSendLog(ex.Message, "日志_Send(WECHATPUSHDETAIL_ID)_" + _DataRow["WECHATPUSHDETAIL_ID"].ToString()); } } } catch (Exception ex) { LogHelper.WriteSendLog(ex.Message); } #endregion break; case "5": #region 单品详情 try { _OracleHelper.ExcuteSql(@"UPDATE HIGHWAY_STORAGE.T_WECHATPUSHSALES SET TRANSFER_STATE = 1 WHERE NVL(TRANSFER_STATE,0) = 0 AND PROVINCE_CODE IS NOT NULL AND WECHATPUSHSALES_ID IS NOT NULL"); //SELLDATA_DATE > SYSDATE - 1/24 AND foreach (DataRow _DataRow in _OracleHelper.ExcuteSqlGetDataSet( @"SELECT * FROM HIGHWAY_STORAGE.T_WECHATPUSHSALES WHERE TRANSFER_STATE = 1 AND ROWNUM <= 1", "T_WECHATPUSHSALES").Tables[0].Rows) { try { if (string.IsNullOrEmpty(_DataRow["WECHATPUSHSALES_ID"].ToString())) { continue; } WeChatPushSaleReceive _WeChatPushSaleReceive = new WeChatPushSaleReceive(); _WeChatPushSaleReceive.ReceiveType = 5; _WeChatPushSaleReceive.WECHATPUSHSALES_ID = int.Parse(_DataRow["WECHATPUSHSALES_ID"].ToString()); _WeChatPushSaleReceive.WECHATPUSHDETAIL_ID = int.Parse(_DataRow["WECHATPUSHDETAIL_ID"].ToString()); _WeChatPushSaleReceive.GROUP_TYPE = int.Parse(_DataRow["GROUP_TYPE"].ToString()); _WeChatPushSaleReceive.DATA_TYPE = int.Parse(_DataRow["DATA_TYPE"].ToString()); _WeChatPushSaleReceive.FIRST_RANK = _DataRow["FIRST_RANK"].ToString(); _WeChatPushSaleReceive.SECOND_RANK = _DataRow["SECOND_RANK"].ToString(); _WeChatPushSaleReceive.THIRD_RANK = _DataRow["THIRD_RANK"].ToString(); _WeChatPushSaleReceive.FOURTH_RANK = _DataRow["FOURTH_RANK"].ToString(); _WeChatPushSaleReceive.FIFTH_RANK = _DataRow["FIFTH_RANK"].ToString(); _WeChatPushSaleReceive.SIXTH_RANK = _DataRow["SIXTH_RANK"].ToString(); _WeChatPushSaleReceive.SEVENTH_RANK = _DataRow["SEVENTH_RANK"].ToString(); _WeChatPushSaleReceive.EIGHTH_RANK = _DataRow["EIGHTH_RANK"].ToString(); _WeChatPushSaleReceive.NINTH_RANK = _DataRow["NINTH_RANK"].ToString(); _WeChatPushSaleReceive.TENTH_RANK = _DataRow["TENTH_RANK"].ToString(); _WeChatPushSaleReceive.PROVINCE_CODE = _DataRow["PROVINCE_CODE"].ToString(); _WeChatPushSaleReceive.WECHATPUSHSALES_DESC = _DataRow["WECHATPUSHSALES_DESC"].ToString(); AutoSend(_WeChatPushSaleReceive); } catch (Exception ex) { LogHelper.WriteSendLog(ex.Message, "日志_Send(WECHATPUSHSALES_ID)_" + _DataRow["WECHATPUSHSALES_ID"].ToString()); } } } catch (Exception ex) { LogHelper.WriteSendLog(ex.Message); } #endregion break; default: #region 检测工具状态 SQLString = "SELECT * FROM HIGHWAY_EXCHANGE.T_SYSCODE ORDER BY SERVERPARTCODE"; try { foreach (DataRow _DataRow in _OracleHelper.ExcuteSqlGetDataSet(SQLString, "T_TRANSFERTOOL").Tables[0].Rows) { TransferTool _TransferTool = new TransferTool(); _TransferTool.SERVERPARTCODE = _DataRow["SERVERPARTCODE"].ToString(); _TransferTool.SERVERPART_NAME = _DataRow["SERVERPART_NAME"].ToString(); _TransferTool.TRANSFERTOOL_DATE = DateTime.Now.ToString(); _TransferTool.TRANSFER_ID = 99; _TransferTool.ReceiveType = 99; byte[] _buffer = _TransferTool.Source; byte[] feedback; feedback = socketor1.Send(_buffer, new IPEndPoint(IPAddress.Parse(_HostIP.Split(',')[0]), int.Parse(_HostPort.Split(',')[0]))); } } catch { } #endregion break; } } } catch (Exception ex) { LogHelper.WriteSendLog(ex.Message); } } #endregion #region 线程1 -> timer1_Tick private void timer1_Tick(object sender, EventArgs e) { //Thread _Thread = new Thread(new ThreadStart(new ThreadStart(() => StartProcess(0)))); //_Thread.Start(); StartProcess(4); StartProcess(5); } #endregion #region 线程 -> 心跳检测 private void timer99_Tick(object sender, EventArgs e) { Thread _Thread = new Thread(new ThreadStart(new ThreadStart(() => StartProcess()))); _Thread.Start(); } #endregion } }