Forráskód Böngészése

Merge branch 'feat-联动' into develop

lichunlei 2 éve
szülő
commit
150110773b

+ 42 - 0
AppStart/Helper/RSAForJava.cs

@@ -100,6 +100,15 @@ namespace MySystem
             AsymmetricKeyParameter priKey = PrivateKeyFactory.CreateKey(privateInfoByte);
             return priKey;
         }
+        private AsymmetricKeyParameter GetPrivateKeyParameter2(string s)
+        {
+            s = s.Replace("\r", "").Replace("\n", "").Replace(" ", "");
+            byte[] privateInfoByte = System.Text.Encoding.UTF8.GetBytes(s);
+            // Asn1Object priKeyObj = Asn1Object.FromByteArray(privateInfoByte);//这里也可以从流中读取,从本地导入   
+            // PrivateKeyInfo privateKeyInfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(privateKey);
+            AsymmetricKeyParameter priKey = PrivateKeyFactory.CreateKey(privateInfoByte);
+            return priKey;
+        }
         public string EncryptByPrivateKey(string s, string key)
         {
             //非对称加密算法,加解密用  
@@ -154,5 +163,38 @@ namespace MySystem
                 return ex.Message;
             }
         }
+
+        public string DecryptByPrivateKey(string s, string key)
+        {
+            s = s.Replace("\r", "").Replace("\n", "").Replace(" ", "");
+            //非对称加密算法,加解密用  
+            IAsymmetricBlockCipher engine = new Pkcs1Encoding(new RsaEngine());
+
+
+            //解密
+
+            try
+            {
+                engine.Init(false, GetPrivateKeyParameter2(key));
+                byte[] byteData = Convert.FromBase64String(s);
+                string result = "";
+                List<byte> cache = new List<byte>();
+                for (int i = 0; i < byteData.Length; i++)
+                {
+                    cache.Add(byteData[i]);
+                    if ((i + 1) % 256 == 0 || i + 1 == byteData.Length)
+                    {
+                        var ResultData = engine.ProcessBlock(cache.ToArray(), 0, cache.ToArray().Length);
+                        result += System.Text.Encoding.UTF8.GetString(ResultData);
+                        cache.Clear();
+                    }
+                }
+                return result;
+            }
+            catch (Exception ex)
+            {
+                return ex.Message;
+            }
+        }
     }
 }

+ 97 - 0
AppStart/Helper/SetDepositPostService.cs

@@ -1001,6 +1001,103 @@ namespace MySystem
 
         #endregion
 
+        #region 联动
+
+        //测试环境
+        // string LDRequestUrl = "http://111.14.221.188:18066/CloudTerminalServiceAction/";
+        // string AgentNo = "LD110014";
+        // string LDPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3WG04QXTzWBg2rj4BbSmnXVTqQiCk2lZ7yi2vur2LxsSc+KN0o1W9y2AkCHcFIAk2aAfMEMQYTO3HQ+F/Vcb27BNBSjnaOLfGv0PXNHKyVzC4EQLe4M5Pqd1wMl6NaZK+HnyrPBTnfsGeywhGJc1Ke96ANrydhk7UbwezydC7nQIDAQAB";
+        // string LDPrivateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJwUiLkXb6zTpvNmB+zTZtuJi97/XCdGBWgiMn/2ayVEtRuarPOvMUQo0aX4Pb/JrfdFyQccXiXFGtmh/m5Mhfuj03t0pOTC4bniQAy2veytDhnRImL1xY9YjSMX+YRXI44VRcNUSefyNmBjL7V1HgbJOfnq/PmVkcBClTf1gtefAgMBAAECgYBRbYkS/34crWNJUq7JyFS+LllRounh9270r/qmtdmaXOkbmKuoinrqc11E+GjGuSJQghDp68vWaqmiZxhFVRkEqPzaesYyMJr73GB/efXhIRWWGCqQvARs3QgOFmCL2YsC/Vq7niI72mmNLC9jOUFN30vCnJH7xI2PljfQKBLwkQJBAN1/JRJmt+2ms/eeGsI/tgClciCAfHzTtAhPHRs7XL98mzk8IDGFjysKsiSacAym5e0xV1uB6ijsuAm61go4b8cCQQC0ZLVyKdUPadhzXSjyOqtk4HVzorHW6OkDCnMazL0CYLxdJOQzrpicPhww0TB397rqLC+FuGEOEcjrDnYyGQlpAkEAq4OU9VbM/h2kJg4rslcbXAzA/yH/Q7m7IuQAKeIhw7V9jShd1XsSjcXOhEGCmolyaeVXO+ixpdcH+6DNtURWaQJACh5L/ydRiBfLyEzFazDXREVC0UWi7AcMats/MZWiVGvQpPjYw/1bGghx1FsneNMwbMolsD5zUzK0LlsVTiIRYQJAZT0p0Mg3kqSaYO2JlC6fTkI9aHMJ50iDr8qLJ2JnrNFylDxxoHwKfA7GxA2KGotguGTKhw7xCp+IyrXtXiuNrQ==";
+
+        //生产环境
+        string LDRequestUrl = "http://ldys.umpay.com/service_exter/CloudTerminalServiceAction/";
+        string AgentNo = "LD112692";
+        string LDPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCGtWShTeFEgSSFx3PJXcjCOmS+OgtcUvPOHhpALY3Orm6t7rl1E0n3j7XlM049YwwtGRJI4OWhgrtR4/AnOMBXdyMBoKxF23uay1WQiNekzfUrTwil7/CRrQ+VlGgPe6dr3WQT2/HLbzMnJHeoIZ4KSIj/7pgAwTF4ciL1UC3awwIDAQAB";
+        string LDPrivateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJwUiLkXb6zTpvNmB+zTZtuJi97/XCdGBWgiMn/2ayVEtRuarPOvMUQo0aX4Pb/JrfdFyQccXiXFGtmh/m5Mhfuj03t0pOTC4bniQAy2veytDhnRImL1xY9YjSMX+YRXI44VRcNUSefyNmBjL7V1HgbJOfnq/PmVkcBClTf1gtefAgMBAAECgYBRbYkS/34crWNJUq7JyFS+LllRounh9270r/qmtdmaXOkbmKuoinrqc11E+GjGuSJQghDp68vWaqmiZxhFVRkEqPzaesYyMJr73GB/efXhIRWWGCqQvARs3QgOFmCL2YsC/Vq7niI72mmNLC9jOUFN30vCnJH7xI2PljfQKBLwkQJBAN1/JRJmt+2ms/eeGsI/tgClciCAfHzTtAhPHRs7XL98mzk8IDGFjysKsiSacAym5e0xV1uB6ijsuAm61go4b8cCQQC0ZLVyKdUPadhzXSjyOqtk4HVzorHW6OkDCnMazL0CYLxdJOQzrpicPhww0TB397rqLC+FuGEOEcjrDnYyGQlpAkEAq4OU9VbM/h2kJg4rslcbXAzA/yH/Q7m7IuQAKeIhw7V9jShd1XsSjcXOhEGCmolyaeVXO+ixpdcH+6DNtURWaQJACh5L/ydRiBfLyEzFazDXREVC0UWi7AcMats/MZWiVGvQpPjYw/1bGghx1FsneNMwbMolsD5zUzK0LlsVTiIRYQJAZT0p0Mg3kqSaYO2JlC6fTkI9aHMJ50iDr8qLJ2JnrNFylDxxoHwKfA7GxA2KGotguGTKhw7xCp+IyrXtXiuNrQ==";
+
+        public string LDEncrypt(string data)
+        {
+            return new RSAHelper(RSAType.RSA, System.Text.Encoding.UTF8, "", LDPublicKey).Encrypt(data);
+        }
+
+        public string LDDecrypt(string data)
+        {
+            var toDecryptArray = Convert.FromBase64String(data);
+            var toKey = Convert.FromBase64String(LDPrivateKey);
+            var rsa = RSA.Create();
+            rsa.ImportPkcs8PrivateKey(toKey, out _);
+            string result = "";
+            List<byte> cache = new List<byte>();
+            for (int i = 0; i < toDecryptArray.Length; i++)
+            {
+                cache.Add(toDecryptArray[i]);
+                if ((i + 1) % 128 == 0 || i + 1 == toDecryptArray.Length)
+                {
+                    var ContentArray = rsa.Decrypt(cache.ToArray(), RSAEncryptionPadding.Pkcs1);
+                    result += System.Text.Encoding.UTF8.GetString(ContentArray);
+                    cache.Clear();
+                }
+            }
+            return result;
+        }
+
+        public string LDServiceFee(string SnList, int ServiceFee, int BrandId)
+        {
+            function.WriteLog(DateTime.Now.ToString(), "设置联动机具服务费");
+            function.WriteLog(SnList, "设置联动机具服务费");
+            Dictionary<string, object> reqdic = new Dictionary<string, object>();
+            string RequestId = DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
+            string TerminalModeName = BrandId == 10 ? "DZA" : "DZDA";
+            int PosType = BrandId == 10 ? 2 : 3;
+            reqdic.Add("rpid", RequestId); //请求流水
+            reqdic.Add("agentNumber", AgentNo); //代理商编号
+            reqdic.Add("snList", SnList.Split(',').ToList()); //SN号
+            reqdic.Add("posType", PosType); //2:电签 3 大pos
+            reqdic.Add("terminalModeName", TerminalModeName); //终端模式名
+            reqdic.Add("fwfRate", ServiceFee); //服务费
+            string req = Newtonsoft.Json.JsonConvert.SerializeObject(reqdic);
+            function.WriteLog(req, "设置联动机具服务费");
+            req = LDEncrypt(req);
+            function.WriteLog(req, "设置联动机具服务费");
+            Dictionary<string, object> datadic = new Dictionary<string, object>();
+            datadic.Add("encryptedData", req);
+            string data = Newtonsoft.Json.JsonConvert.SerializeObject(datadic);
+            function.WriteLog("请求地址:" + LDRequestUrl + "terminalSelfDistribute", "设置联动机具服务费");
+            string result = function.PostWebRequest(LDRequestUrl + "terminalSelfDistribute", data, "application/json");
+            function.WriteLog(result + "\n\n", "设置联动机具服务费");
+            return result;
+        }
+
+        public string LDFeeRate(string MerNo, string Fee, int BrandId)
+        {
+            function.WriteLog(DateTime.Now.ToString(), "设置联动机具费率");
+            function.WriteLog(MerNo, "设置联动机具费率");
+            Dictionary<string, object> reqdic = new Dictionary<string, object>();
+            string RequestId = DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
+            string MercModel = BrandId == 10 ? "DZA" : "DZDA";
+            int PosType = BrandId == 10 ? 2 : 3;
+            reqdic.Add("rpid", RequestId); // 请求流水(2字母开头+13位数字)
+            reqdic.Add("agentNumber", AgentNo); // 代理编号
+            reqdic.Add("mercModel", MercModel); // 商户模式
+            reqdic.Add("rate", Fee); // 费率 如 0.0053
+            reqdic.Add("addRate", 0); // 附加费 如0
+            reqdic.Add("rateType", "M015"); // 秒刷 M015 扫码 S010 特惠 T015
+            reqdic.Add("mercId", MerNo); // 商户编号
+            reqdic.Add("cardType", "01"); // 01 贷记卡 02 扫码
+            string req = Newtonsoft.Json.JsonConvert.SerializeObject(reqdic);
+            function.WriteLog(req, "设置联动机具费率");
+            req = LDEncrypt(req);
+            function.WriteLog(req, "设置联动机具费率");
+            Dictionary<string, object> datadic = new Dictionary<string, object>();
+            datadic.Add("encryptedData", req);
+            string data = Newtonsoft.Json.JsonConvert.SerializeObject(datadic);
+            function.WriteLog("请求地址:" + LDRequestUrl + "updateMercRate", "设置联动机具费率");
+            string result = function.PostWebRequest(LDRequestUrl + "updateMercRate", data, "application/json");
+            function.WriteLog(result + "\n\n", "设置联动机具费率");
+            return result;
+        }
+
+        #endregion
 
     }
 }

+ 40 - 12
AppStart/Helper/StatService.cs

@@ -312,6 +312,7 @@ namespace MySystem
             }
             db.Dispose();
         }
+        //金控活动机返奖励
         private void doJk30(WebCMSEntities db, PosMachinesTwo pos, PosMerchantInfo merchant, int GetUserId, string ParentNav, int TopUserId)
         {
             DateTime check = DateTime.Parse("2022-06-01 00:00:00");
@@ -336,6 +337,8 @@ namespace MySystem
                 }
             }
         }
+
+        //无押金激活奖励
         public void activePrizeWithoutDeposit(int posid = 0)
         {
             WebCMSEntities db = new WebCMSEntities();
@@ -366,12 +369,17 @@ namespace MySystem
                         {
                             TopUserId = int.Parse(ParentNav.Trim(',').Replace(",,", ",").Split(',')[0]);
                         }
-                        if(pos.BrandId == 6)
+                        if(pos.BrandId == 6) //首台无押金机返50
+                        {
+                            doActiveReward(db, merchant, pos, GetUserId, ParentNav, TopUserId, 50);
+                        }
+                        else if((pos.BrandId == 10 || pos.BrandId == 11) && pos.IsFirst == 1) //首台无押金机返50
                         {
                             doActiveReward(db, merchant, pos, GetUserId, ParentNav, TopUserId, 50);
                         }
                         else
                         {
+                            //金控活动机返奖励
                             doJk30(db, pos, merchant, GetUserId, ParentNav, TopUserId);
                         }
                     }
@@ -1376,11 +1384,11 @@ namespace MySystem
         }
         public void CheckFluxForTrade()
         {
-            function.WriteLog(DateTime.Now.ToString(), "扫描金控交易记录中的流量费");
+            function.WriteLog(DateTime.Now.ToString(), "扫描交易记录中的流量费");
             SpModels.WebCMSEntities spdb = new SpModels.WebCMSEntities();
             DateTime start = DateTime.Now.AddDays(-1);
             int StartId = int.Parse(function.CheckInt(function.ReadInstance("/SycnSp/TradeRecordId.txt")));
-            var list = spdb.TradeRecord.Select(m => new { m.Id, m.CreateDate, m.ProductType, m.Status }).Where(m => m.Id >= StartId && m.Status == 2 && m.CreateDate > start && m.ProductType == "1").OrderBy(m => m.CreateDate);
+            var list = spdb.TradeRecord.Select(m => new { m.Id, m.CreateDate, m.ProductType, m.Status }).Where(m => m.Id >= StartId && m.Status == 2 && m.CreateDate > start && (m.ProductType == "1" || m.ProductType == "10")).OrderBy(m => m.CreateDate);
             foreach (var sub in list.ToList())
             {
                 try
@@ -1388,18 +1396,38 @@ namespace MySystem
                     SpModels.TradeRecord trade = spdb.TradeRecord.FirstOrDefault(m => m.Id == sub.Id);
                     if (trade != null)
                     {
-                        string content = trade.SeoDescription;
-                        if (!string.IsNullOrEmpty(content))
+                        if(trade.ProductType == "1") //金控
+                        {
+                            string content = trade.SeoDescription;
+                            if (!string.IsNullOrEmpty(content))
+                            {
+                                content = System.Web.HttpUtility.UrlDecode(content);
+                                JsonData jsonObj = JsonMapper.ToObject(content);
+                                decimal terminalDataFlowFee = decimal.Parse(function.CheckNum(jsonObj["terminalDataFlowFee"].ToString()));
+                                if (terminalDataFlowFee > 0)
+                                {
+                                    spdb.TradeFluxRecord.Add(new SpModels.TradeFluxRecord()
+                                    {
+                                        SeoDescription = trade.TradeSerialNo,
+                                        FeeAmount = terminalDataFlowFee,
+                                        TradeSerialNo = function.MD5_16(trade.TradeSerialNo),
+                                        CreateDate = trade.CreateDate,
+                                        TradeSnNo = trade.TradeSnNo,
+                                        ProductType = trade.ProductType,
+                                        Status = 1,
+                                    });
+                                    spdb.SaveChanges();
+                                }
+                            }
+                        }
+                        else if(trade.ProductType == "10") //联动
                         {
-                            content = System.Web.HttpUtility.UrlDecode(content);
-                            JsonData jsonObj = JsonMapper.ToObject(content);
-                            decimal terminalDataFlowFee = decimal.Parse(function.CheckNum(jsonObj["terminalDataFlowFee"].ToString()));
-                            if (terminalDataFlowFee > 0)
+                            if (trade.DigAmt > 0)
                             {
                                 spdb.TradeFluxRecord.Add(new SpModels.TradeFluxRecord()
                                 {
                                     SeoDescription = trade.TradeSerialNo,
-                                    FeeAmount = terminalDataFlowFee,
+                                    FeeAmount = trade.DigAmt,
                                     TradeSerialNo = function.MD5_16(trade.TradeSerialNo),
                                     CreateDate = trade.CreateDate,
                                     TradeSnNo = trade.TradeSnNo,
@@ -1415,11 +1443,11 @@ namespace MySystem
                 }
                 catch (Exception ex)
                 {
-                    function.WriteLog(DateTime.Now.ToString() + "\n$" + sub.Id + "$\n" + ex.ToString(), "扫描金控交易记录中的流量费异常");
+                    function.WriteLog(DateTime.Now.ToString() + "\n$" + sub.Id + "$\n" + ex.ToString(), "扫描交易记录中的流量费异常");
                 }
             }
             spdb.Dispose();
-            function.WriteLog(DateTime.Now.ToString() + "\n", "扫描金控交易记录中的流量费");
+            function.WriteLog(DateTime.Now.ToString() + "\n", "扫描交易记录中的流量费");
 
             doFluxRecord();
         }

+ 14 - 0
AppStart/Helper/SycnSpServer/SycnSpBindService.cs

@@ -107,6 +107,20 @@ namespace MySystem
                                     db.SaveChanges();
                                 }
 
+                                string IdBrand = pos.BuyUserId + "_" + pos.BrandId;
+                                PxcModels.UserMachineData userData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand);
+                                if (userData == null)
+                                {
+                                    userData = db.UserMachineData.Add(new PxcModels.UserMachineData()
+                                    {
+                                        IdBrand = IdBrand,
+                                    }).Entity;
+                                    db.SaveChanges();
+                                }
+                                userData.BindCount -= 1;
+                                userData.UnBindCount += 1;
+                                db.SaveChanges();
+
                                 BindRecord edit = spdb.BindRecord.FirstOrDefault(m => m.Id == Bind.Id);
                                 if (edit != null)
                                 {

+ 14 - 9
AppStart/Helper/SycnSpServer/SycnSpMerchantService.cs

@@ -47,15 +47,16 @@ namespace MySystem
                                 {
                                     TopUserId = int.Parse(user.ParentNav.Trim(',').Replace(",,", ",").Split(',')[0]);
                                 }
-                                int BrandId = int.Parse(Mer.ProductType);
-                                if (BrandId == 1 && Mer.MerNo.StartsWith("M900"))
-                                {
-                                    BrandId = 3;
-                                }
-                                if (BrandId == 4 && Mer.Field1 == "200")
-                                {
-                                    BrandId = 5;
-                                }
+                                int BrandId = pos.BrandId;
+                                // int BrandId = int.Parse(Mer.ProductType);
+                                // if (BrandId == 1 && Mer.MerNo.StartsWith("M900"))
+                                // {
+                                //     BrandId = 3;
+                                // }
+                                // if (BrandId == 4 && Mer.Field1 == "200")
+                                // {
+                                //     BrandId = 5;
+                                // }
 
                                 PxcModels.PosMerchantInfo add = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == Mer.MerNo);
                                 if (add == null)
@@ -81,6 +82,10 @@ namespace MySystem
                                         {
                                             Name = Mer.SeoTitle;
                                         }
+                                        else if (Mer.ProductType == "10")
+                                        {
+                                            Name = Name.Replace("*", "");
+                                        }
                                         Name = Name.Replace("个体户", "");
                                         Name = Name.Replace("个体商户", "");
                                         Name = Name.Replace("企业户", "");

+ 89 - 20
AppStart/Helper/SycnSpServer/SycnSpTradeService.cs

@@ -31,11 +31,28 @@ namespace MySystem
                     PxcModels.WebCMSEntities db = new PxcModels.WebCMSEntities();
                     DateTime start = DateTime.Now.AddDays(-10);
                     int StartId = int.Parse(function.CheckInt(function.ReadInstance("/SycnSp/TradeRecordId.txt")));
-                    IQueryable<TradeRecord> trades = spdb.TradeRecord.Where(m => m.Id >= StartId && m.CreateDate >= start && m.Status == 1).OrderBy(m => m.CreateDate);
+                    // IQueryable<TradeRecord> trades = spdb.TradeRecord.Where(m => m.Id >= StartId && m.CreateDate >= start && m.Status == 1).OrderBy(m => m.CreateDate);
+                    List<TradeRecord> trades = new List<TradeRecord>();
+                    trades.Add(new TradeRecord()
+                    {
+                        ProductType = "10",
+                        Field2 = "620522****0017",
+                        Field1 = "199****5853",
+                        DigAmt = 0.00M,
+                        SerEntryMode = "0",
+                        BankCardType = "01",
+                        TradeType = "M015",
+                        TradeAmount = 1000M,
+                        TradeSnNo = "0000320226624650120068",
+                        TradeSerialNo = "23032117055533128544",
+                        MerName = "王**",
+                        MerNo = "110000004032435",
+                        CreateDate = DateTime.Parse("2023-03-21 17:05:55.0"),
+                    });
                     foreach (TradeRecord trade in trades.ToList())
                     {
                         bool op = true;
-                        if (trade.SerEntryMode == "N")
+                        if (trade.SerEntryMode == "N" && trade.ProductType == "1") //金控押金获取
                         {
                             if (trade.TradeAmount == 9900 || trade.TradeAmount == 19900 || trade.TradeAmount == 29900)
                             {
@@ -44,12 +61,29 @@ namespace MySystem
                                 PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == posFor.SnId);
                                 if (pos != null)
                                 {
-                                    if (trade.SerEntryMode == "N" && trade.ProductType == "1")
-                                    {
-                                        pos.SeoKeyword = trade.TradeAmount.ToString("f2");
-                                        // pos.IsPurchase = 0;
-                                        db.SaveChanges();
-                                    }
+                                    pos.SeoKeyword = trade.TradeAmount.ToString("f2");
+                                    // pos.IsPurchase = 0;
+                                    db.SaveChanges();
+                                }
+                                TradeRecord edit = spdb.TradeRecord.FirstOrDefault(m => m.Id == trade.Id);
+                                if (edit != null)
+                                {
+                                    edit.Status = 2;
+                                }
+                                spdb.SaveChanges();
+                            }
+                        }
+                        else if (trade.SerEntryMode == "1" && trade.ProductType == "10") //联动押金获取
+                        {
+                            if (trade.TradeAmount == 99 || trade.TradeAmount == 199 || trade.TradeAmount == 299)
+                            {
+                                op = false;
+                                PxcModels.MachineForSnNo posFor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == trade.TradeSnNo) ?? new PxcModels.MachineForSnNo();
+                                PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == posFor.SnId);
+                                if (pos != null)
+                                {
+                                    pos.SeoKeyword = trade.TradeAmount.ToString("f2");
+                                    db.SaveChanges();
                                 }
                                 TradeRecord edit = spdb.TradeRecord.FirstOrDefault(m => m.Id == trade.Id);
                                 if (edit != null)
@@ -173,15 +207,41 @@ namespace MySystem
                                             if (trade.TradeType == "200") QrPayFlag = 1;
                                             if (trade.Field1 == "1") VipFlag = 1;
                                         }
-                                        int BrandId = int.Parse(trade.ProductType);
-                                        if (BrandId == 1 && trade.MerNo.StartsWith("M900"))
+                                        else if (pos.BrandId == 10 || pos.BrandId == 11)
                                         {
-                                            BrandId = 3;
-                                        }
-                                        if (BrandId == 4 && trade.DeviceType == "200")
-                                        {
-                                            BrandId = 5;
+                                            if (trade.BankCardType == "01")
+                                            {
+                                                BankCardType = 1;
+                                            }
+                                            else if (trade.BankCardType == "00")
+                                            {
+                                                BankCardType = 0;
+                                            }
+                                            if (trade.TradeType == "F010") QrPayFlag = 1;
+                                            PxcModels.PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId);
+                                            if(merchant != null)
+                                            {
+                                                if(string.IsNullOrEmpty(merchant.MerIdcardNo) && !string.IsNullOrEmpty(trade.Field2))
+                                                {
+                                                    merchant.MerIdcardNo = trade.Field2; //商户身份证号
+                                                }
+                                                if(!string.IsNullOrEmpty(trade.Field1))
+                                                {
+                                                    merchant.MerchantMobile = trade.Field1; //商户手机号
+                                                }
+                                                db.SaveChanges();
+                                            }
                                         }
+                                        int BrandId = pos.BrandId;
+                                        // int BrandId = int.Parse(trade.ProductType);
+                                        // if (BrandId == 1 && trade.MerNo.StartsWith("M900"))
+                                        // {
+                                        //     BrandId = 3;
+                                        // }
+                                        // if (BrandId == 4 && trade.DeviceType == "200")
+                                        // {
+                                        //     BrandId = 5;
+                                        // }
                                         decimal SourceTradeAmount = TradeAmount;
                                         if (pos.Sort == 0 && pos.BrandId == 7)
                                         {
@@ -198,7 +258,7 @@ namespace MySystem
                                         {
                                             CheckMoney = 5000;
                                         }
-                                        if (BankCardType == 1 || (BankCardType == 2 && pos.BrandId == 1) || (BankCardType == 2 && pos.BrandId == 3))
+                                        if (BankCardType == 1 || (BankCardType == 2 && pos.BrandId == 1) || (BankCardType == 2 && pos.BrandId == 3) || (BankCardType == 1 && trade.TradeType == "M015" && (pos.BrandId == 10 || pos.BrandId == 11)))
                                         {
                                             pos.CreditTrade += SourceTradeAmount;
                                         }
@@ -206,15 +266,16 @@ namespace MySystem
                                         {
                                             pos.DebitCardTrade += TradeAmount;
                                         }
+                                        //判断激活条件并激活
                                         if (pos.CreditTrade >= CheckMoney && pos.ActivationState == 0 && pos.TransferTime < pos.BindingTime && pos.BindingTime > DateTime.Now.AddDays(-CheckDays))
                                         {
                                             pos.ActivationState = 1;
-                                            pos.ActivationTime = trade.CreateDate;
+                                            pos.ActivationTime = DateTime.Now;
                                             PxcModels.PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId);
                                             if (merchant != null)
                                             {
                                                 merchant.ActiveStatus = 1;
-                                                merchant.MerStandardDate = trade.CreateDate;
+                                                merchant.MerStandardDate = DateTime.Now;
                                                 db.SaveChanges();
 
                                                 // 推荐王逻辑(激活)
@@ -222,7 +283,10 @@ namespace MySystem
                                                 RedisDbconn.Instance.AddList("RecommendActStatQueue", SendData);
 
                                                 //发放开机奖励
-                                                RedisDbconn.Instance.AddList("OpenRewardQueue", pos.Id.ToString());
+                                                if(pos.IsFirst == 1)
+                                                {
+                                                    RedisDbconn.Instance.AddList("OpenRewardQueue", pos.Id.ToString());
+                                                }
                                             }
                                             //发放大盟主奖励
                                             if(pos.LeaderUserId > 0)
@@ -243,7 +307,8 @@ namespace MySystem
                                             }
                                             else if (DepositAmt > 0 && pos.IsFirst == 1)
                                             {
-                                                int Days = int.Parse(RedisDbconn.Instance.Get<string>("pobjrule:" + pos.BrandId + ":HelpPolicy:Days")); //天数
+                                                string DayString = RedisDbconn.Instance.Get<string>("pobjrule:" + pos.BrandId + ":HelpPolicy:Days");
+                                                int Days = int.Parse(DayString); //天数
                                                 if (pos.BindingTime != null)
                                                 {
                                                     if (pos.BindingTime.Value.AddDays(Days) > DateTime.Now)
@@ -252,6 +317,10 @@ namespace MySystem
                                                     }
                                                 }
                                             }
+                                            if((pos.BrandId == 10 || pos.BrandId == 11) && trade.TradeType == "T015" && MerHelpFlag == 1)
+                                            {
+                                                MerHelpFlag = 0;
+                                            }
                                             int CapFlag = 0;
                                             if(BankCardType == 0 && TradeAmount >= 1666.67M)
                                             {

+ 14 - 4
AppStart/Helper/SycnSpServer/SycnSpUnBindService.cs

@@ -43,23 +43,33 @@ namespace MySystem
                             PxcModels.PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == forSnNo.SnId);
                             if (pos.ActivationState == 0 && pos.BuyUserId > 0 && pos.BindingState == 0)
                             {
+                                string BrandName = RelationClass.GetKqProductsInfo(pos.BrandId);
                                 if (forMerNo != null)
                                 {
                                     // 删除对应商户
-                                    PxcModels.PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId);
+                                    PxcModels.MachineForMerNo MerEdit = db.MachineForMerNo.FirstOrDefault(m => m.MerNo == MerNo);
+                                    if (MerEdit != null)
+                                    {
+                                        db.MachineForMerNo.Remove(MerEdit);
+                                        db.SaveChanges();
+                                    }
+                                    PxcModels.PosMachinesTwo EditPos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn) ?? new PxcModels.PosMachinesTwo();
+                                    PxcModels.PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == EditPos.BindMerchantId);
                                     if(merchant != null)
                                     {
+                                        pos.BindMerchantId = 0;
+                                        pos.BindingState = 0;
+                                        pos.BindingTime = null;
                                         db.PosMerchantInfo.Remove(merchant);
+                                        db.SaveChanges();
                                     }
-                                    db.MachineForMerNo.Remove(forMerNo);
-                                    db.SaveChanges();
                                 }
                                 db.MachineUnBind.Add(new PxcModels.MachineUnBind()
                                 {
                                     CreateDate = DateTime.Now,
                                     MerchantId = pos.BindMerchantId,
                                     AuditDate = DateTime.Now,
-                                    AuditDesc = "乐刷推送解绑",
+                                    AuditDesc = BrandName + "推送解绑",
                                     AuditStatus = 1,
                                     SnNo = pos.PosSn,
                                     BrandId = pos.BrandId,

+ 0 - 6
Controllers/HomeController.cs

@@ -1174,12 +1174,6 @@ namespace MySystem.Controllers
 
         public string test6()
         {
-            List<string> uids = new List<string>();
-            uids.Add("98493");
-            foreach(string uid in uids)
-            {
-                RedisDbconn.Instance.AddList("PosExpiredPayQueue", uid);
-            }
             return "ok";
         }
 

+ 3 - 11
Startup.cs

@@ -85,17 +85,9 @@ namespace MySystem
                 };
             });
 
-            // services.AddHostedService<TradeService>();
-            // services.AddHostedService<TeamTopService>();
-            // services.AddHostedService<PopService>();
-            // services.AddHostedService<SycnSpTimer>(); //同步SP数据
-
-            // services.AddHostedService<TimerStatTimer>(); //实时统计创客、激活商户数
             services.AddHostedService<PosTradeStatTimer>(); // 统计头天的交易额、商户型创客、激活奖励、开机奖励
             services.AddHostedService<AlipayPayBack2Timer>(); //支付宝回调处理
 
-            //services.AddHttpContextAccessor();
-
             string appkey = Configuration["Setting:AppKey"];
             string appid = Configuration["Setting:AppId"];
             string checkurl = Configuration["Setting:CheckUrl"];
@@ -135,15 +127,15 @@ namespace MySystem
             {
                 app.UseDeveloperExceptionPage();
                 // app.UseExceptionHandler("/Home/Error");
-                Library.ConfigurationManager.EnvironmentFlag = 1;
+                // Library.ConfigurationManager.EnvironmentFlag = 1;
             }
             else
             {
                 app.UseExceptionHandler("/Home/Error");
                 app.UseHsts();
-                Library.ConfigurationManager.EnvironmentFlag = 2;
+                // Library.ConfigurationManager.EnvironmentFlag = 2;
             }
-            // Library.ConfigurationManager.EnvironmentFlag = 2;
+            Library.ConfigurationManager.EnvironmentFlag = 2;
             Library.function.WritePage("/", "WebRootPath.txt", env.WebRootPath);
             // app.UseStatusCodePagesWithReExecute("/public/errpage/pc/{0}.html");