using System; using System.Collections.Generic; using System.Reflection; using System.Collections; using System.Diagnostics; using System.Data; using System.Linq; using System.Text; using System.IO; using System.Configuration; using SuperMap.RealEstate.Utility; namespace SocketTransfer.SDK { public class EventsCommodity { #region 公共方法 public static byte[] DoEvent(byte[] _Receive, int Type = 1) { try { switch (Type) { case 1: using (SocketReceive _SocketReceive = new SocketReceive(_Receive)) { if (!_SocketReceive.Valid()) { throw new Exception("非法数据包!"); } switch (_SocketReceive.ReceiveType) { case 0: using (EndAccountReceive _EndAccountReceive = new EndAccountReceive(_Receive)) { if (_EndAccountReceive.Valid()) { _EndAccountReceive.ResetSize(); return DoEvent(_EndAccountReceive).ResetSize(); } } break; case 1: using (Transfer_SellDataReceive _Transfer_SellDataReceive = new Transfer_SellDataReceive(_Receive)) { if (_Transfer_SellDataReceive.Valid()) { _Transfer_SellDataReceive.ResetSize(); return DoEvent(_Transfer_SellDataReceive).ResetSize(); } } break; case 2: using (CommoditySaleReceive _CommoditySaleReceive = new CommoditySaleReceive(_Receive)) { if (_CommoditySaleReceive.Valid()) { _CommoditySaleReceive.ResetSize(); return DoEvent(_CommoditySaleReceive).ResetSize(); } } break; case 3: using (Transfer_SaleReceive _Transfer_SaleReceive = new Transfer_SaleReceive(_Receive)) { if (_Transfer_SaleReceive.Valid()) { _Transfer_SaleReceive.ResetSize(); return DoEvent(_Transfer_SaleReceive).ResetSize(); } } break; case 6: using (DataCollectionReceive _DataCollectionReceive = new DataCollectionReceive(_Receive)) { if (_DataCollectionReceive.Valid()) { _DataCollectionReceive.ResetSize(); return DoEvent(_DataCollectionReceive).ResetSize(); } } break; } } break; case 2: using (WeChatPushReceive _WeChatPushReceive = new WeChatPushReceive(_Receive)) { if (!_WeChatPushReceive.Valid()) { throw new Exception("非法数据包!"); } switch (_WeChatPushReceive.ReceiveType) { case 4: using (WeChatPushDetailReceive _WeChatPushDetailReceive = new WeChatPushDetailReceive(_Receive)) { if (_WeChatPushDetailReceive.Valid()) { _WeChatPushDetailReceive.ResetSize(); return DoEvent(_WeChatPushDetailReceive).ResetSize(); } } break; case 5: using (WeChatPushSaleReceive _WeChatPushSaleReceive = new WeChatPushSaleReceive(_Receive)) { if (_WeChatPushSaleReceive.Valid()) { _WeChatPushSaleReceive.ResetSize(); return DoEvent(_WeChatPushSaleReceive).ResetSize(); } } break; } } break; } throw new Exception("未定义接受方法或数据包不完整!"); } catch (Exception ex) { LogHelper.WriteReceiveLog(ex.Message); return null; } } static void SaveRecord(EndAccountReceive receive, EndAccountSend send) { try { //using (SB.BankBusinessRecord bankBusinessRecord = new SB.BankBusinessRecord()) //{ // bankBusinessRecord.Bank_Code = receive.BankCode; // bankBusinessRecord.Business_Code = receive.BusinessCode; // bankBusinessRecord.Back_Code = send.BackCode; // bankBusinessRecord.Operate_Date = System.DateTime.Now; // bankBusinessRecord.Operate_Packet = send.Encoding.GetString(send.Source); // bankBusinessRecord.Operate_Receive = receive.Source; // string oo = receive.Encoding.GetString(receive.Source); // //SuperMap.RealEstate.Utility.ObjectHelper.XmlSerialize(receive.Source); // bankBusinessRecord.Insert(); //} //using (SB.BankBusinessRecord bankBusinessRecordsend = new SB.BankBusinessRecord()) //{ // bankBusinessRecordsend.Bank_Code = receive.BankCode; // bankBusinessRecordsend.Business_Code = receive.BusinessCode; // bankBusinessRecordsend.Back_Code = send.BackCode; // bankBusinessRecordsend.Operate_Date = System.DateTime.Now; // bankBusinessRecordsend.Operate_Packet = send.Encoding.GetString(receive.Source); // bankBusinessRecordsend.Operate_Receive = send.Source;//receive.Source; // string oo = receive.Encoding.GetString(receive.Source); // //SuperMap.RealEstate.Utility.ObjectHelper.XmlSerialize(receive.Source); // bankBusinessRecordsend.Insert(); //} } catch (System.Exception ex) { ErrorRecord(ex, receive.Source); //send.BackCode = "12"; } } #region 获取BLOB static byte[] ReadFileStream(string path) { FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read); byte[] bytes = new byte[fileStream.Length]; fileStream.Read(bytes, 0, bytes.Length); fileStream.Close(); Stream stream = new MemoryStream(bytes); byte[] bytes2 = new byte[stream.Length]; stream.Read(bytes2, 0, bytes2.Length); stream.Seek(0, SeekOrigin.Begin); return bytes2; } #endregion #region 错误记录 static void ErrorRecord(Exception _Exception, byte[] _Receive) { System.IO.StreamWriter writer = null; string _ErrorReceive = ""; try { if (ConfigurationManager.AppSettings["ErrorRecord"].ToString().ToLower() == "true") { using (SocketReceive socketCommodityReceive = new SocketReceive(_Receive)) { if (!socketCommodityReceive.Valid()) { _ErrorReceive = "非法数据包!"; } else { #region 获取接收到的包 // switch (socketCommodityReceive.BusinessCode) //{ // case "01": // using (SocketCommodityReceive01 receive01 = new SocketCommodityReceive01(_Receive)) // { // if (receive01.Valid()) // { // receive01.ResetSize(); // } // } // break; // case "02": // using (SocketCommodityReceive02 receive02 = new SocketCommodityReceive02(_Receive)) // { // if (receive02.Valid()) // { // receive02.ResetSize(); // } // } // break; // case "03": // using (SocketCommodityReceive03 receive03 = new SocketCommodityReceive03(_Receive)) // { // if (receive03.Valid()) // { // receive03.ResetSize(); // } // } // break; // case "04": // using (SocketCommodityReceive04 receive04 = new SocketCommodityReceive04(_Receive)) // { // if (receive04.Valid()) // { // receive04.ResetSize(); // } // } // break; // case "05": // using (SocketCommodityReceive05 receive05 = new SocketCommodityReceive05(_Receive)) // { // if (receive05.Valid()) // { // receive05.ResetSize(); // } // } // break; // case "06": // using (SocketCommodityReceive06 receive06 = new SocketCommodityReceive06(_Receive)) // { // receive06.ResetSize(); // if (receive06.Valid()) // } // break; // case "07": // using (SocketCommodityReceive07 receive07 = new SocketCommodityReceive07(_Receive)) // { // if (receive07.Valid()) // { // receive07.ResetSize(); // } // } // break; // case "08": // using (SocketCommodityReceive08 receive08 = new SocketCommodityReceive08(_Receive)) // { // if (receive08.Valid()) // { // receive08.ResetSize(); // } // } // break; // case "09": // using (SocketCommodityReceive09 receive09 = new SocketCommodityReceive09(_Receive)) // { // if (receive09.Valid()) // { // receive09.ResetSize(); // } // } // break; //} #endregion } } _ErrorReceive = _ErrorReceive + ""; string path = ConfigurationManager.AppSettings["ErrorLog"].ToString(); string filename = System.DateTime.Now.ToString("yyyyMMdd", System.Globalization.DateTimeFormatInfo.InvariantInfo) + ".txt"; if (!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path); } System.IO.FileInfo file = new System.IO.FileInfo(path + "/" + filename); writer = new System.IO.StreamWriter(file.FullName, true, System.Text.Encoding.Default);//文件不存在就创建,true表示追加 writer.WriteLine("--------ERROR_START------"); writer.WriteLine(System.DateTime.Now.ToString()); writer.WriteLine("-------------------------"); writer.WriteLine("Message:" + _Exception.Message.ToString()); writer.WriteLine("StackTrace:" + _Exception.StackTrace.ToString()); writer.WriteLine("Source:" + _Exception.Source.ToString()); writer.WriteLine("TargetSite:" + _Exception.TargetSite.ToString()); writer.WriteLine("---------------------------ERROR_END-------------------------------------------"); writer.WriteLine("--------------------------------------------------------------------------------------"); } } catch (System.Exception ex) { Trace.Write(ex.Message.ToString()); } finally { if (writer != null) { writer.Close(); } } } #endregion #region 对象的反射 ///// ///// 对象的反射 ///// ///// 源对象 ///// 目标对象 ///// 传入的源对象 ///// 传入的目标对象 /// 过滤的字段 public static void Assignment(O o, T t, params string[] fieles) { Type TType = typeof(T); Type OType = typeof(O); PropertyInfo[] tps = TType.GetProperties(); PropertyInfo[] ops = OType.GetProperties(); for (int i = 0; i < ops.Length; i++) { if (!fieles.Contains(ops[i].Name)) { for (int j = 0; j < tps.Length; j++) { if (ops[i].Name == tps[j].Name) { string opsi = ops[i].PropertyType.ToString(); string tpsj = tps[j].PropertyType.ToString(); if (opsi == tpsj) { tps[j].SetValue(t, ops[i].GetValue(o, null), null); break; } else { switch (tps[i].PropertyType.ToString()) { case "System.Nullable`1[System.Int32]": if (IsType(ops[j].PropertyType, "System.Nullable`1[System.Int64]")) { if (ops[i].GetValue(o, null) != null) { tps[j].SetValue(t, (Int32)ops[i].GetValue(o, null), null); break; } } else if (IsType(ops[j].PropertyType, "System.Nullable`1[System.Int16]")) { if (ops[i].GetValue(o, null) != null) { tps[j].SetValue(t, Int32.Parse(ops[i].GetValue(o, null).ToString()), null); break; } break; } break; case "System.Nullable`1[System.Int64]": if (IsType(ops[j].PropertyType, "System.Nullable`1[System.Int32]")) { if (ops[i].GetValue(o, null) != null) { tps[j].SetValue(t, (Int64)ops[i].GetValue(o, null), null); break; } } else if (IsType(ops[j].PropertyType, "System.Nullable`1[System.Int16]")) { if (ops[i].GetValue(o, null) != null) { tps[j].SetValue(t, (Int64)ops[i].GetValue(o, null), null); break; } } break; case "System.Nullable`1[System.Int16]": if (IsType(ops[j].PropertyType, "System.Nullable`1[System.Int32]")) { if (ops[i].GetValue(o, null) != null) { tps[j].SetValue(t, Int16.Parse(ops[i].GetValue(o, null).ToString()), null); break; } } else if (IsType(ops[j].PropertyType, "System.Nullable`1[System.Int64]")) { if (!ops[i].GetValue(o, null).Equals(null)) { tps[j].SetValue(t, (Int16)ops[i].GetValue(o, null), null); break; } } break; } } } } } } } public static T Parse(object objValue, T defaultValue) { T returnValue = defaultValue; if (objValue != null && objValue != DBNull.Value) { try { returnValue = (T)objValue; } catch { returnValue = defaultValue; } } //返回值 return returnValue; } /// /// 类型匹配 /// /// 类型 /// 类型名称 /// public static bool IsType(Type type, string typeName) { if (type.ToString() == typeName) return true; if (type.ToString() == "System.Object") return false; return IsType(type.BaseType, typeName); } #endregion #endregion #region 需调试的函数 #region EndAccountSend static EndAccountSend DoEvent(EndAccountReceive _EndAccountReceive) { EndAccountSend _EndAccountSend = new EndAccountSend(); _EndAccountSend.ReceiveType = _EndAccountReceive.ReceiveType; _EndAccountSend.SERVERPARTCODE = _EndAccountReceive.SERVERPARTCODE; _EndAccountSend.SHOPCODE = _EndAccountReceive.SHOPCODE; _EndAccountSend.MACHINECODE = _EndAccountReceive.MACHINECODE; _EndAccountSend.ENDACCOUNT_DATE = _EndAccountReceive.ENDACCOUNT_DATE; _EndAccountSend.ENDACCOUNT_STARTDATE = _EndAccountReceive.ENDACCOUNT_STARTDATE; _EndAccountSend.TRANSFER_ID = _EndAccountReceive.TRANSFER_ID; _EndAccountSend.FLAG = _EndAccountReceive.FLAG; return _EndAccountSend; } #endregion #region SellDataSend static SellDataSend DoEvent(SellDataReceive _SellDataReceive) { SellDataSend _SellDataSend = new SellDataSend(); _SellDataSend.ReceiveType = _SellDataReceive.ReceiveType; _SellDataSend.SERVERPARTCODE = _SellDataReceive.SERVERPARTCODE; _SellDataSend.SHOPCODE = _SellDataReceive.SHOPCODE; _SellDataSend.MACHINECODE = _SellDataReceive.MACHINECODE; _SellDataSend.SELLDATA_DATE = _SellDataReceive.SELLDATA_DATE; _SellDataSend.TICKETCODE = _SellDataReceive.TICKETCODE; _SellDataSend.TRANSFER_ID = _SellDataReceive.TRANSFER_ID; _SellDataSend.LINENUM = _SellDataReceive.LINENUM; //SaveRecord(_SellDataReceive, _SellDataSend); return _SellDataSend; } static Transfer_SellDataSend DoEvent(Transfer_SellDataReceive _Transfer_SellDataReceive) { Transfer_SellDataSend _Transfer_SellDataSend = new Transfer_SellDataSend(); _Transfer_SellDataSend.ReceiveType = _Transfer_SellDataReceive.ReceiveType; _Transfer_SellDataSend.SERVERPARTCODE = _Transfer_SellDataReceive.SERVERPARTCODE; _Transfer_SellDataSend.SHOPCODE = _Transfer_SellDataReceive.SHOPCODE; _Transfer_SellDataSend.MACHINECODE = _Transfer_SellDataReceive.MACHINECODE; _Transfer_SellDataSend.SELLDATA_DATE = _Transfer_SellDataReceive.SELLDATA_DATE; _Transfer_SellDataSend.TICKETCODE = _Transfer_SellDataReceive.TICKETCODE; _Transfer_SellDataSend.TRANSFER_ID = _Transfer_SellDataReceive.TRANSFER_ID; //SaveRecord(_SellDataReceive, _SellDataSend); return _Transfer_SellDataSend; } #endregion #region CommoditySaleSend static CommoditySaleSend DoEvent(CommoditySaleReceive _CommoditySaleReceive) { CommoditySaleSend _CommoditySaleSend = new CommoditySaleSend(); _CommoditySaleSend.ReceiveType = _CommoditySaleReceive.ReceiveType; _CommoditySaleSend.SERVERPARTCODE = _CommoditySaleReceive.SERVERPARTCODE; _CommoditySaleSend.SHOPCODE = _CommoditySaleReceive.SHOPCODE; _CommoditySaleSend.STARTDATE = _CommoditySaleReceive.STARTDATE; _CommoditySaleSend.ENDDATE = _CommoditySaleReceive.ENDDATE; _CommoditySaleSend.TRANSFER_ID = _CommoditySaleReceive.TRANSFER_ID; //SaveRecord(_SellDataReceive, _SellDataSend); return _CommoditySaleSend; } #endregion #region Transfer_SaleSend static Transfer_SaleSend DoEvent(Transfer_SaleReceive _Transfer_SaleReceive) { Transfer_SaleSend _Transfer_SaleSend = new Transfer_SaleSend(); _Transfer_SaleSend.ReceiveType = _Transfer_SaleReceive.ReceiveType; _Transfer_SaleSend.SERVERPARTCODE = _Transfer_SaleReceive.SERVERPARTCODE; _Transfer_SaleSend.SHOPCODE = _Transfer_SaleReceive.SHOPCODE; _Transfer_SaleSend.STARTDATE = _Transfer_SaleReceive.STARTDATE; _Transfer_SaleSend.ENDDATE = _Transfer_SaleReceive.ENDDATE; _Transfer_SaleSend.TRANSFER_ID = _Transfer_SaleReceive.TRANSFER_ID; //SaveRecord(_SellDataReceive, _SellDataSend); return _Transfer_SaleSend; } #endregion #region WeChatPushDetailSend static WeChatPushDetailSend DoEvent(WeChatPushDetailReceive _WeChatPushDetailReceive) { WeChatPushDetailSend _WeChatPushDetailSend = new WeChatPushDetailSend(); _WeChatPushDetailSend.ReceiveType = _WeChatPushDetailReceive.ReceiveType; _WeChatPushDetailSend.GROUP_TYPE = _WeChatPushDetailReceive.GROUP_TYPE; _WeChatPushDetailSend.PROVINCE_CODE = _WeChatPushDetailReceive.PROVINCE_CODE; _WeChatPushDetailSend.WECHATPUSHDETAIL_ID = _WeChatPushDetailReceive.WECHATPUSHDETAIL_ID; _WeChatPushDetailSend.RTWECHATPUSH_ID = _WeChatPushDetailReceive.RTWECHATPUSH_ID; _WeChatPushDetailSend.DIRECTION_IDS = _WeChatPushDetailReceive.DIRECTION_IDS; _WeChatPushDetailSend.USER_NAME = _WeChatPushDetailReceive.USER_NAME; _WeChatPushDetailSend.STATISTICS_DATE = _WeChatPushDetailReceive.STATISTICS_DATE; //SaveRecord(_SellDataReceive, _SellDataSend); return _WeChatPushDetailSend; } #endregion #region WeChatPushSaleSend static WeChatPushSaleSend DoEvent(WeChatPushSaleReceive _WeChatPushSaleReceive) { WeChatPushSaleSend _WeChatPushSaleSend = new WeChatPushSaleSend(); _WeChatPushSaleSend.ReceiveType = _WeChatPushSaleReceive.ReceiveType; _WeChatPushSaleSend.GROUP_TYPE = _WeChatPushSaleReceive.GROUP_TYPE; _WeChatPushSaleSend.PROVINCE_CODE = _WeChatPushSaleReceive.PROVINCE_CODE; _WeChatPushSaleSend.WECHATPUSHSALES_ID = _WeChatPushSaleReceive.WECHATPUSHSALES_ID; _WeChatPushSaleSend.WECHATPUSHDETAIL_ID = _WeChatPushSaleReceive.WECHATPUSHDETAIL_ID; _WeChatPushSaleSend.GROUP_TYPE = _WeChatPushSaleReceive.GROUP_TYPE; _WeChatPushSaleSend.DATA_TYPE = _WeChatPushSaleReceive.DATA_TYPE; //SaveRecord(_SellDataReceive, _SellDataSend); return _WeChatPushSaleSend; } #endregion #region DataCollectionSend static DataCollectionSend DoEvent(DataCollectionReceive _DataCollectionReceive) { DataCollectionSend _DataCollectionSend = new DataCollectionSend(); _DataCollectionSend.ReceiveType = _DataCollectionReceive.ReceiveType; _DataCollectionSend.SERVERPARTCODE = _DataCollectionReceive.SERVERPARTCODE; _DataCollectionSend.SHOPCODE = _DataCollectionReceive.SHOPCODE; _DataCollectionSend.MACHINECODE = _DataCollectionReceive.MACHINECODE; _DataCollectionSend.MACADDRESS = _DataCollectionReceive.MACADDRESS; _DataCollectionSend.DATACOLLECTION_DATE = _DataCollectionReceive.DATACOLLECTION_DATE; _DataCollectionSend.DATACOLLECTION_TYPE = _DataCollectionReceive.DATACOLLECTION_TYPE; _DataCollectionSend.DATACOLLECTION_ID = _DataCollectionReceive.DATACOLLECTION_ID; _DataCollectionSend.TRANSFER_ID = _DataCollectionReceive.TRANSFER_ID; //SaveRecord(_SellDataReceive, _SellDataSend); return _DataCollectionSend; } #endregion #endregion } }