浏览代码

执行训练营拦截数据

lcl 9 月之前
父节点
当前提交
141911a2fa
共有 3 个文件被更改,包括 1744 次插入0 次删除
  1. 二进制
      AppStart/Helper/.DS_Store
  2. 1189 0
      AppStart/Helper/PosCouponPrize/PosCouponPrizeTest.cs
  3. 555 0
      Controllers/HomeController.cs

二进制
AppStart/Helper/.DS_Store


+ 1189 - 0
AppStart/Helper/PosCouponPrize/PosCouponPrizeTest.cs

@@ -0,0 +1,1189 @@
+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 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<int> ChkIds = new List<int>(); //机具券商品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<string> 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<string>("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<int> 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<string> OrderNos = new List<string>();
+            // OrderNos.Add("BM2024060113545453402672795");
+
+            List<int> ChkIds = new List<int>(); //机具券商品Id集合
+            ChkIds.Add(10);
+            ChkIds.Add(11);
+            ChkIds.Add(77);
+            ChkIds.Add(78);
+            ChkIds.Add(79);
+            ChkIds.Add(92);
+            DateTime chkDate = DateTime.Parse("2024-06-01 00:00:00");
+            WebCMSEntities db = new WebCMSEntities();
+            OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities();
+            List<Orders> orders = db.Orders.Where(m => m.CreateDate >= chkDate && OrderNos.Contains(m.OrderNo) && ChkIds.Contains(m.ProductId) && m.Status > 0).ToList();
+            foreach(Orders order in orders)
+            {
+                int Kind = 0;
+                if (order.ProductId == 10)
+                {
+                    Kind = 1;
+                }
+                else if (order.ProductId == 11)
+                {
+                    Kind = 2;
+                }
+                int CouponCount = 0;
+                if(Kind == 1)
+                {
+                    CouponCount = 3 * order.BuyCount;
+                }
+                else if(Kind == 2)
+                {
+                    CouponCount = 2 * order.BuyCount;
+                }
+
+                UserAccountRecord record = db.UserAccountRecord.FirstOrDefault(m => m.Id >= 4579675 && m.QueryCount == order.Id && m.ChangeType == 112) ?? new UserAccountRecord();
+
+                UserRankItem orderUser = GetUserLevel2(order.UserId, order.PayDate.Value);
+                if(orderUser.UserLevel == 0) 
+                {
+                    PreUserLevel(db, order.UserId, 1, DateTime.Parse("2025-01-01 00:00:00"));
+                }
+                string ParentNav = orderUser.ParentNav + "," + orderUser.Id + ",";
+                string[] ParentNavList = ParentNav.Trim(',').Replace(",,", ",").Split(',');
+                Array.Reverse(ParentNavList);
+                int index = 0;
+                bool DirectPrizeFlag = false; //推荐奖励发放标识
+                foreach(string ParentId in ParentNavList)
+                {
+                    UserRankItem parentUser = GetUserLevel2(int.Parse(ParentId), order.PayDate.Value);
+                    index += 1;
+                    if(index == 1 && (orderUser.LeaderLevel > 0 || orderUser.OperateLevel > 0) && !DirectPrizeFlag)
+                    {
+                        // DirectPrize(db, order.Id, order.UserId, order.BuyCount);
+                        if(record.UserId != order.UserId) function.WriteLog("下单人--订单号:" + order.OrderNo + ";应发对象:" + order.UserId + ";实发对象:" + record.UserId + ";发放金额:" + order.BuyCount + "00;", "推荐奖励计算");
+                        DirectPrizeFlag = true;
+                    }
+                    if(index > 1)
+                    {
+                        if(Utils.Instance.IsStandardUser2(parentUser.Id, order.PayDate.Value) && !DirectPrizeFlag)
+                        {
+                            // DirectPrize(db, order.Id, parentUser.Id, order.BuyCount);
+                            if(record.UserId != parentUser.Id) function.WriteLog("上级--订单号:" + order.OrderNo + ";应发对象:" + parentUser.Id + ";实发对象:" + record.UserId + ";发放金额:" + order.BuyCount + "00;", "推荐奖励计算");
+                            DirectPrizeFlag = true;
+                        }
+                    }
+                }
+                if(!DirectPrizeFlag && record.Id == 0)
+                {
+                    function.WriteLog("没发--订单号:" + order.OrderNo + ";发放金额:" + order.BuyCount + "00;", "推荐奖励计算");
+                }
+            }
+            db.Dispose();
+            opdb.Dispose();
+        }
+
+
+
+
+
+        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<string>("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<int> ChkIds = new List<int>(); //机具券商品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<string>("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();
+        }
+
+        /// <summary>
+        /// 获取创客各种等级
+        /// </summary>
+        /// <param name="db"></param>
+        /// <param name="UserId"></param>
+        /// <returns></returns>
+        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;
+        }
+
+        /// <summary>
+        /// 直推奖励
+        /// </summary>
+        /// <param name="db"></param>
+        /// <param name="OrderId"></param>
+        /// <param name="UserId"></param>
+        /// <param name="Count"></param>
+        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);
+        }
+    
+        /// <summary>
+        /// 判断盟主储蓄金足够
+        /// </summary>
+        /// <param name="db"></param>
+        /// <param name="Count"></param>
+        /// <param name="UserId"></param>
+        /// <returns></returns>
+        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;
+        }
+
+        /// <summary>
+        /// 判断运营中心/合伙人额度足够
+        /// </summary>
+        /// <param name="db"></param>
+        /// <param name="Count"></param>
+        /// <param name="UserId"></param>
+        /// <returns></returns>
+        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;
+        }
+
+        /// <summary>
+        /// 扣减/增加盟主储蓄金
+        /// </summary>
+        /// <param name="db"></param>
+        /// <param name="OrderId"></param>
+        /// <param name="UserId"></param>
+        /// <param name="Money"></param>
+        /// <param name="ChangeType"></param>
+        /// <param name="SourceUserId"></param>
+        /// <param name="Remark"></param>
+        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<int, string> data = new Dictionary<int, string>();
+            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;
+        }
+
+        /// <summary>
+        /// 操作盟主可提现余额
+        /// </summary>
+        /// <param name="db"></param>
+        /// <param name="order"></param>
+        /// <param name="UserId"></param>
+        /// <param name="Money"></param>
+        /// <param name="Count"></param>
+        /// <param name="Kind"></param>
+        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();
+                }
+            }
+        }
+
+        /// <summary>
+        /// 操作余额
+        /// </summary>
+        /// <param name="db"></param>
+        /// <param name="order"></param>
+        /// <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, 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);
+        }
+
+        /// <summary>
+        /// 操作运营中心/合伙人额度(TotalAmt未使用额度,ValidForGetAmount可提现额度)
+        /// </summary>
+        /// <param name="db"></param>
+        /// <param name="UserId"></param>
+        /// <param name="Money"></param>
+        /// <param name="OperateType">(1增加,2减少)</param>
+        /// <param name="AmountType">(1未使用额度,2可提现额度)</param>
+        /// <param name="Remark"></param>
+        /// <param name="record"></param>
+        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();
+        }
+
+        /// <summary>
+        /// 给券设置大盟主标记
+        /// </summary>
+        /// <param name="db"></param>
+        /// <param name="LeaderUserId"></param>
+        /// <param name="Count"></param>
+        /// <param name="couponIds"></param>
+        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)
+            {
+                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<string> 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<int> 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;
+        }
+
+        /// <summary>
+        /// 获取购机奖金额
+        /// </summary>
+        /// <param name="user"></param>
+        /// <returns></returns>
+        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<int> UserIds = new List<int>();
+            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;
+        }
+
+        /// <summary>
+        /// 获取可提现金额
+        /// </summary>
+        /// <param name="user"></param>
+        /// <returns></returns>
+        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;
+        }
+
+        /// <summary>
+        /// 预设职级
+        /// </summary>
+        /// <param name="db"></param>
+        /// <param name="UserId">创客Id</param>
+        /// <param name="Rank">职级</param>
+        /// <param name="ExpiredDate">过期时间</param>
+        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();
+        }
+    }
+}

+ 555 - 0
Controllers/HomeController.cs

@@ -168,6 +168,561 @@ namespace MySystem.Controllers
 
         public string test()
         {
+            List<int> ids = new List<int>();
+            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);
+            }
             return "ok";
         }