using System; using System.Collections.Generic; using System.Linq; using System.Data; using System.Threading; using MySystem.PxcModels; using Library; using LitJson; namespace MySystem { public class PosCouponPrizeTest { public readonly static PosCouponPrizeTest Instance = new PosCouponPrizeTest(); private PosCouponPrizeTest() { } public void Start() { Thread th = new Thread(StartDo); th.IsBackground = true; th.Start(); } public void StartDo() { List ids = new List(); ids.Add(513534); ids.Add(513546); ids.Add(513558); ids.Add(513565); ids.Add(513572); ids.Add(513573); ids.Add(513592); ids.Add(513611); ids.Add(513619); ids.Add(513639); ids.Add(513649); ids.Add(513677); ids.Add(513696); ids.Add(513700); ids.Add(513713); ids.Add(513723); ids.Add(513742); ids.Add(513766); ids.Add(513791); ids.Add(513794); ids.Add(513801); ids.Add(513803); ids.Add(513808); ids.Add(513816); ids.Add(513821); ids.Add(513832); ids.Add(513861); ids.Add(513896); ids.Add(513907); ids.Add(513918); ids.Add(513921); ids.Add(513982); ids.Add(513994); ids.Add(513995); ids.Add(514008); ids.Add(514037); ids.Add(514057); ids.Add(514068); ids.Add(514081); ids.Add(514089); ids.Add(514097); ids.Add(514122); ids.Add(514129); ids.Add(514136); ids.Add(514159); ids.Add(514181); ids.Add(514191); ids.Add(514193); ids.Add(514197); ids.Add(514201); ids.Add(514208); ids.Add(514212); ids.Add(514218); ids.Add(514222); ids.Add(514229); ids.Add(514234); ids.Add(514257); ids.Add(514264); ids.Add(514265); ids.Add(514266); ids.Add(514270); ids.Add(514272); ids.Add(514275); ids.Add(514278); ids.Add(514313); ids.Add(514316); ids.Add(514325); ids.Add(514335); ids.Add(514337); ids.Add(514338); ids.Add(514365); ids.Add(514371); ids.Add(514373); ids.Add(514386); ids.Add(514392); ids.Add(514401); ids.Add(514412); ids.Add(514421); ids.Add(514424); ids.Add(514427); ids.Add(514428); ids.Add(514436); ids.Add(514448); ids.Add(514479); ids.Add(514488); ids.Add(514498); ids.Add(514504); ids.Add(514517); ids.Add(514522); ids.Add(514557); ids.Add(514571); ids.Add(514584); ids.Add(514606); ids.Add(514651); ids.Add(514698); ids.Add(514718); ids.Add(514733); ids.Add(514789); ids.Add(514800); ids.Add(514839); ids.Add(514864); ids.Add(514867); ids.Add(514869); ids.Add(514931); ids.Add(514937); ids.Add(514942); ids.Add(514990); ids.Add(515002); ids.Add(515039); ids.Add(515082); ids.Add(515088); ids.Add(515116); ids.Add(515120); ids.Add(515136); ids.Add(515138); ids.Add(515160); ids.Add(515214); ids.Add(515216); ids.Add(515220); ids.Add(515224); ids.Add(515228); ids.Add(515234); ids.Add(515236); ids.Add(515247); ids.Add(515253); ids.Add(515266); ids.Add(515269); ids.Add(515273); ids.Add(515275); ids.Add(515282); ids.Add(515301); ids.Add(515306); ids.Add(515307); ids.Add(515352); ids.Add(515381); ids.Add(515393); ids.Add(515409); ids.Add(515471); ids.Add(515480); ids.Add(515488); ids.Add(515493); ids.Add(515497); ids.Add(515500); ids.Add(515521); ids.Add(515537); ids.Add(515550); ids.Add(515551); ids.Add(515556); ids.Add(515569); ids.Add(515572); ids.Add(515594); ids.Add(515667); ids.Add(515706); ids.Add(515762); ids.Add(515781); ids.Add(515820); ids.Add(515835); ids.Add(515841); ids.Add(515848); ids.Add(515851); ids.Add(515867); ids.Add(515876); ids.Add(515883); ids.Add(515898); ids.Add(515909); ids.Add(515937); ids.Add(515942); ids.Add(515952); ids.Add(515953); ids.Add(515959); ids.Add(515973); ids.Add(515986); ids.Add(515996); ids.Add(515998); ids.Add(515999); ids.Add(516002); ids.Add(516007); ids.Add(516010); ids.Add(516013); ids.Add(516018); ids.Add(516020); ids.Add(516023); ids.Add(516055); ids.Add(516078); ids.Add(516095); ids.Add(516117); ids.Add(516127); ids.Add(516143); ids.Add(516157); ids.Add(516181); ids.Add(516214); ids.Add(516227); ids.Add(516231); ids.Add(516234); ids.Add(516245); ids.Add(516251); ids.Add(516258); ids.Add(516263); ids.Add(516265); ids.Add(516268); ids.Add(516290); ids.Add(516302); ids.Add(516305); ids.Add(516309); ids.Add(516310); ids.Add(516311); ids.Add(516323); ids.Add(516326); ids.Add(516332); ids.Add(516336); ids.Add(516338); ids.Add(516343); ids.Add(516350); ids.Add(516351); ids.Add(516354); ids.Add(516371); ids.Add(516380); ids.Add(516389); ids.Add(516398); ids.Add(516408); ids.Add(516412); ids.Add(516417); ids.Add(516435); ids.Add(516445); ids.Add(516449); ids.Add(516451); ids.Add(516452); ids.Add(516463); ids.Add(516472); ids.Add(516493); ids.Add(516495); ids.Add(516496); ids.Add(516497); ids.Add(516511); ids.Add(516512); ids.Add(516520); ids.Add(516522); ids.Add(516529); ids.Add(516534); ids.Add(516535); ids.Add(516537); ids.Add(516543); ids.Add(516549); ids.Add(516552); ids.Add(516557); ids.Add(516560); ids.Add(516563); ids.Add(516566); ids.Add(516569); ids.Add(516570); ids.Add(516586); ids.Add(516590); ids.Add(516592); ids.Add(516604); ids.Add(516608); ids.Add(516609); ids.Add(516616); ids.Add(516619); ids.Add(516631); ids.Add(516632); ids.Add(516633); ids.Add(516636); ids.Add(516637); ids.Add(516647); ids.Add(516653); ids.Add(516654); ids.Add(516656); ids.Add(516657); ids.Add(516665); ids.Add(516668); ids.Add(516691); ids.Add(516699); ids.Add(516708); ids.Add(516713); ids.Add(516719); ids.Add(516720); ids.Add(516744); ids.Add(516746); ids.Add(516757); ids.Add(516772); ids.Add(516777); ids.Add(516815); ids.Add(516818); ids.Add(516844); ids.Add(516851); ids.Add(516857); ids.Add(516862); ids.Add(516868); ids.Add(516870); ids.Add(516883); ids.Add(516886); ids.Add(516889); ids.Add(516892); ids.Add(516894); ids.Add(516905); ids.Add(516909); ids.Add(516911); ids.Add(516928); ids.Add(516929); ids.Add(516930); ids.Add(516940); ids.Add(516945); ids.Add(516946); ids.Add(516947); ids.Add(516948); ids.Add(516953); ids.Add(516955); ids.Add(516956); ids.Add(516959); ids.Add(516970); ids.Add(516978); ids.Add(516981); ids.Add(516982); ids.Add(516983); ids.Add(516989); ids.Add(516993); ids.Add(517001); ids.Add(517007); ids.Add(517009); ids.Add(517023); ids.Add(517024); ids.Add(517037); ids.Add(517045); ids.Add(517047); ids.Add(517051); ids.Add(517052); ids.Add(517059); ids.Add(517060); ids.Add(517079); ids.Add(517088); ids.Add(517101); ids.Add(517102); ids.Add(517108); ids.Add(517109); ids.Add(517111); ids.Add(517115); ids.Add(517119); ids.Add(517121); ids.Add(517122); ids.Add(517124); ids.Add(517129); ids.Add(517146); ids.Add(517147); ids.Add(517152); ids.Add(517163); ids.Add(517171); ids.Add(517191); ids.Add(517192); ids.Add(517194); ids.Add(517205); ids.Add(517207); ids.Add(517211); ids.Add(517212); ids.Add(517214); ids.Add(517218); ids.Add(517220); ids.Add(517223); ids.Add(517224); ids.Add(517230); ids.Add(517234); ids.Add(517237); ids.Add(517238); ids.Add(517242); ids.Add(517250); ids.Add(517252); ids.Add(517255); ids.Add(517266); ids.Add(517268); ids.Add(517275); ids.Add(517278); ids.Add(517281); ids.Add(517290); ids.Add(517296); ids.Add(517297); ids.Add(517311); ids.Add(517317); ids.Add(517340); ids.Add(517344); ids.Add(517346); ids.Add(517348); ids.Add(517356); ids.Add(517357); ids.Add(517363); ids.Add(517364); ids.Add(517366); ids.Add(517379); ids.Add(517382); ids.Add(517383); ids.Add(517386); ids.Add(517389); ids.Add(517391); ids.Add(517396); ids.Add(517397); ids.Add(517398); ids.Add(517401); ids.Add(517404); ids.Add(517407); ids.Add(517408); ids.Add(517410); ids.Add(517419); ids.Add(517427); ids.Add(517428); ids.Add(517438); ids.Add(517439); ids.Add(517450); ids.Add(517452); ids.Add(517454); ids.Add(517455); ids.Add(517456); ids.Add(517463); ids.Add(517475); ids.Add(517511); ids.Add(517516); ids.Add(517519); ids.Add(517522); ids.Add(517524); ids.Add(517531); ids.Add(517533); ids.Add(517535); ids.Add(517539); ids.Add(517542); ids.Add(517544); ids.Add(517546); ids.Add(517549); ids.Add(517551); ids.Add(517553); ids.Add(517581); ids.Add(517588); ids.Add(517598); ids.Add(517638); ids.Add(517642); ids.Add(517643); ids.Add(517651); ids.Add(517656); ids.Add(517668); ids.Add(517678); ids.Add(517691); ids.Add(517698); ids.Add(517704); ids.Add(517708); ids.Add(517723); ids.Add(517739); ids.Add(517746); ids.Add(517770); ids.Add(517794); ids.Add(517817); ids.Add(517826); ids.Add(517848); ids.Add(517867); ids.Add(517908); ids.Add(517909); ids.Add(517930); ids.Add(517931); ids.Add(517984); ids.Add(517986); ids.Add(517994); ids.Add(518019); ids.Add(518020); ids.Add(518029); ids.Add(518037); ids.Add(518061); ids.Add(518062); ids.Add(518063); ids.Add(518082); ids.Add(518100); ids.Add(518102); ids.Add(518109); ids.Add(518125); ids.Add(518139); ids.Add(518164); ids.Add(518166); ids.Add(518185); ids.Add(518189); ids.Add(518197); ids.Add(518198); ids.Add(518201); ids.Add(518211); ids.Add(518227); ids.Add(518229); ids.Add(518234); ids.Add(518236); ids.Add(518239); ids.Add(518243); ids.Add(518255); ids.Add(518263); ids.Add(518278); ids.Add(518303); ids.Add(518312); ids.Add(518317); ids.Add(518319); ids.Add(518323); ids.Add(518325); ids.Add(518340); ids.Add(518341); ids.Add(518353); ids.Add(518355); ids.Add(518357); ids.Add(518361); ids.Add(518363); ids.Add(518380); ids.Add(518384); ids.Add(518396); ids.Add(518437); ids.Add(518442); ids.Add(518446); ids.Add(518452); ids.Add(518453); ids.Add(518456); ids.Add(518462); ids.Add(518464); ids.Add(518507); ids.Add(518597); ids.Add(518600); ids.Add(518606); ids.Add(518626); ids.Add(518656); ids.Add(518708); ids.Add(518738); ids.Add(518754); ids.Add(518759); ids.Add(518762); ids.Add(518772); ids.Add(518781); ids.Add(518790); ids.Add(518793); ids.Add(518796); ids.Add(518808); ids.Add(518844); ids.Add(518858); ids.Add(518887); ids.Add(518894); ids.Add(518895); ids.Add(518901); ids.Add(518914); ids.Add(518923); ids.Add(518935); ids.Add(518941); ids.Add(518942); ids.Add(518967); ids.Add(518979); ids.Add(518991); ids.Add(518992); ids.Add(518994); ids.Add(518998); ids.Add(519002); ids.Add(519016); ids.Add(519035); ids.Add(519036); ids.Add(519062); ids.Add(519075); foreach(int OrderId in ids) { PosCouponPrizeTest.Instance.dosomething(OrderId); } } public void dosomething(int OrderId) { WebCMSEntities db = new WebCMSEntities(); OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities(); Orders order = db.Orders.FirstOrDefault(m => m.Id == OrderId); if(order != null) { List ChkIds = new List(); //机具券商品Id集合 ChkIds.Add(10); ChkIds.Add(11); ChkIds.Add(77); 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) { 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; } UserRankItem orderUser = GetUserLevel(order.UserId); if(orderUser.UserLevel == 0) { PreUserLevel(db, order.UserId, 1, DateTime.Parse("2025-01-01 00:00:00")); } List codes = function.CheckNull(order.SnNos).Split(',').ToList(); string ParentNav = orderUser.ParentNav + "," + orderUser.Id + ","; string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(','); Array.Reverse(ParentNavList); int index = 0; bool DirectPrizeFlag = false; //推荐奖励发放标识 int BuyPrizeFlag = 0; //购机奖励发放标识 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)); if(parentUser.Id > 0) { // 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) { 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); decimal GetPrize = CurBuyPrize - BuyPrize; // Utils.Instance.PrizeRecord(2, order.OrderNo, "发放金额:" + GetPrize); if(GetPrize > 0 && BuyPrizeFlag < 2) { bool PrizeFlag = true; int ChangeType = 118; if(parentUser.OperateLevel == 1) { ChangeType = 120; } if(parentUser.OperateLevel > 1) { ChangeType = 128; if(function.CheckNull(RedisDbconn.Instance.Get("YingXunUser")).Contains("," + orderUser.Id + ",")) { PrizeFlag = false; } } if(PrizeFlag) { // OpAccount(db, order.Id, parentUser.Id, CurBuyPrize - BuyPrize, order.BuyCount, ChangeType); if(GetPrize == 160) BuyPrizeFlag = 2; else if(GetPrize == 60) BuyPrizeFlag = 2; else BuyPrizeFlag = 1; } BuyPrize = CurBuyPrize; } if(parentUser.OperateLevel == 2 && CurBuyPrize == 100) BuyPrizeFlag = 2; } else if(parentUser.OperateLevel > 0 && CheckOpReserve(opdb, order.BuyCount, parentUser.Id) && BuyPrizeFlag < 2) { // Utils.Instance.PrizeRecord(2, order.OrderNo, "满足条件,发放购机奖"); //购机奖 decimal CurBuyPrize = GetBuyPrize(parentUser, order); decimal GetPrize = CurBuyPrize - BuyPrize; // Utils.Instance.PrizeRecord(2, order.OrderNo, "发放金额:" + GetPrize); if(GetPrize > 0) { int ChangeType = 120; if(parentUser.OperateLevel > 1) { ChangeType = 128; } // OpAccount(db, order.Id, parentUser.Id, GetPrize, order.BuyCount, ChangeType); BuyPrize = CurBuyPrize; if(GetPrize == 160) BuyPrizeFlag = 2; else if(GetPrize == 60) BuyPrizeFlag = 2; else BuyPrizeFlag = 1; } if(parentUser.OperateLevel == 2 && CurBuyPrize == 100) BuyPrizeFlag = 2; if(!BackAccountFlag) { BackAccountFlag = true; decimal GetAmount = GetWithdrawMoney(parentUser) * order.BuyCount; //扣减备用金 // OperateAmountChange(opdb, parentUser.Id, GetAmount, 2, 1, "商城购机", true, order.Id); // //返回到余额 // OperateAmountChange(opdb, parentUser.Id, GetAmount, 1, 2, "商城购机", true, order.Id); // OpAmountItem item = new OpAmountItem() // { // UserId = parentUser.Id, // OperateType = 0, // ChangeType = 5, // Remark = "商城购机", // UseAmount = GetAmount, // UseValidForGetAmount = GetAmount, // UseTotalAmt = GetAmount, // DataType = 1, // DataId = order.Id, // }; // RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", item); } } if(!BackAccountFlag) { BackAccountFlag = true; //扣减备用金 // int ReserveRecordId = OpReserve(db, order.Id, parentUser.Id, GetWithdrawMoney(parentUser) * order.BuyCount, 2, order.UserId, "购机奖励"); //返回到余额 // OpLeaderAccount(db, order, parentUser.Id, GetWithdrawMoney(parentUser), order.BuyCount, ReserveRecordId); } //给券打大盟主标记 // 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) { // 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 + ",对应机具券:" + order.SnNos); BigLeaderFlag = true; if(!string.IsNullOrEmpty(order.SnNos)) { List couponIds = db.PosCoupons.Where(m => codes.Contains(m.ExchangeCode)).OrderBy(m => m.Id).Take(CouponCount).ToList().Select(m => m.Id).ToList(); // Utils.Instance.PrizeRecord(2, order.OrderNo, "开始打标记,数量:" + couponIds.Count); // SetPosCouponLeaderFlag(db, parentUser.Id, order.BuyCount, couponIds); // Utils.Instance.PrizeRecord(2, order.OrderNo, "结束打标记"); } } } else if(parentUser.OperateLevel > 0 && CheckOpReserve(opdb, order.BuyCount, parentUser.Id) && BuyPrizeFlag < 2) { // Utils.Instance.PrizeRecord(2, order.OrderNo, "满足条件,发放购机奖"); //购机奖 decimal CurBuyPrize = GetBuyPrize(parentUser, order); decimal GetPrize = CurBuyPrize - BuyPrize; // Utils.Instance.PrizeRecord(2, order.OrderNo, "发放金额:" + GetPrize); if(GetPrize > 0) { int ChangeType = 120; if(parentUser.OperateLevel > 1) { ChangeType = 128; } // OpAccount(db, order.Id, parentUser.Id, GetPrize, order.BuyCount, ChangeType); BuyPrize = CurBuyPrize; if(GetPrize == 160) BuyPrizeFlag = 2; else if(GetPrize == 60) BuyPrizeFlag = 2; else BuyPrizeFlag = 1; } if(parentUser.OperateLevel == 2 && CurBuyPrize == 100) BuyPrizeFlag = 2; if(!BackAccountFlag) { BackAccountFlag = true; decimal GetAmount = GetWithdrawMoney(parentUser) * order.BuyCount; //扣减备用金 // OperateAmountChange(opdb, parentUser.Id, GetAmount, 2, 1, "商城购机", true, order.Id); // //返回到余额 // OperateAmountChange(opdb, parentUser.Id, GetAmount, 1, 2, "商城购机", true, order.Id); // OpAmountItem item = new OpAmountItem() // { // UserId = parentUser.Id, // OperateType = 0, // ChangeType = 5, // Remark = "商城购机", // UseAmount = GetAmount, // UseValidForGetAmount = GetAmount, // UseTotalAmt = GetAmount, // DataType = 1, // DataId = order.Id, // }; // RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", item); } } } } } } db.Dispose(); opdb.Dispose(); } public void StartTmp() { Thread th = new Thread(tmpuse); th.IsBackground = true; th.Start(); } public void tmpuse() { List OrderNos = new List(); // OrderNos.Add("BM2024060113545453402672795"); List ChkIds = new List(); //机具券商品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 = 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(); } public void Start2() { Thread th = new Thread(ready2); th.IsBackground = true; th.Start(); } private void ready2() { bool op = true; while (op) { string content = RedisDbconn.Instance.RPop("PosCouponPrizeQueue2"); if (!string.IsNullOrEmpty(content)) { try { dosomething(int.Parse(function.CheckInt(content))); } catch { } } else { Thread.Sleep(5000); } } } public void dosomething2(int OrderId) { WebCMSEntities db = new WebCMSEntities(); OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities(); Orders order = db.Orders.FirstOrDefault(m => m.Id == OrderId); if(order != null) { List ChkIds = new List(); //机具券商品Id集合 ChkIds.Add(10); ChkIds.Add(11); ChkIds.Add(77); ChkIds.Add(78); ChkIds.Add(79); //判断是否是指定商品 if(ChkIds.Contains(order.ProductId)) { 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; } UserRankItem orderUser = GetUserLevel(order.UserId); if(orderUser.UserLevel == 0) { } string ParentNav = orderUser.ParentNav + "," + orderUser.Id + ","; string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(','); Array.Reverse(ParentNavList); int index = 0; bool DirectPrizeFlag = false; //推荐奖励发放标识 bool BackAccountFlag = false; //备用金返余额标识 bool BigLeaderFlag = false; //大盟主标记 decimal BuyPrize = 0; //购机奖励 foreach(string ParentId in ParentNavList) { UserRankItem parentUser = GetUserLevel(int.Parse(ParentId)); index += 1; if(index == 1 && (orderUser.LeaderLevel > 0 || orderUser.OperateLevel > 0) && !DirectPrizeFlag) { DirectPrizeFlag = true; } if(index > 1) { if(Utils.Instance.IsStandardUser(parentUser.Id) && !DirectPrizeFlag) { DirectPrizeFlag = true; } } if(parentUser.AgoLeaderLevel > 0 && CheckLeaderReserve(db, order.BuyCount, parentUser.Id)) { //购机奖 if(parentUser.LeaderLevel > 0) { decimal CurBuyPrize = GetBuyPrize(parentUser, order); decimal GetPrize = CurBuyPrize - BuyPrize; if(GetPrize > 0) { bool PrizeFlag = true; int ChangeType = 118; if(parentUser.OperateLevel == 1) { ChangeType = 120; } if(parentUser.OperateLevel > 1) { ChangeType = 128; if(function.CheckNull(RedisDbconn.Instance.Get("YingXunUser")).Contains("," + orderUser.Id + ",")) { PrizeFlag = false; } } if(PrizeFlag && !db.UserAccountRecord.Any(m => m.QueryCount == order.Id && m.ChangeType == ChangeType)) { // OpAccount(db, order.Id, parentUser.Id, GetPrize, order.BuyCount, ChangeType); } BuyPrize = CurBuyPrize; } } if(!BackAccountFlag) { BackAccountFlag = true; } } else if(parentUser.OperateLevel > 0 && CheckOpReserve(opdb, order.BuyCount, parentUser.Id)) { //购机奖 decimal CurBuyPrize = GetBuyPrize(parentUser, order); decimal GetPrize = CurBuyPrize - BuyPrize; if(GetPrize > 0) { int ChangeType = 120; if(parentUser.OperateLevel > 1) { ChangeType = 128; } BuyPrize = CurBuyPrize; } if(!BackAccountFlag) { BackAccountFlag = true; } } } } } db.Dispose(); opdb.Dispose(); } /// /// 获取创客各种等级 /// /// /// /// public UserRankItem GetUserLevel(int UserId) { WebCMSEntities db = new WebCMSEntities(); OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities(); UserRankItem dic = new UserRankItem(); DateTime now = DateTime.Now; 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 > now) ?? 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 > now) { dic.LeaderLevel = leader.LeaderLevel; } dic.AgoLeaderLevel = leader.LeaderLevel; OpModels.SysAdmin sys = opdb.SysAdmin.FirstOrDefault(m => m.UserId == UserId) ?? new OpModels.SysAdmin(); if(sys.ExpireDate > now) { 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; } 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; } /// /// 直推奖励 /// /// /// /// /// public void DirectPrize(WebCMSEntities db, int OrderId, int UserId, int Count = 1) { UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = UserId, UserId = UserId, }).Entity; db.SaveChanges(); } decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额 decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额 decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额 account.BalanceAmount += 100 * Count; account.TotalAmount += 100 * Count; decimal AfterTotalAmount = account.TotalAmount; //变更后总金额 decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额 decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额 UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = UserId, //创客 ChangeType = 112, //变动类型 ChangeAmount = 100 * Count, //变更金额 BeforeTotalAmount = BeforeTotalAmount, //变更前总金额 AfterTotalAmount = AfterTotalAmount, //变更后总金额 BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额 AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 QueryCount = OrderId, }).Entity; db.SaveChanges(); //发送APP推送消息 Utils.Instance.PrizePush(UserId, 100 * Count); } /// /// 判断盟主储蓄金足够 /// /// /// /// /// public bool CheckLeaderReserve(WebCMSEntities db, int Count, int UserId) { UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == UserId) ?? new UserAccount(); if(acccount.LeaderReserve >= 400 * Count) { return true; } return false; } /// /// 判断运营中心/合伙人额度足够 /// /// /// /// /// public bool CheckOpReserve(OpModels.WebCMSEntities db, int Count, int UserId) { OpModels.UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId) ?? new OpModels.UserAccount(); if(account.TotalAmt >= 400 * Count) { return true; } return false; } public bool CheckOpReserve(OpModels.WebCMSEntities db, decimal Amt, int UserId) { OpModels.UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId) ?? new OpModels.UserAccount(); if(account.TotalAmt >= Amt) { return true; } return false; } /// /// 扣减/增加盟主储蓄金 /// /// /// /// /// /// /// /// public int OpReserve(WebCMSEntities db, int OrderId, int UserId, decimal Money, int ChangeType, int SourceUserId = 0, string Remark = "储备金购买") { UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = UserId, UserId = UserId, }).Entity; db.SaveChanges(); } decimal BeforeAmount = account.LeaderReserve; //变更前总金额 if(ChangeType == 1) { account.LeaderReserve += Money; } else { account.LeaderReserve -= Money; } decimal AfterAmount = account.LeaderReserve; //变更后总金额 LeaderReserveRecord add = db.LeaderReserveRecord.Add(new LeaderReserveRecord() { CreateDate = DateTime.Now, ChangeType = ChangeType, OrderId = OrderId, Remark = Remark, AfterAmt = AfterAmount, BeforeAmt = BeforeAmount, ChangeAmt = Money, TradeDate = DateTime.Now.ToString("yyyyMMdd"), TradeMonth = DateTime.Now.ToString("yyyyMM"), UserId = UserId, SourceUserId = SourceUserId, Sort = GetLeaderReserveRecordType(Remark), }).Entity; db.SaveChanges(); return add.Id; } private int GetLeaderReserveRecordType(string Remark) { Dictionary data = new Dictionary(); data.Add(11, "兑换机具券,机具券兑换,系统增加(盟主储蓄金),系统扣减(盟主储蓄金),储备金购买"); data.Add(12, "系统增加(可提现余额),系统扣减(可提现余额)"); data.Add(13, "推荐大盟主,推荐小盟主,商城购机,购机奖励"); var item = data.FirstOrDefault(m => m.Value.Contains(Remark)); if(item.Key > 0) { return item.Key; } return 0; } /// /// 操作盟主可提现余额 /// /// /// /// /// /// /// public void OpLeaderAccount(WebCMSEntities db, Orders order, int UserId, decimal Money, int Count = 1, int ReserveRecordId = 0) { UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = UserId, UserId = UserId, }).Entity; db.SaveChanges(); } int ChangeType = 0; if(Money == 400) { ChangeType = 117; } decimal BeforeLeaderBalanceAmount = account.LeaderBalanceAmount; //变更前余额 account.LeaderBalanceAmount += Money * Count; decimal AfterLeaderBalanceAmount = account.LeaderBalanceAmount; //变更后余额 LeaderAccountRecord leaderAccountRecord = db.LeaderAccountRecord.Add(new LeaderAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = UserId, //创客 ChangeType = ChangeType, //变动类型 ChangeAmount = Money * Count, //变更金额 BeforeBalanceAmount = BeforeLeaderBalanceAmount, //变更前余额 AfterBalanceAmount = AfterLeaderBalanceAmount, //变更后余额 QueryCount = order.Id, Sort = order.UserId, }).Entity; db.SaveChanges(); if(ReserveRecordId > 0) { LeaderReserveRecord edit = db.LeaderReserveRecord.FirstOrDefault(m => m.Id == ReserveRecordId); if(edit != null) { edit.AccountRecordId = leaderAccountRecord.Id; db.SaveChanges(); } } } /// /// 操作余额 /// /// /// /// /// /// public void OpAccount(WebCMSEntities db, int OrderId, int UserId, decimal Money, int Count = 1, int ChangeType = 0, int Kind = 0) { UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId); if (account == null) { account = db.UserAccount.Add(new UserAccount() { Id = UserId, UserId = UserId, }).Entity; db.SaveChanges(); } decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额 decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额 decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额 account.BalanceAmount += Money * Count; account.TotalAmount += Money * Count; decimal AfterTotalAmount = account.TotalAmount; //变更后总金额 decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额 decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额 UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, UserId = UserId, //创客 ChangeType = ChangeType, //变动类型 ChangeAmount = Money * Count, //变更金额 BeforeTotalAmount = BeforeTotalAmount, //变更前总金额 AfterTotalAmount = AfterTotalAmount, //变更后总金额 BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额 AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额 AfterBalanceAmount = AfterBalanceAmount, //变更后余额 QueryCount = OrderId, Kind = Kind, }).Entity; db.SaveChanges(); //发送APP推送消息 Utils.Instance.PrizePush(UserId, Money * Count); } /// /// 操作运营中心/合伙人额度(TotalAmt未使用额度,ValidForGetAmount可提现额度) /// /// /// /// /// (1增加,2减少) /// (1未使用额度,2可提现额度) /// /// public void OperateAmountChange(OpModels.WebCMSEntities db, int UserId, decimal Money, int OperateType, int AmountType, string Remark = "", bool record = false, int OrderId = 0) { OpModels.UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId); if (account == null) { account = db.UserAccount.Add(new OpModels.UserAccount() { Id = UserId, UserId = UserId, }).Entity; db.SaveChanges(); } decimal BeforeAmount = account.ValidAmount + account.TotalAmt + account.ValidForGetAmount; //变更前总金额 if(OperateType == 1) { if(AmountType == 1) { account.TotalAmt += Money; } else if(AmountType == 2) { account.ValidForGetAmount += Money; } else { account.ValidAmount += Money; } } else { if(AmountType == 1) { account.TotalAmt -= Money; } else if(AmountType == 2) { account.ValidForGetAmount -= Money; } else { account.ValidAmount -= Money; } } decimal AfterAmount = account.ValidAmount + account.TotalAmt + account.ValidForGetAmount; //变更后总金额 if(record) { OpModels.AmountRecord add = db.AmountRecord.Add(new OpModels.AmountRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, OperateType = OperateType, AfterAmount = AfterAmount, AfterValidForGetAmount = account.ValidForGetAmount, AfterTotalAmt = account.TotalAmt, AfterValidAmount = account.ValidAmount, BeforeAmount = BeforeAmount, UseAmount = Money, UserId = UserId, SeoDescription = Remark, Version = AmountType, QueryCount = OrderId, }).Entity; OpModels.AmountChangeRecord amountChangeRecord = db.AmountChangeRecord.Add(new OpModels.AmountChangeRecord() { AmountType = 2,//1 未使用额度 2 可提现额度 3 关联分仓额度 CreateDate = DateTime.Now, Title = Remark, UserId = UserId, //运营中心Id BeforeAmount = BeforeAmount,//使用前剩余额度 AfterAmount = AfterAmount,//使用后剩余额度 ChangeAmount = Money,//操作金额 OperateType = OperateType,//操作类别 Sort = OrderId, }).Entity; } db.SaveChanges(); } /// /// 给券设置大盟主标记 /// /// /// /// /// public int SetPosCouponLeaderFlag(WebCMSEntities db, int LeaderUserId, int Count, List couponIds) { int SetCount = 0; UserAccount pacccount = db.UserAccount.FirstOrDefault(m => m.Id == LeaderUserId) ?? new UserAccount(); foreach(int couponId in couponIds) { PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId); decimal LeaderReserve = pacccount.LeaderReserve; decimal CheckReserve = 400 * Count; // if(LeaderReserve < CheckReserve) // { // LeaderReserveRecord ReserveRecord = db.LeaderReserveRecord.FirstOrDefault(m => m.UserId == LeaderUserId && m.Remark == "推荐小盟主" && m.ChangeAmt - m.UsedReserve > 0); // if(ReserveRecord != null) // { // if(ReserveRecord.ChangeAmt - ReserveRecord.UsedReserve >= CheckReserve) // { // LeaderReserve = CheckReserve; // ReserveRecord.UsedReserve += CheckReserve; // } // else // { // decimal OtherLeaderReserve = ReserveRecord.ChangeAmt - ReserveRecord.UsedReserve; // ReserveRecord.UsedReserve += OtherLeaderReserve; // LeaderReserveRecord ReserveRecord2 = db.LeaderReserveRecord.FirstOrDefault(m => m.Id > ReserveRecord.Id && m.UserId == LeaderUserId && m.Remark == "推荐小盟主" && m.ChangeAmt - m.UsedReserve > 0); // if(ReserveRecord2 != null) // { // if(ReserveRecord2.ChangeAmt - ReserveRecord2.UsedReserve >= CheckReserve - OtherLeaderReserve) // { // LeaderReserve = CheckReserve - OtherLeaderReserve; // ReserveRecord2.UsedReserve += CheckReserve - OtherLeaderReserve; // } // else // { // OtherLeaderReserve = ReserveRecord2.ChangeAmt - ReserveRecord2.UsedReserve; // ReserveRecord2.UsedReserve += OtherLeaderReserve; // } // } // } // } // } if(coupon != null && LeaderReserve >= CheckReserve) { coupon.LeaderUserId = LeaderUserId; SetCount += 1; } } db.SaveChanges(); return SetCount; } public int CheckPosCouponLeaderFlag(WebCMSEntities db, int UserId, int Count, List codes) { 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) { LeaderUserId = ReserveRecord.UserId; // if(ReserveRecord.ChangeAmt - ReserveRecord.UsedReserve >= CheckReserve) // { // LeaderReserve = CheckReserve; ReserveRecord.UsedReserve += CheckReserve; // } // else // { // decimal OtherLeaderReserve = ReserveRecord.ChangeAmt - ReserveRecord.UsedReserve; // ReserveRecord.UsedReserve += OtherLeaderReserve; // LeaderReserveRecord ReserveRecord2 = db.LeaderReserveRecord.FirstOrDefault(m => m.Id > ReserveRecord.Id && m.UserId == LeaderUserId && m.Remark == "推荐小盟主" && m.ChangeAmt - m.UsedReserve > 0); // if(ReserveRecord2 != null) // { // if(ReserveRecord2.ChangeAmt - ReserveRecord2.UsedReserve >= CheckReserve - OtherLeaderReserve) // { // LeaderReserve = CheckReserve - OtherLeaderReserve; // ReserveRecord2.UsedReserve += CheckReserve - OtherLeaderReserve; // } // else // { // OtherLeaderReserve = ReserveRecord2.ChangeAmt - ReserveRecord2.UsedReserve; // ReserveRecord2.UsedReserve += OtherLeaderReserve; // } // } // } List couponIds = db.PosCoupons.Where(m => codes.Contains(m.ExchangeCode)).OrderBy(m => m.Id).ToList().Select(m => m.Id).ToList(); foreach(int couponId in couponIds) { PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId); if(coupon != null) { coupon.LeaderUserId = LeaderUserId; } } db.SaveChanges(); } return LeaderUserId; } /// /// 获取购机奖金额 /// /// /// public decimal GetBuyPrize(UserRankItem user, Orders order) { if(user.OperateLevel == 1) return 100; if(user.OperateLevel == 2) { function.WriteLog("\n\n\n创客Id:" + user.Id, "训练营60拦截日志"); if(TradeTeamCheck2(user.Id)) { return 160; } function.WriteLog("下单人:" + order.UserId, "训练营60拦截日志"); if(!TradeTeamCheck(order.UserId) && user.Id != order.UserId) { function.WriteLog("拦截", "训练营60拦截日志"); decimal Amount = order.BuyCount * 60; RedisDbconn.Instance.AddList("TradeFilterQueue", "{\"OrderId\":\"" + order.Id + "\",\"PrizeUserId\":\"" + user.Id + "\",\"Amount\":\"" + Amount + "\",\"Kind\":\"1\"}"); function.WriteLog("end", "训练营60拦截日志"); return 100; } return 160; } if(user.OperateLevel == 3) return 180; if(user.OperateLevel == 4) return 200; if(user.LeaderLevel > 0) return 100; return 0; } public bool TradeTeamCheck(int UserId) { bool op = true; if(UserId == 0) { return op; } function.WriteLog("UserId:" + UserId, "训练营判断参与活动"); WebCMSEntities maindb = new WebCMSEntities(); Users muser = maindb.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users(); string ParentNav = muser.ParentUserId + "," + UserId; string[] ParentNavList = ParentNav.Split(','); List UserIds = new List(); foreach(string IdString in ParentNavList) { UserIds.Add(int.Parse(function.CheckInt(IdString))); } JavaModels.WebCMSEntities db = new JavaModels.WebCMSEntities(); var users = db.KxsCampUser.Where(m => UserIds.Contains(m.UserId)).ToList(); foreach(var user in users) { DateTime now = DateTime.Now; // JavaModels.KxsCamp camp = db.KxsCamp.FirstOrDefault(m => m.Id == user.CampId && m.StartTime <= now && m.EndTime >= now); JavaModels.KxsCamp camp = db.KxsCamp.FirstOrDefault(m => m.Id == user.CampId && m.Status == 1); if(camp != null) { function.WriteLog("活动Id:" + camp.Id, "训练营判断参与活动"); op = false; break; } } maindb.Dispose(); db.Dispose(); function.WriteLog("\n\n\n", "训练营判断参与活动"); return op; } public bool TradeTeamCheck2(int UserId) { bool op = false; if(UserId == 0) { return op; } function.WriteLog("黄金合伙人-UserId:" + UserId, "训练营判断参与活动"); JavaModels.WebCMSEntities db = new JavaModels.WebCMSEntities(); var users = db.KxsCampUser.Where(m => m.UserId == UserId).ToList(); foreach(var user in users) { DateTime now = DateTime.Now; // JavaModels.KxsCamp camp = db.KxsCamp.FirstOrDefault(m => m.Id == user.CampId && m.StartTime <= now && m.EndTime >= now); JavaModels.KxsCamp camp = db.KxsCamp.FirstOrDefault(m => m.Id == user.CampId && m.Status == 1); if(camp != null) { function.WriteLog("黄金合伙人-活动Id:" + camp.Id, "训练营判断参与活动"); op = true; break; } } db.Dispose(); function.WriteLog("\n\n\n", "训练营判断参与活动"); return op; } /// /// 获取可提现金额 /// /// /// public decimal GetWithdrawMoney(UserRankItem user) { if(user.OperateLevel == 1) return 400; // if(user.OperateLevel == 2) return 340; // if(user.OperateLevel == 3) return 320; // if(user.OperateLevel == 4) return 300; if(user.OperateLevel == 2) return 400; if(user.OperateLevel == 3) return 400; if(user.OperateLevel == 4) return 400; if(user.AgoLeaderLevel > 0) return 400; return 0; } /// /// 预设职级 /// /// /// 创客Id /// 职级 /// 过期时间 public void PreUserLevel(WebCMSEntities db, int UserId, int Rank, DateTime ExpiredDate) { UserRankWhite rank = db.UserRankWhite.FirstOrDefault(m => m.Id == UserId); if(rank == null) { rank = db.UserRankWhite.Add(new UserRankWhite() { CreateDate = DateTime.Now, //设置时间 UserId = UserId, //用户 Id = UserId, }).Entity; db.SaveChanges(); } rank.Rank = Rank; rank.UpdateDate = ExpiredDate; db.SaveChanges(); } } }