Selaa lähdekoodia

Merge branch 'feat-lcl-修复问题' into release-mainserver

lcl 11 kuukautta sitten
vanhempi
commit
7b8c8d51f4

+ 195 - 0
AppStart/Helper/PosCouponPrize/PosCouponPrizeService.cs

@@ -214,6 +214,170 @@ namespace MySystem
         }
 
 
+        public void StartTmp()
+        {
+            Thread th = new Thread(tmpuse);
+            th.IsBackground = true;
+            th.Start();
+        }
+
+        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");
+
+            List<int> ChkIds = new List<int>(); //机具券商品Id集合
+            ChkIds.Add(10);
+            ChkIds.Add(11);
+            ChkIds.Add(77);
+            ChkIds.Add(78);
+            ChkIds.Add(79);
+            ChkIds.Add(92);
+            DateTime chkDate = DateTime.Parse("2024-06-01 00:00:00");
+            WebCMSEntities db = new WebCMSEntities();
+            OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities();
+            List<Orders> orders = db.Orders.Where(m => m.CreateDate >= chkDate && OrderNos.Contains(m.OrderNo) && ChkIds.Contains(m.ProductId) && m.Status > 0).ToList();
+            foreach(Orders order in orders)
+            {
+                int Kind = 0;
+                if (order.ProductId == 10)
+                {
+                    Kind = 1;
+                }
+                else if (order.ProductId == 11)
+                {
+                    Kind = 2;
+                }
+                int CouponCount = 0;
+                if(Kind == 1)
+                {
+                    CouponCount = 3 * order.BuyCount;
+                }
+                else if(Kind == 2)
+                {
+                    CouponCount = 2 * order.BuyCount;
+                }
+
+                UserAccountRecord record = db.UserAccountRecord.FirstOrDefault(m => m.Id >= 4579675 && m.QueryCount == order.Id && m.ChangeType == 112) ?? new UserAccountRecord();
+
+                UserRankItem orderUser = GetUserLevel2(order.UserId, order.PayDate.Value);
+                if(orderUser.UserLevel == 0) 
+                {
+                    PreUserLevel(db, order.UserId, 1, DateTime.Parse("2025-01-01 00:00:00"));
+                }
+                string ParentNav = orderUser.ParentNav + "," + orderUser.Id + ",";
+                string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
+                Array.Reverse(ParentNavList);
+                int index = 0;
+                bool DirectPrizeFlag = false; //推荐奖励发放标识
+                foreach(string ParentId in ParentNavList)
+                {
+                    UserRankItem parentUser = GetUserLevel2(int.Parse(ParentId), order.PayDate.Value);
+                    index += 1;
+                    if(index == 1 && (orderUser.LeaderLevel > 0 || orderUser.OperateLevel > 0) && !DirectPrizeFlag)
+                    {
+                        // DirectPrize(db, order.Id, order.UserId, order.BuyCount);
+                        if(record.UserId != order.UserId) function.WriteLog("下单人--订单号:" + order.OrderNo + ";应发对象:" + order.UserId + ";实发对象:" + record.UserId + ";发放金额:" + order.BuyCount + "00;", "推荐奖励计算");
+                        DirectPrizeFlag = true;
+                    }
+                    if(index > 1)
+                    {
+                        if(Utils.Instance.IsStandardUser2(parentUser.Id, order.PayDate.Value) && !DirectPrizeFlag)
+                        {
+                            // DirectPrize(db, order.Id, parentUser.Id, order.BuyCount);
+                            if(record.UserId != parentUser.Id) function.WriteLog("上级--订单号:" + order.OrderNo + ";应发对象:" + parentUser.Id + ";实发对象:" + record.UserId + ";发放金额:" + order.BuyCount + "00;", "推荐奖励计算");
+                            DirectPrizeFlag = true;
+                        }
+                    }
+                }
+                if(!DirectPrizeFlag && record.Id == 0)
+                {
+                    function.WriteLog("没发--订单号:" + order.OrderNo + ";发放金额:" + order.BuyCount + "00;", "推荐奖励计算");
+                }
+            }
+            db.Dispose();
+            opdb.Dispose();
+        }
+
+
 
 
 
@@ -413,6 +577,37 @@ namespace MySystem
             return dic;
         }
 
+        public UserRankItem GetUserLevel2(int UserId, DateTime OrderTime)
+        {
+            WebCMSEntities db = new WebCMSEntities();
+            OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities();
+            UserRankItem dic = new UserRankItem();
+            Users user = db.Users.FirstOrDefault(m => m.Id == UserId && m.AuthFlag == 1 && m.Status > -1) ?? new Users();
+            UserRankWhite userWhite = db.UserRankWhite.FirstOrDefault(m => m.Id == UserId && m.UpdateDate > OrderTime) ?? new UserRankWhite();
+            Leaders leader = db.Leaders.FirstOrDefault(m => m.Id == UserId) ?? new Leaders();
+            dic.UserLevel = userWhite.Rank > user.UserLevel ? userWhite.Rank : user.UserLevel;
+            if(leader.ExpiredDate > OrderTime && leader.LastBuyDate < OrderTime)
+            {
+                dic.LeaderLevel = leader.LeaderLevel;
+            }
+            dic.AgoLeaderLevel = leader.LeaderLevel;
+            OpModels.SysAdmin sys = opdb.SysAdmin.FirstOrDefault(m => m.UserId == UserId) ?? new OpModels.SysAdmin();
+            if(sys.ExpireDate > OrderTime && sys.CreateDate < OrderTime)
+            {
+                dic.OperateLevel = user.UserType;
+                dic.UserType = user.UserType;
+            }
+            dic.MerchantType = user.MerchantType;
+            dic.Id = user.Id;
+            dic.MakerCode = user.MakerCode;
+            dic.RealName = user.RealName;
+            dic.ParentUserId = user.ParentUserId;
+            dic.ParentNav = user.ParentNav;
+            db.Dispose();
+            opdb.Dispose();
+            return dic;
+        }
+
         /// <summary>
         /// 直推奖励
         /// </summary>

+ 58 - 4
AppStart/Helper/StatService.cs

@@ -1843,9 +1843,11 @@ namespace MySystem
         public void StartEverDay(string date)
         {
             string TradeMonth = DateTime.Now.ToString("yyyyMM");
+            string PreMonth = DateTime.Now.AddMonths(-1).ToString("yyyyMM");
             if(DateTime.Now.Day == 1)
             {
                 TradeMonth = DateTime.Now.AddMonths(-1).ToString("yyyyMM");
+                PreMonth = DateTime.Now.AddMonths(-2).ToString("yyyyMM");
             }
             else if(DateTime.Now.Day == 2)
             {
@@ -1887,6 +1889,62 @@ namespace MySystem
                     dic.Add(UserId, decimal.Parse(function.CheckNum(ThisMonthTrade)));
                 }
             }
+            list = CustomerSqlConn.dtable("select UserId,sum(TotalAmount) from UserAmountSummary where TradeMonth='" + TradeMonth + "' and SeoTitle='team' and UserId>0 group by UserId", MysqlConn.MpSqlConnStr);
+            foreach (DataRow dr in list.Rows)
+            {
+                string UserId = dr["UserId"].ToString();
+                string ThisMonthTrade = dr[1].ToString();
+                if(dic.ContainsKey(UserId))
+                {
+                    dic[UserId] += decimal.Parse(function.CheckNum(ThisMonthTrade));
+                }
+                else
+                {
+                    dic.Add(UserId, decimal.Parse(function.CheckNum(ThisMonthTrade)));
+                }
+            }
+            list = CustomerSqlConn.dtable("select UserId,sum(TotalAmount) from UserAmountSummary where TradeMonth='" + TradeMonth + "' and SeoTitle='team' and UserId>0 group by UserId", MysqlConn.MpSqlConnStr2);
+            foreach (DataRow dr in list.Rows)
+            {
+                string UserId = dr["UserId"].ToString();
+                string ThisMonthTrade = dr[1].ToString();
+                if(dic.ContainsKey(UserId))
+                {
+                    dic[UserId] += decimal.Parse(function.CheckNum(ThisMonthTrade));
+                }
+                else
+                {
+                    dic.Add(UserId, decimal.Parse(function.CheckNum(ThisMonthTrade)));
+                }
+            }
+            list = CustomerSqlConn.dtable("select UserId,SimValidActTeamCount*10000 from SimValidAct" + PreMonth + " where UserId>0", MysqlConn.StatSqlConnStr);
+            foreach (DataRow dr in list.Rows)
+            {
+                string UserId = dr["UserId"].ToString();
+                string ThisMonthTrade = dr[1].ToString();
+                if(dic.ContainsKey(UserId))
+                {
+                    dic[UserId] += decimal.Parse(function.CheckNum(ThisMonthTrade));
+                }
+                else
+                {
+                    dic.Add(UserId, decimal.Parse(function.CheckNum(ThisMonthTrade)));
+                }
+            }
+            list = CustomerSqlConn.dtable("select UserId,sum(TradeAmount) from HelpProfitUserTradeSummay where UserId>0 and TradeMonth='" + TradeMonth + "' and SeoTitle='team' group by UserId", MysqlConn.ReadSqlConnStr);
+            foreach (DataRow dr in list.Rows)
+            {
+                string UserId = dr["UserId"].ToString();
+                string ThisMonthTrade = dr[1].ToString();
+                if(dic.ContainsKey(UserId))
+                {
+                    dic[UserId] += decimal.Parse(function.CheckNum(ThisMonthTrade));
+                }
+                else
+                {
+                    dic.Add(UserId, decimal.Parse(function.CheckNum(ThisMonthTrade)));
+                }
+            }
 
             int index = 0;
             string sql = "";
@@ -1905,10 +1963,6 @@ namespace MySystem
             {
                 CustomerSqlConn.op(sql, MysqlConn.SqlConnStr);
             }
-
-            // Thread th = new Thread(StatTradeAmountEverDay);
-            // th.IsBackground = true;
-            // th.Start(date);
         }
         public void StatTradeAmountEverDay(object sender)
         {

+ 1 - 0
AppStart/Helper/UpUserSaveService.cs

@@ -35,6 +35,7 @@ namespace MySystem
                         if (string.IsNullOrEmpty(flag))
                         {
                             function.WritePage("/UpUserSave/", doDate + ".txt", DateTime.Now.ToString("HH:mm:ss"));
+                            doSomething(doDate);
                         }
                     }
                 }

+ 2 - 0
Config/MysqlConn.cs

@@ -9,6 +9,8 @@ namespace MySystem
         public static string OpSqlConnStr = ConfigurationManager.AppSettings["OpSqlConnStr"].ToString();
         public static string RdsStatSqlConnStr = ConfigurationManager.AppSettings["RdsStatSqlConnStr"].ToString();
         public static string StatSqlConnStr = ConfigurationManager.AppSettings["MainSqlConnStr"].ToString();
+        public static string MpSqlConnStr = ConfigurationManager.AppSettings["MpSqlConnStr"].ToString();
+        public static string MpSqlConnStr2 = ConfigurationManager.AppSettings["MpSqlConnStr2"].ToString();
 
         
     }

+ 139 - 81
Controllers/HomeController.cs

@@ -168,89 +168,147 @@ namespace MySystem.Controllers
 
         public string test()
         {
-            // OpModels.WebCMSEntities db = new OpModels.WebCMSEntities();
-            // List<int> ids = new List<int>();
-            // List<OpModels.ChangeTypes> typelist = db.ChangeTypes.ToList();
-            // List<OpModels.AmountRecord> list = db.AmountRecord.OrderBy(m => m.Id).ToList();
-            // int index = 0;
-            // foreach(OpModels.AmountRecord sub in list)
-            // {
-            //     index += 1;
-            //     if(!ids.Contains(sub.Id))
-            //     {
-            //         int OperateType = sub.OperateType;
-            //         OpModels.ChangeTypes type = typelist.FirstOrDefault(m => m.Name == sub.SeoDescription) ?? new OpModels.ChangeTypes();
-            //         decimal UseAmount = sub.UseAmount;
-            //         decimal UseTotalAmt = 0;
-            //         decimal UseValidForGetAmount = 0;
-            //         decimal UseValidAmount = 0;
-            //         if(type.Name == "商城购机" || type.Name == "购买小盟主" || type.Name == "购买运营中心")
-            //         {
-            //             UseTotalAmt = UseAmount;
-            //             UseValidForGetAmount = UseAmount;
-            //             OpModels.AmountRecord same = db.AmountRecord.FirstOrDefault(m => m.UserId == sub.UserId && m.CreateDate >= sub.CreateDate && m.CreateDate <= sub.CreateDate.Value.AddSeconds(5) && m.UseAmount == UseAmount && m.SeoDescription == sub.SeoDescription && m.OperateType == 1) ?? new OpModels.AmountRecord();
-            //             ids.Add(same.Id);
-            //             OperateType = 0;
-            //         }
-            //         else
-            //         {
-            //             if(sub.Version == 1)
-            //             {
-            //                 UseTotalAmt = UseAmount;
-            //             }
-            //             else if(sub.Version == 2)
-            //             {
-            //                 UseValidForGetAmount = UseAmount;
-            //             }
-            //             else if(sub.Version == 3)
-            //             {
-            //                 UseValidAmount = UseAmount;
-            //             }
-            //             else
-            //             {
-            //                 if(OperateType == 1)
-            //                 {
-            //                     UseTotalAmt = UseAmount;
-            //                 }
-            //                 else
-            //                 {
-            //                     UseTotalAmt = -UseAmount;
-            //                 }
-            //             }
-            //         }
-                    
-            //         OpModels.AmountRecordNew add = db.AmountRecordNew.Add(new OpModels.AmountRecordNew()
-            //         {
-            //             CreateDate = sub.CreateDate,
-            //             UpdateDate = sub.UpdateDate,
-            //             ChangeTypeId = type.Id,
-            //             Remark = sub.SeoDescription,
-            //             AfterValidForGetAmount = sub.AfterValidForGetAmount,
-            //             AfterTotalAmt = sub.AfterTotalAmt,
-            //             AfterValidAmount = sub.AfterValidAmount,
-            //             OperateType = OperateType,
-            //             AfterAmount = sub.AfterAmount,
-            //             BeforeAmount = sub.BeforeAmount,
-            //             UseAmount = UseAmount,
-            //             UserId = sub.UserId,
-            //             UseValidForGetAmount = UseValidForGetAmount,
-            //             UseTotalAmt = UseTotalAmt,
-            //             UseValidAmount = UseValidAmount,
-            //         }).Entity;
-            //         if(index % 100 == 0)
-            //         {
-            //             db.SaveChanges();
-            //         }
-            //     }
-            // }
-            // db.SaveChanges();
-            // db.Dispose();
-
             WebCMSEntities db = new WebCMSEntities();
-            Orders order = db.Orders.FirstOrDefault(m => m.Id == 451961);
-            AlipayPayBack2Service.Instance.LeaderRecommendPrize(db, order, 208759, 888, 123);
-            db.Dispose();
+            List<string> list = new List<string>();
+            foreach(string sub in list)
+            {
+                string[] subData = sub.Split(';');
+                string OrderNo = subData[0].Split(':')[1];
+                int ToUserId = int.Parse(subData[1].Split(':')[1]);
+                int UserId = int.Parse(subData[2].Split(':')[1]);
+                decimal Amt = decimal.Parse(subData[3].Split(':')[1]);
+                UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId) ?? new UserAccount();
+                if(account.BalanceAmount - account.FreezeAmount >= Amt)
+                {
+                    account.BalanceAmount -= Amt;
+                    account.TotalAmount -= Amt;
+                    Orders order = db.Orders.FirstOrDefault(m => m.OrderNo == OrderNo) ?? new Orders();
+                    UserAccountRecord record = db.UserAccountRecord.FirstOrDefault(m => m.QueryCount == order.Id && m.ChangeType == 112 && m.ChangeAmount == Amt && m.UserId == UserId);
+                    if(record != null)
+                    {
+                        record.UserId = ToUserId;
+                        UserAccount toAccount = db.UserAccount.FirstOrDefault(m => m.Id == ToUserId);
+                        if(toAccount != null)
+                        {
+                            toAccount.BalanceAmount += Amt;
+                            toAccount.TotalAmount += Amt;
+                            db.SaveChanges();
+
+                            // //重置实发对象收支明细数据
+                            // var oldrecord = db.UserAccountRecord.Where(m => m.Id < record.Id && m.UserId == UserId).OrderByDescending(m => m.Id).FirstOrDefault();
+                            // if(oldrecord != null)
+                            // {
+                            //     decimal AfterBalanceAmount = oldrecord.AfterBalanceAmount;
+                            //     decimal AfterTotalAmount = oldrecord.AfterTotalAmount;
+                            //     decimal AfterFreezeAmount = oldrecord.AfterFreezeAmount;
+                            //     var records = db.UserAccountRecord.Where(m => m.Id > oldrecord.Id && m.UserId == UserId).OrderBy(m => m.Id).ToList();
+                            //     foreach(var subrecord in records)
+                            //     {
+                            //         UserAccountRecord edit = db.UserAccountRecord.FirstOrDefault(m => m.Id == subrecord.Id);
+                            //         if(edit != null)
+                            //         {
+                            //             if(edit.BeforeBalanceAmount < edit.AfterBalanceAmount)
+                            //             {
+                            //                 edit.AfterBalanceAmount = AfterBalanceAmount + edit.ChangeAmount;
+                            //             }
+                            //             else
+                            //             {
+                            //                 edit.AfterBalanceAmount = AfterBalanceAmount - edit.ChangeAmount;
+                            //             }
+
+                            //             if(edit.BeforeTotalAmount < edit.AfterTotalAmount)
+                            //             {
+                            //                 edit.AfterTotalAmount = AfterTotalAmount + edit.ChangeAmount;
+                            //             }
+                            //             else
+                            //             {
+                            //                 edit.AfterTotalAmount = AfterTotalAmount - edit.ChangeAmount;
+                            //             }
 
+                            //             if(edit.BeforeFreezeAmount < edit.AfterFreezeAmount)
+                            //             {
+                            //                 edit.AfterFreezeAmount = AfterFreezeAmount + edit.ChangeAmount;
+                            //             }
+                            //             else
+                            //             {
+                            //                 edit.AfterFreezeAmount = AfterFreezeAmount - edit.ChangeAmount;
+                            //             }
+                            //             edit.BeforeBalanceAmount = AfterBalanceAmount;
+                            //             edit.BeforeTotalAmount = AfterTotalAmount;
+                            //             edit.BeforeFreezeAmount = AfterFreezeAmount;
+                            //             db.SaveChanges();
+
+                            //             AfterBalanceAmount = edit.AfterBalanceAmount;
+                            //             AfterTotalAmount = edit.AfterTotalAmount;
+                            //             AfterFreezeAmount = edit.AfterFreezeAmount;
+                            //         }
+                            //     }
+                            // }
+
+                            // //重置实发对象收支明细数据
+                            // var torecord = db.UserAccountRecord.Where(m => m.Id < record.Id && m.UserId == ToUserId).OrderByDescending(m => m.Id).FirstOrDefault();
+                            // if(torecord != null)
+                            // {
+                            //     record.BeforeBalanceAmount = torecord.AfterBalanceAmount;
+                            //     record.BeforeTotalAmount = torecord.AfterTotalAmount;
+                            //     record.BeforeFreezeAmount = torecord.AfterFreezeAmount;
+                            //     record.AfterBalanceAmount = record.BeforeBalanceAmount + record.ChangeAmount;
+                            //     record.AfterTotalAmount = record.BeforeTotalAmount + record.ChangeAmount;
+                            //     record.AfterFreezeAmount = record.BeforeFreezeAmount + record.ChangeAmount;
+
+                            //     decimal AfterBalanceAmount = record.AfterBalanceAmount;
+                            //     decimal AfterTotalAmount = record.AfterTotalAmount;
+                            //     decimal AfterFreezeAmount = record.AfterFreezeAmount;
+                            //     var records = db.UserAccountRecord.Where(m => m.Id > torecord.Id && m.UserId == ToUserId).OrderBy(m => m.Id).ToList();
+                            //     foreach(var subrecord in records)
+                            //     {
+                            //         UserAccountRecord edit = db.UserAccountRecord.FirstOrDefault(m => m.Id == subrecord.Id);
+                            //         if(edit != null)
+                            //         {
+                            //             if(edit.BeforeBalanceAmount < edit.AfterBalanceAmount)
+                            //             {
+                            //                 edit.AfterBalanceAmount = AfterBalanceAmount + edit.ChangeAmount;
+                            //             }
+                            //             else
+                            //             {
+                            //                 edit.AfterBalanceAmount = AfterBalanceAmount - edit.ChangeAmount;
+                            //             }
+
+                            //             if(edit.BeforeTotalAmount < edit.AfterTotalAmount)
+                            //             {
+                            //                 edit.AfterTotalAmount = AfterTotalAmount + edit.ChangeAmount;
+                            //             }
+                            //             else
+                            //             {
+                            //                 edit.AfterTotalAmount = AfterTotalAmount - edit.ChangeAmount;
+                            //             }
+
+                            //             if(edit.BeforeFreezeAmount < edit.AfterFreezeAmount)
+                            //             {
+                            //                 edit.AfterFreezeAmount = AfterFreezeAmount + edit.ChangeAmount;
+                            //             }
+                            //             else
+                            //             {
+                            //                 edit.AfterFreezeAmount = AfterFreezeAmount - edit.ChangeAmount;
+                            //             }
+                            //             edit.BeforeBalanceAmount = AfterBalanceAmount;
+                            //             edit.BeforeTotalAmount = AfterTotalAmount;
+                            //             edit.BeforeFreezeAmount = AfterFreezeAmount;
+                            //             db.SaveChanges();
+
+                            //             AfterBalanceAmount = edit.AfterBalanceAmount;
+                            //             AfterTotalAmount = edit.AfterTotalAmount;
+                            //             AfterFreezeAmount = edit.AfterFreezeAmount;
+                            //         }
+                            //     }
+                            // }
+
+                            function.WriteLog(sub, "已执行日志");
+                        }
+                    }
+                }
+            }
+            db.Dispose();
             return "ok";
         }
 

+ 64 - 0
Util/Utils.cs

@@ -147,6 +147,70 @@ namespace MySystem
             return false;
         }
 
+        public bool IsStandardUser2(int UserId, DateTime OrderTime)
+        {
+            WebCMSEntities db = new WebCMSEntities();
+            // Users user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+            UserRankItem user = PosCouponPrizeService.Instance.GetUserLevel(UserId);
+            if(user.UserType == 1)
+            {
+                return true;
+            }
+            if(user.LeaderLevel > 0)
+            {
+                Leaders leader = db.Leaders.FirstOrDefault(m => m.Id == UserId) ?? new Leaders();
+                if(leader.ExpiredDate > DateTime.Now)
+                {
+                    return true;
+                }
+            }
+            MpMainModels.WebCMSEntities mpdb = new MpMainModels.WebCMSEntities();
+            MpMainModels2.WebCMSEntities mpdb2 = new MpMainModels2.WebCMSEntities();
+            int couponCount = db.PosCoupons.Count(m => m.CreateDate <= OrderTime && m.UserId == UserId && m.IsUse == 0); //1. 个人名下电签兑换券 + 大机兑换券 ≥ 3
+            // TODO:待确认条件
+            if(couponCount >= 3)
+            {
+                db.Dispose();
+                mpdb.Dispose();
+                mpdb2.Dispose();
+                return true;
+            }
+            else
+            {
+                List<int> ids = new List<int>();
+                ids.Add(10);
+                ids.Add(11);
+                ids.Add(77);
+                ids.Add(78);
+                ids.Add(79);
+                bool orderCheck = db.Orders.Any(m => m.PayDate <= OrderTime && m.UserId == UserId && ids.Contains(m.ProductId) && m.Status > 0); //1. 商城下单过id为10、11、77、78、79的商品
+                if(orderCheck)
+                {
+                    db.Dispose();
+                    mpdb.Dispose();
+                    mpdb2.Dispose();
+                    return true;
+                }
+                else
+                {
+                    //1. 激活POS机数量 + 激活来客吧商户数量 + 激活广电卡数量 ≥ 3
+                    int ActiveCount = db.PosMachinesTwo.Count(m => m.BuyUserId == UserId && m.ActivationState == 1 && m.ActivationTime <= OrderTime);
+                    int ActMerchantCount = mpdb.MerchantDepositOrder.Count(m => m.UserId == UserId && m.Status > 0 && m.UpdateDate <= OrderTime) + mpdb2.MerchantDepositOrder.Count(m => m.UserId == UserId && m.Status > 0 && m.UpdateDate <= OrderTime);
+                    if(ActiveCount + ActMerchantCount >= 3)
+                    {
+                        db.Dispose();
+                        mpdb.Dispose();
+                        mpdb2.Dispose();
+                        return true;
+                    }
+                }
+            }
+            db.Dispose();
+            mpdb.Dispose();
+            mpdb2.Dispose();
+            return false;
+        }
+
         /// <summary>
         /// 预设职级
         /// </summary>