Преглед на файлове

Merge branch 'release' into develop

lichunlei преди 1 година
родител
ревизия
580064df41

+ 35 - 489
AppStart/Helper/AlipayPayBack2Service.cs

@@ -245,7 +245,7 @@ namespace MySystem
                             Users user = db.Users.FirstOrDefault(m => m.Id == order.UserId) ?? new Users();
                             //自留券数量清除
                             CancelStayCoupon(db, order.UserId, 5);
-                            // if (check) OperateReserveBackFor(db, user.Id, 10000);
+                            if (check) OperateReserveBackFor(db, user.Id, 10000);
                             //预设小盟主职级
                             LeaderPreUserLevel(db, order.UserId, 1);
                             AddLeader(db, order.UserId, 1);
@@ -282,465 +282,7 @@ namespace MySystem
                     }
 
                     //推荐下单奖励
-                    List<int> LkbIds = new List<int>(); //来客吧组合包
-                    LkbIds.Add(77);
-                    LkbIds.Add(78);
-                    LkbIds.Add(79);
-                    if (pro.ProductId == 10 || pro.ProductId == 11 || LkbIds.Contains(pro.ProductId))
-                    {
-                        bool checkPrize = db.UserAccountRecord.Any(m => m.QueryCount == OrderId && m.ChangeType == 112);
-                        function.WriteLog("OrderId:" + OrderId, "推荐下单奖励监控日志");
-                        function.WriteLog("checkPrize:" + checkPrize, "推荐下单奖励监控日志");
-                        if (checkPrize)
-                        {
-                            Users user = db.Users.FirstOrDefault(m => m.Id == order.UserId);
-                            if (user != null)
-                            {
-                                if(user.LeaderLevel > 0 || user.UserType == 1) //盟主或运营中心
-                                {
-                                    //获得100元奖励
-                                    OpAccount(db, order, order.UserId, 100, pro.ProductCount);
-                                }
-                            }
-                        }
-                        else
-                        {
-                            Users user = db.Users.FirstOrDefault(m => m.Id == order.UserId);
-                            if (user != null)
-                            {
-                                bool directPrize = false; //直推奖标记
-                                bool bigLeaderPrize = false; //大盟主券标记
-                                bool operateFlag = false; //运营中心标记
-                                bool buyPrize = false; //返100购机奖励标记或返100购机奖励标记-运营中心
-                                int leaderFlag = 0; //返600备用金标记
-                                if(user.LeaderLevel > 0 || user.UserType == 1) //盟主或运营中心
-                                {
-                                    if(user.LeaderLevel > 0)
-                                    {
-                                        UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == order.UserId) ?? new UserAccount();
-                                        if(acccount.LeaderReserve >= order.TotalPrice)
-                                        {
-                                            if(order.PayMode == 4)
-                                            {
-                                                //扣减备用金
-                                                OpReserve(db, order, order.UserId, order.TotalPrice, 0, 0, "商城购机(储备金支付)");
-                                            }
-                                        }
-                                        string parentString = user.ParentNav + "," + order.UserId + ",";
-                                        string[] puids = parentString.Replace(",,", ",").Trim(',').Split(',');
-                                        Array.Reverse(puids);
-                                        bool getFlag = true;
-                                        foreach(string puid in puids)
-                                        {
-                                            int puidNum = int.Parse(function.CheckInt(puid));
-                                            Users puser = db.Users.FirstOrDefault(m => m.Id == puidNum) ?? new Users();
-                                            if(puser.LeaderLevel > 0 && getFlag)
-                                            {
-                                                UserAccount pacccount = db.UserAccount.FirstOrDefault(m => m.Id == puidNum) ?? new UserAccount();
-                                                if(pacccount.LeaderReserve >= 400 * pro.ProductCount)
-                                                {
-                                                    //获得100元奖励
-                                                    OpAccount(db, order, puidNum, 100, pro.ProductCount);
-                                                    getFlag = false;
-                                                    break;
-                                                }
-                                            }
-                                        }
-
-                                        //小盟主在有效期内购券后预设职级,仍为K5,但增加一条预设为K1的预设记录
-                                        if(user.LeaderLevel == 1)
-                                        {
-                                            DateTime now = DateTime.Now;
-                                            bool checkLeader = db.Leaders.Any(m => m.Id == user.Id && m.ExpiredDate > now);
-                                            if(checkLeader)
-                                            {
-                                                PreUserLevel(db, user.Id, 1, DateTime.Parse("2025-01-01 00:00:00"));
-                                            }
-                                        }
-                                    }
-                                    else if(user.UserType == 1)
-                                    {
-                                        //获得100元奖励
-                                        OpAccount(db, order, order.UserId, 100, pro.ProductCount);
-                                    }
-                                    //推荐奖励
-                                    DirectPrize(db, order.Id, order.UserId, pro.ProductCount);
-                                    //推荐下单上级获得30天的机具循环天数(盟主自己得)
-                                    var posList = db.PosMachinesTwo.Select(m => new { m.Id, m.UserId, m.BindingState, m.RecycEndDate }).Where(m => m.UserId == order.UserId && m.BindingState == 0 && m.RecycEndDate != null).ToList();
-                                    foreach (var subPos in posList)
-                                    {
-                                        PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == subPos.Id);
-                                        if (pos != null)
-                                        {
-                                            pos.RecycEndDate = pos.RecycEndDate.Value.AddDays(30);
-                                        }
-                                    }
-                                    db.SaveChanges();
-                                    if(order.PayMode == 4 && user.LeaderLevel > 0) //使用盟主储蓄金,并且是盟主
-                                    {
-                                        if(user.UserType == 1)
-                                        {
-                                            if(couponIds.Count > 0)
-                                            {
-                                                UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == user.Id) ?? new UserAccount();
-                                                foreach(int couponId in couponIds)
-                                                {
-                                                    PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
-                                                    if(coupon != null)
-                                                    {
-                                                        if(acccount.LeaderReserve >= 400 * pro.ProductCount)
-                                                        {
-                                                            coupon.LeaderUserId = user.Id;
-                                                        }
-                                                        coupon.OpId = user.Id;
-                                                    }
-                                                }
-                                            }
-                                            db.SaveChanges();
-                                        }
-                                        else
-                                        {
-                                            //寻找最近运营中心额度大于0的运营中心
-                                            int PUserId = user.Id;
-                                            bool OperateFlag = true;
-                                            bool OncePrizeFlag1 = true;
-                                            while(PUserId > 0)
-                                            {
-                                                Users puser = db.Users.FirstOrDefault(m => m.Id == PUserId);
-                                                if(puser != null)
-                                                {
-                                                    if(puser.UserType == 1 && OperateFlag == true) //运营中心
-                                                    {
-                                                        if(couponIds.Count > 0)
-                                                        {
-                                                            UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == order.UserId) ?? new UserAccount();
-                                                            foreach(int couponId in couponIds)
-                                                            {
-                                                                PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
-                                                                if(coupon != null)
-                                                                {
-                                                                    if(acccount.LeaderReserve >= 400 * pro.ProductCount)
-                                                                    {
-                                                                        coupon.LeaderUserId = user.Id;
-                                                                    }
-                                                                    coupon.OpId = puser.Id;
-                                                                }
-                                                            }
-                                                            db.SaveChanges();
-                                                            if(acccount.LeaderReserve >= 400 * pro.ProductCount && OncePrizeFlag1)
-                                                            {
-                                                                //扣减备用金
-                                                                OpReserve(db, order, order.UserId, 400 * pro.ProductCount, 2, 0, "商城购机");
-                                                                //返回到余额
-                                                                OpLeaderAccount(db, order, order.UserId, 400, pro.ProductCount);
-                                                                OncePrizeFlag1 = false;
-                                                            }
-                                                            OperateFlag = false;
-                                                        }
-                                                        else if(LkbIds.Contains(pro.ProductId)) //来客吧组合包
-                                                        {
-                                                            UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == order.UserId) ?? new UserAccount();
-                                                            if(acccount.LeaderReserve >= 400 * pro.ProductCount && OncePrizeFlag1)
-                                                            {
-                                                                //扣减备用金
-                                                                OpReserve(db, order, order.UserId, 400 * pro.ProductCount, 2, 0, "商城购机");
-                                                                //返回到余额
-                                                                OpLeaderAccount(db, order, order.UserId, 400, pro.ProductCount);
-                                                                OncePrizeFlag1 = false;
-                                                            }
-                                                            OperateFlag = false;
-                                                        }
-                                                    }
-                                                    PUserId = puser.ParentUserId;
-                                                }
-                                                else
-                                                {
-                                                    PUserId = 0;
-                                                }
-                                            }
-                                        }
-                                    }
-                                    else if(order.PayMode == 4 && user.UserType == 1) //使用盟主储蓄金,并且是运营中心
-                                    {
-                                        if(couponIds.Count > 0)
-                                        {
-                                            foreach(int couponId in couponIds)
-                                            {
-                                                PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
-                                                if(coupon != null)
-                                                {
-                                                    coupon.OpId = user.Id;
-                                                }
-                                            }
-                                        } 
-                                        db.SaveChanges();
-                                        //寻找最近储蓄金充足的大盟主
-                                        int PUserId = user.Id;
-                                        bool LeaderFlag = true;
-                                        bool OncePrizeFlag2 = true;
-                                        while(PUserId > 0)
-                                        {
-                                            Users puser = db.Users.FirstOrDefault(m => m.Id == PUserId);
-                                            if(puser != null)
-                                            {
-                                                if(puser.LeaderLevel == 2 && LeaderFlag == true) //大盟主
-                                                {
-                                                    if(couponIds.Count > 0)
-                                                    {
-                                                        UserAccount pacccount = db.UserAccount.FirstOrDefault(m => m.Id == puser.Id) ?? new UserAccount();
-                                                        foreach(int couponId in couponIds)
-                                                        {
-                                                            PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
-                                                            if(coupon != null && pacccount.LeaderReserve >= 400 * pro.ProductCount)
-                                                            {
-                                                                coupon.LeaderUserId = puser.Id;
-                                                            }
-                                                        }
-                                                        db.SaveChanges();
-                                                        UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == order.UserId) ?? new UserAccount();
-                                                        if(acccount.LeaderReserve >= 400 * pro.ProductCount && OncePrizeFlag2)
-                                                        {
-                                                            //扣减备用金
-                                                            OpReserve(db, order, order.UserId, 400 * pro.ProductCount, 2, 0, "商城购机");
-                                                            //返回到余额
-                                                            OpLeaderAccount(db, order, order.UserId, 400, pro.ProductCount);
-                                                            OncePrizeFlag2 = false;
-                                                        }
-                                                        LeaderFlag = false;
-                                                    }
-                                                    else if(LkbIds.Contains(pro.ProductId))
-                                                    {
-                                                        UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == order.UserId) ?? new UserAccount();
-                                                        if(acccount.LeaderReserve >= 400 * pro.ProductCount && OncePrizeFlag2)
-                                                        {
-                                                            //扣减备用金
-                                                            OpReserve(db, order, order.UserId, 400 * pro.ProductCount, 2, 0, "商城购机");
-                                                            //返回到余额
-                                                            OpLeaderAccount(db, order, order.UserId, 400, pro.ProductCount);
-                                                            OncePrizeFlag2 = false;
-                                                        }
-                                                        LeaderFlag = false;
-                                                    }
-                                                }
-                                                PUserId = puser.ParentUserId;
-                                            }
-                                            else
-                                            {
-                                                PUserId = 0;
-                                            }
-                                        }
-                                    }
-                                    else
-                                    {
-                                        //寻找最近储蓄金充足的大盟主及最近运营中心额度大于0的运营中心(含自身)
-                                        int PUserId = user.Id;
-                                        int LeaderFlag = 0;
-                                        bool OperateFlag = true;
-                                        bool OncePrizeFlag3 = true;
-                                        while(PUserId > 0)
-                                        {
-                                            Users puser = db.Users.FirstOrDefault(m => m.Id == PUserId);
-                                            if(puser != null)
-                                            {
-                                                if(puser.LeaderLevel > 0 && puser.LeaderLevel > LeaderFlag && LeaderFlag < 2) //大盟主
-                                                {
-                                                    if(couponIds.Count > 0)
-                                                    {
-                                                        if(puser.LeaderLevel == 2)
-                                                        {
-                                                            UserAccount pacccount = db.UserAccount.FirstOrDefault(m => m.Id == puser.Id) ?? new UserAccount();
-                                                            foreach(int couponId in couponIds)
-                                                            {
-                                                                PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
-                                                                if(coupon != null && pacccount.LeaderReserve >= 400 * pro.ProductCount)
-                                                                {
-                                                                    coupon.LeaderUserId = puser.Id;
-                                                                }
-                                                            }
-                                                            db.SaveChanges();
-                                                        }
-                                                        UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == puser.Id) ?? new UserAccount();
-                                                        if(acccount.LeaderReserve >= 400 * pro.ProductCount && OncePrizeFlag3)
-                                                        {
-                                                            //扣减备用金
-                                                            OpReserve(db, order, puser.Id, 400 * pro.ProductCount, 2, 0, "商城购机");
-                                                            //返回到余额
-                                                            OpLeaderAccount(db, order, puser.Id, 400, pro.ProductCount);
-                                                            LeaderFlag = puser.LeaderLevel;
-                                                            OncePrizeFlag3 = false;
-                                                        }
-                                                    }
-                                                    else if(LkbIds.Contains(pro.ProductId))
-                                                    {
-                                                        UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == puser.Id) ?? new UserAccount();
-                                                        if(acccount.LeaderReserve >= 400 * pro.ProductCount && OncePrizeFlag3)
-                                                        {
-                                                            //扣减备用金
-                                                            OpReserve(db, order, puser.Id, 400 * pro.ProductCount, 2, 0, "商城购机");
-                                                            //返回到余额
-                                                            OpLeaderAccount(db, order, puser.Id, 400, pro.ProductCount);
-                                                            LeaderFlag = puser.LeaderLevel;
-                                                            OncePrizeFlag3 = false;
-                                                        }
-                                                    }
-                                                }
-                                                if(puser.UserType == 1 && OperateFlag == true) //运营中心
-                                                {
-                                                    if(couponIds.Count > 0)
-                                                    {
-                                                        foreach(int couponId in couponIds)
-                                                        {
-                                                            PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
-                                                            if(coupon != null)
-                                                            {
-                                                                coupon.OpId = puser.Id;
-                                                            }
-                                                        }
-                                                        db.SaveChanges();
-                                                        OperateFlag = false;
-                                                    }
-                                                }
-                                                PUserId = puser.ParentUserId;
-                                            }
-                                            else
-                                            {
-                                                PUserId = 0;
-                                            }
-                                        }
-                                        //运营中心返额度(下单人自己是运营中心)
-                                        // OperateReserveBackFor(db, order.UserId, order.TotalPrice);
-                                    }
-                                    return;
-                                }
-                                int ParentUserId = user.ParentUserId;
-                                LeaderRankWhite rank = db.LeaderRankWhite.FirstOrDefault(m => m.Id == order.UserId);
-                                if(rank == null)
-                                {
-                                    PreUserLevel(db, order.UserId, 1, DateTime.Now.AddYears(1));
-                                }
-                                // List<int> proids = new List<int>();
-                                // proids.Add(10);
-                                // proids.Add(11);
-                                // 普通创客购买600一组的机具券
-                                bool OncePrizeFlag4 = true;
-                                while(ParentUserId > 0)
-                                {
-                                    Users puser = db.Users.FirstOrDefault(m => m.Id == ParentUserId) ?? new Users();
-                                    bool valid = Utils.Instance.IsStandardUser(ParentUserId);
-                                    function.WriteLog("是否有效创客:" + valid, "推荐下单奖励监控日志");
-                                    if (valid)
-                                    {
-                                        // 盟主直推奖励,可以每次下单获得
-                                        if(!directPrize)
-                                        {
-                                            DirectPrize(db, order.Id, ParentUserId, pro.ProductCount);
-                                            directPrize = true;
-                                        }
-
-                                        //推荐下单上级获得30天的机具循环天数
-                                        var posList = db.PosMachinesTwo.Select(m => new { m.Id, m.UserId, m.BindingState, m.RecycEndDate }).Where(m => m.UserId == ParentUserId && m.BindingState == 0 && m.RecycEndDate != null).ToList();
-                                        foreach (var subPos in posList)
-                                        {
-                                            PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == subPos.Id);
-                                            if (pos != null)
-                                            {
-                                                pos.RecycEndDate = pos.RecycEndDate.Value.AddDays(30);
-                                            }
-                                        }
-                                        db.SaveChanges();
-                                    }
-                                    if(puser.LeaderLevel > 0)
-                                    {
-                                        function.WriteLog("OrderId:" + order.Id, "监控大盟主购机奖励");
-                                        function.WriteLog("UserId:" + puser.Id, "监控大盟主购机奖励");
-                                        UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == puser.Id) ?? new UserAccount();
-                                        function.WriteLog("LeaderReserve:" + acccount.LeaderReserve, "监控大盟主购机奖励");
-                                        function.WriteLog("buyPrize:" + buyPrize, "监控大盟主购机奖励");
-                                        if(acccount.LeaderReserve >= 400 * pro.ProductCount && !buyPrize)
-                                        {
-                                            //购机奖励
-                                            OpAccount(db, order, puser.Id, 100, pro.ProductCount);
-                                            buyPrize = true;
-                                        }
-                                        function.WriteLog("LeaderReserve:" + acccount.LeaderReserve, "监控大盟主购机奖励");
-                                        function.WriteLog("leaderFlag:" + leaderFlag, "监控大盟主购机奖励");
-                                        function.WriteLog("OncePrizeFlag4:" + OncePrizeFlag4, "监控大盟主购机奖励");
-                                        function.WriteLog("-----------------------------", "监控大盟主购机奖励");
-                                        if(acccount.LeaderReserve >= 400 * pro.ProductCount && puser.LeaderLevel > leaderFlag && leaderFlag < 2 && OncePrizeFlag4)
-                                        {
-                                            //扣减备用金
-                                            OpReserve(db, order, puser.Id, 400 * pro.ProductCount, 2, order.UserId, "购机奖励");
-                                            //返回到余额
-                                            OpLeaderAccount(db, order, puser.Id, 400, pro.ProductCount);
-                                            leaderFlag = puser.LeaderLevel;
-                                            OncePrizeFlag4 = false;
-                                        }
-                                        //如果是小盟主,则查找该小盟主关联的大盟主储蓄金是否充足,是则给券打上关联大盟主标记
-                                        if(couponIds.Count > 0 && puser.LeaderLevel == 1 && !bigLeaderPrize)
-                                        {
-                                            LeaderAccountRecord leaderItem = db.LeaderAccountRecord.FirstOrDefault(m => m.Sort == puser.Id && m.LeaderId > 0 && m.LeaderReserve >= 400 * pro.ProductCount);
-                                            if(leaderItem != null)
-                                            {
-                                                leaderItem.LeaderReserve -= 400 * pro.ProductCount;
-                                                foreach(int couponId in couponIds)
-                                                {
-                                                    PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
-                                                    if(coupon != null)
-                                                    {
-                                                        coupon.LeaderUserId = leaderItem.LeaderId;
-                                                    }
-                                                }
-                                                db.SaveChanges();
-                                                bigLeaderPrize = true;
-                                            }
-                                        }
-                                        //如果是大盟主,则标记大盟主标签
-                                        if(couponIds.Count > 0 && puser.LeaderLevel == 2 && acccount.LeaderReserve >= 400 * pro.ProductCount && !bigLeaderPrize)
-                                        {
-                                            foreach(int couponId in couponIds)
-                                            {
-                                                PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
-                                                if(coupon != null)
-                                                {
-                                                    coupon.LeaderUserId = puser.Id;
-                                                }
-                                            }
-                                            db.SaveChanges();
-                                            bigLeaderPrize = true;
-                                        }
-                                    }
-                                    if(puser.UserType == 1)
-                                    {
-                                        UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == puser.Id) ?? new UserAccount();
-                                        if(!buyPrize)
-                                        {
-                                            //购机奖励
-                                            ChangeAccount(db, order, puser.Id, 100 * pro.ProductCount, 120);
-                                            buyPrize = true;
-                                        }
-                                        //标记标签
-                                        if(couponIds.Count > 0 && !operateFlag)
-                                        {
-                                            foreach(int couponId in couponIds)
-                                            {
-                                                PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
-                                                if(coupon != null)
-                                                {
-                                                    coupon.OpId= puser.Id;
-                                                }
-                                            }
-                                            db.SaveChanges();
-                                            operateFlag = true;
-                                        }
-                                    }
-                                    ParentUserId = puser.ParentUserId;
-                                }
-                                //运营中心返额度
-                                // OperateReserveBackFor(db, order.UserId, order.TotalPrice);
-                            }
-                        }
-                        function.WriteLog("\r\n\r\n", "推荐下单奖励监控日志");
-                    }
+                    RedisDbconn.Instance.AddList("PosCouponPrizeQueue", order.Id.ToString());
 
                     //推荐王
                     if(pro.ProductId == 29)
@@ -797,9 +339,32 @@ namespace MySystem
                 if(user != null)
                 {
                     decimal TotalPrice = 10000;
-                    if((user.LeaderLevel == 2 || user.UserType == 1) && level > 1)
+                    if((user.LeaderLevel == 2 || user.UserType > 1) && level > 1)
                     {
-                        if(user.LeaderLevel == 2 && result)
+                        if(user.UserType > 1 && result)
+                        {
+                            OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities();
+                            OpModels.UserAccount account = opdb.UserAccount.FirstOrDefault(m => m.Id == LeaderUserId) ?? new OpModels.UserAccount();
+                            if(account.TotalAmt > 0)
+                            {
+                                if(account.TotalAmt < TotalPrice)
+                                {
+                                    TotalPrice = account.TotalAmt;
+                                }
+                                if(TotalPrice > 0)
+                                {
+                                    OperateAmountChange(opdb, LeaderUserId, TotalPrice, 2, 1, "商城购机", true);
+                                    OperateAmountChange(opdb, LeaderUserId, TotalPrice, 1, 2, "商城购机", true);
+                                    LeaderUserId = 0;
+                                    result = false;
+                                }
+                            }
+                            else
+                            {
+                                LeaderUserId = user.ParentUserId;
+                            }
+                        }
+                        else if(user.LeaderLevel == 2 && result)
                         {
                             UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == LeaderUserId);
                             if(account != null)
@@ -820,24 +385,9 @@ namespace MySystem
                                 }
                             }
                         }
-                        if(user.UserType == 1 && result)
+                        else
                         {
-                            OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities();
-                            OpModels.UserAccount account = opdb.UserAccount.FirstOrDefault(m => m.Id == LeaderUserId) ?? new OpModels.UserAccount();
-                            if(account.TotalAmt > 0)
-                            {
-                                if(account.TotalAmt < TotalPrice)
-                                {
-                                    TotalPrice = account.TotalAmt;
-                                }
-                                if(TotalPrice > 0)
-                                {
-                                    OperateAmountChange(opdb, LeaderUserId, TotalPrice, 2, 1, "商城购机");
-                                    OperateAmountChange(opdb, LeaderUserId, TotalPrice, 1, 2, "商城购机");
-                                    LeaderUserId = 0;
-                                    result = false;
-                                }
-                            }
+                            LeaderUserId = user.ParentUserId;
                         }
                     }
                     else
@@ -1097,20 +647,16 @@ namespace MySystem
                     if(sys)
                     {
                         OpModels.UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId) ?? new OpModels.UserAccount();
-                        if(account.TotalAmt <= 0)
-                        {
-                            return;
-                        }
-                        if(account.TotalAmt < Money)
+                        if(account.TotalAmt >= Money)
                         {
-                            Money = account.TotalAmt;
+                            OperateAmountChange(db, UserId, Money, 2, 1, "商城购机", true);
+                            OperateAmountChange(db, UserId, Money, 1, 2, "商城购机", true);
+                            UserId = 0;
                         }
-                        if(Money > 0)
+                        else
                         {
-                            OperateAmountChange(db, UserId, Money, 2, 1, "商城购机");
-                            OperateAmountChange(db, UserId, Money, 1, 2, "商城购机");
+                            UserId = user.ParentUserId;
                         }
-                        UserId = 0;
                     }
                     else
                     {

+ 1 - 1
AppStart/Helper/DepositReturnStatService.cs

@@ -27,7 +27,7 @@ namespace MySystem
         {
             while(true)
             {
-                if(DateTime.Now.Day <= 15 && DateTime.Now.Hour > 1 && DateTime.Now.Hour < 13)
+                if(DateTime.Now.Day <= 26 && DateTime.Now.Hour > 1 && DateTime.Now.Hour < 13)
                 {
                     try
                     {

+ 6 - 3
AppStart/Helper/InstallmentDeductionService.cs

@@ -1,9 +1,9 @@
-using System;
+using System;
 using System.Collections.Generic;
 using System.Data;
 using System.Linq;
 using System.Threading;
-using MySystem.Models;
+using MySystem.PxcModels;
 using Library;
 
 namespace MySystem
@@ -57,7 +57,9 @@ namespace MySystem
                                         db.SaveChanges();
                                     }
                                     toChargeBackRecordSub.Status = 2;
-                                    userAccount.ToChargeAmount += toChargeBackRecordSub.ChargeAmount;//增加预扣款
+                                    if (toChargeBackRecordSub.Kind == 0) userAccount.ToChargeAmount += toChargeBackRecordSub.ChargeAmount;//增加创客预扣款
+                                    if (toChargeBackRecordSub.Kind == 1) userAccount.LeaderToChargeAmount += toChargeBackRecordSub.ChargeAmount;//增加盟主预扣款
+                                    if (toChargeBackRecordSub.Kind == 2) userAccount.OperateToChargeAmount += toChargeBackRecordSub.ChargeAmount;//增加运营中心预扣款
                                     var toChargeBackRecord = db.ToChargeBackRecord.Add(new ToChargeBackRecord
                                     {
                                         CreateDate = DateTime.Now,
@@ -66,6 +68,7 @@ namespace MySystem
                                         ChargeAmount = toChargeBackRecordSub.ChargeAmount,
                                         ChargeType = 2,//分期预扣款
                                         Remark = toChargeBackRecordSub.Remark,
+                                        Kind = toChargeBackRecordSub.Kind,
 
                                     }).Entity;
                                 }

+ 89 - 51
AppStart/Helper/LeaderApplyCouponsHelper.cs

@@ -3,7 +3,7 @@ using System.Threading;
 using System.Linq;
 using System.Data;
 using Library;
-using MySystem.Models;
+using MySystem.PxcModels;
 using LitJson;
 using System.Collections.Generic;
 
@@ -34,54 +34,9 @@ namespace MySystem
                     {
                         var Id = int.Parse(content);
                         WebCMSEntities db = new WebCMSEntities();
-                        var LeaderUserId = 0;
                         var queryList = db.LeaderReserveRecord.FirstOrDefault(m => m.Id == Id) ?? new LeaderReserveRecord();
-                        var userInfo = db.Users.FirstOrDefault(m => m.Id == queryList.UserId) ?? new Users();
-                        if (userInfo.LeaderLevel == 2)
-                        {
-                            LeaderUserId = queryList.UserId;
-                        }
-                        else
-                        {
-                            string[] ParentNavList = userInfo.ParentNav.Trim(',').Replace(",,", ",").Split(',');
-                            for (int j = ParentNavList.Length; j > 0; j--)
-                            {
-                                int userId = int.Parse(ParentNavList[j - 1]);
-                                var user = db.Users.FirstOrDefault(m => m.Id == userId) ?? new Users();
-                                //如果是小盟主,则查找该小盟主关联的大盟主储蓄金是否充足,是则给券打上关联大盟主标记
-                                if(user.LeaderLevel == 1)
-                                {
-                                    // LeaderAccountRecord leaderItem = db.LeaderAccountRecord.FirstOrDefault(m => m.Sort == user.Id && m.LeaderId > 0 && m.LeaderReserve >= 400 * pro.ProductCount);
-                                    // if(leaderItem != null)
-                                    // {
-                                    //     leaderItem.LeaderReserve -= 400 * pro.ProductCount;
-                                    //     foreach(int couponId in couponIds)
-                                    //     {
-                                    //         PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
-                                    //         if(coupon != null)
-                                    //         {
-                                    //             coupon.LeaderUserId = leaderItem.LeaderId;
-                                    //         }
-                                    //     }
-                                    //     db.SaveChanges();
-                                    //     bigLeaderPrize = true;
-                                    // }
-                                }
-                                if (user.LeaderLevel == 2)
-                                {
-                                    LeaderUserId = userId;
-                                    break;
-                                }
-                                else
-                                {
-                                    continue;
-                                }
-                            }
-
-                        }
 
                         JsonData ApplyList = JsonMapper.ToObject(queryList.SeoTitle);
-                        var SnList = "";
                         for (int i = 0; i < ApplyList.Count; i++)
                         {
                             int num = Convert.ToInt32(ApplyList[i]["Num"].ToString());
@@ -94,8 +49,6 @@ namespace MySystem
                                 {
                                     var posCoupon = db.PosCoupons.FirstOrDefault(m => m.Id == item.Id) ?? new PosCoupons();
                                     posCoupon.UserId = queryList.UserId;
-                                    posCoupon.LeaderUserId = LeaderUserId;
-                                    // SnList += posCoupon.ExchangeCode + ",";
                                     db.UserSnDelayChange.Add(new UserSnDelayChange()
                                     {
                                         CreateDate = DateTime.Now,
@@ -112,8 +65,6 @@ namespace MySystem
                                 {
                                     var posCoupon = db.PosCoupons.FirstOrDefault(m => m.Id == items.Id) ?? new PosCoupons();
                                     posCoupon.UserId = queryList.UserId;
-                                    posCoupon.LeaderUserId = LeaderUserId;
-                                    // SnList += posCoupon.ExchangeCode + ",";
                                     db.UserSnDelayChange.Add(new UserSnDelayChange()
                                     {
                                         CreateDate = DateTime.Now,
@@ -124,8 +75,9 @@ namespace MySystem
                             }
                             db.SaveChanges();
                         }
-                        // queryList.SeoDescription = SnList.TrimEnd(',');
                         db.SaveChanges();
+                        
+                        dosomething(Id);
                     }
                     catch (Exception ex)
                     {
@@ -138,5 +90,91 @@ namespace MySystem
                 }
             }
         }
+
+        public void dosomething(int Id)
+        { 
+            WebCMSEntities db = new WebCMSEntities();
+            OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities();
+            var query = db.LeaderReserveRecord.FirstOrDefault(m => m.Id == Id && m.Remark == "兑换机具券");
+            if(query != null)
+            {
+                JsonData ApplyList = JsonMapper.ToObject(query.SeoTitle);
+                UserRankItem orderUser = PosCouponPrizeService.Instance.GetUserLevel(db, query.UserId);
+                string ParentNav = orderUser.ParentNav + "," + orderUser.Id + ",";
+                string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
+                Array.Reverse(ParentNavList);
+                int index = 0;
+                bool BigLeaderFlag = false; //大盟主标记
+                decimal BuyPrize = 0; //购机奖励
+                foreach(string ParentId in ParentNavList)
+                {
+                    UserRankItem parentUser = PosCouponPrizeService.Instance.GetUserLevel(db, int.Parse(ParentId));
+                    index += 1;
+
+                    //给券打大盟主标记
+                    if(parentUser.LeaderLevel == 2 && !BigLeaderFlag)
+                    {
+                        for (int i = 0; i < ApplyList.Count; i++)
+                        {
+                            int num = Convert.ToInt32(ApplyList[i]["Num"].ToString());
+                            int Kind = Convert.ToInt32(ApplyList[i]["Type"].ToString());
+                            int Step = 0;
+                            if(Kind == 1)
+                            {
+                                Step = 3;
+                            }
+                            else
+                            {
+                                Step = 2;
+                            }
+                            List<int> couponIds = db.PosCoupons.Where(m => m.IsLock == 0 && m.IsUse == 0 && m.UserId == query.UserId && m.QueryCount == Kind).OrderBy(m => m.Id).Take(num).ToList().Select(m => m.Id).ToList();
+                            int result = PosCouponPrizeService.Instance.SetPosCouponLeaderFlag(db, parentUser.Id, num / Step, couponIds);
+                            if(result > 0) BigLeaderFlag = true;
+                        }
+                    }
+
+                    if(parentUser.OperateLevel > 0)
+                    {
+                        int groupCount = 0;
+                        for (int i = 0; i < ApplyList.Count; i++)
+                        {
+                            int num = Convert.ToInt32(ApplyList[i]["Num"].ToString());
+                            int Kind = Convert.ToInt32(ApplyList[i]["Type"].ToString());
+                            if(Kind == 1)
+                            {
+                                groupCount += num / 3;
+                            }
+                            else
+                            {
+                                groupCount += num / 2;
+                            }
+                        }
+                        if(PosCouponPrizeService.Instance.CheckOpReserve(opdb, groupCount, parentUser.Id))
+                        {
+                            //购机奖
+                            decimal CurBuyPrize = GetBuyPrize(parentUser);
+                            decimal GetPrize = CurBuyPrize - BuyPrize;
+                            if(GetPrize > 0) PosCouponPrizeService.Instance.OpAccount(db, 0, parentUser.Id, GetPrize, groupCount, 128);
+                            BuyPrize = CurBuyPrize;
+                        }
+                    }
+                }
+            }
+            db.Dispose();
+            opdb.Dispose();
+        }
+
+        /// <summary>
+        /// 获取购机奖金额
+        /// </summary>
+        /// <param name="user"></param>
+        /// <returns></returns>
+        public decimal GetBuyPrize(UserRankItem user)
+        {
+            if(user.OperateLevel == 2) return 60;
+            if(user.OperateLevel == 3) return 80;
+            if(user.OperateLevel == 4) return 100;
+            return 0;
+        }
     }
 }

+ 90 - 0
AppStart/Helper/PosCouponPrize/OperateAddService.cs

@@ -0,0 +1,90 @@
+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 OperateAddService
+    {
+        public readonly static OperateAddService Instance = new OperateAddService();
+        private OperateAddService()
+        { }
+
+
+        public void Start()
+        {
+            Thread th = new Thread(ready);
+            th.IsBackground = true;
+            th.Start();
+        }
+        
+        private void ready()
+        { 
+            bool op = true;
+            while (op)
+            {
+                string content = RedisDbconn.Instance.RPop<string>("OperateAddServiceQueue");
+                if (!string.IsNullOrEmpty(content))
+                {
+                    try
+                    {
+                        dosomething(int.Parse(function.CheckInt(content)));
+                    }
+                    catch(Exception ex)
+                    {
+                        function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "添加运营中心合伙人异常");
+                    }
+                }
+                else
+                {
+                    Thread.Sleep(2000);
+                }
+            }
+        }
+
+        public void dosomething(int Id)
+        { 
+            WebCMSEntities db = new WebCMSEntities();
+            OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities();
+            OpModels.SysAdmin edit = opdb.SysAdmin.FirstOrDefault(m => m.Id == Id);
+            if (edit != null)
+            {
+                UserRankItem orderUser = PosCouponPrizeService.Instance.GetUserLevel(db, edit.UserId);
+                string ParentNav = orderUser.ParentNav;
+                string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
+                Array.Reverse(ParentNavList);
+                int index = 0;
+                bool PrizeFlag = false; //奖励发放标识
+                bool DirectPrizeFlag = false; //奖励发放标识
+                foreach(string ParentId in ParentNavList)
+                {
+                    UserRankItem parentUser = PosCouponPrizeService.Instance.GetUserLevel(db, int.Parse(ParentId));
+                    index += 1;
+
+                    if(parentUser.OperateLevel > 1 && PosCouponPrizeService.Instance.CheckOpReserve(opdb, 160000M, parentUser.Id) && !PrizeFlag)
+                    {
+                        //扣减备用金
+                        PosCouponPrizeService.Instance.OperateAmountChange(opdb, parentUser.Id, 160000, 2, 1, "购买运营中心", true);
+                        //返回到余额
+                        PosCouponPrizeService.Instance.OperateAmountChange(opdb, parentUser.Id, 160000, 1, 2, "购买运营中心", true);
+                        PrizeFlag = true;
+                    }
+
+                    if((parentUser.OperateLevel > 0 || parentUser.LeaderLevel > 0) && !DirectPrizeFlag)
+                    {
+                        //发放5888推荐奖励
+                        PosCouponPrizeService.Instance.OpAccount(db, parentUser.Id, parentUser.Id, 5888, 1, 129);
+                        DirectPrizeFlag = true;
+                    }
+                }
+            }
+            db.Dispose();
+            opdb.Dispose();
+        }
+    }
+}

+ 42 - 29
AppStart/Helper/PosCouponPrize/PosCouponPrizeService.cs

@@ -47,7 +47,7 @@ namespace MySystem
             }
         }
 
-        private void dosomething(int OrderId)
+        public void dosomething(int OrderId)
         { 
             WebCMSEntities db = new WebCMSEntities();
             OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities();
@@ -56,7 +56,7 @@ namespace MySystem
             {
                 List<int> ChkIds = new List<int>(); //机具券商品Id集合
                 ChkIds.Add(10);
-                ChkIds.Add(12);
+                ChkIds.Add(11);
                 ChkIds.Add(77);
                 ChkIds.Add(78);
                 ChkIds.Add(79);
@@ -88,7 +88,8 @@ namespace MySystem
                     Array.Reverse(ParentNavList);
                     int index = 0;
                     bool DirectPrizeFlag = false; //推荐奖励发放标识
-                    bool BuyPrizeFlag = false; //购机奖励发放标识
+                    bool BackAccountFlag = false; //备用金返余额标识
+                    bool BigLeaderFlag = false; //大盟主标记
                     decimal BuyPrize = 0; //购机奖励
                     foreach(string ParentId in ParentNavList)
                     {
@@ -107,35 +108,44 @@ namespace MySystem
                                 DirectPrizeFlag = true;
                             }
                         }
-                        if(parentUser.OperateLevel > 0 && CheckOpReserve(opdb, order.BuyCount, parentUser.Id) && !BuyPrizeFlag)
+                        if(parentUser.OperateLevel > 0 && CheckOpReserve(opdb, order.BuyCount, parentUser.Id))
                         {
                             //购机奖
                             decimal CurBuyPrize = GetBuyPrize(parentUser);
-                            OpAccount(db, order.Id, parentUser.Id, CurBuyPrize - BuyPrize, order.BuyCount);
-                            BuyPrizeFlag = true;
+                            decimal GetPrize = CurBuyPrize - BuyPrize;
+                            if(GetPrize > 0) OpAccount(db, order.Id, parentUser.Id, GetPrize, order.BuyCount, 128);
                             BuyPrize = CurBuyPrize;
 
-                            //扣减备用金
-                            OperateAmountChange(opdb, parentUser.Id, GetWithdrawMoney(parentUser) * order.BuyCount, 2, 1, "商城购机");
-                            //返回到余额
-                            OperateAmountChange(opdb, parentUser.Id, GetWithdrawMoney(parentUser) * order.BuyCount, 1, 2, "商城购机");
+                            if(!BackAccountFlag)
+                            {
+                                BackAccountFlag = true;
+                                //扣减备用金
+                                OperateAmountChange(opdb, parentUser.Id, GetWithdrawMoney(parentUser) * order.BuyCount, 2, 1, "商城购机", true);
+                                //返回到余额
+                                OperateAmountChange(opdb, parentUser.Id, GetWithdrawMoney(parentUser) * order.BuyCount, 1, 2, "商城购机", true);
+                            }
                         }
-                        if(parentUser.LeaderLevel > 0 && CheckLeaderReserve(db, order.BuyCount, parentUser.Id) && !BuyPrizeFlag)
+                        else if(parentUser.LeaderLevel > 0 && CheckLeaderReserve(db, order.BuyCount, parentUser.Id))
                         {
                             //购机奖
                             decimal CurBuyPrize = GetBuyPrize(parentUser);
-                            OpAccount(db, order.Id, parentUser.Id, CurBuyPrize - BuyPrize, order.BuyCount);
-                            BuyPrizeFlag = true;
+                            decimal GetPrize = CurBuyPrize - BuyPrize;
+                            if(GetPrize > 0) OpAccount(db, order.Id, parentUser.Id, CurBuyPrize - BuyPrize, order.BuyCount, 118);
                             BuyPrize = CurBuyPrize;
 
-                            //扣减备用金
-                            OpReserve(db, order.Id, parentUser.Id, GetWithdrawMoney(parentUser) * order.BuyCount, 2, order.UserId, "购机奖励");
-                            //返回到余额
-                            OpLeaderAccount(db, order, parentUser.Id, GetWithdrawMoney(parentUser), order.BuyCount);
+                            if(!BackAccountFlag)
+                            {
+                                BackAccountFlag = true;
+                                //扣减备用金
+                                OpReserve(db, order.Id, parentUser.Id, GetWithdrawMoney(parentUser) * order.BuyCount, 2, order.UserId, "购机奖励");
+                                //返回到余额
+                                OpLeaderAccount(db, order, parentUser.Id, GetWithdrawMoney(parentUser), order.BuyCount);
+                            }
 
                             //给券打大盟主标记
-                            if(parentUser.LeaderLevel == 2)
+                            if(parentUser.LeaderLevel == 2 && !BigLeaderFlag)
                             {
+                                BigLeaderFlag = true;
                                 List<int> couponIds = db.PosCoupons.Where(m => m.IsLock == 0 && m.IsUse == 0 && m.UserId == 0 && m.QueryCount == Kind).OrderBy(m => m.Id).Take(CouponCount).ToList().Select(m => m.Id).ToList();
                                 SetPosCouponLeaderFlag(db, parentUser.Id, order.BuyCount, couponIds);
                             }
@@ -247,6 +257,15 @@ namespace MySystem
             }
             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;
+        }
 
         /// <summary>
         /// 扣减/增加盟主储蓄金
@@ -363,7 +382,7 @@ namespace MySystem
         /// <param name="UserId"></param>
         /// <param name="Money"></param>
         /// <param name="Count"></param>
-        public void OpAccount(WebCMSEntities db, int OrderId, int UserId, decimal Money, int Count = 1)
+        public void OpAccount(WebCMSEntities db, int OrderId, int UserId, decimal Money, int Count = 1, int ChangeType = 0)
         {
             UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId);
             if (account == null)
@@ -375,15 +394,6 @@ namespace MySystem
                 }).Entity;
                 db.SaveChanges();
             }
-            int ChangeType = 0;
-            if(Money == 600)
-            {
-                ChangeType = 117;
-            }
-            else if(Money == 100)
-            {
-                ChangeType = 118;
-            }
             decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
             decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
             decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
@@ -489,8 +499,9 @@ namespace MySystem
         /// <param name="LeaderUserId"></param>
         /// <param name="Count"></param>
         /// <param name="couponIds"></param>
-        public void SetPosCouponLeaderFlag(WebCMSEntities db, int LeaderUserId, int Count, List<int> couponIds)
+        public int SetPosCouponLeaderFlag(WebCMSEntities db, int LeaderUserId, int Count, List<int> couponIds)
         {
+            int SetCount = 0;
             UserAccount pacccount = db.UserAccount.FirstOrDefault(m => m.Id == LeaderUserId) ?? new UserAccount();
             foreach(int couponId in couponIds)
             {
@@ -498,9 +509,11 @@ namespace MySystem
                 if(coupon != null && pacccount.LeaderReserve >= 400 * Count)
                 {
                     coupon.LeaderUserId = LeaderUserId;
+                    SetCount += 1;
                 }
             }
             db.SaveChanges();
+            return SetCount;
         }
 
         /// <summary>

+ 120 - 54
AppStart/Helper/TimeOutPosChargeService.cs

@@ -1,9 +1,9 @@
-using System;
+using System;
 using System.Collections.Generic;
 using System.Data;
 using System.Linq;
 using System.Threading;
-using MySystem.Models;
+using MySystem.PxcModels;
 using Library;
 
 namespace MySystem
@@ -113,7 +113,7 @@ namespace MySystem
                 WebCMSEntities db = new WebCMSEntities();
                 DoChargeAmount(db);
                 db.Dispose();
-                Thread.Sleep(600000);
+                Thread.Sleep(60000);
             }
         }
 
@@ -140,6 +140,7 @@ namespace MySystem
 
         public void DoChargeAmount(WebCMSEntities db, int UserId = 0)
         {
+            MySystem.OpModels.WebCMSEntities opdb = new MySystem.OpModels.WebCMSEntities();
             IQueryable<ToChargeBackRecord> list = db.ToChargeBackRecord.Where(m => m.Status == 0);//过期机具扣费记录
             if (UserId > 0)
             {
@@ -154,69 +155,134 @@ namespace MySystem
                 var record = info.FirstOrDefault(m => m.Id == items.Id);
 
                 function.WriteLog("BalanceAmount:" + userAccount.BalanceAmount + ";ChargeAmount:" + record.ChargeAmount + ";", "扣款监听日志");
-                if (userAccount.BalanceAmount >= record.ChargeAmount)
+                function.WriteLog("in", "扣款监听日志");
+                var ChangeType = 0;
+                var Remark = "";
+                if (record.ChargeType == 124)//过期机具货款扣费
                 {
-                    function.WriteLog("in", "扣款监听日志");
-                    var ChangeType = 0;
-                    var Remark = "";
-                    if (record.ChargeType == 124)//过期机具货款扣费
-                    {
-                        ChangeType = 124;
-                        Remark = "扣机具货款";
-                    }
-                    if (record.ChargeType == 1)//普通预扣款
-                    {
-                        ChangeType = 202;
-                        // Remark = "普通扣款";
-                        Remark = items.Remark;
-                    }
-                    if (record.ChargeType == 2)//分期预扣款
-                    {
-                        ChangeType = 201;
-                        // Remark = "分期扣款";
-                        Remark = items.Remark;
-                    }
-                    var userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord
-                    {
-                        CreateDate = DateTime.Now,
-                        UserId = items.UserId,
-                        BeforeBalanceAmount = userAccount.BalanceAmount,
-                        AfterBalanceAmount = userAccount.BalanceAmount - record.ChargeAmount,
-                        ChangeAmount = record.ChargeAmount,
-                        ChangeType = ChangeType,
-                        Remark = Remark,
-
-                    }).Entity;
-                    record.Status = 1;
-                    if (record.ChargeType == 2)
+                    ChangeType = 124;
+                    Remark = "扣机具货款";
+                }
+                if (record.ChargeType == 1)//普通预扣款
+                {
+                    ChangeType = 202;
+                    // Remark = "普通扣款";
+                    Remark = items.Remark;
+                }
+                if (record.ChargeType == 2)//分期预扣款
+                {
+                    ChangeType = 201;
+                    // Remark = "分期扣款";
+                    Remark = items.Remark;
+                }
+                if (record.Kind < 2) //主库
+                {
+                    if (userAccount.BalanceAmount >= record.ChargeAmount)
                     {
-                        var toChargeBackRecordSub = db.ToChargeBackRecordSub.FirstOrDefault(m => m.Id == record.Sort) ?? new ToChargeBackRecordSub();
-                        var toChargeByStage = db.ToChargeByStage.FirstOrDefault(m => m.Id == toChargeBackRecordSub.ParentId && m.TimeNumber > m.QueryCount) ?? new ToChargeByStage();
-                        toChargeBackRecordSub.Status = 1;
-                        toChargeByStage.QueryCount += 1;
-                        toChargeByStage.ChargeAmount += toChargeBackRecordSub.ChargeAmount;
-                        if (toChargeByStage.TimeNumber == toChargeByStage.QueryCount)
+                        if (record.Kind == 0) //创客预扣款
                         {
-                            toChargeByStage.Status = 1;
+                            var userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord
+                            {
+                                CreateDate = DateTime.Now,
+                                UserId = items.UserId,
+                                BeforeBalanceAmount = userAccount.BalanceAmount,
+                                AfterBalanceAmount = userAccount.BalanceAmount - record.ChargeAmount,
+                                ChangeAmount = record.ChargeAmount,
+                                ChangeType = ChangeType,
+                                Remark = Remark,
+
+                            }).Entity;
+
+                            function.WriteLog("ToChargeAmount:" + userAccount.ToChargeAmount + ";ChargeAmount:" + record.ChargeAmount + ";", "扣款监听日志");
+                            if (userAccount.ToChargeAmount >= record.ChargeAmount)
+                            {
+                                function.WriteLog("ok", "扣款监听日志");
+                                userAccount.ToChargeAmount -= record.ChargeAmount;//分期扣款
+                            }
+                            userAccount.BalanceAmount -= record.ChargeAmount;//扣减余额
+                        }
+                        if (record.Kind == 1) //盟主预扣款
+                        {
+                            //11:盟主储蓄金增减单(兑换机具券 机具券兑换 系统增加(盟主储蓄金) 系统扣减(盟主储蓄金) 储备金购买)
+                            // 示例:+/-金额
+                            //  盟主储蓄金:剩余盟主储蓄金
+                            // 12:可提现余额增减单(系统增加(可提现余额) 系统扣减(可提现余额))
+                            // 示例:+/-金额
+                            //  可提现余额:剩余可提现余额
+                            // 13:盟主储蓄金减少可提现余额增加(推荐大/小盟主 商城购机 购机奖励)
+                            // 示例:-金额
+                            //  盟主储蓄金:剩余盟主储蓄金
+                            //  可提现余额:+金额
+                            var leaderReserveRecord = db.LeaderReserveRecord.Add(new LeaderReserveRecord()
+                            {
+                                CreateDate = DateTime.Now, //创建时间
+                                Sort = 12,
+                                UserId = items.UserId, //创客
+                                Remark = "盟主预扣款",
+                                ChangeType = 2,//变动类型(1 增加 2 减少)
+                                BeforeAmt = userAccount.LeaderBalanceAmount,
+                                AfterAmt = userAccount.LeaderBalanceAmount - record.ChargeAmount,
+                                ChangeAmt = record.ChargeAmount,
+                                TradeDate = DateTime.Now.ToString("yyyyMMdd"),
+                                TradeMonth = DateTime.Now.ToString("yyyyMM"),
+                            }).Entity;
+
+                            function.WriteLog("LeaderToChargeAmount:" + userAccount.LeaderToChargeAmount + ";ChargeAmount:" + record.ChargeAmount + ";", "扣款监听日志");
+                            if (userAccount.LeaderToChargeAmount >= record.ChargeAmount)
+                            {
+                                function.WriteLog("ok", "扣款监听日志");
+                                userAccount.LeaderToChargeAmount -= record.ChargeAmount;//扣减盟主预扣款
+                            }
+                            userAccount.LeaderBalanceAmount -= record.ChargeAmount;//扣减盟主可提现余额
                         }
                     }
-                    function.WriteLog("ToChargeAmount:" + userAccount.ToChargeAmount + ";ChargeAmount:" + record.ChargeAmount + ";", "扣款监听日志");
-                    if (userAccount.ToChargeAmount >= record.ChargeAmount)
+                }
+                else //运营中心
+                {
+                    var opUserAccount = opdb.UserAccount.FirstOrDefault(m => m.Id == items.UserId) ?? new MySystem.OpModels.UserAccount();
+                    if (opUserAccount.ValidForGetAmount >= record.ChargeAmount)
                     {
-                        function.WriteLog("ok", "扣款监听日志");
-                        userAccount.ToChargeAmount -= record.ChargeAmount;//分期扣款
-                    }
-                    userAccount.BalanceAmount -= record.ChargeAmount;//扣减余额
+                        if (record.Kind == 2) //运营中心预扣款
+                        {
+                            var amoutRecord = opdb.AmountRecord.Add(new MySystem.OpModels.AmountRecord
+                            {
+                                CreateDate = DateTime.Now,
+                                UserId = items.UserId,
+                                SeoDescription = "运营中心预扣款",
+                                UseAmount = record.ChargeAmount,
+                                OperateType = 2,
+                                BeforeAmount = opUserAccount.ValidAmount + opUserAccount.TotalAmt + opUserAccount.ValidForGetAmount,
+                                AfterAmount = opUserAccount.ValidAmount + opUserAccount.TotalAmt + opUserAccount.ValidForGetAmount - record.ChargeAmount,
+                            }).Entity;
 
-                    ToChargeBackRecord edit = db.ToChargeBackRecord.FirstOrDefault(m => m.Id == items.Id);
-                    if(edit != null)
+                            function.WriteLog("OperateToChargeAmount:" + userAccount.OperateToChargeAmount + ";ChargeAmount:" + record.ChargeAmount + ";", "扣款监听日志");
+                            if (userAccount.OperateToChargeAmount >= record.ChargeAmount)
+                            {
+                                function.WriteLog("ok", "扣款监听日志");
+                                userAccount.OperateToChargeAmount -= record.ChargeAmount;//扣减运营中心预扣款
+                            }
+                            opUserAccount.ValidForGetAmount -= record.ChargeAmount;//扣减运营中心可提现余额
+                        }
+                    }
+                }
+                record.Status = 1;
+                if (record.ChargeType == 2)
+                {
+                    var toChargeBackRecordSub = db.ToChargeBackRecordSub.FirstOrDefault(m => m.Id == record.Sort) ?? new ToChargeBackRecordSub();
+                    var toChargeByStage = db.ToChargeByStage.FirstOrDefault(m => m.Id == toChargeBackRecordSub.ParentId && m.TimeNumber > m.QueryCount) ?? new ToChargeByStage();
+                    toChargeBackRecordSub.Status = 1;
+                    toChargeByStage.QueryCount += 1;
+                    toChargeByStage.ChargeAmount += toChargeBackRecordSub.ChargeAmount;
+                    if (toChargeByStage.TimeNumber == toChargeByStage.QueryCount)
                     {
-                        edit.UpdateDate = DateTime.Now;
+                        toChargeByStage.Status = 1;
                     }
-                    function.WriteLog("\n\n", "扣款监听日志");
                 }
+                record.UpdateDate = DateTime.Now;
+                function.WriteLog("\n\n", "扣款监听日志");
             }
             db.SaveChanges();
+            opdb.SaveChanges();
         }
     }
 }

+ 23 - 0
PxcModels/UserExchangeLeaderRecord.cs

@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.PxcModels
+{
+    public partial class UserExchangeLeaderRecord
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int QueryCount { get; set; }
+        public int Status { get; set; }
+        public int Version { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string CreateMan { get; set; }
+        public string UpdateMan { get; set; }
+        public string SeoTitle { get; set; }
+        public string SeoKeyword { get; set; }
+        public string SeoDescription { get; set; }
+        public int ExchangeType { get; set; }
+        public int UserId { get; set; }
+    }
+}

+ 67 - 0
PxcModels/WebCMSEntities.cs

@@ -260,6 +260,7 @@ namespace MySystem.PxcModels
         public virtual DbSet<UserCollection> UserCollection { get; set; }
         public virtual DbSet<UserData> UserData { get; set; }
         public virtual DbSet<UserDetail> UserDetail { get; set; }
+        public virtual DbSet<UserExchangeLeaderRecord> UserExchangeLeaderRecord { get; set; }
         public virtual DbSet<UserFamilyMember> UserFamilyMember { get; set; }
         public virtual DbSet<UserForMakerCode> UserForMakerCode { get; set; }
         public virtual DbSet<UserForMakerCodeBak> UserForMakerCodeBak { get; set; }
@@ -18218,6 +18219,72 @@ namespace MySystem.PxcModels
                 entity.Property(e => e.UserJob).HasColumnType("int(11)");
             });
 
+            modelBuilder.Entity<UserExchangeLeaderRecord>(entity =>
+            {
+                entity.HasComment("合伙人兑换盟主记录");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.CreateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("创建时间");
+
+                entity.Property(e => e.CreateMan)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("创建人")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.ExchangeType)
+                    .HasColumnType("int(11)")
+                    .HasComment("兑换类型");
+
+                entity.Property(e => e.QueryCount)
+                    .HasColumnType("int(11)")
+                    .HasComment("点击量");
+
+                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.UpdateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("更新时间");
+
+                entity.Property(e => e.UpdateMan)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("更新人")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.UserId)
+                    .HasColumnType("int(11)")
+                    .HasComment("创客Id");
+
+                entity.Property(e => e.Version)
+                    .HasColumnType("int(11)")
+                    .HasComment("版本号");
+            });
+
             modelBuilder.Entity<UserFamilyMember>(entity =>
             {
                 entity.Property(e => e.Id).HasColumnType("int(11)");

+ 6 - 6
Startup.cs

@@ -163,8 +163,6 @@ namespace MySystem
             //必须打开的
             if(Library.ConfigurationManager.EnvironmentFlag == 1)
             {
-                // LeaderCompPrizeHelper.Instance.Ready("202312"); //领导人达标奖
-                // StatService.Instance.StatUserLevelStartNew();
             }
             if(Library.ConfigurationManager.EnvironmentFlag == 2)
             {
@@ -196,6 +194,8 @@ namespace MySystem
                 LeaderTimeoutSendMessageService.Instance.Start(); //盟主过期消息提醒
 
                 AlipayPayBack2Service.Instance.Start(); //支付宝回调处理
+                PosCouponPrizeService.Instance.Start(); //购券奖励队列
+                OperateAddService.Instance.Start(); //购买运营中心队列
                 BalancePayBackService.Instance.Start(); //余额支付队列
                 ReservePayBackService.Instance.Start(); //储备金支付队列
                 OrderRefundService.Instance.Start(); //商城订单退款
@@ -270,10 +270,10 @@ namespace MySystem
         {
             string conn = Configuration["Setting:SqlConnStr"];
             string dbName = "KxsMainServer";
-            if(Library.ConfigurationManager.EnvironmentFlag == 2)
-            {
-                dbName = "KxsProfitServer";
-            }
+            // if(Library.ConfigurationManager.EnvironmentFlag == 2)
+            // {
+            //     dbName = "KxsProfitServer";
+            // }
             Dictionary<string, Dictionary<string, string>> tables = new Dictionary<string, Dictionary<string, string>>();
             System.Data.DataTable tablecollection = Library.CustomerSqlConn.dtable("select DISTINCT TABLE_NAME from information_schema.columns where table_schema = '" + dbName + "'", conn);
             foreach (System.Data.DataRow subtable in tablecollection.Rows)