SIMPosMerchantTradeService.cs 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. using System;
  2. using System.Threading;
  3. using System.Linq;
  4. using System.Data;
  5. using Library;
  6. using MySystem.Models;
  7. using System.Collections.Generic;
  8. using LitJson;
  9. using Newtonsoft.Json;
  10. /// <summary>
  11. /// 广电卡交易数据导入
  12. /// </summary>
  13. namespace MySystem
  14. {
  15. public class SIMPosMerchantTradeService
  16. {
  17. public readonly static SIMPosMerchantTradeService Instance = new SIMPosMerchantTradeService();
  18. private SIMPosMerchantTradeService()
  19. {
  20. }
  21. public void Start()//启动
  22. {
  23. Thread thread = new Thread(ImportPostDo); // 广电卡导激活和交易
  24. thread.IsBackground = true;
  25. thread.Start();
  26. Thread thread1 = new Thread(SIMActDo); // 通过接口获取广电卡激活数据
  27. thread1.IsBackground = true;
  28. thread1.Start();
  29. Thread thread2 = new Thread(AutoSIMAct); // 自动通过接口获取广电卡激活数据
  30. thread2.IsBackground = true;
  31. thread2.Start();
  32. }
  33. public void ImportPostDo()
  34. {
  35. while (true)
  36. {
  37. try
  38. {
  39. string data = RedisDbconn.Instance.RPop<string>("SIMPosMerchantTradeQueue");
  40. if (!string.IsNullOrEmpty(data))
  41. {
  42. string[] dataList = data.Split("#cut#");
  43. string _ExcelPath = dataList[0];
  44. string _Kind = dataList[1];
  45. string checkKey = dataList[2];
  46. string Operator = dataList[3]; // 操作人
  47. int SuccessCount = 0;
  48. int DoCount = 0;
  49. string FullExcelPath = function.getPath(_ExcelPath);
  50. FullExcelPath = FullExcelPath.Replace("//", "/");
  51. DataTable list = new PublicFunction().ExcelToDataTable(FullExcelPath);
  52. int TotalCount = list.Rows.Count;
  53. while (DoCount < list.Rows.Count)
  54. {
  55. WebCMSEntities db = new WebCMSEntities();
  56. SpModels.WebCMSEntities spdb = new SpModels.WebCMSEntities();
  57. //导激活
  58. if (_Kind == "1")
  59. {
  60. var tran = db.Database.BeginTransaction();
  61. try
  62. {
  63. int Size = 100;
  64. if (list.Rows.Count - DoCount < 100)
  65. {
  66. Size = list.Rows.Count - DoCount;
  67. }
  68. Dictionary<string, int> storeData = new Dictionary<string, int>();
  69. for (int i = DoCount; i < DoCount + Size; i++)
  70. {
  71. DataRow dr = list.Rows[i];
  72. SIMActInfo sIMActInfo = new SIMActInfo
  73. {
  74. OrderNo = dr["订单编码"].ToString(),
  75. CreateDate = dr["订单创建时间"].ToString(),
  76. PhoneNumber = dr["选择号码"].ToString(),
  77. HasFirstCharge = dr["是否有首充"].ToString(),
  78. FirstChargeAmount = dr["首充金额(元)"].ToString(),
  79. Province = dr["号码归属省份"].ToString(),
  80. City = dr["号码归属地市"].ToString(),
  81. ProductName = dr["商品名称"].ToString(),
  82. ActiveName = dr["促销活动名称"].ToString(),
  83. ProductType = dr["商品类型名称"].ToString(),
  84. ActualAmount = dr["实付金额(元)"].ToString(),
  85. OrderStatus = dr["订单状态"].ToString(),
  86. ActStatus = dr["激活状态名称"].ToString(),
  87. ActDate = dr["激活时间"].ToString(),
  88. WorkNo = dr["BOSS员工工号"].ToString(),
  89. AccountName = dr["账号姓名"].ToString(),
  90. SimNo = dr["SIM卡号"].ToString()
  91. };
  92. AddSIMActInfo(sIMActInfo);
  93. SuccessCount += 1;
  94. }
  95. DoCount += Size;
  96. spdb.SaveChanges();
  97. tran.Commit();
  98. if (DoCount >= list.Rows.Count)
  99. {
  100. RedisDbconn.Instance.Set("SIMPosMerchantTradeCheckImport:" + checkKey, "success|" + SuccessCount);
  101. RedisDbconn.Instance.SetExpire("SIMPosMerchantTradeCheckImport:" + checkKey, 60000);
  102. }
  103. }
  104. catch (Exception ex)
  105. {
  106. DoCount = list.Rows.Count;
  107. function.WriteLog(ex.ToString(), "导入广电卡激活数据");
  108. tran.Rollback();
  109. ErrorMsg msg = new ErrorMsg()
  110. {
  111. Time = DateTime.Now,
  112. ErrorContent = ex.ToString(),
  113. };
  114. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入广电卡激活数据Excel文件异常");
  115. }
  116. tran.Dispose();
  117. }
  118. //导交易
  119. if (_Kind == "2")
  120. {
  121. function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "导交易打日志");
  122. function.WriteLog(list.Rows.Count.ToString(), "导交易打日志");
  123. var tran = db.Database.BeginTransaction();
  124. try
  125. {
  126. int Size = 100;
  127. if (list.Rows.Count - DoCount < 100)
  128. {
  129. Size = list.Rows.Count - DoCount;
  130. }
  131. Dictionary<string, int> storeData = new Dictionary<string, int>();
  132. for (int i = DoCount; i < DoCount + Size; i++)
  133. {
  134. DataRow dr = list.Rows[i];
  135. function.WriteLog(i + "--" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-" + dr["SIM卡号"].ToString(), "导交易打日志");
  136. SIMTradeInfo sIMTradeInfo = new SIMTradeInfo
  137. {
  138. Mobile = dr["用户手机号"].ToString(),
  139. SimNo = dr["SIM卡号"].ToString(),
  140. CreateMonth = dr["入网月份"].ToString(),
  141. SettleMonth = dr["结算月份"].ToString(),
  142. SettleTime = dr["结算账期"].ToString(),
  143. SettleSpace = dr["结算场景"].ToString(),
  144. BusinessType = dr["业务类型"].ToString(),
  145. Province = dr["用户省份"].ToString(),
  146. City = dr["用户地市"].ToString(),
  147. Team = dr["团队归属"].ToString(),
  148. WorkName = dr["行销宝姓名"].ToString(),
  149. WorkNo = dr["行销宝工号"].ToString(),
  150. ProductName = dr["商品名称"].ToString(),
  151. TotalAmount = dr["账单总金额"].ToString(),
  152. InAmount = dr["套内金额"].ToString(),
  153. OutAmount = dr["套外金额"].ToString(),
  154. UserStatus = dr["用户状态"].ToString(),
  155. ChannelCode = dr["渠道编码"].ToString(),
  156. ChannelName = dr["渠道名称"].ToString(),
  157. OrderCreateTime = dr["订单创建时间"].ToString(),
  158. OrderStatus = dr["订单状态"].ToString(),
  159. ActTime = dr["激活时间"].ToString(),
  160. SourceProductName = dr["原订单商品名称"].ToString(),
  161. ProductType = dr["商品类型名称"].ToString(),
  162. ActivityName = dr["促销活动名称"].ToString(),
  163. Percent = dr["分成比例"].ToString(),
  164. OrgDivi = dr["机构分成"].ToString()
  165. };
  166. AddSIMTradeInfo(sIMTradeInfo);
  167. function.WriteLog(i + "-end--" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-" + dr["SIM卡号"].ToString(), "导交易打日志");
  168. SuccessCount += 1;
  169. }
  170. DoCount += Size;
  171. db.SaveChanges();
  172. tran.Commit();
  173. if (DoCount >= list.Rows.Count)
  174. {
  175. RedisDbconn.Instance.Set("SIMPosMerchantTradeCheckImport:" + checkKey, "success|" + SuccessCount);
  176. RedisDbconn.Instance.SetExpire("SIMPosMerchantTradeCheckImport:" + checkKey, 60000);
  177. }
  178. }
  179. catch (Exception ex)
  180. {
  181. DoCount = list.Rows.Count;
  182. function.WriteLog(ex.ToString(), "导入广电卡交易数据");
  183. tran.Rollback();
  184. ErrorMsg msg = new ErrorMsg()
  185. {
  186. Time = DateTime.Now,
  187. ErrorContent = ex.ToString(),
  188. };
  189. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入广电卡交易数据Excel文件异常");
  190. }
  191. tran.Dispose();
  192. function.WriteLog("end!!" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "导交易打日志");
  193. }
  194. }
  195. }
  196. else
  197. {
  198. Thread.Sleep(5000);
  199. }
  200. }
  201. catch (Exception ex)
  202. {
  203. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "后台导入Excel文件队列异常");
  204. }
  205. }
  206. }
  207. public void AutoSIMAct()
  208. {
  209. while (true)
  210. {
  211. try
  212. {
  213. string DateStr = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
  214. RedisDbconn.Instance.AddList("SIMActInfo", DateStr);
  215. }
  216. catch { }
  217. Thread.Sleep(3600000);
  218. }
  219. }
  220. /// <summary>
  221. /// 通过接口获取广电卡激活数据
  222. /// </summary>
  223. public void SIMActDo()
  224. {
  225. while (true)
  226. {
  227. string time = RedisDbconn.Instance.RPop<string>("SIMActInfo");
  228. if (!string.IsNullOrEmpty(time))
  229. {
  230. try
  231. {
  232. // string check = function.ReadInstance("/GetSIMActInfo/check" + time + ".txt");
  233. // if (string.IsNullOrEmpty(check))
  234. // {
  235. // function.WritePage("/GetSIMActInfo/", "check" + time + ".txt", DateTime.Now.ToString("HH:mm:ss"));
  236. var result = RadioCardHelper.Instance.QueryCardOrderInfo(time, time, "1", "99999");
  237. result = result.Replace("null", "\"\"");
  238. JsonData jsonObj = JsonMapper.ToObject(result);
  239. if (jsonObj["resultCode"].ToString() == "1")
  240. {
  241. SpModels.WebCMSEntities spdb = new SpModels.WebCMSEntities();
  242. var data = jsonObj["data"]["records"];
  243. for (int i = 0; i < data.Count; i++)
  244. {
  245. var iccId = data[i]["iccId"].ToString();
  246. // var bindRecord = spdb.BindRecord.FirstOrDefault(m => m.MerSnNo == iccId) ?? new SpModels.BindRecord();
  247. // var merchants = spdb.Merchants.FirstOrDefault(m => m.SnNo == iccId) ?? new SpModels.Merchants();
  248. // if (bindRecord.Id == 0 && merchants.Id == 0)
  249. // {
  250. // {"orderNo":"B20240319215437195664","orderCreateTime":"03/19/2024 21:54:37","phoneNo":"19238664877","firstCharge":"否","initialChargeAmount":"0.00","province":"贵州省","city":"遵义市","productName":"双百套餐","promotionName":null,"productTypeName":"基础套餐","paidInAmount":"100.00","orderStatus":"已完成","activationStatusName":"已激活","activationTime":"03/19/2024 21:58:23","jobId":"VCH010131087","iccId":"89861500232320195477"}
  251. SIMActInfo sIMActInfo = new SIMActInfo
  252. {
  253. OrderNo = data[i]["orderNo"].ToString(), //订单编码
  254. CreateDate = data[i]["orderCreateTime"].ToString(), //订单创建时间
  255. PhoneNumber = data[i]["phoneNo"].ToString(), //选择号码
  256. HasFirstCharge = data[i]["firstCharge"].ToString(), //是否有首充
  257. FirstChargeAmount = data[i]["initialChargeAmount"].ToString(), //首充金额(元)
  258. Province = data[i]["province"].ToString(), //号码归属省份
  259. City = data[i]["city"].ToString(), //号码归属地市
  260. ProductName = data[i]["productName"].ToString(), //商品名称
  261. ActiveName = data[i]["promotionName"].ToString(), //促销活动名称
  262. ProductType = data[i]["productTypeName"].ToString(), //商品类型名称
  263. ActualAmount = data[i]["paidInAmount"].ToString(), //实付金额(元)
  264. OrderStatus = data[i]["orderStatus"].ToString(), //订单状态
  265. ActStatus = data[i]["activationStatusName"].ToString(), //激活状态名称
  266. ActDate = data[i]["activationTime"].ToString(), //激活时间
  267. WorkNo = data[i]["jobId"].ToString(), //BOSS员工工号
  268. // sIMActInfo.AccountName = data[""].ToString(); //账号姓名
  269. AccountName = "", //账号姓名
  270. SimNo = iccId //SIM卡号
  271. };
  272. AddSIMActInfo(sIMActInfo);
  273. // }
  274. }
  275. }
  276. // }
  277. }
  278. catch (Exception ex)
  279. {
  280. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "获取广电卡激活信息队列异常");
  281. }
  282. }
  283. Thread.Sleep(6000);
  284. }
  285. }
  286. /// <summary>
  287. /// 添加广电卡激活数据
  288. /// </summary>
  289. /// <param name="sIMActInfo"></param>
  290. public void AddSIMActInfo(SIMActInfo sIMActInfo)
  291. {
  292. SpModels.WebCMSEntities spdb = new SpModels.WebCMSEntities();
  293. string json = "{";
  294. json += "\"OrderNo\":\"" + sIMActInfo.OrderNo + "\",";
  295. json += "\"CreateDate\":\"" + sIMActInfo.CreateDate + "\",";
  296. json += "\"PhoneNumber\":\"" + sIMActInfo.PhoneNumber + "\",";
  297. json += "\"HasFirstCharge\":\"" + sIMActInfo.HasFirstCharge + "\",";
  298. json += "\"FirstChargeAmount\":\"" + sIMActInfo.FirstChargeAmount + "\",";
  299. json += "\"Province\":\"" + sIMActInfo.Province + "\",";
  300. json += "\"City\":\"" + sIMActInfo.City + "\",";
  301. json += "\"ProductName\":\"" + sIMActInfo.ProductName + "\",";
  302. json += "\"ActiveName\":\"" + sIMActInfo.ActiveName + "\",";
  303. json += "\"ProductType\":\"" + sIMActInfo.ProductType + "\",";
  304. json += "\"ActualAmount\":\"" + sIMActInfo.ActualAmount + "\",";
  305. json += "\"OrderStatus\":\"" + sIMActInfo.OrderStatus + "\",";
  306. json += "\"ActStatus\":\"" + sIMActInfo.ActStatus + "\",";
  307. json += "\"ActDate\":\"" + sIMActInfo.ActDate + "\",";
  308. json += "\"WorkNo\":\"" + sIMActInfo.WorkNo + "\",";
  309. json += "\"AccountName\":\"" + sIMActInfo.AccountName + "\",";
  310. json += "\"SimNo\":\"" + sIMActInfo.SimNo + "\"";
  311. json += "}";
  312. if(!spdb.BindRecord.Any(m => m.MerSnNo == sIMActInfo.SimNo && m.ChannelSerial == sIMActInfo.OrderNo && m.Field5 == sIMActInfo.ActStatus))
  313. {
  314. spdb.BindRecord.Add(new SpModels.BindRecord()
  315. {
  316. CreateDate = DateTime.Parse(sIMActInfo.CreateDate),
  317. UpdateTime = DateTime.Parse(sIMActInfo.CreateDate), //机具绑定、解绑时间
  318. CreateTime = DateTime.Parse(sIMActInfo.CreateDate), //商户操作时间
  319. MerNewSnNo = sIMActInfo.PhoneNumber, //商户手机号
  320. MerSnNo = sIMActInfo.SimNo, //序列号
  321. MerName = sIMActInfo.AccountName, //商户名称
  322. MerNo = sIMActInfo.PhoneNumber, //商户编号
  323. ChannelSerial = sIMActInfo.OrderNo,
  324. Remark = sIMActInfo.ProductType,
  325. Field1 = sIMActInfo.Province,
  326. Field2 = sIMActInfo.ActiveName,
  327. Field3 = sIMActInfo.ProductName,
  328. Field4 = sIMActInfo.WorkNo,
  329. Field5 = sIMActInfo.ActStatus,
  330. SeoTitle = sIMActInfo.ActualAmount,
  331. SeoKeyword = sIMActInfo.ActDate,
  332. SeoDescription = json,
  333. ProductType = "14",
  334. Status = 1,
  335. });
  336. spdb.Merchants.Add(new SpModels.Merchants()
  337. {
  338. SnNo = sIMActInfo.SimNo,
  339. CreateTime = DateTime.Parse(sIMActInfo.CreateDate),
  340. UpdateTime = DateTime.Parse(sIMActInfo.CreateDate),
  341. AgentName = sIMActInfo.AccountName,
  342. MerRealName = sIMActInfo.AccountName,
  343. MerMobile = sIMActInfo.PhoneNumber,
  344. MerNo = sIMActInfo.PhoneNumber,
  345. MerName = sIMActInfo.AccountName,
  346. ProductType = "14",
  347. Status = 1,
  348. });
  349. spdb.SaveChanges();
  350. }
  351. spdb.Dispose();
  352. }
  353. /// <summary>
  354. /// 添加广电卡激活数据
  355. /// </summary>
  356. /// <param name="sIMActInfo"></param>
  357. public void AddSIMTradeInfo(SIMTradeInfo sIMTradeInfo)
  358. {
  359. WebCMSEntities db = new WebCMSEntities();
  360. SpModels.WebCMSEntities spdb = new SpModels.WebCMSEntities();
  361. string json = "{";
  362. json += "\"Mobile\":\"" + sIMTradeInfo.Mobile + "\",";
  363. json += "\"SimNo\":\"" + sIMTradeInfo.SimNo + "\",";
  364. json += "\"CreateMonth\":\"" + sIMTradeInfo.CreateMonth + "\",";
  365. json += "\"SettleMonth\":\"" + sIMTradeInfo.SettleMonth + "\",";
  366. json += "\"SettleTime\":\"" + sIMTradeInfo.SettleTime + "\",";
  367. json += "\"SettleSpace\":\"" + sIMTradeInfo.SettleSpace + "\",";
  368. json += "\"BusinessType\":\"" + sIMTradeInfo.BusinessType + "\",";
  369. json += "\"Province\":\"" + sIMTradeInfo.Province + "\",";
  370. json += "\"City\":\"" + sIMTradeInfo.City + "\",";
  371. json += "\"Team\":\"" + sIMTradeInfo.Team + "\",";
  372. json += "\"WorkName\":\"" + sIMTradeInfo.WorkName + "\",";
  373. json += "\"WorkNo\":\"" + sIMTradeInfo.WorkNo + "\",";
  374. json += "\"ProductName\":\"" + sIMTradeInfo.ProductName + "\",";
  375. json += "\"TotalAmount\":\"" + sIMTradeInfo.TotalAmount + "\",";
  376. json += "\"InAmount\":\"" + sIMTradeInfo.InAmount + "\",";
  377. json += "\"OutAmount\":\"" + sIMTradeInfo.OutAmount + "\",";
  378. json += "\"UserStatus\":\"" + sIMTradeInfo.UserStatus + "\",";
  379. json += "\"ChannelCode\":\"" + sIMTradeInfo.ChannelCode + "\",";
  380. json += "\"ChannelName\":\"" + sIMTradeInfo.ChannelName + "\",";
  381. json += "\"OrderCreateTime\":\"" + sIMTradeInfo.OrderCreateTime + "\",";
  382. json += "\"OrderStatus\":\"" + sIMTradeInfo.OrderStatus + "\",";
  383. json += "\"ActTime\":\"" + sIMTradeInfo.ActTime + "\",";
  384. json += "\"SourceProductName\":\"" + sIMTradeInfo.SourceProductName + "\",";
  385. json += "\"ProductType\":\"" + sIMTradeInfo.ProductType + "\",";
  386. json += "\"ActivityName\":\"" + sIMTradeInfo.ActivityName + "\",";
  387. json += "\"Percent\":\"" + sIMTradeInfo.Percent + "\",";
  388. json += "\"OrgDivi\":\"" + sIMTradeInfo.OrgDivi + "\"";
  389. json += "}";
  390. function.WriteLog("1-" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "导交易打日志");
  391. bool op = true;
  392. string OrderNo = DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
  393. decimal TotalAmountNum = decimal.Parse(function.CheckNum(numberString: sIMTradeInfo.TotalAmount));
  394. DateTime CreateDate = DateTime.Parse(sIMTradeInfo.OrderCreateTime);
  395. string CheckDate = DateTime.Now.AddMonths(-3).ToString("yyyyMM");
  396. if(!db.ActiveReward.Any(m => m.KqSnNo == sIMTradeInfo.SimNo || m.KqMerNo == sIMTradeInfo.Mobile))
  397. {
  398. CheckDate = DateTime.Now.AddMonths(-1).ToString("yyyyMM");
  399. }
  400. function.WriteLog("2-" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "导交易打日志");
  401. if (int.Parse(sIMTradeInfo.CreateMonth) >= int.Parse(CheckDate)) op = false;
  402. if (sIMTradeInfo.OrderStatus == "待激活") op = false;
  403. if (sIMTradeInfo.UserStatus.Contains("注销") || sIMTradeInfo.UserStatus.Contains("欠费"))
  404. {
  405. op = false;
  406. SimposMerchantInfo checkSimMer = db.SimposMerchantInfo.FirstOrDefault(m => m.KqMerNo == sIMTradeInfo.Mobile && m.KqSnNo == sIMTradeInfo.SimNo);
  407. if (checkSimMer != null)
  408. {
  409. if (sIMTradeInfo.UserStatus.Contains("欠费") && checkSimMer.Status != -1)
  410. {
  411. checkSimMer.Status = -2;
  412. }
  413. else
  414. {
  415. checkSimMer.Status = -1;
  416. }
  417. db.SaveChanges();
  418. }
  419. function.WriteLog("3-" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "导交易打日志");
  420. PosMerchantInfo checkMer = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == sIMTradeInfo.Mobile && m.KqSnNo == sIMTradeInfo.SimNo);
  421. if (checkMer != null)
  422. {
  423. if (sIMTradeInfo.UserStatus.Contains("欠费") && checkMer.Status != -1)
  424. {
  425. checkMer.Status = -2;
  426. }
  427. else
  428. {
  429. checkMer.Status = -1;
  430. }
  431. db.SaveChanges();
  432. }
  433. function.WriteLog("4-" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "导交易打日志");
  434. PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == sIMTradeInfo.SimNo);
  435. if (pos != null)
  436. {
  437. if(pos.QueryCount == 1 && pos.Status == 0)
  438. {
  439. RedisDbconn.Instance.AddList("SIMActCountQueue", "{\"UserId\":\"" + pos.BuyUserId + "\",\"ActCount\":\"1\"}");
  440. }
  441. if (sIMTradeInfo.UserStatus.Contains("欠费") && pos.Status != -1)
  442. {
  443. pos.Status = -2;
  444. }
  445. else
  446. {
  447. pos.Status = -1;
  448. }
  449. db.SaveChanges();
  450. }
  451. function.WriteLog("5-" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "导交易打日志");
  452. }
  453. if (sIMTradeInfo.UserStatus.Contains("正常"))
  454. {
  455. SimposMerchantInfo checkSimMer = db.SimposMerchantInfo.FirstOrDefault(m => m.KqMerNo == sIMTradeInfo.Mobile && m.KqSnNo == sIMTradeInfo.SimNo);
  456. if (checkSimMer != null)
  457. {
  458. if (checkSimMer.Status == -2) checkSimMer.Status = 0;
  459. db.SaveChanges();
  460. }
  461. function.WriteLog("6-" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "导交易打日志");
  462. PosMerchantInfo checkMer = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == sIMTradeInfo.Mobile && m.KqSnNo == sIMTradeInfo.SimNo);
  463. if (checkMer != null)
  464. {
  465. if (checkMer.Status == -2) checkMer.Status = 1;
  466. db.SaveChanges();
  467. }
  468. function.WriteLog("7-" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "导交易打日志");
  469. PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == sIMTradeInfo.SimNo);
  470. if (pos != null && pos.Status < 0)
  471. {
  472. if (pos.Status == -2)
  473. {
  474. pos.Status = 0;
  475. }
  476. db.SaveChanges();
  477. }
  478. function.WriteLog("8-" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "导交易打日志");
  479. }
  480. if (TotalAmountNum > 0 && op)
  481. {
  482. spdb.TradeRecord.Add(new SpModels.TradeRecord()
  483. {
  484. CreateDate = DateTime.Parse(DateTime.Now.AddMonths(-1).ToString("yyyy-MM-20 HH:mm:ss")), //创建时间
  485. TradeSerialNo = OrderNo, //订单编号
  486. AgentNo = sIMTradeInfo.WorkName + sIMTradeInfo.WorkNo, //一级服务商编号
  487. MerNo = sIMTradeInfo.Mobile, //商户编
  488. TradeSnNo = sIMTradeInfo.SimNo, //sim卡号
  489. ChannelSerial = OrderNo, //请求号
  490. TradeAmount = TotalAmountNum, //账单总金额
  491. TradeStatus = sIMTradeInfo.OrderStatus, //订单状态
  492. TradeDate = sIMTradeInfo.CreateMonth,
  493. TradeTime = CreateDate.ToString("yyyyMMdd"),
  494. BankCardType = "01",
  495. TradeType = "01",
  496. ProductType = "14",
  497. Status = 1,
  498. Field1 = sIMTradeInfo.ProductName,
  499. Field2 = sIMTradeInfo.SourceProductName,
  500. Field3 = sIMTradeInfo.ProductType,
  501. Field4 = sIMTradeInfo.BusinessType,
  502. SeoDescription = json,
  503. });
  504. spdb.SaveChanges();
  505. function.WriteLog("9-" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "导交易打日志");
  506. }
  507. }
  508. }
  509. }