Explorar el Código

Merge branch 'feat-lcl-记录奖励返现逻辑' into release-mainserver

lcl hace 11 meses
padre
commit
8155047e95

BIN
.DS_Store


+ 39 - 86
AppStart/Helper/PosCouponPrize/PosCouponPrizeService.cs

@@ -61,9 +61,11 @@ namespace MySystem
                 ChkIds.Add(78);
                 ChkIds.Add(79);
                 ChkIds.Add(92);
+                Utils.Instance.PrizeRecord(2, order.OrderNo, "条件:商品id是(10,11,77,78,79,91);当前订单商品Id:" + order.ProductId + "");
                 //判断是否是指定商品
                 if(ChkIds.Contains(order.ProductId))
                 {
+                    Utils.Instance.PrizeRecord(2, order.OrderNo, "满足条件");
                     int Kind = 0;
                     if (order.ProductId == 10)
                     {
@@ -98,30 +100,49 @@ namespace MySystem
                     bool BackAccountFlag = false; //备用金返余额标识
                     bool BigLeaderFlag = false; //大盟主标记
                     decimal BuyPrize = 0; //购机奖励
+                    Utils.Instance.PrizeRecord(2, order.OrderNo, "开始向上递归查找");
                     foreach(string ParentId in ParentNavList)
                     {
                         UserRankItem parentUser = GetUserLevel(int.Parse(ParentId));
+                        Utils.Instance.PrizeRecord(2, order.OrderNo, "创客编号:" + parentUser.MakerCode + ";创客姓名:" + parentUser.RealName + ";");
                         index += 1;
+                        if(index == 1)
+                        {
+                            Utils.Instance.PrizeRecord(2, order.OrderNo, "条件:下单人是盟主;下单人盟主等级:" + orderUser.LeaderLevel + "");
+                            Utils.Instance.PrizeRecord(2, order.OrderNo, "条件:下单人是运营中心或合伙人;下单人合伙人等级:" + orderUser.OperateLevel + "");
+                            Utils.Instance.PrizeRecord(2, order.OrderNo, "条件:推荐奖励是否已发放;当前状态:" + DirectPrizeFlag + "");
+                        }
                         if(index == 1 && (orderUser.LeaderLevel > 0 || orderUser.OperateLevel > 0) && !DirectPrizeFlag)
                         {
+                            Utils.Instance.PrizeRecord(2, order.OrderNo, "满足条件,发放推荐奖励给下单人");
                             DirectPrize(db, order.Id, order.UserId, order.BuyCount);
                             DirectPrizeFlag = true;
                         }
                         if(index > 1)
                         {
-                            if(Utils.Instance.IsStandardUser(parentUser.Id) && !DirectPrizeFlag)
+                            bool IsStandardUser = Utils.Instance.IsStandardUser(parentUser.Id);
+                            Utils.Instance.PrizeRecord(2, order.OrderNo, "条件:上级是有效创客;是否有效创客:" + IsStandardUser + "");
+                            Utils.Instance.PrizeRecord(2, order.OrderNo, "条件:推荐奖励是否已发放;当前状态:" + DirectPrizeFlag + "");
+                            if(IsStandardUser && !DirectPrizeFlag)
                             {
+                                Utils.Instance.PrizeRecord(2, order.OrderNo, "满足条件,发放推荐奖励给上级");
                                 DirectPrize(db, order.Id, parentUser.Id, order.BuyCount);
                                 DirectPrizeFlag = true;
                             }
                         }
+                        Utils.Instance.PrizeRecord(2, order.OrderNo, "条件:创客是盟主;创客盟主等级:" + parentUser.AgoLeaderLevel + "");
+                        Utils.Instance.PrizeRecord(2, order.OrderNo, "条件:盟主储备金是否充足;");
+                        Utils.Instance.PrizeRecord(2, order.OrderNo, "条件:创客是运营中心或合伙人;合伙人等级:" + parentUser.AgoLeaderLevel + "");
+                        Utils.Instance.PrizeRecord(2, order.OrderNo, "条件:合伙人未使用额度是否充足;");
                         if(parentUser.AgoLeaderLevel > 0 && CheckLeaderReserve(db, order.BuyCount, parentUser.Id))
                         {
+                            Utils.Instance.PrizeRecord(2, order.OrderNo, "满足条件,发放购机奖");
                             //购机奖
                             if(parentUser.LeaderLevel > 0)
                             {
                                 decimal CurBuyPrize = GetBuyPrize(parentUser, order.UserId);
                                 decimal GetPrize = CurBuyPrize - BuyPrize;
+                                Utils.Instance.PrizeRecord(2, order.OrderNo, "发放金额:" + GetPrize);
                                 if(GetPrize > 0) 
                                 {
                                     bool PrizeFlag = true;
@@ -156,12 +177,21 @@ namespace MySystem
                             }
 
                             //给券打大盟主标记
+                            Utils.Instance.PrizeRecord(2, order.OrderNo, "条件:创客是盟主;创客盟主等级:" + parentUser.LeaderLevel + "");
+                            Utils.Instance.PrizeRecord(2, order.OrderNo, "条件:盟主储备金是否充足;");
                             if(parentUser.LeaderLevel == 1 && CheckLeaderReserve(db, order.BuyCount, parentUser.Id) && !BigLeaderFlag)
                             {
-                                BigLeaderFlag = CheckPosCouponLeaderFlag(db, parentUser.Id, order.BuyCount, codes);
+                                Utils.Instance.PrizeRecord(2, order.OrderNo, "满足小盟主条件,开始检查大盟主关联的额度");
+                                int LeaderId = CheckPosCouponLeaderFlag(db, parentUser.Id, order.BuyCount, codes);
+                                if(LeaderId > 0)
+                                {
+                                    BigLeaderFlag = true;
+                                    Utils.Instance.PrizeRecord(2, order.OrderNo, "满足条件,大盟主标记打给" + LeaderId);
+                                }
                             }
                             else if(parentUser.LeaderLevel == 2 && !BigLeaderFlag)
                             {
+                                Utils.Instance.PrizeRecord(2, order.OrderNo, "满足大盟主条件,大盟主标记打给" + parentUser.Id);
                                 BigLeaderFlag = true;
                                 if(!string.IsNullOrEmpty(order.SnNos))
                                 {
@@ -172,9 +202,11 @@ namespace MySystem
                         }
                         else if(parentUser.OperateLevel > 0 && CheckOpReserve(opdb, order.BuyCount, parentUser.Id))
                         {
+                            Utils.Instance.PrizeRecord(2, order.OrderNo, "满足条件,发放购机奖");
                             //购机奖
                             decimal CurBuyPrize = GetBuyPrize(parentUser, order.UserId);
                             decimal GetPrize = CurBuyPrize - BuyPrize;
+                            Utils.Instance.PrizeRecord(2, order.OrderNo, "发放金额:" + GetPrize);
                             if(GetPrize > 0)
                             {
                                 int ChangeType = 120;
@@ -228,85 +260,7 @@ namespace MySystem
         public void tmpuse()
         { 
             List<string> OrderNos = new List<string>();
-            OrderNos.Add("BM2024060113545453402672795");
-            OrderNos.Add("BM2024060120184311880104432");
-            OrderNos.Add("BM2024060217481333220082372");
-            OrderNos.Add("BM2024060321463465032424067");
-            OrderNos.Add("BM2024060322545274296859914");
-            OrderNos.Add("BM2024060411201262916896764");
-            OrderNos.Add("BM2024060412004350540058006");
-            OrderNos.Add("BM2024060413465972197564202");
-            OrderNos.Add("BM2024060415033573916503519");
-            OrderNos.Add("BM2024060415272140626450020");
-            OrderNos.Add("BM2024060419341007900312976");
-            OrderNos.Add("BM2024060614271376167991548");
-            OrderNos.Add("BM2024060713063585137278426");
-            OrderNos.Add("BM2024060717481892176601326");
-            OrderNos.Add("BM2024060722154132572630240");
-            OrderNos.Add("BM2024060813372270460352780");
-            OrderNos.Add("BM2024060817212502065186555");
-            OrderNos.Add("BM2024060913094607695535841");
-            OrderNos.Add("BM2024060915283860183390573");
-            OrderNos.Add("BM2024061021073127270148815");
-            OrderNos.Add("BM2024061110512897200373083");
-            OrderNos.Add("BM2024061116381172563321539");
-            OrderNos.Add("BM2024061116403970848033016");
-            OrderNos.Add("BM2024061116420698468544752");
-            OrderNos.Add("BM2024061116454791337410830");
-            OrderNos.Add("BM2024061618114602891640591");
-            OrderNos.Add("BM2024061710231575090504019");
-            OrderNos.Add("BM2024061712491667073449209");
-            OrderNos.Add("BM2024061713313725279985341");
-            OrderNos.Add("BM2024061715305004310220168");
-            OrderNos.Add("BM2024061814570516374344008");
-            OrderNos.Add("BM2024061816284293452540567");
-            OrderNos.Add("BM2024061817303141188725776");
-            OrderNos.Add("BM2024061817514466570015777");
-            OrderNos.Add("BM2024061819320454306899315");
-            OrderNos.Add("BM2024061819550591038658501");
-            OrderNos.Add("BM2024061820083870519829511");
-            OrderNos.Add("BM2024061913174251376166374");
-            OrderNos.Add("BM2024061914133532158425064");
-            OrderNos.Add("BM2024062011520571122591493");
-            OrderNos.Add("BM2024062019282462603171101");
-            OrderNos.Add("BM2024062110361269396743921");
-            OrderNos.Add("BM2024062111013322637815281");
-            OrderNos.Add("BM2024062116123310729459180");
-            OrderNos.Add("BM2024062123360881972979017");
-            OrderNos.Add("BM2024062215145819732048432");
-            OrderNos.Add("BM2024062309550206498202108");
-            OrderNos.Add("BM2024062313551537076726382");
-            OrderNos.Add("BM2024062314521368797769848");
-            OrderNos.Add("BM2024062315021947328572858");
-            OrderNos.Add("BM2024062315505914062923147");
-            OrderNos.Add("BM2024062316493189795239698");
-            OrderNos.Add("BM2024062317220672507255078");
-            OrderNos.Add("BM2024062317362079359724475");
-            OrderNos.Add("BM2024062319362607330797044");
-            OrderNos.Add("BM2024062409194399607625868");
-            OrderNos.Add("BM2024062409354075093191999");
-            OrderNos.Add("BM2024062409572417250788279");
-            OrderNos.Add("BM2024062410130055103569254");
-            OrderNos.Add("BM2024062410370404316989426");
-            OrderNos.Add("BM2024062410494036054821444");
-            OrderNos.Add("BM2024062410510214237120993");
-            OrderNos.Add("BM2024062410540774395766768");
-            OrderNos.Add("BM2024062412054969363623909");
-            OrderNos.Add("BM2024062412063365014595845");
-            OrderNos.Add("BM2024062412564810567150827");
-            OrderNos.Add("BM2024062413361660963905320");
-            OrderNos.Add("BM2024062413533005598503044");
-            OrderNos.Add("BM2024062414034742067611108");
-            OrderNos.Add("BM2024062414221160454950118");
-            OrderNos.Add("BM2024062414221586262761671");
-            OrderNos.Add("BM2024062414283991832971690");
-            OrderNos.Add("BM2024062415020644801374214");
-            OrderNos.Add("BM2024062416342211628125048");
-            OrderNos.Add("BM2024062419040634390593367");
-            OrderNos.Add("BM2024062420031688020592643");
-            OrderNos.Add("BM2024062420595935667404632");
-            OrderNos.Add("BM2024062421545516534666451");
-            OrderNos.Add("BM2024062422060766623021093");
+            // OrderNos.Add("BM2024060113545453402672795");
 
             List<int> ChkIds = new List<int>(); //机具券商品Id集合
             ChkIds.Add(10);
@@ -1016,15 +970,15 @@ namespace MySystem
             return SetCount;
         }
 
-        public bool CheckPosCouponLeaderFlag(WebCMSEntities db, int UserId, int Count, List<string> codes)
+        public int CheckPosCouponLeaderFlag(WebCMSEntities db, int UserId, int Count, List<string> codes)
         {
-            int SetCount = 0;
+            int LeaderUserId = 0;
             decimal CheckReserve = 400 * Count;
             // decimal LeaderReserve = 0;
             LeaderReserveRecord ReserveRecord = db.LeaderReserveRecord.FirstOrDefault(m => m.SourceUserId == UserId && m.Remark == "推荐小盟主" && m.ChangeAmt - m.UsedReserve > CheckReserve);
             if(ReserveRecord != null)
             {
-                int LeaderUserId = ReserveRecord.UserId;
+                LeaderUserId = ReserveRecord.UserId;
                 // if(ReserveRecord.ChangeAmt - ReserveRecord.UsedReserve >= CheckReserve)
                 // {
                     // LeaderReserve = CheckReserve;
@@ -1057,12 +1011,11 @@ namespace MySystem
                     if(coupon != null)
                     {
                         coupon.LeaderUserId = LeaderUserId;
-                        SetCount += 1;
                     }
                 }
                 db.SaveChanges();
             }
-            return SetCount > 0;
+            return LeaderUserId;
         }
 
         /// <summary>

+ 56 - 0
AppStart/Helper/PrizeFlowRecordService.cs

@@ -0,0 +1,56 @@
+using System;
+using System.Collections.Generic;
+using Library;
+using LitJson;
+using System.Linq;
+using System.Threading;
+using MySystem.PxcModels;
+using System.Data;
+
+namespace MySystem
+{
+    public class PrizeFlowRecordService
+    {
+        public readonly static PrizeFlowRecordService Instance = new PrizeFlowRecordService();
+        private PrizeFlowRecordService()
+        { }
+
+        public void Start()
+        {
+            Thread th = new Thread(StartDo);
+            th.IsBackground = true;
+            th.Start();
+        }
+        public void StartDo()
+        {
+            while(true)
+            {
+                try
+                {
+                    string content = RedisDbconn.Instance.RPop<string>("PrizeFlowQueue");
+                    if (!string.IsNullOrEmpty(content))
+                    {
+                        DoSomething(content);
+                    }
+                    else
+                    {
+                        Thread.Sleep(2000);
+                    }
+                }
+                catch(Exception ex)
+                {
+                    function.WriteLog(DateTime.Now.ToString() + "\r\n" + ex.ToString(), "奖励返现流程入库异常");
+                    Thread.Sleep(600000);
+                }
+            }
+        }
+        public void DoSomething(string content)
+        {
+            PrizeFlowRecord item = Newtonsoft.Json.JsonConvert.DeserializeObject<PrizeFlowRecord>(content);
+            WebCMSEntities db = new WebCMSEntities();
+            db.PrizeFlowRecord.Add(item);
+            db.SaveChanges();
+            db.Dispose();
+        }
+    }
+}

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

@@ -338,6 +338,7 @@ namespace MySystem
                                 MachineData.BindCount += 1;
                                 MachineData.UnBindCount -= 1;
 
+                                Utils.Instance.PrizeRecord(1, pos.PosSn, "广电卡,激活状态:" + Bind.Field5);
                                 if(Bind.Field5 == "已激活")
                                 {
                                     bool PrizeFlag = pos.CardType > 0;

+ 38 - 14
AppStart/Helper/SycnSpServer/SycnSpTradeService.cs

@@ -819,60 +819,79 @@ namespace MySystem
             {
                 minute = 60 * 24 * 30;
             }
+            Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:贷记卡是否刷满" + CheckMoney + ";贷记卡交易:" + pos.CreditTrade + "");
+            Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:是否有机具所属人;机具所属人Id:" + pos.BuyUserId + "");
+            Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:是否未激活;机具激活状态:" + pos.ActivationState + "");
+            Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:划拨时间不能超过绑定时间" + minute + "分钟;划拨时间:" + pos.TransferTime.Value.ToString() + ",绑定时间:" + pos.BindingTime.Value.ToString());
             if (pos.CreditTrade >= CheckMoney && pos.BuyUserId > 0 && pos.ActivationState == 0 && TransferTime.AddMinutes(-minute) < pos.BindingTime)
             {
+                Utils.Instance.PrizeRecord(1, pos.PosSn, "满足条件");
                 pos.ActivationState = 1;
                 pos.ActivationTime = now;
+                Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:是否营训");
                 if(pos.CardType == 101)
                 {
+                    Utils.Instance.PrizeRecord(1, pos.PosSn, "是营训");
                     pos.IsPurchase = 1;
+                    Utils.Instance.PrizeRecord(1, pos.PosSn, "取消循环资格");
                 }
-                function.WriteLog("\n\n\n" + DateTime.Now.ToString(), "开机奖励在激活中监控");
-                function.WriteLog("机具" + pos.PosSn, "开机奖励在激活中监控");
-                function.WriteLog("PrizeFlag:" + PrizeFlag, "开机奖励在激活中监控");
+                Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:是否关联商户信息");
                 PxcModels.PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId);
                 if (merchant != null)
                 {
-                    function.WriteLog("查询到商户", "开机奖励在激活中监控");
                     merchant.ActiveStatus = 1;
                     merchant.MerStandardDate = now;
                     db.SaveChanges();
 
-                    function.WriteLog("商户" + merchant.KqMerNo, "开机奖励在激活中监控");
-
+                    Utils.Instance.PrizeRecord(1, pos.PosSn, "已关联");
                     //发放开机奖励
-                    function.WriteLog("首台" + pos.IsFirst, "开机奖励在激活中监控");
+                    Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:绑定时间不超过" + CheckDays + "天;当前绑定时间:" + pos.BindingTime.ToString() + "");
+                    Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:非营训;当前类型:" + pos.CardType);
+                    Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:奖励开关;当前:" + PrizeFlag);
                     if(pos.BindingTime > now.AddDays(-CheckDays) && pos.CardType < 100 && PrizeFlag)
                     {
-                        function.WriteLog("开机奖发放", "开机奖励在激活中监控");
+                        Utils.Instance.PrizeRecord(1, pos.PosSn, "满足条件,发放开机奖励");
                         RedisDbconn.Instance.AddList("OpenRewardQueue", pos.Id.ToString());
                         if(pos.BrandId == 14)
                         {
-                            if(pos.LeaderUserId > 0 && db.Leaders.Any(m => m.Id == pos.LeaderUserId && m.ExpiredDate > now))
+                            Utils.Instance.PrizeRecord(1, pos.PosSn, "满足条件,发放运营中心奖励");
+                            RedisDbconn.Instance.AddList("OperatePrizeQueue", pos.Id);
+                            Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:大盟主标记;当前大盟主Id:" + pos.LeaderUserId);
+                            PxcModels.Leaders leader = db.Leaders.FirstOrDefault(m => m.Id == pos.LeaderUserId) ?? new PxcModels.Leaders();
+                            DateTime ExpiredDate = leader.ExpiredDate == null ? DateTime.Parse("1900-01-01") : leader.ExpiredDate.Value;
+                            Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:盟主是否过期;过期时间:" + pos.LeaderUserId);
+                            if(pos.LeaderUserId > 0 && ExpiredDate > now)
                             {
+                                Utils.Instance.PrizeRecord(1, pos.PosSn, "满足条件,发放大盟主奖励");
                                 RedisDbconn.Instance.AddList("LeaderPrizeQueue", pos.Id);
                             }
-                            RedisDbconn.Instance.AddList("OperatePrizeQueue", pos.Id);
                         }
                     }
                 }
                 //发放大盟主奖励
                 decimal Deposit = decimal.Parse(function.CheckNum(pos.SeoKeyword));
-                function.WriteLog("大盟主---PrizeFlag:" + PrizeFlag + ";Deposit:" + Deposit + ";LeaderUserId:" + pos.LeaderUserId + ";pos.IsFirst:" + pos.IsFirst + ";pos.BindingTime:" + pos.BindingTime + ";now.AddDays(-CheckDays):" + now.AddDays(-CheckDays) + ";", "开机奖励在激活中监控");
+                if(pos.BrandId != 14)
+                {
+                    Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:有押金;当前押金:" + Deposit);
+                    Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:大盟主标记;当前大盟主Id:" + pos.LeaderUserId);
+                    PxcModels.Leaders leader = db.Leaders.FirstOrDefault(m => m.Id == pos.LeaderUserId) ?? new PxcModels.Leaders();
+                    DateTime ExpiredDate = leader.ExpiredDate == null ? DateTime.Parse("1900-01-01") : leader.ExpiredDate.Value;
+                    Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:盟主是否过期;过期时间:" + pos.LeaderUserId);
+                    Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:绑定时间不超过" + CheckDays + "天;绑定时间:" + pos.BindingTime.Value.ToString() + "");
+                }
                 if (Deposit > 0 && pos.LeaderUserId > 0 && db.Leaders.Any(m => m.Id == pos.LeaderUserId && m.ExpiredDate > now) && pos.BindingTime > now.AddDays(-CheckDays) && pos.CardType < 100 && PrizeFlag)
                 {
-                    function.WriteLog("大盟主奖发放", "开机奖励在激活中监控");
+                    Utils.Instance.PrizeRecord(1, pos.PosSn, "满足条件,发放大盟主奖励");
                     RedisDbconn.Instance.AddList("LeaderPrizeQueue", pos.Id);
                 }
                 //发放运营中心奖励
                 if (Deposit > 0 && pos.BindingTime > now.AddDays(-CheckDays) && pos.CardType < 100 && PrizeFlag)
                 {
-                    function.WriteLog("运营中心奖发放", "开机奖励在激活中监控");
+                    Utils.Instance.PrizeRecord(1, pos.PosSn, "满足条件,发放运营中心奖励");
                     RedisDbconn.Instance.AddList("OperatePrizeQueue", pos.Id);
                 }
                 if(pos.CardType < 100)
                 {
-                    // AlipayPayBack2Service.Instance.ActReserveBack(pos.OpId, pos.OpReserve1, pos.OpReserve2, pos.OpReserve3);
                     //统计激活数
                     RedisDbconn.Instance.AddList("StatActQueue", "{\"TradeDate\":\"" + now.ToString("yyyyMMdd") + "\",\"UserId\":\"" + pos.BuyUserId + "\",\"BrandId\":\"" + pos.BrandId + "\"}");
                     //运营中心额度变更
@@ -897,8 +916,13 @@ namespace MySystem
                 //推送激活数据
                 Utils.Instance.SendActData(pos);
             }
+            Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:已激活;当前状态:" + pos.ActivationState);
+            Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:绑定后台30天到60天之间;绑定时间:" + pos.BindingTime.Value.ToString() + "");
+            Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:贷记卡是否刷满10000;贷记卡交易:" + pos.CreditTrade + "");
+            Utils.Instance.PrizeRecord(1, pos.PosSn, "条件:非营训;当前类型:" + pos.CardType);
             if(pos.ActivationState == 1 && pos.BindingTime.Value.AddDays(30) <= DateTime.Now && pos.BindingTime.Value.AddDays(60) > DateTime.Now && pos.CreditTrade >= 10000 && pos.CardType < 100)
             {
+                Utils.Instance.PrizeRecord(1, pos.PosSn, "满足条件,发放盟主开机奖励");
                 RedisDbconn.Instance.AddList("LeaderRewardQueue", pos.Id.ToString());
             }
         }

+ 1 - 0
PxcModels/LeaderReserveRecord.cs

@@ -26,5 +26,6 @@ namespace MySystem.PxcModels
         public int UserId { get; set; }
         public int AccountRecordId { get; set; }
         public decimal UsedReserve { get; set; }
+        public int SmallLeaderUserId { get; set; }
     }
 }

+ 28 - 0
PxcModels/PosFeeWarningRecord.cs

@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.PxcModels
+{
+    public partial class PosFeeWarningRecord
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int Status { get; set; }
+        public int Version { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string SeoTitle { get; set; }
+        public string SeoKeyword { get; set; }
+        public string SeoDescription { get; set; }
+        public decimal DownFee { get; set; }
+        public ulong DownFeeFlag { get; set; }
+        public ulong UpFeeFlag { get; set; }
+        public string TradeFeeAmt { get; set; }
+        public string TradeFeeRate { get; set; }
+        public string PosSn { get; set; }
+        public int BrandId { get; set; }
+        public int PosId { get; set; }
+        public int QueryCount { get; set; }
+        public DateTime? DoDate { get; set; }
+    }
+}

+ 18 - 0
PxcModels/PrizeFlowRecord.cs

@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.PxcModels
+{
+    public partial class PrizeFlowRecord
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int Status { get; set; }
+        public int Version { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string Detail { get; set; }
+        public string CodeNumber { get; set; }
+        public int Kind { get; set; }
+    }
+}

+ 141 - 0
PxcModels/WebCMSEntities.cs

@@ -147,6 +147,7 @@ namespace MySystem.PxcModels
         public virtual DbSet<PosCouponOrders> PosCouponOrders { get; set; }
         public virtual DbSet<PosCouponRecord> PosCouponRecord { get; set; }
         public virtual DbSet<PosCoupons> PosCoupons { get; set; }
+        public virtual DbSet<PosFeeWarningRecord> PosFeeWarningRecord { get; set; }
         public virtual DbSet<PosMachines> PosMachines { get; set; }
         public virtual DbSet<PosMachinesFeeChangeRecord> PosMachinesFeeChangeRecord { get; set; }
         public virtual DbSet<PosMachinesTwo> PosMachinesTwo { get; set; }
@@ -156,6 +157,7 @@ namespace MySystem.PxcModels
         public virtual DbSet<PosMerchantTradeSummay> PosMerchantTradeSummay { get; set; }
         public virtual DbSet<PreAmountRecord> PreAmountRecord { get; set; }
         public virtual DbSet<PreSendStockDetail> PreSendStockDetail { get; set; }
+        public virtual DbSet<PrizeFlowRecord> PrizeFlowRecord { get; set; }
         public virtual DbSet<ProductComment> ProductComment { get; set; }
         public virtual DbSet<ProductCommentAgree> ProductCommentAgree { get; set; }
         public virtual DbSet<ProductFareAreas> ProductFareAreas { get; set; }
@@ -5367,6 +5369,10 @@ namespace MySystem.PxcModels
                     .HasCharSet("utf8")
                     .HasCollation("utf8_general_ci");
 
+                entity.Property(e => e.SmallLeaderUserId)
+                    .HasColumnType("int(11)")
+                    .HasComment("小盟主创客Id");
+
                 entity.Property(e => e.Sort).HasColumnType("int(11)");
 
                 entity.Property(e => e.SourceUserId).HasColumnType("int(11)");
@@ -10119,6 +10125,94 @@ namespace MySystem.PxcModels
                 entity.Property(e => e.UserId).HasColumnType("int(11)");
             });
 
+            modelBuilder.Entity<PosFeeWarningRecord>(entity =>
+            {
+                entity.HasComment("机具费率警告记录");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.BrandId)
+                    .HasColumnType("int(11)")
+                    .HasComment("产品类型");
+
+                entity.Property(e => e.CreateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("创建时间");
+
+                entity.Property(e => e.DoDate)
+                    .HasColumnType("datetime")
+                    .HasComment("执行时间");
+
+                entity.Property(e => e.DownFee)
+                    .HasColumnType("decimal(18,2)")
+                    .HasComment("费率调降值");
+
+                entity.Property(e => e.DownFeeFlag)
+                    .HasColumnType("bit(1)")
+                    .HasDefaultValueSql("b'0'")
+                    .HasComment("费率调降标记");
+
+                entity.Property(e => e.PosId)
+                    .HasColumnType("int(11)")
+                    .HasComment("机具Id");
+
+                entity.Property(e => e.PosSn)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("机具SN")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.QueryCount).HasColumnType("int(11)");
+
+                entity.Property(e => e.SeoDescription)
+                    .HasColumnType("varchar(500)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoKeyword)
+                    .HasColumnType("varchar(200)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoTitle)
+                    .HasColumnType("varchar(100)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Sort)
+                    .HasColumnType("int(11)")
+                    .HasComment("排序序号");
+
+                entity.Property(e => e.Status)
+                    .HasColumnType("int(11)")
+                    .HasComment("状态");
+
+                entity.Property(e => e.TradeFeeAmt)
+                    .HasColumnType("varchar(10)")
+                    .HasComment("交易秒到费")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.TradeFeeRate)
+                    .HasColumnType("varchar(10)")
+                    .HasComment("交易费率")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.UpFeeFlag)
+                    .HasColumnType("bit(1)")
+                    .HasDefaultValueSql("b'0'")
+                    .HasComment("费率调升标记");
+
+                entity.Property(e => e.UpdateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("修改时间");
+
+                entity.Property(e => e.Version)
+                    .HasColumnType("int(11)")
+                    .HasComment("版本号");
+            });
+
             modelBuilder.Entity<PosMachines>(entity =>
             {
                 entity.Property(e => e.Id).HasColumnType("int(11)");
@@ -10984,6 +11078,49 @@ namespace MySystem.PxcModels
                     .HasComment("预扣标记");
             });
 
+            modelBuilder.Entity<PrizeFlowRecord>(entity =>
+            {
+                entity.HasComment("奖励返现流程记录表");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.CodeNumber)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("订单号或SN")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.CreateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("创建时间");
+
+                entity.Property(e => e.Detail)
+                    .HasColumnType("varchar(200)")
+                    .HasComment("描述")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Kind)
+                    .HasColumnType("int(11)")
+                    .HasComment("分类");
+
+                entity.Property(e => e.Sort)
+                    .HasColumnType("int(11)")
+                    .HasComment("排序序号");
+
+                entity.Property(e => e.Status)
+                    .HasColumnType("int(11)")
+                    .HasComment("状态");
+
+                entity.Property(e => e.UpdateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("修改时间");
+
+                entity.Property(e => e.Version)
+                    .HasColumnType("int(11)")
+                    .HasComment("版本号");
+            });
+
             modelBuilder.Entity<ProductComment>(entity =>
             {
                 entity.HasComment("商品评价");
@@ -21425,6 +21562,10 @@ namespace MySystem.PxcModels
 
             modelBuilder.Entity<Users>(entity =>
             {
+                entity.HasIndex(e => e.Mobile)
+                    .HasName("Mobile")
+                    .IsUnique();
+
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
                 entity.Property(e => e.AccessToken)

+ 1 - 0
Startup.cs

@@ -242,6 +242,7 @@ namespace MySystem
                 PosChannelHelper.Instance.Start(); //实时查询查询终端收单机构
                 UpUserSaveService.Instance.Start(); //每天凌晨保存头一天的创客关系数据
                 HyfAddPrizeService.Instance.Start(); //盒力四射加码奖励发放
+                PrizeFlowRecordService.Instance.Start(); //奖励返现逻辑日志记录
             // }
 
 

+ 17 - 0
Util/Utils.cs

@@ -422,5 +422,22 @@ namespace MySystem
         }
 
         #endregion 
+
+
+        #region 记录奖励详细流程
+
+        public void PrizeRecord(int Kind, string CodeNumber, string Detail)
+        {
+            PrizeFlowRecord item = new PrizeFlowRecord()
+            {
+                CreateDate = DateTime.Now,
+                Kind = Kind,
+                CodeNumber = CodeNumber,
+                Detail = Detail,
+            };
+            RedisDbconn.Instance.AddList("PrizeFlowQueue", Newtonsoft.Json.JsonConvert.SerializeObject(item));
+        }
+
+        #endregion
     }
 }