Browse Source

增加盒子商户信息监听队列

lcl 1 year ago
parent
commit
0684ee8890
2 changed files with 80 additions and 0 deletions
  1. 79 0
      AppStart/Helper/SycnSpServer/SycnSpMerchantRecordService.cs
  2. 1 0
      Startup.cs

+ 79 - 0
AppStart/Helper/SycnSpServer/SycnSpMerchantRecordService.cs

@@ -0,0 +1,79 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using MySystem.SpModels;
+using Library;
+using LitJson;
+using System.Threading;
+
+namespace MySystem
+{
+    public class SycnSpMerchantRecordService
+    {
+        public readonly static SycnSpMerchantRecordService Instance = new SycnSpMerchantRecordService();
+        private SycnSpMerchantRecordService()
+        { }
+
+        public void Start()
+        {
+            Thread th = new Thread(StartDo);
+            th.IsBackground = true;
+            th.Start();
+        }
+
+        public void StartDo()
+        {
+            while (true)
+            {
+                try
+                {
+                    WebCMSEntities spdb = new WebCMSEntities();
+                    PxcModels.WebCMSEntities db = new PxcModels.WebCMSEntities();
+                    DateTime start = DateTime.Now.AddDays(-5);
+                    int StartId = int.Parse(function.CheckInt(function.ReadInstance("/SycnSp/MerchantRecordId.txt")));
+                    var Mers = spdb.MerchantRecord.Where(m => m.Id >= StartId && m.CreateTime >= start && m.Status == 1 && m.ProductType == "12").OrderByDescending(m => m.Id).Take(10).ToList();
+                    foreach (var Mer in Mers)
+                    {
+                        var tran = db.Database.BeginTransaction();
+                        try
+                        {
+                            PxcModels.MachineForMerNo machineForMerNo = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == Mer.MerNo) ?? new PxcModels.MachineForMerNo();
+                            PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForMerNo.SnId) ?? new PxcModels.PosMachinesTwo();
+                            
+                            PxcModels.PosMerchantInfo merinfo = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId);
+                            if(merinfo != null)
+                            {
+                                merinfo.MerIdcardNo = Mer.LegalIdCard;
+                                merinfo.MerchantName = Mer.MerName;
+                            }
+
+                            
+                            MerchantRecord edit = spdb.MerchantRecord.FirstOrDefault(m => m.Id == Mer.Id);
+                            if (edit != null)
+                            {
+                                edit.Status = 2;
+                                spdb.SaveChanges();
+                            }
+                            tran.Commit();
+                        }
+                        catch (Exception ex)
+                        {
+                            tran.Rollback();
+                            function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n" + Mer.Id, "同步SP商户记录数据到MAIN异常");
+                        }
+                        tran.Dispose();
+                    }
+                    spdb.SaveChanges();
+                    spdb.Dispose();
+                    db.SaveChanges();
+                    db.Dispose();
+                }
+                catch (Exception ex)
+                {
+                    function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "同步SP商户记录数据到MAIN异常");
+                }
+                Thread.Sleep(1000);
+            }
+        }
+    }
+}

+ 1 - 0
Startup.cs

@@ -185,6 +185,7 @@ namespace MySystem
             SycnSpTradeService.Instance.Start(); //同步SP交易数据
             SycnSpChangeBindService.Instance.Start(); //同步SP换绑数据
             SycnSpUnBindService.Instance.Start(); //同步SP解绑数据
+            SycnSpMerchantRecordService.Instance.Start(); //同步SP商户记录数据
 
             ActiveRewardTimer.Instance.Start(); //实时处理激活记录
             StatService.Instance.StartOpenReward(); //实时获取开机奖励