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

Merge branch 'feature-dgy-盟主过期' into feature-dgy-后台测试

# Conflicts:
#	Startup.cs
DuGuYang преди 3 години
родител
ревизия
a15fe982c4

+ 0 - 124
AppStart/Helper/InstallmentDeductionService.cs

@@ -1,124 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Threading;
-using MySystem.Models;
-using Library;
-
-namespace MySystem
-{
-    /// <summary>
-    /// 分期扣款(每月20号执行)
-    /// </summary>
-    public class InstallmentDeductionService
-    {
-        public readonly static InstallmentDeductionService Instance = new InstallmentDeductionService();
-        private InstallmentDeductionService()
-        { }
-
-        public void Start()
-        {
-            Thread th = new Thread(doSomething);
-            th.IsBackground = true;
-            th.Start();
-        }
-
-        public void doSomething()
-        {
-            while (true)
-            {
-                // if (DateTime.Now.Day == 20 && DateTime.Now.Hour < 12)
-                if (DateTime.Now.Hour < 20)
-                {
-                    try
-                    {
-                        string check = function.ReadInstance("/InstallmentDeduction/check" + DateTime.Now.ToString("yyyy-MM-20") + ".txt");
-                        if (string.IsNullOrEmpty(check))
-                        {
-                            function.WritePage("/InstallmentDeduction/", "check" + DateTime.Now.ToString("yyyy-MM-20") + ".txt", DateTime.Now.ToString("HH:mm:ss"));
-                            WebCMSEntities db = new WebCMSEntities();
-                            var startdate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-20 00:00:00"));
-                            var enddate = startdate.AddDays(1);
-                            // var info = db.ToChargeBackRecordSub.Where(m => m.Status == 0 && m.StartDate >= startdate && m.StartDate < enddate).ToList();//分期扣款记录明细
-                            var info = db.ToChargeByStage.Where(m => m.Status == 0).ToList();//分期扣款记录
-                            foreach (var item in info)
-                            {
-                                var toChargeBackRecordSub = db.ToChargeBackRecordSub.FirstOrDefault(m => m.Status == 0 && m.ParentId == item.Id && m.StartDate >= startdate && m.StartDate < enddate) ?? new ToChargeBackRecordSub();
-                                if (toChargeBackRecordSub.Id > 0)
-                                {
-                                    var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == item.UserId);
-                                    if (userAccount == null)
-                                    {
-                                        userAccount = db.UserAccount.Add(new UserAccount()
-                                        {
-                                            Id = item.UserId,
-                                            UserId = item.UserId,
-                                        }).Entity;
-                                        db.SaveChanges();
-                                    }
-                                    toChargeBackRecordSub.Status = 2;
-                                    userAccount.ToChargeAmount += toChargeBackRecordSub.ChargeAmount;//增加预扣款
-                                    var toChargeBackRecord = db.ToChargeBackRecord.Add(new ToChargeBackRecord
-                                    {
-                                        CreateDate = DateTime.Now,
-                                        Sort = toChargeBackRecordSub.Id,
-                                        UserId = item.UserId,
-                                        ChargeAmount = toChargeBackRecordSub.ChargeAmount,
-                                        ChargeType = 2,//分期预扣款
-                                        Remark = toChargeBackRecordSub.Remark,
-
-                                    }).Entity;
-                                }
-
-                                // //只能存在一笔分期扣款记录(先前有的但是余额不够未扣除的则不添加新的)
-                                // var checks = db.ToChargeBackRecord.Any(m => m.Sort > 0 && (m.Status == 0 || m.Status == 3) && m.ChargeType == 2 && m.UserId == item.UserId);
-                                // if (!checks)
-                                // {
-                                //     string checkAdd = RedisDbconn.Instance.Get<string>("InstallmentDeductionAddRecord:" + item.UserId);
-                                //     if (string.IsNullOrEmpty(check))
-                                //     {
-                                //         var toChargeBackRecordSub = db.ToChargeBackRecordSub.FirstOrDefault(m => m.Status == 0 && m.ParentId == item.Id && m.StartDate >= startdate && m.StartDate < enddate) ?? new ToChargeBackRecordSub();
-                                //         if (toChargeBackRecordSub.Id > 0)
-                                //         {
-                                //             var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == item.UserId);
-                                //             if (userAccount == null)
-                                //             {
-                                //                 userAccount = db.UserAccount.Add(new UserAccount()
-                                //                 {
-                                //                     Id = item.UserId,
-                                //                     UserId = item.UserId,
-                                //                 }).Entity;
-                                //                 db.SaveChanges();
-                                //             }
-                                //             userAccount.ToChargeAmount += toChargeBackRecordSub.ChargeAmount;//增加预扣款
-                                //             var toChargeBackRecord = db.ToChargeBackRecord.Add(new ToChargeBackRecord
-                                //             {
-                                //                 CreateDate = DateTime.Now,
-                                //                 Sort = toChargeBackRecordSub.Id,
-                                //                 UserId = item.UserId,
-                                //                 ChargeAmount = toChargeBackRecordSub.ChargeAmount,
-                                //                 ChargeType = 2,//分期预扣款
-                                //                 Remark = "分期预扣款",
-
-                                //             }).Entity;
-                                //         }
-                                //     }
-                                //     RedisDbconn.Instance.Set("InstallmentDeductionAddRecord:" + item.UserId, "wait");
-                                //     RedisDbconn.Instance.SetExpire("InstallmentDeductionAddRecord:" + item.UserId, 300);
-                                // }
-                            }
-                            db.SaveChanges();
-
-                        }
-                    }
-                    catch (Exception ex)
-                    {
-                        function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "执行分期扣费异常");
-                    }
-                }
-                Thread.Sleep(1000);
-            }
-        }
-    }
-}

+ 0 - 75
AppStart/Helper/TimeOutPosChargeReturnService.cs

@@ -1,75 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Threading;
-using MySystem.Models;
-using Library;
-
-namespace MySystem
-{
-    /// <summary>
-    /// 过期兑换机具循环截止时间超过15天激活扣费退还
-    /// </summary>
-    public class TimeOutPosChargeReturnService
-    {
-        public readonly static TimeOutPosChargeReturnService Instance = new TimeOutPosChargeReturnService();
-        private TimeOutPosChargeReturnService()
-        { }
-
-        public void Start()
-        {
-            Thread th = new Thread(doSomething);
-            th.IsBackground = true;
-            th.Start();
-        }
-
-        public void doSomething()
-        {
-            while (true)
-            {
-                if (DateTime.Now.Hour < 18)
-                {
-                    try
-                    {
-                        string check = function.ReadInstance("/TimeOutPosChargeReturn/check" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt");
-                        if (string.IsNullOrEmpty(check))
-                        {
-                            function.WritePage("/TimeOutPosChargeReturn/", "check" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", DateTime.Now.ToString("HH:mm:ss"));
-                            WebCMSEntities db = new WebCMSEntities();
-                            DataTable dt = CustomerSqlConn.dtable("SELECT a.Id Id FROM ToChargeBackRecord a LEFT JOIN PosMachinesTwo b ON a.Remark=b.PosSn WHERE a.`Status`=1 AND b.PosSnType=0  AND b.BindingState=1 AND b.ActivationState=1", MysqlConn.connstr);//循环过期超过15天激活机具退费创客
-                            foreach (DataRow item in dt.Rows)
-                            {
-                                int Id = int.Parse(item["Id"].ToString());
-                                var toChargeBackRecord = db.ToChargeBackRecord.FirstOrDefault(m => m.Id == Id && m.Status == 1) ?? new ToChargeBackRecord();
-                                if (toChargeBackRecord.Id > 0)
-                                {
-                                    var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == toChargeBackRecord.UserId) ?? new UserAccount();
-                                    var userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord
-                                    {
-                                        CreateDate = DateTime.Now,
-                                        UserId = toChargeBackRecord.UserId,
-                                        BeforeBalanceAmount = userAccount.BalanceAmount,
-                                        AfterBalanceAmount = userAccount.BalanceAmount + toChargeBackRecord.ChargeAmount,
-                                        ChangeAmount = toChargeBackRecord.ChargeAmount,
-                                        ChangeType = 126,//过期兑换机具超过15天激活扣费退还
-                                        Remark = "机具货款退还",
-
-                                    }).Entity;
-                                    toChargeBackRecord.Status = 2;//过期兑换机具循环截止时间超过15天激活扣费退还标识
-                                    userAccount.BalanceAmount += toChargeBackRecord.ChargeAmount;
-                                    db.SaveChanges();
-                                }
-                            }
-                        }
-                    }
-                    catch (Exception ex)
-                    {
-                        function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "过期兑换机具超过15天激活扣费退还");
-                    }
-                }
-                Thread.Sleep(1000);
-            }
-        }
-    }
-}

+ 0 - 209
AppStart/Helper/TimeOutPosChargeService.cs

@@ -1,209 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Threading;
-using MySystem.Models;
-using Library;
-
-namespace MySystem
-{
-    /// <summary>
-    /// 过期机具执行扣费
-    /// </summary>
-    public class TimeOutPosChargeService
-    {
-        public readonly static TimeOutPosChargeService Instance = new TimeOutPosChargeService();
-        private TimeOutPosChargeService()
-        { }
-
-        public void Start()
-        {
-            Thread th = new Thread(doSomething);
-            th.IsBackground = true;
-            th.Start();
-        }
-
-        public void doSomething()
-        {
-            while (true)
-            {
-                if (DateTime.Now.Hour < 3)
-                {
-                    try
-                    {
-                        string check = function.ReadInstance("/TimeOutPosCharge/check" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt");
-                        if (string.IsNullOrEmpty(check))
-                        {
-                            function.WritePage("/TimeOutPosCharge/", "check" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", DateTime.Now.ToString("HH:mm:ss"));
-                            WebCMSEntities db = new WebCMSEntities();
-                            var date = DateTime.Now.AddDays(-60).ToString("yyyy-MM-dd 00:00:00");//过期限制时间
-                            var time = DateTime.Parse(date);//过期限制时间
-
-                            DataTable dt = CustomerSqlConn.dtable("SELECT BuyUserId FROM PosMachinesTwo WHERE `Status`>-1 AND BuyUserId>0 AND BindingState=0 AND ActivationState=0 AND ScanQrTrade=0 AND RecycEndDate <'" + date + "' GROUP BY BuyUserId", MysqlConn.SqlConnStr);//扣费创客
-                            var query = db.PosMachinesTwo.Where(m => m.Status > -1 && m.BuyUserId > 0 && m.BindingState == 0 && m.ActivationState == 0 && m.ScanQrTrade == 0 && m.RecycEndDate < time).ToList();//循环过期超过15天机具
-                            var brandInfo = db.KqProducts.ToList();
-                            foreach (DataRow item in dt.Rows)
-                            {
-                                int BuyUserId = int.Parse(item["BuyUserId"].ToString());
-                                var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == BuyUserId);
-                                if (userAccount == null)
-                                {
-                                    userAccount = db.UserAccount.Add(new UserAccount()
-                                    {
-                                        Id = BuyUserId,
-                                        UserId = BuyUserId,
-                                    }).Entity;
-                                    db.SaveChanges();
-                                }
-                                var posInfo = query.Where(m => m.BuyUserId == BuyUserId);
-                                var amount = 0;
-                                foreach (var pos in posInfo)
-                                {
-                                    var poss = db.PosMachinesTwo.FirstOrDefault(m => m.Id == pos.Id) ?? new PosMachinesTwo();
-                                    poss.ScanQrTrade = 999;
-                                    var Brand = brandInfo.FirstOrDefault(m => m.Id == pos.BrandId);
-                                    if (Brand.Name.Contains("电签"))
-                                    {
-                                        amount = 200;
-                                    }
-                                    if (Brand.Name.Contains("大POS"))
-                                    {
-                                        amount = 300;
-                                    }
-                                    userAccount.ToChargeAmount += amount;//增加预扣款
-                                    var toChargeBackRecord = db.ToChargeBackRecord.Add(new ToChargeBackRecord
-                                    {
-                                        CreateDate = DateTime.Now,
-                                        UserId = BuyUserId,
-                                        ChargeAmount = amount,
-                                        ChargeType = 124,//过期机具货款扣费
-                                        Remark = pos.PosSn,
-
-                                    }).Entity;
-                                }
-                            }
-                            db.SaveChanges();
-
-                            DoChargeAmount(db);
-                        }
-                    }
-                    catch (Exception ex)
-                    {
-                        function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "过期机具执行扣费异常");
-                    }
-                }
-                Thread.Sleep(1000);
-            }
-        }
-
-
-
-        public void StartDoChargeAmount()
-        {
-            Thread th = new Thread(StartDoChargeAmountReady);
-            th.IsBackground = true;
-            th.Start();
-        }
-
-        public void StartDoChargeAmountReady()
-        {
-            while (true)
-            {
-                WebCMSEntities db = new WebCMSEntities();
-                DoChargeAmount(db);
-                db.Dispose();
-                Thread.Sleep(600000);
-            }
-        }
-
-        public void ListenChargeAmount()
-        {
-            Thread th = new Thread(ListenChargeAmountReady);
-            th.IsBackground = true;
-            th.Start();
-        }
-
-        public void ListenChargeAmountReady()
-        {
-            while (true)
-            {
-                string content = RedisDbconn.Instance.RPop<string>("DoChargeAmountQueue");
-                if (!string.IsNullOrEmpty(content))
-                {
-                    WebCMSEntities db = new WebCMSEntities();
-                    DoChargeAmount(db, int.Parse(function.CheckInt(content)));
-                    db.Dispose();
-                }
-            }
-        }
-
-        public void DoChargeAmount(WebCMSEntities db, int UserId = 0)
-        {
-            IQueryable<ToChargeBackRecord> list = db.ToChargeBackRecord.Where(m => m.Status == 0);//过期机具扣费记录
-            if (UserId > 0)
-            {
-                list = list.Where(m => m.UserId == UserId);
-            }
-            var info = list.ToList();
-            foreach (var items in info)
-            {
-                var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == items.UserId) ?? new UserAccount();
-                var record = info.FirstOrDefault(m => m.Id == items.Id);
-
-                if (userAccount.BalanceAmount >= record.ChargeAmount)
-                {
-                    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)
-                    {
-                        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)
-                        {
-                            toChargeByStage.Status = 1;
-                        }
-                    }
-                    if (userAccount.ToChargeAmount >= record.ChargeAmount)
-                    {
-                        userAccount.ToChargeAmount -= record.ChargeAmount;//分期扣款
-                    }
-                    userAccount.BalanceAmount -= record.ChargeAmount;//扣减余额
-                }
-            }
-            db.SaveChanges();
-        }
-    }
-}

+ 0 - 83
AppStart/Helper/TimeOutPosSendMessageService.cs

@@ -1,83 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Threading;
-using MySystem.Models;
-using Library;
-
-namespace MySystem
-{
-    /// <summary>
-    /// 过期机具预扣费消息推送
-    /// </summary>
-    public class TimeOutPosSendMessageService
-    {
-        public readonly static TimeOutPosSendMessageService Instance = new TimeOutPosSendMessageService();
-        private TimeOutPosSendMessageService()
-        { }
-
-        public void Start()
-        {
-            Thread th = new Thread(doSomething);
-            th.IsBackground = true;
-            th.Start();
-        }
-
-        public void doSomething()
-        {
-            while (true)
-            {
-                if (DateTime.Now.Hour < 20)
-                {
-                    try
-                    {
-                        string check = function.ReadInstance("/TimeOutPosSendMessage/check" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt");
-                        if (string.IsNullOrEmpty(check))
-                        {
-                            function.WritePage("/TimeOutPosSendMessage/", "check" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", DateTime.Now.ToString("HH:mm:ss"));
-                            WebCMSEntities db = new WebCMSEntities();
-                            var date = DateTime.Now.AddDays(-55).ToString("yyyy-MM-dd 00:00:00");//过期限制时间
-                            var time = DateTime.Parse(date);//过期限制时间
-
-                            DataTable dt = CustomerSqlConn.dtable("SELECT BuyUserId FROM PosMachinesTwo WHERE `Status`>-1 AND BuyUserId>0 AND BindingState=0 AND ActivationState=0 AND ScanQrTrade=0 AND RecycEndDate <'" + date + "' GROUP BY BuyUserId", MysqlConn.connstr);//消息推送创客
-                            var query = db.PosMachinesTwo.Where(m => m.Status > -1 && m.BuyUserId > 0 && m.BindingState == 0 && m.ActivationState == 0 && m.ScanQrTrade == 0 && m.RecycEndDate < time).ToList();//循环过期超过55天机具
-                            var brandInfo = db.KqProducts.ToList();
-                            foreach (DataRow item in dt.Rows)
-                            {
-                                int BuyUserId = int.Parse(item["BuyUserId"].ToString());
-                                var BrandName = "";
-                                var PosSn = "";
-                                var SendInfo = "";
-                                foreach (var items in brandInfo)
-                                {
-                                    int BrandId = int.Parse(items.Id.ToString());
-                                    BrandName = items.Name.ToString();
-                                    var posInfo = query.Where(m => m.BuyUserId == BuyUserId && m.BrandId == BrandId);
-                                    foreach (var pos in posInfo)
-                                    {
-                                        PosSn += BrandName +":"+pos.PosSn + "," + "<br/>";
-                                    }
-                                }
-                                SendInfo = PosSn.TrimEnd(',') + "<br/>";
-                                RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal()
-                                {
-                                    UserId = BuyUserId, //创客
-                                    Title = "机具循环过期提醒", //标题
-                                    Content = "<div class='f16'>尊敬的创客您好:<br/>您的" + SendInfo + "循环已过期五十五天以上,请在五日内完成激活或通过机具回收回寄该机具。</ div > ",//内容
-                                    Summary = "系统检测到您的部分机具可回收,请打开我的-回收机具及时处理!",
-                                    CreateDate = DateTime.Now,
-                                }));
-                            }
-                        }
-                    }
-                    catch (Exception ex)
-                    {
-                        function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "过期机具预扣费消息推送异常");
-                    }
-                }
-                Thread.Sleep(1000);
-            }
-        }
-    }
-}

+ 41 - 2
Areas/Admin/Controllers/MainServer/LeadersController.cs

@@ -51,7 +51,7 @@ namespace MySystem.Areas.Admin.Controllers
         /// 盟主管理列表
         /// </summary>
         /// <returns></returns>
-        public JsonResult IndexData(Leaders data, string UserIdMakerCode, string LeaderLevelSelect, string CreateDateData, int page = 1, int limit = 30)
+        public JsonResult IndexData(Leaders data, string UserIdMakerCode, string LeaderLevelSelect, string LeaderStatusSelect, string LastBuyDateData, string ExpiredDateData, string CreateDateData, int page = 1, int limit = 30)
         {
 
             Dictionary<string, string> Fields = new Dictionary<string, string>();
@@ -67,7 +67,20 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 condition += " and LeaderLevel=" + LeaderLevelSelect;
             }
-            //创建时间
+            //状态
+            if (!string.IsNullOrEmpty(LeaderStatusSelect))
+            {
+                DateTime time = DateTime.Now;
+                if (LeaderStatusSelect == "0")
+                {
+                    condition += " and ExpiredDate>'" + time + "'";
+                }
+                else
+                {
+                    condition += " and ExpiredDate<='" + time + "'";
+                }
+            }
+            //首次购买时间
             if (!string.IsNullOrEmpty(CreateDateData))
             {
                 string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
@@ -75,6 +88,22 @@ namespace MySystem.Areas.Admin.Controllers
                 string end = datelist[1];
                 condition += " and CreateDate>='" + start + " 00:00:00' and CreateDate<='" + end + " 23:59:59'";
             }
+            //最后购买时间
+            if (!string.IsNullOrEmpty(LastBuyDateData))
+            {
+                string[] datelist = LastBuyDateData.Split(new string[] { " - " }, StringSplitOptions.None);
+                string start = datelist[0];
+                string end = datelist[1];
+                condition += " and LastBuyDate>='" + start + " 00:00:00' and LastBuyDate<='" + end + " 23:59:59'";
+            }
+            //盟主到期时间
+            if (!string.IsNullOrEmpty(ExpiredDateData))
+            {
+                string[] datelist = ExpiredDateData.Split(new string[] { " - " }, StringSplitOptions.None);
+                DateTime start = DateTime.Parse(datelist[0] + " 00:00:00");
+                DateTime end = DateTime.Parse(datelist[1] + " 23:59:59");
+                condition += " and ExpiredDate>='" + start + " 00:00:00' and ExpiredDate<='" + end + " 23:59:59'";
+            }
 
 
             Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("Leaders", Fields, "Id desc", "0", page, limit, condition);
@@ -90,6 +119,16 @@ namespace MySystem.Areas.Admin.Controllers
                 dic["UserIdRealName"] = userid_Users.RealName;
                 dic["LeaderReserve"] = userAccount.LeaderReserve;
                 dic["LeaderBalanceAmount"] = userAccount.LeaderBalanceAmount;
+
+                var ExpiredDate = DateTime.Parse(dic["ExpiredDate"].ToString());
+                if (ExpiredDate > DateTime.Now)
+                {
+                    dic["LeaderStatus"] = "未过期";
+                }
+                else
+                {
+                    dic["LeaderStatus"] = "已过期";
+                }
                 dic.Remove("UserId");
                 //盟主等级
                 int LeaderLevel = int.Parse(dic["LeaderLevel"].ToString());

+ 1 - 1
Areas/Admin/Controllers/MainServer/StoreChangeHistoryController.cs

@@ -113,7 +113,7 @@ namespace MySystem.Areas.Admin.Controllers
             foreach (Dictionary<string, object> dic in diclist)
             {
                 //创客
-                int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
+                int UserId = int.Parse(function.CheckInt(dic["FromUserId"].ToString()));
                 Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
                 dic["UserIdMakerCode"] = userid_Users.MakerCode;
                 dic["UserIdRealName"] = userid_Users.RealName;

+ 6 - 5
Areas/Admin/Controllers/MainServer/SysToolsController.cs

@@ -855,6 +855,8 @@ namespace MySystem.Areas.Admin.Controllers
                 FromUserId = pos.BuyUserId,
             });
             db.SaveChanges();
+            string text = string.Format("设置商户代理,创客编号: " + MakerCode + ",机具SN:" + PosSn + ",商户:" + MerNo + ",操作人:" + SysRealName + ",Time:" + DateTime.Now + "");
+            function.WriteLog(text, "SetMerAgent-设置商户代理");//设置商户型代理日志
             return "success";
         }
 
@@ -3789,7 +3791,7 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 return "划拨创客" + ToMakerCode + "不存在";
             }
-            var SnIds = "";
+            List<int> SnIds = new List<int>();
             string[] PosSnList = PosSn.Replace("\r", "").Replace("\n", ",").Split(',');
             string error = "";
             foreach (string Sn in PosSnList)
@@ -3801,7 +3803,7 @@ namespace MySystem.Areas.Admin.Controllers
                 }
                 else
                 {
-                    SnIds += posInfo.Id + ",";
+                    SnIds.Add(posInfo.Id);
                 }
             }
             if (!string.IsNullOrEmpty(error))
@@ -3810,10 +3812,9 @@ namespace MySystem.Areas.Admin.Controllers
             }
             else
             {
-                var posList = db.PosMachinesTwo.Where(m => SnIds.Contains("," + m.Id + ",")).ToList();
-                foreach (var Sn in posList)
+                foreach (int SnId in SnIds)
                 {
-                    var posInfo = posList.FirstOrDefault(m => m.Id == Sn.Id) ?? new PosMachinesTwo();
+                    var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == SnId) ?? new PosMachinesTwo();
                     if (posInfo.UserId == 0 || posInfo.BuyUserId == posInfo.UserId)
                     {
                         posInfo.BuyUserId = tUserId.Id;

+ 25 - 1
Areas/Admin/Views/MainServer/Leaders/Index.cshtml

@@ -51,12 +51,26 @@
                         </div>
                     </div>
                     <div class="layui-inline">
-                        <label class="layui-form-label">创建时间</label>
+                        <label class="layui-form-label">首次购买时间</label>
                         <div class="layui-input-inline">
                             <input class="layui-input" type="text" readonly name="CreateDateData" id="CreateDate"
                                 placeholder="" autocomplete="off">
                         </div>
                     </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">最后购买时间</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" readonly name="LastBuyDateData" id="LastBuyDateData"
+                                placeholder="" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">盟主到期时间</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" readonly name="ExpiredDateData" id="ExpiredDateData"
+                                placeholder="" autocomplete="off">
+                        </div>
+                    </div>
                     <div class="layui-inline">
                         <label class="layui-form-label">盟主等级</label>
                         <div class="layui-input-inline">
@@ -67,6 +81,16 @@
                             </select>
                         </div>
                     </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">状态</label>
+                        <div class="layui-input-inline">
+                            <select id="LeaderStatusSelect" name="LeaderStatusSelect" lay-search="">
+                                <option value="">全部...</option>
+                                <option value="0">未过期</option>
+                                <option value="1">已过期</option>
+                            </select>
+                        </div>
+                    </div>
 
                     <div class="layui-inline ml50">
                         <button class="layui-btn" lay-submit lay-filter="LAY-list-front-search">

+ 1 - 1
Areas/Admin/Views/OperateServer/StoreMachineApplysOperate/Edit.cshtml

@@ -1,4 +1,4 @@
-@using MySystem.OpModels;
+@using MySystem.Models;
 @{
     StoreMachineApply editData = ViewBag.data as StoreMachineApply;
 }

+ 21 - 0
Models/ExportExcels.cs

@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.Models
+{
+    public partial class ExportExcels
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int QueryCount { get; set; }
+        public int Status { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string SeoTitle { get; set; }
+        public string SeoKeyword { get; set; }
+        public string SeoDescription { get; set; }
+        public string FileName { get; set; }
+        public int SysId { get; set; }
+        public string FileUrl { get; set; }
+    }
+}

+ 2 - 0
Models/Leaders.cs

@@ -16,5 +16,7 @@ namespace MySystem.Models
         public string SeoDescription { get; set; }
         public int LeaderLevel { get; set; }
         public int UserId { get; set; }
+        public DateTime? ExpiredDate { get; set; }
+        public DateTime? LastBuyDate { get; set; }
     }
 }

+ 1 - 0
Models/PosCoupons.cs

@@ -24,5 +24,6 @@ namespace MySystem.Models
         public int HelpProfitStatus { get; set; }
         public ulong HelpProfitFlag { get; set; }
         public int OpId { get; set; }
+        public int OrderId { get; set; }
     }
 }

+ 1 - 0
Models/ProductNorm.cs

@@ -30,5 +30,6 @@ namespace MySystem.Models
         public decimal Price { get; set; }
         public string IdList { get; set; }
         public string ColName { get; set; }
+        public int StartBuyCount { get; set; }
     }
 }

+ 5 - 0
Models/Products.cs

@@ -54,5 +54,10 @@ namespace MySystem.Models
         public string Contents { get; set; }
         public string Details { get; set; }
         public string ProductName { get; set; }
+        public int ProductKind { get; set; }
+        public int BannerSort { get; set; }
+        public string BannerPhoto { get; set; }
+        public ulong IsBanner { get; set; }
+        public int StartBuyCount { get; set; }
     }
 }

+ 71 - 22
Models/WebCMSEntities.cs

@@ -48,6 +48,7 @@ namespace MySystem.Models
         public virtual DbSet<CouponsForUser> CouponsForUser { get; set; }
         public virtual DbSet<CustomTagSet> CustomTagSet { get; set; }
         public virtual DbSet<ErpCompanys> ErpCompanys { get; set; }
+        public virtual DbSet<ExportExcels> ExportExcels { get; set; }
         public virtual DbSet<FileUpdateInfo> FileUpdateInfo { get; set; }
         public virtual DbSet<FluxProfitDetail> FluxProfitDetail { get; set; }
         public virtual DbSet<FluxProfitSummary> FluxProfitSummary { get; set; }
@@ -2731,6 +2732,48 @@ namespace MySystem.Models
                 entity.Property(e => e.Version).HasColumnType("int(11)");
             });
 
+            modelBuilder.Entity<ExportExcels>(entity =>
+            {
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.CreateDate).HasColumnType("datetime");
+
+                entity.Property(e => e.FileName)
+                    .HasColumnType("varchar(50)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.FileUrl)
+                    .HasColumnType("varchar(500)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.QueryCount).HasColumnType("int(11)");
+
+                entity.Property(e => e.SeoDescription)
+                    .HasColumnType("varchar(500)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoKeyword)
+                    .HasColumnType("varchar(200)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoTitle)
+                    .HasColumnType("varchar(100)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Sort).HasColumnType("int(11)");
+
+                entity.Property(e => e.Status).HasColumnType("int(11)");
+
+                entity.Property(e => e.SysId).HasColumnType("int(11)");
+
+                entity.Property(e => e.UpdateDate).HasColumnType("datetime");
+            });
+
             modelBuilder.Entity<FileUpdateInfo>(entity =>
             {
                 entity.HasComment("资源文件更新信息");
@@ -4170,6 +4213,10 @@ namespace MySystem.Models
 
                 entity.Property(e => e.CreateDate).HasColumnType("datetime");
 
+                entity.Property(e => e.ExpiredDate).HasColumnType("datetime");
+
+                entity.Property(e => e.LastBuyDate).HasColumnType("datetime");
+
                 entity.Property(e => e.LeaderLevel).HasColumnType("int(11)");
 
                 entity.Property(e => e.QueryCount).HasColumnType("int(11)");
@@ -7266,8 +7313,6 @@ namespace MySystem.Models
                 entity.HasKey(e => e.BankName)
                     .HasName("PRIMARY");
 
-                entity.HasComment("开户行对照表");
-
                 entity.Property(e => e.BankName)
                     .HasColumnType("varchar(200)")
                     .HasCharSet("utf8")
@@ -7751,8 +7796,6 @@ namespace MySystem.Models
                 entity.HasKey(e => e.OrderNo)
                     .HasName("PRIMARY");
 
-                entity.HasComment("订单号关联表");
-
                 entity.Property(e => e.OrderNo)
                     .HasColumnType("varchar(50)")
                     .HasCharSet("utf8")
@@ -7773,8 +7816,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<OrderProduct>(entity =>
             {
-                entity.HasComment("订单商品");
-
                 entity.HasIndex(e => e.OrderId)
                     .HasName("OrderProductIndex");
 
@@ -7870,8 +7911,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<OrderRefund>(entity =>
             {
-                entity.HasComment("退款申请");
-
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
                 entity.Property(e => e.Amount).HasColumnType("decimal(18,2)");
@@ -7953,8 +7992,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<OrderRefundReason>(entity =>
             {
-                entity.HasComment("退款原因");
-
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
                 entity.Property(e => e.CreateDate).HasColumnType("datetime");
@@ -8002,8 +8039,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<Orders>(entity =>
             {
-                entity.HasComment("创客订单");
-
                 entity.HasIndex(e => e.StoreId)
                     .HasName("OrdersStoreIdIndex");
 
@@ -8569,6 +8604,8 @@ namespace MySystem.Models
 
                 entity.Property(e => e.OpId).HasColumnType("int(11)");
 
+                entity.Property(e => e.OrderId).HasColumnType("int(11)");
+
                 entity.Property(e => e.QueryCount).HasColumnType("int(11)");
 
                 entity.Property(e => e.SeoDescription)
@@ -8782,8 +8819,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<PosMachinesTwo>(entity =>
             {
-                entity.HasComment("机具库");
-
                 entity.HasIndex(e => new { e.PosSn, e.BrandId })
                     .HasName("PosMachinesTwoIndex");
 
@@ -9721,6 +9756,8 @@ namespace MySystem.Models
 
                 entity.Property(e => e.Sort).HasColumnType("int(11)");
 
+                entity.Property(e => e.StartBuyCount).HasColumnType("int(11)");
+
                 entity.Property(e => e.Status).HasColumnType("int(11)");
 
                 entity.Property(e => e.Stock).HasColumnType("int(11)");
@@ -9856,10 +9893,17 @@ namespace MySystem.Models
 
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
+                entity.Property(e => e.BannerPhoto)
+                    .HasColumnType("varchar(200)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.BannerSort).HasColumnType("int(11)");
+
                 entity.Property(e => e.BuyCount).HasColumnType("int(11)");
 
                 entity.Property(e => e.ColId)
-                    .HasColumnType("varchar(30)")
+                    .HasColumnType("varchar(100)")
                     .HasCharSet("utf8")
                     .HasCollation("utf8_general_ci");
 
@@ -9897,6 +9941,10 @@ namespace MySystem.Models
 
                 entity.Property(e => e.Integral).HasColumnType("decimal(18,2)");
 
+                entity.Property(e => e.IsBanner)
+                    .HasColumnType("bit(1)")
+                    .HasDefaultValueSql("b'0'");
+
                 entity.Property(e => e.IsLimit)
                     .HasColumnType("bit(1)")
                     .HasDefaultValueSql("b'0'");
@@ -9960,6 +10008,8 @@ namespace MySystem.Models
                     .HasCharSet("utf8")
                     .HasCollation("utf8_general_ci");
 
+                entity.Property(e => e.ProductKind).HasColumnType("int(11)");
+
                 entity.Property(e => e.ProductName)
                     .HasColumnType("varchar(100)")
                     .HasCharSet("utf8")
@@ -9993,6 +10043,8 @@ namespace MySystem.Models
 
                 entity.Property(e => e.SourcePrice).HasColumnType("decimal(18,2)");
 
+                entity.Property(e => e.StartBuyCount).HasColumnType("int(11)");
+
                 entity.Property(e => e.StartDate).HasColumnType("datetime");
 
                 entity.Property(e => e.Status).HasColumnType("int(11)");
@@ -14776,8 +14828,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<TradeDaySummary>(entity =>
             {
-                entity.HasComment("交易日汇总");
-
                 entity.HasIndex(e => new { e.UserId, e.TradeMonth, e.TradeDate, e.BrandId, e.QueryCount, e.VipFlag, e.PayType, e.SeoTitle })
                     .HasName("TradeDaySummaryIndex");
 
@@ -14961,7 +15011,8 @@ namespace MySystem.Models
 
             modelBuilder.Entity<TradeRecord>(entity =>
             {
-                entity.HasComment("交易记录");
+                entity.HasIndex(e => new { e.BrandId, e.UserId, e.MerchantId, e.MerNo, e.SnNo, e.CreateDate })
+                    .HasName("TradeRecordIndex");
 
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
@@ -17350,7 +17401,8 @@ namespace MySystem.Models
 
             modelBuilder.Entity<UserSnDelayChange>(entity =>
             {
-                entity.HasComment("创客机具延迟变动明细表");
+                entity.HasIndex(e => e.QueryCount)
+                    .HasName("UserSnDelayChangeIndex");
 
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
@@ -17954,8 +18006,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<Users>(entity =>
             {
-                entity.HasComment("创客");
-
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
                 entity.Property(e => e.AccessToken)
@@ -18137,7 +18187,6 @@ namespace MySystem.Models
 
                 entity.Property(e => e.MakerCode)
                     .HasColumnType("varchar(32)")
-                    .HasComment("创客编号")
                     .HasCharSet("utf8")
                     .HasCollation("utf8_general_ci");
 

+ 0 - 5
Startup.cs

@@ -141,11 +141,6 @@ namespace MySystem
             ExcelHelper.Instance.Start();
             OpExcelHelper.Instance.Start();
             SycnUserMachineCountHelper.Instance.Start(); //重置创客机具数量
-
-
-            // InstallmentDeductionService.Instance.Start();//每月20号执行分期扣费
-            // TimeOutPosChargeService.Instance.StartDoChargeAmount();//每天执行预扣款
-            // PreStoreApplyHelper.Instance.StartEverTime();//临时额度充值调低
         }
 
 

+ 60 - 1
wwwroot/layuiadmin/modules_main/Leaders_Admin.js

@@ -58,6 +58,62 @@ layui.config({
         }
     });
 
+    var layLastBuyDateData = laydate.render({
+        elem: '#LastBuyDateData',
+        type: 'date',
+        range: true,
+        trigger: 'click',
+        change: function (value, date, endDate) {
+            var op = true;
+            if (date.year == endDate.year && endDate.month - date.month <= 1) {
+                if (endDate.month - date.month == 1 && endDate.date > date.date) {
+                    op = false;
+                    layLastBuyDateData.hint('日期范围请不要超过1个月');
+                    setTimeout(function () {
+                        $(".laydate-btns-confirm").addClass("laydate-disabled");
+                    }, 1);
+                }
+            } else {
+                op = false;
+                layLastBuyDateData.hint('日期范围请不要超过1个月');
+                setTimeout(function () {
+                    $(".laydate-btns-confirm").addClass("laydate-disabled");
+                }, 1);
+            }
+            if (op) {
+                $('#LastBuyDateData').val(value);
+            }
+        }
+    });
+
+    var layExpiredDateData = laydate.render({
+        elem: '#ExpiredDateData',
+        type: 'date',
+        range: true,
+        trigger: 'click',
+        change: function (value, date, endDate) {
+            var op = true;
+            if (date.year == endDate.year && endDate.month - date.month <= 1) {
+                if (endDate.month - date.month == 1 && endDate.date > date.date) {
+                    op = false;
+                    layExpiredDateData.hint('日期范围请不要超过1个月');
+                    setTimeout(function () {
+                        $(".laydate-btns-confirm").addClass("laydate-disabled");
+                    }, 1);
+                }
+            } else {
+                op = false;
+                layExpiredDateData.hint('日期范围请不要超过1个月');
+                setTimeout(function () {
+                    $(".laydate-btns-confirm").addClass("laydate-disabled");
+                }, 1);
+            }
+            if (op) {
+                $('#ExpiredDateData').val(value);
+            }
+        }
+    });
+
 
     //excel导入
     excel = layui.excel;
@@ -94,7 +150,10 @@ layui.config({
             , { field: 'Id', fixed: 'left', title: 'ID', width: 80, sort: true, unresize: true }
             , { field: 'UserIdMakerCode', width: 200, title: '创客编号', sort: true }
             , { field: 'UserIdRealName', width: 200, title: '真实姓名', sort: true }
-            , { field: 'CreateDate', width: 200, title: '创建时间', sort: true }
+            , { field: 'CreateDate', width: 200, title: '首次购买时间', sort: true }
+            , { field: 'LastBuyDate', width: 200, title: '最后购买时间', sort: true }
+            , { field: 'ExpiredDate', width: 200, title: '盟主到期时间', sort: true }
+            , { field: 'LeaderStatus', width: 200, title: '状态', sort: true }
             , { field: 'LeaderLevel', width: 200, title: '盟主等级', sort: true }
             , { field: 'LeaderReserve', width: 200, title: '盟主储蓄金', sort: true }
             , { field: 'LeaderBalanceAmount', width: 200, title: '盟主可提现余额', sort: true }