Просмотр исходного кода

Merge branch 'feature-dgy-后台测试' into test-adminserver

# Conflicts:
#	Startup.cs
#	wwwroot/layuiadmin/modules_main/PreCardAmountRecord_Admin.js
#	wwwroot/layuiadmin/modules_main/StoreHouseCardAmountRecord_Admin.js
#	wwwroot/layuiadmin/modules_main/Users_Admin.js
DuGuYang 2 лет назад
Родитель
Сommit
079f70d7ec
26 измененных файлов с 4308 добавлено и 280 удалено
  1. 383 0
      AppStart/Helper/ImportHelper/BatchEditUserAmountService.cs
  2. 128 0
      AppStart/Helper/ImportHelper/PreWithdrawalResultsService.cs
  3. 128 0
      AppStart/Helper/ImportHelper/StoreHouseWithdrawalResultsService.cs
  4. 52 0
      AppStart/Tables/OpAmountItem.cs
  5. 67 0
      Areas/Admin/Controllers/MainServer/PreAmountRecordController.cs
  6. 67 0
      Areas/Admin/Controllers/MainServer/StoreHouseAmountRecordController.cs
  7. 111 123
      Areas/Admin/Controllers/MainServer/StoreHouseController.cs
  8. 81 66
      Areas/Admin/Controllers/MainServer/SysToolsController.cs
  9. 68 0
      Areas/Admin/Controllers/MainServer/UsersController.cs
  10. 16 15
      Areas/Admin/Controllers/OperateServer/StoreMachineApplyOperateController.cs
  11. 129 45
      Areas/Admin/Controllers/OperateServer/SysAdminOperateController.cs
  12. 15 13
      Areas/Admin/Controllers/OperateServer/UserCashRecordOperateController.cs
  13. 16 12
      Areas/Admin/Controllers/OperateServer/UserCashRecordOperatesController.cs
  14. 131 0
      Areas/Admin/Views/MainServer/PreAmountRecord/ImportByQueue.cshtml
  15. 2 1
      Areas/Admin/Views/MainServer/PreAmountRecord/Indexs.cshtml
  16. 131 0
      Areas/Admin/Views/MainServer/StoreHouseAmountRecord/ImportByQueue.cshtml
  17. 144 0
      Areas/Admin/Views/MainServer/Users/ImportByQueue.cshtml
  18. 2 0
      Areas/Admin/Views/OperateServer/SysAdminOperate/EditBalance.cshtml
  19. 32 0
      OpModels/AmountRecordNew.cs
  20. 17 0
      OpModels/ChangeTypeKind.cs
  21. 18 0
      OpModels/ChangeTypes.cs
  22. 180 0
      OpModels/WebCMSEntities.cs
  23. 9 5
      Startup.cs
  24. 524 0
      wwwroot/layuiadmin/modules_main/PreCardAmountRecord_Admin.js
  25. 524 0
      wwwroot/layuiadmin/modules_main/StoreHouseCardAmountRecord_Admin.js
  26. 1333 0
      wwwroot/layuiadmin/modules_main/Users_Admin.js

+ 383 - 0
AppStart/Helper/ImportHelper/BatchEditUserAmountService.cs

@@ -0,0 +1,383 @@
+using System;
+using System.Threading;
+using System.Linq;
+using System.Data;
+using Library;
+using MySystem.Models;
+using System.Collections.Generic;
+
+/// <summary>
+/// 创客信息相关数据导入
+/// </summary>
+namespace MySystem
+{
+    public class BatchEditUserAmountService
+    {
+        public readonly static BatchEditUserAmountService Instance = new BatchEditUserAmountService();
+        private BatchEditUserAmountService()
+        {
+        }
+
+        public void Start()//启动
+        {
+            Thread thread = new Thread(ImportPostDo);
+            thread.IsBackground = true;
+            thread.Start();
+        }
+
+        public void ImportPostDo()
+        {
+            while (true)
+            {
+                try
+                {
+                    string data = RedisDbconn.Instance.RPop<string>("BatchEditUserAmountQueue");
+                    if (!string.IsNullOrEmpty(data))
+                    {
+                        string[] dataList = data.Split("#cut#");
+                        string _ExcelPath = dataList[0];
+                        string _Kind = dataList[1];
+                        string checkKey = dataList[2];
+                        string Operator = dataList[3]; // 操作人
+                        int SuccessCount = 0;
+                        int DoCount = 0;
+                        string FullExcelPath = function.getPath(_ExcelPath);
+                        FullExcelPath = FullExcelPath.Replace("//", "/");
+                        DataTable list = new PublicFunction().ExcelToDataTable(FullExcelPath);
+                        int TotalCount = list.Rows.Count;
+                        while (DoCount < list.Rows.Count)
+                        {
+                            WebCMSEntities db = new WebCMSEntities();
+                            //导入结算金额
+                            if (_Kind == "1")
+                            {
+                                var tran = db.Database.BeginTransaction();
+                                try
+                                {
+                                    int Size = 100;
+                                    if (list.Rows.Count - DoCount < 100)
+                                    {
+                                        Size = list.Rows.Count - DoCount;
+                                    }
+                                    Dictionary<string, int> storeData = new Dictionary<string, int>();
+                                    for (int i = DoCount; i < DoCount + Size; i++)
+                                    {
+                                        DataRow dr = list.Rows[i];
+                                        string MakerCode = dr[0].ToString(); //创客编号
+                                        string RealName = dr[1].ToString(); //创客姓名
+                                        string SettleAmount = dr[2].ToString(); //提现结算金额(元)
+                                        UserForMakerCode UserCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
+                                        if (UserCode.UserId > 0)
+                                        {
+                                            var user = db.Users.FirstOrDefault(m => m.Id == UserCode.UserId) ?? new Users();
+                                            if (user.Id > 0)
+                                            {
+                                                SuccessCount += 1;
+                                                user.SettleAmount = decimal.Parse(function.CheckInt(SettleAmount));
+                                            }
+                                            else
+                                            {
+                                                RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到" + MakerCode + " " + RealName + "创客信息");
+                                            }
+                                        }
+                                        else
+                                        {
+                                            RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到" + MakerCode + "编号关联信息");
+                                        }
+                                    }
+                                    DoCount += Size;
+                                    db.SaveChanges();
+                                    tran.Commit();
+                                    if (DoCount >= list.Rows.Count)
+                                    {
+                                        RedisDbconn.Instance.Set("BatchEditUserAmountCheckImport:" + checkKey, "success|" + SuccessCount);
+                                        RedisDbconn.Instance.SetExpire("BatchEditUserAmountCheckImport:" + checkKey, 60000);
+                                    }
+                                }
+                                catch (Exception ex)
+                                {
+                                    DoCount = list.Rows.Count;
+                                    function.WriteLog(ex.ToString(), "导入结算金额");
+                                    tran.Rollback();
+                                    ErrorMsg msg = new ErrorMsg()
+                                    {
+                                        Time = DateTime.Now,
+                                        ErrorContent = ex.ToString(),
+                                    };
+                                    function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入结算金额Excel文件异常");
+                                }
+                                tran.Dispose();
+                            }
+                            //导入冻结金额
+                            if (_Kind == "2")
+                            {
+                                var tran = db.Database.BeginTransaction();
+                                try
+                                {
+                                    int Size = 100;
+                                    if (list.Rows.Count - DoCount < 100)
+                                    {
+                                        Size = list.Rows.Count - DoCount;
+                                    }
+                                    Dictionary<string, int> storeData = new Dictionary<string, int>();
+                                    for (int i = DoCount; i < DoCount + Size; i++)
+                                    {
+                                        DataRow dr = list.Rows[i];
+                                        string MakerCode = dr[0].ToString(); //创客编号
+                                        string RealName = dr[1].ToString(); //创客姓名
+                                        string CashFreezeAmt = dr[2].ToString(); //提现结算金额(元)
+                                        UserForMakerCode UserCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
+                                        if (UserCode.UserId > 0)
+                                        {
+                                            var user = db.Users.FirstOrDefault(m => m.Id == UserCode.UserId) ?? new Users();
+                                            if (user.Id > 0)
+                                            {
+                                                SuccessCount += 1;
+                                                user.CashFreezeAmt = decimal.Parse(function.CheckInt(CashFreezeAmt));
+                                            }
+                                            else
+                                            {
+                                                RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到" + MakerCode + " " + RealName + "创客信息");
+                                            }
+                                        }
+                                        else
+                                        {
+                                            RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到" + MakerCode + "编号关联信息");
+                                        }
+                                    }
+                                    DoCount += Size;
+                                    db.SaveChanges();
+                                    tran.Commit();
+                                    if (DoCount >= list.Rows.Count)
+                                    {
+                                        RedisDbconn.Instance.Set("BatchEditUserAmountCheckImport:" + checkKey, "success|" + SuccessCount);
+                                        RedisDbconn.Instance.SetExpire("BatchEditUserAmountCheckImport:" + checkKey, 60000);
+                                    }
+                                }
+                                catch (Exception ex)
+                                {
+                                    DoCount = list.Rows.Count;
+                                    function.WriteLog(ex.ToString(), "导入冻结金额");
+                                    tran.Rollback();
+                                    ErrorMsg msg = new ErrorMsg()
+                                    {
+                                        Time = DateTime.Now,
+                                        ErrorContent = ex.ToString(),
+                                    };
+                                    function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入冻结金额Excel文件异常");
+                                }
+                                tran.Dispose();
+                            }
+                            //导入风控数据
+                            if (_Kind == "3")
+                            {
+                                var tran = db.Database.BeginTransaction();
+                                try
+                                {
+                                    int Size = 100;
+                                    if (list.Rows.Count - DoCount < 100)
+                                    {
+                                        Size = list.Rows.Count - DoCount;
+                                    }
+                                    Dictionary<string, int> storeData = new Dictionary<string, int>();
+                                    for (int i = DoCount; i < DoCount + Size; i++)
+                                    {
+                                        DataRow dr = list.Rows[i];
+                                        string MakerCode = dr[0].ToString(); //创客编号
+                                        string RealName = dr[1].ToString(); //创客姓名
+                                        string RiskFlag = dr[2].ToString(); //风控标记(0 否 1 是)
+                                        string RiskNote = dr[3].ToString(); //风控备注
+                                        UserForMakerCode UserCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
+                                        if (UserCode.UserId > 0)
+                                        {
+                                            var user = db.Users.FirstOrDefault(m => m.Id == UserCode.UserId && m.RealName == RealName) ?? new Users();
+                                            if (user.Id > 0)
+                                            {
+                                                SuccessCount += 1;
+                                                user.RiskFlag = ulong.Parse(function.CheckInt(RiskFlag));
+                                                user.RiskRemark = RiskNote;
+                                            }
+                                            else
+                                            {
+                                                RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到" + MakerCode + " " + RealName + "创客信息");
+                                            }
+                                        }
+                                        else
+                                        {
+                                            RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到" + MakerCode + "编号关联信息");
+                                        }
+                                    }
+                                    DoCount += Size;
+                                    db.SaveChanges();
+                                    tran.Commit();
+                                    if (DoCount >= list.Rows.Count)
+                                    {
+                                        RedisDbconn.Instance.Set("BatchEditUserAmountCheckImport:" + checkKey, "success|" + SuccessCount);
+                                        RedisDbconn.Instance.SetExpire("BatchEditUserAmountCheckImport:" + checkKey, 60000);
+                                    }
+                                }
+                                catch (Exception ex)
+                                {
+                                    DoCount = list.Rows.Count;
+                                    function.WriteLog(ex.ToString(), "导入风控数据");
+                                    tran.Rollback();
+                                    ErrorMsg msg = new ErrorMsg()
+                                    {
+                                        Time = DateTime.Now,
+                                        ErrorContent = ex.ToString(),
+                                    };
+                                    function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入风控数据Excel文件异常");
+                                }
+                                tran.Dispose();
+                            }
+                            //批量修改账户金额
+                            if (_Kind == "4")
+                            {
+                                var tran = db.Database.BeginTransaction();
+                                try
+                                {
+                                    int Size = 100;
+                                    if (list.Rows.Count - DoCount < 100)
+                                    {
+                                        Size = list.Rows.Count - DoCount;
+                                    }
+                                    Dictionary<string, int> storeData = new Dictionary<string, int>();
+                                    for (int i = DoCount; i < DoCount + Size; i++)
+                                    {
+                                        DataRow dr = list.Rows[i];
+                                        string MakerCode = dr[0].ToString(); //创客编号
+                                        string RealName = dr[1].ToString(); //创客姓名
+                                        string OperationAmt = dr[2].ToString();//操作金额
+                                        string OperationType = dr[3].ToString();//操作类型(1-冻结 2-解冻 3-扣减 4-增加)
+                                        UserForMakerCode UserCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
+                                        if (UserCode.UserId > 0)
+                                        {
+                                            var user = db.Users.FirstOrDefault(m => m.Id == UserCode.UserId && m.RealName == RealName) ?? new Users();
+                                            if (user.Id > 0)
+                                            {
+                                                UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == user.Id) ?? new UserAccount();
+                                                if (account.Id == 0)
+                                                {
+                                                    account = db.UserAccount.Add(new UserAccount()
+                                                    {
+                                                        Id = user.Id,
+                                                        UserId = user.Id,
+                                                    }).Entity;
+                                                    db.SaveChanges();
+                                                }
+                                                if (account.Id > 0)
+                                                {
+                                                    decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
+                                                    decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
+                                                    decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
+                                                    int ChangeType = 0;
+                                                    if (OperationType == "1" && Convert.ToDecimal(OperationAmt) > account.BalanceAmount)
+                                                    {
+                                                        RedisDbconn.Instance.AddList("ErrList" + checkKey, "以下操作失败" + user.MakerCode + ',' + user.RealName + "冻结金额大于余额");
+                                                    }
+                                                    if (OperationType == "2" && Convert.ToDecimal(OperationAmt) > account.FreezeAmount)
+                                                    {
+                                                        RedisDbconn.Instance.AddList("ErrList" + checkKey, "以下操作失败" + user.MakerCode + ',' + user.RealName + "解冻金额大于冻结金额");
+                                                    }
+                                                    if (OperationType == "3" && Convert.ToDecimal(OperationAmt) > account.BalanceAmount)
+                                                    {
+                                                        RedisDbconn.Instance.AddList("ErrList" + checkKey, "以下操作失败" + user.MakerCode + ',' + user.RealName + "扣减金额大于余额");
+                                                    }
+                                                    if ((OperationType == "1" && Convert.ToDecimal(OperationAmt) <= account.BalanceAmount) || (OperationType == "2" && Convert.ToDecimal(OperationAmt) <= account.FreezeAmount) || (OperationType == "3" && Convert.ToDecimal(OperationAmt) <= account.BalanceAmount) || (OperationType == "4"))
+                                                    {
+                                                        if (OperationType == "1" && Convert.ToDecimal(OperationAmt) <= account.BalanceAmount)
+                                                        {
+                                                            account.BalanceAmount -= Convert.ToDecimal(OperationAmt);
+                                                            account.FreezeAmount += Convert.ToDecimal(OperationAmt);
+                                                            ChangeType = 61;
+                                                        }
+                                                        if (OperationType == "2" && Convert.ToDecimal(OperationAmt) <= account.FreezeAmount)
+                                                        {
+                                                            account.BalanceAmount += Convert.ToDecimal(OperationAmt);
+                                                            account.FreezeAmount -= Convert.ToDecimal(OperationAmt);
+                                                            ChangeType = 62;
+                                                        }
+                                                        if (OperationType == "3" && Convert.ToDecimal(OperationAmt) <= account.BalanceAmount)
+                                                        {
+                                                            account.TotalAmount -= Convert.ToDecimal(OperationAmt);
+                                                            account.BalanceAmount -= Convert.ToDecimal(OperationAmt);
+                                                            ChangeType = 63;
+                                                        }
+                                                        if (OperationType == "4")
+                                                        {
+                                                            account.TotalAmount += Convert.ToDecimal(OperationAmt);
+                                                            account.BalanceAmount += Convert.ToDecimal(OperationAmt);
+                                                            ChangeType = 64;
+                                                        }
+                                                        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 = user.Id, //创客
+                                                            ChangeType = ChangeType, //变动类型
+                                                            ChangeAmount = Convert.ToDecimal(OperationAmt), //变更金额
+                                                            BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
+                                                            AfterTotalAmount = AfterTotalAmount, //变更后总金额
+                                                            BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
+                                                            AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
+                                                            BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
+                                                            AfterBalanceAmount = AfterBalanceAmount, //变更后余额
+                                                            Remark = dr[4].ToString(),
+                                                        }).Entity;
+                                                        db.SaveChanges();
+                                                        SuccessCount += 1;
+                                                        function.WriteLog(DateTime.Now.ToString() + "\n" + user.Id.ToString(), "批量修改账户金额");
+                                                    }
+                                                }
+                                            }
+                                            else
+                                            {
+                                                RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到" + MakerCode + " " + RealName + "创客信息");
+                                            }
+                                        }
+                                        else
+                                        {
+                                            RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到" + MakerCode + "编号关联信息");
+                                        }
+                                    }
+                                    DoCount += Size;
+                                    db.SaveChanges();
+                                    tran.Commit();
+                                    if (DoCount >= list.Rows.Count)
+                                    {
+                                        RedisDbconn.Instance.Set("BatchEditUserAmountCheckImport:" + checkKey, "success|" + SuccessCount);
+                                        RedisDbconn.Instance.SetExpire("BatchEditUserAmountCheckImport:" + checkKey, 60000);
+                                    }
+                                }
+                                catch (Exception ex)
+                                {
+                                    DoCount = list.Rows.Count;
+                                    function.WriteLog(ex.ToString(), "批量修改账户金额");
+                                    tran.Rollback();
+                                    ErrorMsg msg = new ErrorMsg()
+                                    {
+                                        Time = DateTime.Now,
+                                        ErrorContent = ex.ToString(),
+                                    };
+                                    function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "批量修改账户金额Excel文件异常");
+                                }
+                                tran.Dispose();
+                            }
+                        }
+                    }
+                    else
+                    {
+                        Thread.Sleep(5000);
+                    }
+                }
+                catch (Exception ex)
+                {
+                    function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "后台导入Excel文件队列异常");
+                }
+            }
+        }
+    }
+}

+ 128 - 0
AppStart/Helper/ImportHelper/PreWithdrawalResultsService.cs

@@ -0,0 +1,128 @@
+using System;
+using System.Threading;
+using System.Linq;
+using System.Data;
+using Library;
+using MySystem.Models;
+using System.Collections.Generic;
+
+/// <summary>
+/// 小分仓临时额度提现结果导入
+/// </summary>
+namespace MySystem
+{
+    public class PreWithdrawalResultsService
+    {
+        public readonly static PreWithdrawalResultsService Instance = new PreWithdrawalResultsService();
+        private PreWithdrawalResultsService()
+        {
+        }
+
+        public void Start()//启动
+        {
+            Thread thread = new Thread(ImportPostDo);
+            thread.IsBackground = true;
+            thread.Start();
+        }
+
+        public void ImportPostDo()
+        {
+            while (true)
+            {
+                try
+                {
+                    string data = RedisDbconn.Instance.RPop<string>("PreWithdrawalResultsQueue");
+                    if (!string.IsNullOrEmpty(data))
+                    {
+                        string[] dataList = data.Split("#cut#");
+                        string _ExcelPath = dataList[0];
+                        string _Kind = dataList[1];
+                        string checkKey = dataList[2];
+                        string Operator = dataList[3]; // 操作人
+                        int SuccessCount = 0;
+                        int DoCount = 0;
+                        string FullExcelPath = function.getPath(_ExcelPath);
+                        FullExcelPath = FullExcelPath.Replace("//", "/");
+                        DataTable list = new PublicFunction().ExcelToDataTable(FullExcelPath);
+                        int TotalCount = list.Rows.Count;
+                        while (DoCount < list.Rows.Count)
+                        {
+                            WebCMSEntities db = new WebCMSEntities();
+                            //导入结算金额
+                            if (_Kind == "1")
+                            {
+                                var tran = db.Database.BeginTransaction();
+                                try
+                                {
+                                    int Size = 100;
+                                    if (list.Rows.Count - DoCount < 100)
+                                    {
+                                        Size = list.Rows.Count - DoCount;
+                                    }
+                                    Dictionary<string, int> storeData = new Dictionary<string, int>();
+                                    for (int i = DoCount; i < DoCount + Size; i++)
+                                    {
+                                        DataRow dr = list.Rows[i];
+                                        string Id = dr[0].ToString();
+                                        string IsOk = dr[11].ToString();
+                                        var id = int.Parse(Id);
+                                        var Info = db.PreAmountRecord.FirstOrDefault(m => m.Id == id) ?? new PreAmountRecord();
+                                        if (Info.Id > 0)
+                                        {
+                                            if (IsOk == "是") Info.Status = 1;
+                                            if (IsOk == "否")
+                                            {
+                                                Info.Status = -1;
+                                                var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == Info.UserId) ?? new UserAccount();
+                                                if (userAccount.Id > 0)
+                                                {
+                                                    userAccount.PreTempAmount += Info.UseAmount;//退还卡充值临额
+                                                    userAccount.ValidPreAmount += Info.UseAmount;//退还可用额度
+                                                }
+                                            }
+                                            SuccessCount += 1;
+                                        }
+                                        else
+                                        {
+                                            RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到记录为Id" + Id + "相关信息");
+                                        }
+                                    }
+                                    DoCount += Size;
+                                    db.SaveChanges();
+                                    tran.Commit();
+                                    if (DoCount >= list.Rows.Count)
+                                    {
+                                        RedisDbconn.Instance.Set("PreWithdrawalResultsCheckImport:" + checkKey, "success|" + SuccessCount);
+                                        RedisDbconn.Instance.SetExpire("PreWithdrawalResultsCheckImport:" + checkKey, 60000);
+                                    }
+                                }
+                                catch (Exception ex)
+                                {
+                                    DoCount = list.Rows.Count;
+                                    function.WriteLog(ex.ToString(), "导入结算金额");
+                                    tran.Rollback();
+                                    ErrorMsg msg = new ErrorMsg()
+                                    {
+                                        Time = DateTime.Now,
+                                        ErrorContent = ex.ToString(),
+                                    };
+                                    function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入结算金额Excel文件异常");
+                                }
+                                tran.Dispose();
+                            }
+
+                        }
+                    }
+                    else
+                    {
+                        Thread.Sleep(50000);
+                    }
+                }
+                catch (Exception ex)
+                {
+                    function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "后台导入Excel文件队列异常");
+                }
+            }
+        }
+    }
+}

+ 128 - 0
AppStart/Helper/ImportHelper/StoreHouseWithdrawalResultsService.cs

@@ -0,0 +1,128 @@
+using System;
+using System.Threading;
+using System.Linq;
+using System.Data;
+using Library;
+using MySystem.Models;
+using System.Collections.Generic;
+
+/// <summary>
+/// 分仓临时额度提现结果导入
+/// </summary>
+namespace MySystem
+{
+    public class StoreHouseWithdrawalResultsService
+    {
+        public readonly static StoreHouseWithdrawalResultsService Instance = new StoreHouseWithdrawalResultsService();
+        private StoreHouseWithdrawalResultsService()
+        {
+        }
+
+        public void Start()//启动
+        {
+            Thread thread = new Thread(ImportPostDo);
+            thread.IsBackground = true;
+            thread.Start();
+        }
+
+        public void ImportPostDo()
+        {
+            while (true)
+            {
+                try
+                {
+                    string data = RedisDbconn.Instance.RPop<string>("StoreHouseWithdrawalResultsQueue");
+                    if (!string.IsNullOrEmpty(data))
+                    {
+                        string[] dataList = data.Split("#cut#");
+                        string _ExcelPath = dataList[0];
+                        string _Kind = dataList[1];
+                        string checkKey = dataList[2];
+                        string Operator = dataList[3]; // 操作人
+                        int SuccessCount = 0;
+                        int DoCount = 0;
+                        string FullExcelPath = function.getPath(_ExcelPath);
+                        FullExcelPath = FullExcelPath.Replace("//", "/");
+                        DataTable list = new PublicFunction().ExcelToDataTable(FullExcelPath);
+                        int TotalCount = list.Rows.Count;
+                        while (DoCount < list.Rows.Count)
+                        {
+                            WebCMSEntities db = new WebCMSEntities();
+                            //导入结果
+                            if (_Kind == "1")
+                            {
+                                var tran = db.Database.BeginTransaction();
+                                try
+                                {
+                                    int Size = 100;
+                                    if (list.Rows.Count - DoCount < 100)
+                                    {
+                                        Size = list.Rows.Count - DoCount;
+                                    }
+                                    Dictionary<string, int> storeData = new Dictionary<string, int>();
+                                    for (int i = DoCount; i < DoCount + Size; i++)
+                                    {
+                                        DataRow dr = list.Rows[i];
+                                        string Id = dr[0].ToString();
+                                        string IsOk = dr[11].ToString();
+                                        var id = int.Parse(Id);
+                                        var Info = db.StoreHouseAmountRecord.FirstOrDefault(m => m.Id == id) ?? new StoreHouseAmountRecord();
+                                        if (Info.Id > 0)
+                                        {
+                                            if (IsOk == "是") Info.Status = 1;
+                                            if (IsOk == "否")
+                                            {
+                                                Info.Status = -1;
+                                                var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == Info.UserId) ?? new UserAccount();
+                                                if (userAccount.Id > 0)
+                                                {
+                                                    userAccount.TempAmount += Info.UseAmount;//退还卡充值临额
+                                                    userAccount.ValidAmount += Info.UseAmount;//退还可用额度
+                                                }
+                                            }
+                                            SuccessCount += 1;
+                                        }
+                                        else
+                                        {
+                                            RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到记录为Id" + Id + "相关信息");
+                                        }
+                                    }
+                                    DoCount += Size;
+                                    db.SaveChanges();
+                                    tran.Commit();
+                                    if (DoCount >= list.Rows.Count)
+                                    {
+                                        RedisDbconn.Instance.Set("StoreHouseWithdrawalResultsCheckImport:" + checkKey, "success|" + SuccessCount);
+                                        RedisDbconn.Instance.SetExpire("StoreHouseWithdrawalResultsCheckImport:" + checkKey, 60000);
+                                    }
+                                }
+                                catch (Exception ex)
+                                {
+                                    DoCount = list.Rows.Count;
+                                    function.WriteLog(ex.ToString(), "分仓临时额度提现结果导入");
+                                    tran.Rollback();
+                                    ErrorMsg msg = new ErrorMsg()
+                                    {
+                                        Time = DateTime.Now,
+                                        ErrorContent = ex.ToString(),
+                                    };
+                                    function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "分仓临时额度提现结果导入Excel文件异常");
+                                }
+                                tran.Dispose();
+                            }
+
+                        }
+                    }
+                    else
+                    {
+                        Thread.Sleep(50000);
+                    }
+                }
+                catch (Exception ex)
+                {
+                    function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "后台导入Excel文件队列异常");
+                }
+            }
+        }
+    }
+}

+ 52 - 0
AppStart/Tables/OpAmountItem.cs

@@ -0,0 +1,52 @@
+using System;
+using System.Collections.Generic;
+/// <summary>
+/// 添加收支明细工具类
+/// </summary>
+namespace MySystem
+{
+    public class OpAmountItem
+    {
+        //创客Id
+        public int UserId { get; set; }
+
+
+        //操作类型(0 总和 1 增加 2 减少)
+        public int OperateType { get; set; }
+
+
+        //类别
+        public int ChangeType { get; set; }
+
+
+        //备注
+        public string Remark { get; set; }
+
+
+        //变更总额度
+        public decimal UseAmount { get; set; }
+
+
+        //变更可提现额度
+        public decimal UseValidForGetAmount { get; set; }
+
+
+        //变更未使用额度
+        public decimal UseTotalAmt { get; set; }
+
+
+        //变更关联分仓额度
+        public decimal UseValidAmount { get; set; }
+
+
+        //来源类型,区分表(1订单,2机具,3申请记录,4购买运营中心,5预扣款 6兑换大盟主 7仓库)
+        public int DataType { get; set; }
+
+
+        //来源Id,表的主键Id
+        public int DataId { get; set; }
+
+        //是否入账(0 是 1 否)
+        public int NoAccount { get; set; }
+    }
+}

+ 67 - 0
Areas/Admin/Controllers/MainServer/PreAmountRecordController.cs

@@ -455,5 +455,72 @@ namespace MySystem.Areas.Admin.Controllers
         }
         #endregion
 
+
+        #region 通过队列导入数据
+
+        public IActionResult ImportByQueue(string right, string ExcelKind)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            ViewBag.ExcelKind = ExcelKind;
+            return View();
+        }
+        /// <summary>
+        /// 通过队列导入数据
+        /// </summary>
+        /// <param name="ExcelPath"></param>
+        [HttpPost]
+        public string ImportByQueuePost(string ExcelPath, int Kind = 0)
+        {
+            string key = function.MD5_16(Guid.NewGuid().ToString());
+            RedisDbconn.Instance.AddList("PreWithdrawalResultsQueue", ExcelPath + "#cut#" + Kind + "#cut#" + key + "#cut#" + SysUserName);
+            return "success|" + key;
+        }
+        public string CheckImport(string key)
+        {
+            string result = RedisDbconn.Instance.Get<string>("PreWithdrawalResultsCheckImport:" + key);
+            if (!string.IsNullOrEmpty(result))
+            {
+                string[] datalist = result.Split('|');
+                if (datalist[0] == "success")
+                {
+                    return result;
+                }
+                return datalist[0];
+            }
+            return "0";
+        }
+        public Dictionary<string, object> CheckImportV2(string key)
+        {
+            Dictionary<string, object> Obj = new Dictionary<string, object>();
+            string result = RedisDbconn.Instance.Get<string>("PreWithdrawalResultsCheckImport:" + key);
+            if (!string.IsNullOrEmpty(result))
+            {
+                string[] datalist = result.Split('|');
+                if (datalist[0] == "success")
+                {
+                    List<string> errList = RedisDbconn.Instance.GetList<string>("ErrList" + key);
+                    if (errList.Count > 0)
+                    {
+                        Obj.Add("status", 2);
+                        Obj.Add("errList", errList);
+                    }
+                    else
+                    {
+                        Obj.Add("status", 1);
+                        Obj.Add("data", result);
+                    }
+                    return Obj;
+                }
+                Obj.Add("status", 0);
+                Obj.Add("data", datalist[0]);
+                return Obj;
+            }
+            Obj.Add("status", -1);
+            Obj.Add("data", "执行中...");
+            return Obj;
+        }
+        #endregion
+
     }
 }

+ 67 - 0
Areas/Admin/Controllers/MainServer/StoreHouseAmountRecordController.cs

@@ -801,5 +801,72 @@ namespace MySystem.Areas.Admin.Controllers
         }
         #endregion
 
+
+        #region 通过队列导入数据
+
+        public IActionResult ImportByQueue(string right, string ExcelKind)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            ViewBag.ExcelKind = ExcelKind;
+            return View();
+        }
+        /// <summary>
+        /// 通过队列导入数据
+        /// </summary>
+        /// <param name="ExcelPath"></param>
+        [HttpPost]
+        public string ImportByQueuePost(string ExcelPath, int Kind = 0)
+        {
+            string key = function.MD5_16(Guid.NewGuid().ToString());
+            RedisDbconn.Instance.AddList("StoreHouseWithdrawalResultsQueue", ExcelPath + "#cut#" + Kind + "#cut#" + key + "#cut#" + SysUserName);
+            return "success|" + key;
+        }
+        public string CheckImport(string key)
+        {
+            string result = RedisDbconn.Instance.Get<string>("StoreHouseWithdrawalResultsCheckImport:" + key);
+            if (!string.IsNullOrEmpty(result))
+            {
+                string[] datalist = result.Split('|');
+                if (datalist[0] == "success")
+                {
+                    return result;
+                }
+                return datalist[0];
+            }
+            return "0";
+        }
+        public Dictionary<string, object> CheckImportV2(string key)
+        {
+            Dictionary<string, object> Obj = new Dictionary<string, object>();
+            string result = RedisDbconn.Instance.Get<string>("StoreHouseWithdrawalResultsCheckImport:" + key);
+            if (!string.IsNullOrEmpty(result))
+            {
+                string[] datalist = result.Split('|');
+                if (datalist[0] == "success")
+                {
+                    List<string> errList = RedisDbconn.Instance.GetList<string>("ErrList" + key);
+                    if (errList.Count > 0)
+                    {
+                        Obj.Add("status", 2);
+                        Obj.Add("errList", errList);
+                    }
+                    else
+                    {
+                        Obj.Add("status", 1);
+                        Obj.Add("data", result);
+                    }
+                    return Obj;
+                }
+                Obj.Add("status", 0);
+                Obj.Add("data", datalist[0]);
+                return Obj;
+            }
+            Obj.Add("status", -1);
+            Obj.Add("data", "执行中...");
+            return Obj;
+        }
+        #endregion
+
     }
 }

+ 111 - 123
Areas/Admin/Controllers/MainServer/StoreHouseController.cs

@@ -553,41 +553,44 @@ namespace MySystem.Areas.Admin.Controllers
                     userAccountOld.TempAmountForBalance = 0;
                     if (sto.OpId > 0)
                     {
-                        var amount = opdb.UserAccount.FirstOrDefault(m => m.UserId == sto.OpId) ?? new OpModels.UserAccount();
-                        if (newdeposit > olddeposit)
+                        var UseAmount = 0.00M;
+                        var OperateType = 0;
+                        if (newdeposit >= olddeposit)
                         {
-                            var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
-                            {
-                                CreateDate = DateTime.Now,
-                                UserId = sto.OpId,
-                                SeoDescription = "分仓押金变更",
-                                OperateType = 1,
-                                UseAmount = newdeposit - olddeposit,
-                                BeforeAmount = amount.ValidAmount,
-                                AfterAmount = amount.ValidAmount + newdeposit - olddeposit,
-                                AfterTotalAmt = amount.TotalAmt,
-                                AfterValidForGetAmount = amount.ValidForGetAmount,
-                                AfterValidAmount = amount.ValidAmount + newdeposit - olddeposit,
-                            }).Entity;
+                            UseAmount = newdeposit - olddeposit;
+                            OperateType = 1;
                         }
                         if (newdeposit < olddeposit)
                         {
-                            var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
+                            UseAmount = olddeposit - newdeposit;
+                            OperateType = 2;
+                        }
+                        if (UseAmount > 0)
+                        {
+                            var amount = opdb.UserAccount.FirstOrDefault(m => m.UserId == sto.OpId) ?? new OpModels.UserAccount();
+                            var bValidAmount = amount.ValidAmount;
+                            var aValidAmount = amount.ValidAmount - sto.Deposit + data.Deposit;
+
+                            OpAmountItem opAmountItem = new OpAmountItem
                             {
-                                CreateDate = DateTime.Now,
-                                UserId = sto.OpId,
-                                SeoDescription = "分仓押金变更",
-                                OperateType = 2,
-                                UseAmount = olddeposit - newdeposit,
-                                BeforeAmount = amount.ValidAmount,
-                                AfterAmount = amount.ValidAmount + newdeposit - olddeposit,
-                                AfterTotalAmt = amount.TotalAmt,
-                                AfterValidForGetAmount = amount.ValidForGetAmount,
-                                AfterValidAmount = amount.ValidAmount + newdeposit - olddeposit
-                            }).Entity;
+                                UserId = sto.OpId,//创客Id
+                                OperateType = OperateType,//操作类型(0 总和 1 增加 2 减少)
+                                ChangeType = 3,//类别
+                                Remark = "分仓押金变更",//备注
+                                UseAmount = UseAmount,//变更总额度
+                                UseValidForGetAmount = 0,//变更可提现额度
+                                UseTotalAmt = 0,//变更未使用额度
+                                UseValidAmount = Math.Max(0, bValidAmount - aValidAmount),//变更关联分仓额度
+                                DataType = 7,//来源类型,区分表(1订单,2机具,3申请记录,4购买运营中心,5预扣款 6兑换大盟主 7仓库)
+                                DataId = sto.Id,//来源Id,表的主键Id
+                                NoAccount = 1//是否入账(0 是 1 否)
+                            };
+
+                            RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", opAmountItem);
+
+                            amount.ValidAmount -= sto.Deposit;
+                            amount.ValidAmount += data.Deposit;
                         }
-                        amount.ValidAmount -= sto.Deposit;
-                        amount.ValidAmount += data.Deposit;
                     }
                     var oldUserInfo = db.Users.FirstOrDefault(m => m.Id == sto.UserId) ?? new Users();
                     var newUserInfo = db.Users.FirstOrDefault(m => m.Id == user.UserId) ?? new Users();
@@ -626,41 +629,45 @@ namespace MySystem.Areas.Admin.Controllers
                 userAccount.StoreDeposit = data.Deposit;
                 if (sto.OpId > 0)
                 {
-                    var amount = opdb.UserAccount.FirstOrDefault(m => m.UserId == sto.OpId) ?? new OpModels.UserAccount();
-                    if (newdeposit > olddeposit)
+                    var UseAmount = 0.00M;
+                    var OperateType = 0;
+                    if (newdeposit >= olddeposit)
                     {
-                        var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
-                        {
-                            CreateDate = DateTime.Now,
-                            UserId = sto.OpId,
-                            SeoDescription = "分仓押金变更",
-                            OperateType = 1,
-                            UseAmount = newdeposit - olddeposit,
-                            BeforeAmount = amount.ValidAmount,
-                            AfterAmount = amount.ValidAmount + newdeposit - olddeposit,
-                            AfterTotalAmt = amount.TotalAmt,
-                            AfterValidForGetAmount = amount.ValidForGetAmount,
-                            AfterValidAmount = amount.ValidAmount + newdeposit - olddeposit
-                        }).Entity;
+                        UseAmount = newdeposit - olddeposit;
+                        OperateType = 1;
                     }
                     if (newdeposit < olddeposit)
                     {
-                        var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
+                        UseAmount = olddeposit - newdeposit;
+                        OperateType = 2;
+                    }
+                    if (UseAmount > 0)
+                    {
+                        var amount = opdb.UserAccount.FirstOrDefault(m => m.UserId == sto.OpId) ?? new OpModels.UserAccount();
+
+                        var bValidAmount = amount.ValidAmount;
+                        var aValidAmount = amount.ValidAmount - sto.Deposit + data.Deposit;
+
+                        OpAmountItem opAmountItem = new OpAmountItem
                         {
-                            CreateDate = DateTime.Now,
-                            UserId = sto.OpId,
-                            SeoDescription = "分仓押金变更",
-                            OperateType = 2,
-                            UseAmount = olddeposit - newdeposit,
-                            BeforeAmount = amount.ValidAmount,
-                            AfterAmount = amount.ValidAmount + newdeposit - olddeposit,
-                            AfterTotalAmt = amount.TotalAmt,
-                            AfterValidForGetAmount = amount.ValidForGetAmount,
-                            AfterValidAmount = amount.ValidAmount + newdeposit - olddeposit
-                        }).Entity;
+                            UserId = sto.OpId,//创客Id
+                            OperateType = OperateType,//操作类型(0 总和 1 增加 2 减少)
+                            ChangeType = 3,//类别
+                            Remark = "分仓押金变更",//备注
+                            UseAmount = UseAmount,//变更总额度
+                            UseValidForGetAmount = 0,//变更可提现额度
+                            UseTotalAmt = 0,//变更未使用额度
+                            UseValidAmount = Math.Max(0, bValidAmount - aValidAmount),//变更关联分仓额度
+                            DataType = 7,//来源类型,区分表(1订单,2机具,3申请记录,4购买运营中心,5预扣款 6兑换大盟主 7仓库)
+                            DataId = sto.Id,//来源Id,表的主键Id
+                            NoAccount = 1//是否入账(0 是 1 否)
+                        };
+
+                        RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", opAmountItem);
+
+                        amount.ValidAmount -= sto.Deposit;
+                        amount.ValidAmount += data.Deposit;
                     }
-                    amount.ValidAmount -= sto.Deposit;
-                    amount.ValidAmount += data.Deposit;
                 }
                 foreach (var item in store)
                 {
@@ -2026,6 +2033,9 @@ namespace MySystem.Areas.Admin.Controllers
                     userAmount.ValidAmount += deposit;
                     opdb.SaveChanges();
                     decimal toAmount = userAmount.ValidAmount + userAmount.TotalAmt + userAmount.ValidForGetAmount;//新的总金额
+                    decimal ValidAmount = 0.00M;//关联分仓额度
+                    decimal TotalAmt = 0.00M; //未使用额度
+                    decimal ValidForGetAmount = 0.00M; //可提现额度
                     if (toAmount >= tamount)
                     {
                         foreach (var item in idlist)
@@ -2055,6 +2065,7 @@ namespace MySystem.Areas.Admin.Controllers
                                         posInfo.OpId = sysAdmin.UserId;
                                         if (userAmount.ValidAmount - amount >= 0)
                                         {
+                                            ValidAmount += amount;
                                             userAmount.ValidAmount -= amount;
                                             posInfo.OpReserve3 += amount; //关联分仓额度
                                             posInfo.OpReserve1 = 0; //未使用额度
@@ -2065,6 +2076,7 @@ namespace MySystem.Areas.Admin.Controllers
                                         {
                                             if (userAmount.TotalAmt - amount >= 0)
                                             {
+                                                TotalAmt += amount - userAmount.ValidAmount;
                                                 userAmount.TotalAmt -= amount - userAmount.ValidAmount;
                                                 posInfo.OpReserve3 = userAmount.ValidAmount;
                                                 posInfo.OpReserve1 = amount - userAmount.ValidAmount;
@@ -2075,6 +2087,7 @@ namespace MySystem.Areas.Admin.Controllers
                                             {
                                                 if (userAmount.ValidForGetAmount - amount >= 0)
                                                 {
+                                                    ValidForGetAmount += amount - userAmount.TotalAmt;
                                                     userAmount.ValidForGetAmount -= amount - userAmount.TotalAmt;
                                                     posInfo.OpReserve3 = 0;
                                                     posInfo.OpReserve1 = userAmount.TotalAmt;
@@ -2123,38 +2136,25 @@ namespace MySystem.Areas.Admin.Controllers
                         }
                         if (IsOk == "1")
                         {
-                            if (deposit > tamount)
-                            {
-                                var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
-                                {
-                                    CreateDate = DateTime.Now,
-                                    UserId = sysAdmin.UserId,
-                                    SeoDescription = "关联分仓",
-                                    OperateType = 1,
-                                    UseAmount = deposit - tamount,
-                                    BeforeAmount = TotalAmount,
-                                    AfterAmount = TotalAmount + deposit - tamount,
-                                    AfterTotalAmt = userAmount.TotalAmt,
-                                    AfterValidForGetAmount = userAmount.ValidForGetAmount,
-                                    AfterValidAmount = userAmount.ValidAmount,
-                                }).Entity;
-                            }
-                            if (deposit < tamount)
+
+                            var aTotalAmount = TotalAmount + deposit - tamount;
+
+                            OpAmountItem opAmountItem = new OpAmountItem
                             {
-                                var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
-                                {
-                                    CreateDate = DateTime.Now,
-                                    UserId = sysAdmin.UserId,
-                                    SeoDescription = "关联分仓",
-                                    OperateType = 2,
-                                    UseAmount = tamount - deposit,
-                                    BeforeAmount = TotalAmount,
-                                    AfterAmount = TotalAmount + deposit - tamount,
-                                    AfterTotalAmt = userAmount.TotalAmt,
-                                    AfterValidForGetAmount = userAmount.ValidForGetAmount,
-                                    AfterValidAmount = userAmount.ValidAmount,
-                                }).Entity;
-                            }
+                                UserId = sysAdmin.UserId,//创客Id
+                                OperateType = 0,//操作类型(0 总和 1 增加 2 减少)
+                                ChangeType = 2,//类别
+                                Remark = "关联分仓",//备注
+                                UseAmount = Math.Max(0, TotalAmount - aTotalAmount),//变更总额度
+                                UseValidForGetAmount = ValidForGetAmount,//变更可提现额度
+                                UseTotalAmt = TotalAmt,//变更未使用额度
+                                UseValidAmount = ValidAmount,//变更关联分仓额度
+                                DataType = 0,//来源类型,区分表(1订单,2机具,3申请记录,4购买运营中心,5预扣款 6兑换大盟主 7仓库)
+                                DataId = 0,//来源Id,表的主键Id
+                                NoAccount = 1//是否入账(0 是 1 否)
+                            };
+
+                            RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", opAmountItem);
                             opdb.SaveChanges();
                         }
                         sysAdmin.StoreCount += idlist.Count();//添加关联分仓数
@@ -2258,9 +2258,9 @@ namespace MySystem.Areas.Admin.Controllers
                     var amount = 0;
                     var tamount = 0;
                     decimal deposit = 0;
-                    decimal ValidAmount = 0;
-                    decimal TotalAmt = 0;
-                    decimal ValidForGetAmount = 0;
+                    decimal ValidAmount = 0.00M;//关联分仓额度
+                    decimal TotalAmt = 0.00M; //未使用额度
+                    decimal ValidForGetAmount = 0.00M; //可提现额度
                     var pCount = 0;
                     var userIds = "";
                     string error = "";
@@ -2342,6 +2342,9 @@ namespace MySystem.Areas.Admin.Controllers
                                 opdb.SaveChanges();
                             }
                         }
+                        var bValidAmount = userAmount.ValidAmount;
+                        var aValidAmount = userAmount.ValidAmount - deposit + ValidAmount;
+
                         userAmount.ValidAmount -= deposit;//扣减关联分仓押金
                         userAmount.ValidAmount += ValidAmount;
                         userAmount.TotalAmt += TotalAmt;
@@ -2349,38 +2352,23 @@ namespace MySystem.Areas.Admin.Controllers
 
                         sysAdmin.StoreCount -= idlist.Count();//减少关联分仓数
                         sysAdmin.TotalMachineCount -= pCount;//减少关联分仓机具数
-                        if (deposit > tamount)
-                        {
-                            var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
-                            {
-                                CreateDate = DateTime.Now,
-                                UserId = sysAdmin.UserId,
-                                SeoDescription = "取消关联分仓",
-                                OperateType = 2,
-                                UseAmount = deposit - tamount,
-                                BeforeAmount = TotalAmount,
-                                AfterAmount = TotalAmount - deposit + tamount,
-                                AfterTotalAmt = userAmount.TotalAmt,
-                                AfterValidForGetAmount = userAmount.ValidForGetAmount,
-                                AfterValidAmount = userAmount.ValidAmount,
-                            }).Entity;
-                        }
-                        if (deposit < tamount)
+
+                        OpAmountItem opAmountItem = new OpAmountItem
                         {
-                            var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
-                            {
-                                CreateDate = DateTime.Now,
-                                UserId = sysAdmin.UserId,
-                                SeoDescription = "取消关联分仓",
-                                OperateType = 1,
-                                UseAmount = tamount - deposit,
-                                BeforeAmount = TotalAmount,
-                                AfterAmount = TotalAmount - deposit + tamount,
-                                AfterTotalAmt = userAmount.TotalAmt,
-                                AfterValidForGetAmount = userAmount.ValidForGetAmount,
-                                AfterValidAmount = userAmount.ValidAmount,
-                            }).Entity;
-                        }
+                            UserId = sysAdmin.UserId,//创客Id
+                            OperateType = 0,//操作类型(0 总和 1 增加 2 减少)
+                            ChangeType = 22,//类别
+                            Remark = "取消关联分仓",//备注
+                            UseAmount = Math.Max(0, bValidAmount - aValidAmount),//变更总额度
+                            UseValidForGetAmount = ValidForGetAmount,//变更可提现额度
+                            UseTotalAmt = TotalAmt,//变更未使用额度
+                            UseValidAmount = Math.Max(0, bValidAmount - aValidAmount),//变更关联分仓额度
+                            DataType = 0,//来源类型,区分表(1订单,2机具,3申请记录,4购买运营中心,5预扣款 6兑换大盟主 7仓库)
+                            DataId = 0,//来源Id,表的主键Id
+                            NoAccount = 1//是否入账(0 是 1 否)
+                        };
+
+                        RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", opAmountItem);
                         opdb.SaveChanges();
                     }
                     else

+ 81 - 66
Areas/Admin/Controllers/MainServer/SysToolsController.cs

@@ -1663,24 +1663,27 @@ namespace MySystem.Areas.Admin.Controllers
                     if (oldpos.ActivationState == 0)
                     {
                         var opUserAccount = opdb.UserAccount.FirstOrDefault(m => m.Sort > 0 && m.Id == oldpos.OpId && m.UserId == oldpos.OpId) ?? new OpModels.UserAccount();
-                        decimal TotalAmount = opUserAccount.ValidAmount + opUserAccount.TotalAmt + opUserAccount.ValidForGetAmount;//旧的总金额
+
                         opUserAccount.ValidAmount += oldpos.OpReserve3;
                         opUserAccount.ValidForGetAmount += oldpos.OpReserve2;
                         opUserAccount.TotalAmt += oldpos.OpReserve1;
-
-                        var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
+                        
+                        OpAmountItem opAmountItem = new OpAmountItem
                         {
-                            CreateDate = DateTime.Now,
-                            UserId = oldpos.OpId,
-                            SeoDescription = "机具换绑",
-                            OperateType = 1,
-                            UseAmount = oldpos.OpReserve3 + oldpos.OpReserve2 + oldpos.OpReserve1,
-                            BeforeAmount = TotalAmount,
-                            AfterAmount = TotalAmount + oldpos.OpReserve3 + oldpos.OpReserve2 + oldpos.OpReserve1,
-                            AfterTotalAmt = opUserAccount.TotalAmt,
-                            AfterValidForGetAmount = opUserAccount.ValidForGetAmount,
-                            AfterValidAmount = opUserAccount.ValidAmount,
-                        }).Entity;
+                            UserId = oldpos.OpId,//创客Id
+                            OperateType = 1,//操作类型(0 总和 1 增加 2 减少)
+                            ChangeType = 8,//类别
+                            Remark = "机具换绑",//备注
+                            UseAmount = oldpos.OpReserve3 + oldpos.OpReserve2 + oldpos.OpReserve1,//变更总额度
+                            UseValidForGetAmount = oldpos.OpReserve2,//变更可提现额度
+                            UseTotalAmt = oldpos.OpReserve1,//变更未使用额度
+                            UseValidAmount = oldpos.OpReserve3,//变更关联分仓额度
+                            DataType = 2,//来源类型,区分表(1订单,2机具,3申请记录,4购买运营中心,5预扣款 6兑换大盟主 7仓库)
+                            DataId = newpos.Id,//来源Id,表的主键Id
+                            NoAccount = 1//是否入账(0 是 1 否)
+                        };
+
+                        RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", opAmountItem);
 
                         oldpos.OpReserve1 = 0;
                         oldpos.OpReserve2 = 0;
@@ -1691,24 +1694,27 @@ namespace MySystem.Areas.Admin.Controllers
                         if (newpos.OpId > 0)
                         {
                             var opUserAccount = opdb.UserAccount.FirstOrDefault(m => m.Sort > 0 && m.Id == newpos.OpId && m.UserId == newpos.OpId) ?? new OpModels.UserAccount();
-                            decimal TotalAmount = opUserAccount.ValidAmount + opUserAccount.TotalAmt + opUserAccount.ValidForGetAmount;//旧的总金额
+
                             opUserAccount.ValidAmount += newpos.OpReserve3;
                             opUserAccount.ValidForGetAmount += newpos.OpReserve2;
                             opUserAccount.TotalAmt += newpos.OpReserve1;
 
-                            var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
+                            OpAmountItem opAmountItem = new OpAmountItem
                             {
-                                CreateDate = DateTime.Now,
-                                UserId = newpos.OpId,
-                                SeoDescription = "机具换绑",
-                                OperateType = 1,
-                                UseAmount = newpos.OpReserve3 + newpos.OpReserve2 + newpos.OpReserve1,
-                                BeforeAmount = TotalAmount,
-                                AfterAmount = TotalAmount + newpos.OpReserve3 + newpos.OpReserve2 + newpos.OpReserve1,
-                                AfterTotalAmt = opUserAccount.TotalAmt,
-                                AfterValidForGetAmount = opUserAccount.ValidForGetAmount,
-                                AfterValidAmount = opUserAccount.ValidAmount,
-                            }).Entity;
+                                UserId = oldpos.OpId,//创客Id
+                                OperateType = 1,//操作类型(0 总和 1 增加 2 减少)
+                                ChangeType = 8,//类别
+                                Remark = "机具换绑",//备注
+                                UseAmount = oldpos.OpReserve3 + oldpos.OpReserve2 + oldpos.OpReserve1,//变更总额度
+                                UseValidForGetAmount = oldpos.OpReserve2,//变更可提现额度
+                                UseTotalAmt = oldpos.OpReserve1,//变更未使用额度
+                                UseValidAmount = oldpos.OpReserve3,//变更关联分仓额度
+                                DataType = 2,//来源类型,区分表(1订单,2机具,3申请记录,4购买运营中心,5预扣款 6兑换大盟主 7仓库)
+                                DataId = newpos.Id,//来源Id,表的主键Id
+                                NoAccount = 1//是否入账(0 是 1 否)
+                            };
+
+                            RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", opAmountItem);
 
                             newpos.OpReserve1 = 0;
                             newpos.OpReserve2 = 0;
@@ -1928,24 +1934,27 @@ namespace MySystem.Areas.Admin.Controllers
                         if (newpos.OpId > 0)
                         {
                             var opUserAccount = opdb.UserAccount.FirstOrDefault(m => m.Sort > 0 && m.Id == oldpos.OpId && m.UserId == oldpos.OpId) ?? new OpModels.UserAccount();
-                            decimal TotalAmount = opUserAccount.ValidAmount + opUserAccount.TotalAmt + opUserAccount.ValidForGetAmount;//旧的总金额
+
                             opUserAccount.ValidAmount += oldpos.OpReserve3;
                             opUserAccount.ValidForGetAmount += oldpos.OpReserve2;
                             opUserAccount.TotalAmt += oldpos.OpReserve1;
 
-                            var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
+                            OpAmountItem opAmountItem = new OpAmountItem
                             {
-                                CreateDate = DateTime.Now,
-                                UserId = oldpos.OpId,
-                                SeoDescription = "坏机换新",
-                                OperateType = 1,
-                                UseAmount = oldpos.OpReserve3 + oldpos.OpReserve2 + oldpos.OpReserve1,
-                                BeforeAmount = TotalAmount,
-                                AfterAmount = TotalAmount + oldpos.OpReserve3 + oldpos.OpReserve2 + oldpos.OpReserve1,
-                                AfterTotalAmt = opUserAccount.TotalAmt,
-                                AfterValidForGetAmount = opUserAccount.ValidForGetAmount,
-                                AfterValidAmount = opUserAccount.ValidAmount,
-                            }).Entity;
+                                UserId = oldpos.OpId,//创客Id
+                                OperateType = 1,//操作类型(0 总和 1 增加 2 减少)
+                                ChangeType = 6,//类别
+                                Remark = "坏机换新",//备注
+                                UseAmount = oldpos.OpReserve3 + oldpos.OpReserve2 + oldpos.OpReserve1,//变更总额度
+                                UseValidForGetAmount = oldpos.OpReserve2,//变更可提现额度
+                                UseTotalAmt = oldpos.OpReserve1,//变更未使用额度
+                                UseValidAmount = oldpos.OpReserve3,//变更关联分仓额度
+                                DataType = 2,//来源类型,区分表(1订单,2机具,3申请记录,4购买运营中心,5预扣款 6兑换大盟主 7仓库)
+                                DataId = newpos.Id,//来源Id,表的主键Id
+                                NoAccount = 1//是否入账(0 是 1 否)
+                            };
+
+                            RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", opAmountItem);
                         }
                         if (newpos.OpId == 0)
                         {
@@ -2190,24 +2199,27 @@ namespace MySystem.Areas.Admin.Controllers
                         if (newpos.OpId > 0)
                         {
                             var opUserAccount = opdb.UserAccount.FirstOrDefault(m => m.Sort > 0 && m.Id == oldpos.OpId && m.UserId == oldpos.OpId) ?? new OpModels.UserAccount();
-                            decimal TotalAmount = opUserAccount.ValidAmount + opUserAccount.TotalAmt + opUserAccount.ValidForGetAmount;//旧的总金额
+
                             opUserAccount.ValidAmount += oldpos.OpReserve3;
                             opUserAccount.ValidForGetAmount += oldpos.OpReserve2;
                             opUserAccount.TotalAmt += oldpos.OpReserve1;
 
-                            var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
+                            OpAmountItem opAmountItem = new OpAmountItem
                             {
-                                CreateDate = DateTime.Now,
-                                UserId = oldpos.OpId,
-                                SeoDescription = "坏机换新",
-                                OperateType = 1,
-                                UseAmount = oldpos.OpReserve3 + oldpos.OpReserve2 + oldpos.OpReserve1,
-                                BeforeAmount = TotalAmount,
-                                AfterAmount = TotalAmount + oldpos.OpReserve3 + oldpos.OpReserve2 + oldpos.OpReserve1,
-                                AfterTotalAmt = opUserAccount.TotalAmt,
-                                AfterValidForGetAmount = opUserAccount.ValidForGetAmount,
-                                AfterValidAmount = opUserAccount.ValidAmount,
-                            }).Entity;
+                                UserId = newpos.OpId,//创客Id
+                                OperateType = 1,//操作类型(0 总和 1 增加 2 减少)
+                                ChangeType = 6,//类别
+                                Remark = "坏机换新",//备注
+                                UseAmount = oldpos.OpReserve3 + oldpos.OpReserve2 + oldpos.OpReserve1,//变更总额度
+                                UseValidForGetAmount = oldpos.OpReserve2,//变更可提现额度
+                                UseTotalAmt = oldpos.OpReserve1,//变更未使用额度
+                                UseValidAmount = oldpos.OpReserve3,//变更关联分仓额度
+                                DataType = 2,//来源类型,区分表(1订单,2机具,3申请记录,4购买运营中心,5预扣款 6兑换大盟主 7仓库)
+                                DataId = newpos.Id,//来源Id,表的主键Id
+                                NoAccount = 1//是否入账(0 是 1 否)
+                            };
+
+                            RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", opAmountItem);
                         }
                         if (newpos.OpId == 0)
                         {
@@ -2441,24 +2453,27 @@ namespace MySystem.Areas.Admin.Controllers
                     if (newpos.OpId > 0)
                     {
                         var opUserAccount = opdb.UserAccount.FirstOrDefault(m => m.Sort > 0 && m.Id == oldpos.OpId && m.UserId == oldpos.OpId) ?? new OpModels.UserAccount();
-                        decimal TotalAmount = opUserAccount.ValidAmount + opUserAccount.TotalAmt + opUserAccount.ValidForGetAmount;//旧的总金额
+
                         opUserAccount.ValidAmount += oldpos.OpReserve3;
                         opUserAccount.ValidForGetAmount += oldpos.OpReserve2;
                         opUserAccount.TotalAmt += oldpos.OpReserve1;
 
-                        var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
+                        OpAmountItem opAmountItem = new OpAmountItem
                         {
-                            CreateDate = DateTime.Now,
-                            UserId = oldpos.OpId,
-                            SeoDescription = "创客跨品牌换机",
-                            OperateType = 1,
-                            UseAmount = oldpos.OpReserve3 + oldpos.OpReserve2 + oldpos.OpReserve1,
-                            BeforeAmount = TotalAmount,
-                            AfterAmount = TotalAmount + oldpos.OpReserve3 + oldpos.OpReserve2 + oldpos.OpReserve1,
-                            AfterTotalAmt = opUserAccount.TotalAmt,
-                            AfterValidForGetAmount = opUserAccount.ValidForGetAmount,
-                            AfterValidAmount = opUserAccount.ValidAmount,
-                        }).Entity;
+                            UserId = oldpos.OpId,//创客Id
+                            OperateType = 1,//操作类型(0 总和 1 增加 2 减少)
+                            ChangeType = 23,//类别
+                            Remark = "创客跨品牌换机",//备注
+                            UseAmount = oldpos.OpReserve3 + oldpos.OpReserve2 + oldpos.OpReserve1,//变更总额度
+                            UseValidForGetAmount = oldpos.OpReserve2,//变更可提现额度
+                            UseTotalAmt = oldpos.OpReserve1,//变更未使用额度
+                            UseValidAmount = oldpos.OpReserve3,//变更关联分仓额度
+                            DataType = 2,//来源类型,区分表(1订单,2机具,3申请记录,4购买运营中心,5预扣款 6兑换大盟主 7仓库)
+                            DataId = newpos.Id,//来源Id,表的主键Id
+                            NoAccount = 1//是否入账(0 是 1 否)
+                        };
+
+                        RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", opAmountItem);
                     }
                     if (newpos.OpId == 0)
                     {

+ 68 - 0
Areas/Admin/Controllers/MainServer/UsersController.cs

@@ -1211,6 +1211,74 @@ namespace MySystem.Areas.Admin.Controllers
         }
         #endregion
 
+
+        #region 通过队列导入数据
+
+        public IActionResult ImportByQueue(string right, string ExcelKind)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            ViewBag.ExcelKind = ExcelKind;
+            return View();
+        }
+        /// <summary>
+        /// 通过队列导入数据
+        /// </summary>
+        /// <param name="ExcelPath"></param>
+        [HttpPost]
+        public string ImportByQueuePost(string ExcelPath, int Kind = 0)
+        {
+            string key = function.MD5_16(Guid.NewGuid().ToString());
+            RedisDbconn.Instance.AddList("BatchEditUserAmountQueue", ExcelPath + "#cut#" + Kind + "#cut#" + key + "#cut#" + SysUserName);
+            return "success|" + key;
+        }
+        public string CheckImport(string key)
+        {
+            string result = RedisDbconn.Instance.Get<string>("BatchEditUserAmountCheckImport:" + key);
+            if (!string.IsNullOrEmpty(result))
+            {
+                string[] datalist = result.Split('|');
+                if (datalist[0] == "success")
+                {
+                    return result;
+                }
+                return datalist[0];
+            }
+            return "0";
+        }
+        public Dictionary<string, object> CheckImportV2(string key)
+        {
+            Dictionary<string, object> Obj = new Dictionary<string, object>();
+            string result = RedisDbconn.Instance.Get<string>("BatchEditUserAmountCheckImport:" + key);
+            if (!string.IsNullOrEmpty(result))
+            {
+                string[] datalist = result.Split('|');
+                if (datalist[0] == "success")
+                {
+                    List<string> errList = RedisDbconn.Instance.GetList<string>("ErrList" + key);
+                    if (errList.Count > 0)
+                    {
+                        Obj.Add("status", 2);
+                        Obj.Add("errList", errList);
+                    }
+                    else
+                    {
+                        Obj.Add("status", 1);
+                        Obj.Add("data", result);
+                    }
+                    return Obj;
+                }
+                Obj.Add("status", 0);
+                Obj.Add("data", datalist[0]);
+                return Obj;
+            }
+            Obj.Add("status", -1);
+            Obj.Add("data", "执行中...");
+            return Obj;
+        }
+        #endregion
+
+
         #region 导出Excel
 
         /// <summary>

+ 16 - 15
Areas/Admin/Controllers/OperateServer/StoreMachineApplyOperateController.cs

@@ -395,21 +395,22 @@ namespace MySystem.Areas.Admin.Controllers
                 var users = opdb.UserAccount.FirstOrDefault(m => m.Status == 0 && m.UserId == query.UserId) ?? new UserAccount();
                 if (users.Id > 0)
                 {
-                    var amountRecord = opdb.AmountRecord.Add(new AmountRecord()
+                    OpAmountItem opAmountItem = new OpAmountItem
                     {
-                        CreateDate = DateTime.Now,
-                        CreateMan = SysUserName + "-" + SysRealName,
-                        SeoDescription = "机具申请驳回",
-                        OperateType = 1,//增加
-                        BeforeAmount = users.ValidAmount + users.TotalAmt + users.ValidForGetAmount,
-                        AfterAmount = users.ValidAmount + users.TotalAmt + users.ValidForGetAmount + query.UseAmount,
-                        AfterTotalAmt = users.TotalAmt + TotalAmt,
-                        AfterValidForGetAmount = users.ValidForGetAmount + ValidForGetAmount,
-                        AfterValidAmount = users.ValidAmount + ValidAmount,
-                        UseAmount = query.UseAmount,
-                        UserId = query.UserId,
-                        ApplyId = query.Id,
-                    }).Entity;
+                        UserId = query.UserId,//创客Id
+                        OperateType = 1,//操作类型(0 总和 1 增加 2 减少)
+                        ChangeType = 11,//类别
+                        Remark = "机具申请驳回",//备注
+                        UseAmount = query.UseAmount,//变更总额度
+                        UseValidForGetAmount = ValidForGetAmount,//变更可提现额度
+                        UseTotalAmt = TotalAmt,//变更未使用额度
+                        UseValidAmount = ValidAmount,//变更关联分仓额度
+                        DataType = 3,//来源类型,区分表(1订单,2机具,3申请记录,4购买运营中心,5预扣款 6兑换大盟主 7仓库)
+                        DataId = query.Id,//来源Id,表的主键Id
+                        NoAccount = 1//是否入账(0 是 1 否)
+                    };
+
+                    RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", opAmountItem);
 
                     users.ValidAmount += ValidAmount;
                     users.TotalAmt += TotalAmt;
@@ -636,7 +637,7 @@ namespace MySystem.Areas.Admin.Controllers
 
                 var kqProducts = db.KqProducts.FirstOrDefault(m => m.Id == BrandId) ?? new Models.KqProducts();
                 FromStoreId = kqProducts.MainStoreId;
-                
+
                 CheckSendInfo items = checksendInfos.FirstOrDefault(m => m.BrandId == BrandId);
                 if (items == null)
                 {

+ 129 - 45
Areas/Admin/Controllers/OperateServer/SysAdminOperateController.cs

@@ -314,6 +314,12 @@ namespace MySystem.Areas.Admin.Controllers
                         }).Entity;
                         opdb.SaveChanges();
                     }
+
+                    var sys = opdb.SysAdmin.Select(m => new { m.UserId, m.CreateDate }).Where(m => m.CreateDate < DateTime.Now).ToList();
+                    foreach (var item in sys)
+                    {
+                        AddOpStoreHouseByUserId(item.UserId.ToString());
+                    }
                     if (data.ReturnFlag == 1)
                     {
                         RedisDbconn.Instance.AddList("OperateAddServiceQueue", Id.ToString());
@@ -623,20 +629,23 @@ namespace MySystem.Areas.Admin.Controllers
         #region 修改运营中心未使用额度
 
         [HttpPost]
-        public string EditAmt(SysAdmin data, string OperationAmount, string Note, int Kind)
-        // public string EditAmt(SysAdmin data, string OperationAmount, string Note, int Kind, int ReturnFlag)
+        // public string EditAmt(SysAdmin data, string OperationAmount, string Note, int Kind)
+        public string EditAmt(SysAdmin data, string OperationAmount, string Note, int Kind, int ReturnFlag)
         {
             var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.Id == data.Id);
             var account = opdb.UserAccount.FirstOrDefault(m => m.UserId == sysAdmin.UserId);
             decimal BeforeAmount = account.TotalAmt + account.ValidAmount + account.ValidForGetAmount; //变更前总金额
 
             int OperateType = 0;
+            int ChangeType = 0;
+            var bAmount = account.ValidForGetAmount;
             var description = "";
             if (Kind == 1)
             {
                 account.TotalAmt -= decimal.Parse(OperationAmount);
                 OperateType = 2;//系统扣减
-                description = "系统扣减";
+                description = "系统扣减未使用额度";
+                ChangeType = 13;
             }
 
             //增加
@@ -645,35 +654,38 @@ namespace MySystem.Areas.Admin.Controllers
                 // sysAdmin.ReturnAmount = decimal.Parse(OperationAmount);
                 account.TotalAmt += decimal.Parse(OperationAmount);
                 OperateType = 1;//系统增加
-                description = "系统增加";
+                description = "系统增加未使用额度";
+                ChangeType = 12;
             }
             decimal AfterAmount = account.TotalAmt + account.ValidAmount + account.ValidForGetAmount; //变更后总金额
 
-            AmountRecord amountRecord = opdb.AmountRecord.Add(new AmountRecord()
+            if (OperateType > 0 && decimal.Parse(OperationAmount) > 0)
             {
-                CreateDate = DateTime.Now,
-                SeoKeyword = Note,
-                SeoDescription = description,
-                UserId = sysAdmin.UserId, //运营中心Id
-                CreateMan = SysUserName + "-" + SysRealName,
-                UseAmount = decimal.Parse(OperationAmount),//操作金额
-                BeforeAmount = BeforeAmount,//使用前剩余额度
-                AfterAmount = AfterAmount,//使用后剩余额度
-                AfterTotalAmt = account.TotalAmt,
-                AfterValidForGetAmount = account.ValidForGetAmount,
-                AfterValidAmount = account.ValidAmount,
-                OperateType = OperateType,//操作类别
-            }).Entity;
-            opdb.SaveChanges();
-            AddSysLog(data.Id.ToString(), "SysAdmin", "EditAmt");
-            opdb.SaveChanges();
-            // if (Kind == 2 && ReturnFlag == 1)
-            // {
-            //     RedisDbconn.Instance.AddList("OperateAddServiceQueue", sysAdmin.Id.ToString());
-            // }
+                OpAmountItem opAmountItem = new OpAmountItem
+                {
+                    UserId = sysAdmin.UserId,//创客Id
+                    OperateType = OperateType,//操作类型(0 总和 1 增加 2 减少)
+                    ChangeType = ChangeType,//类别
+                    Remark = description,//备注
+                    UseAmount = decimal.Parse(OperationAmount),//变更总额度
+                    UseValidForGetAmount = 0,//变更可提现额度
+                    UseTotalAmt = decimal.Parse(OperationAmount),//变更未使用额度
+                    UseValidAmount = 0,//变更关联分仓额度
+                    DataType = 0,//来源类型,区分表(1订单,2机具,3申请记录,4购买运营中心,5预扣款 6兑换大盟主 7仓库)
+                    DataId = 0,//来源Id,表的主键Id
+                    NoAccount = 1//是否入账(0 是 1 否)
+                };
+
+                RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", opAmountItem);
+                AddSysLog(data.Id.ToString(), "SysAdmin", "EditAmt");
+                opdb.SaveChanges();
+                if (Kind == 2 && ReturnFlag == 1)
+                {
+                    RedisDbconn.Instance.AddList("OperateAddServiceQueue", sysAdmin.Id.ToString());
+                }
+            }
             return "success";
         }
-
         #endregion
 
 
@@ -703,12 +715,15 @@ namespace MySystem.Areas.Admin.Controllers
             }
             decimal BeforeAmount = account.TotalAmt + account.ValidAmount + account.ValidForGetAmount; //变更前总金额
             int OperateType = 0;
+            int ChangeType = 0;
+            var bAmount = account.ValidForGetAmount;
             var description = "";
             if (Kind == 1 && decimal.Parse(OperationAmount) <= account.ValidForGetAmount)
             {
                 account.ValidForGetAmount -= decimal.Parse(OperationAmount);
                 OperateType = 2;
-                description = "系统扣减";
+                description = "系统扣减可提现额度";
+                ChangeType = 13;
             }
             else if (Kind == 1 && decimal.Parse(OperationAmount) > account.ValidForGetAmount)
             {
@@ -718,27 +733,96 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 account.ValidForGetAmount += decimal.Parse(OperationAmount);
                 OperateType = 1;
-                description = "系统增加";
+                description = "系统增加可提现额度";
+                ChangeType = 12;
             }
             decimal AfterAmount = account.TotalAmt + account.ValidAmount + account.ValidForGetAmount; //变更后总金额
-            AmountRecord amountRecord = opdb.AmountRecord.Add(new AmountRecord()
+            if (OperateType > 0 && decimal.Parse(OperationAmount) > 0)
             {
-                CreateDate = DateTime.Now,
-                SeoKeyword = Note,
-                SeoDescription = description,
-                UserId = sysAdmin.UserId, //运营中心Id
-                CreateMan = SysUserName + "-" + SysRealName,
-                UseAmount = decimal.Parse(OperationAmount),//操作金额
-                BeforeAmount = BeforeAmount,//使用前剩余额度
-                AfterAmount = AfterAmount,//使用后剩余额度
-                AfterTotalAmt = account.TotalAmt,
-                AfterValidForGetAmount = account.ValidForGetAmount,
-                AfterValidAmount = account.ValidAmount,
-                OperateType = OperateType,//操作类别
-            }).Entity;
-            opdb.SaveChanges();
-            AddSysLog(data.Id.ToString(), "SysAdmin", "EditBalance");
-            opdb.SaveChanges();
+
+                OpAmountItem opAmountItem = new OpAmountItem
+                {
+                    UserId = sysAdmin.UserId,//创客Id
+                    OperateType = OperateType,//操作类型(0 总和 1 增加 2 减少)
+                    ChangeType = ChangeType,//类别
+                    Remark = description,//备注
+                    UseAmount = decimal.Parse(OperationAmount),//变更总额度
+                    UseValidForGetAmount = 0,//变更可提现额度
+                    UseTotalAmt = decimal.Parse(OperationAmount),//变更未使用额度
+                    UseValidAmount = 0,//变更关联分仓额度
+                    DataType = 0,//来源类型,区分表(1订单,2机具,3申请记录,4购买运营中心,5预扣款 6兑换大盟主 7仓库)
+                    DataId = 0,//来源Id,表的主键Id
+                    NoAccount = 1//是否入账(0 是 1 否)
+                };
+
+                RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", opAmountItem);
+
+                AddSysLog(data.Id.ToString(), "SysAdmin", "EditBalance");
+                opdb.SaveChanges();
+            }
+            return "success";
+        }
+
+        #endregion
+
+
+        #region 新建运营中心添加历史运营中心缺少分仓
+        /// <summary>
+        /// 新建运营中心添加历史运营中心缺少分仓
+        /// </summary>
+        /// <returns></returns>
+        public string AddOpStoreHouseByUserId(string UserIds)
+        {
+            string[] UserIdList = UserIds.Split(new char[] { ',' });
+            AddSysLog(UserIds, "SysAdmin", "新建运营中心添加历史运营中心缺少分仓");
+            var kqProduct = db.KqProducts.ToList();
+            foreach (string subid in UserIdList)
+            {
+                int UserId = int.Parse(subid);
+                SysAdmin sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.UserId == UserId) ?? new SysAdmin();
+                var store = db.StoreHouse.FirstOrDefault(m => m.Sort == sysAdmin.Id && m.UserId == sysAdmin.UserId) ?? new Models.StoreHouse();
+                foreach (var item in kqProduct)
+                {
+                    var BrandId = item.Id.ToString();
+                    var check = db.StoreHouse.Any(m => m.Sort == sysAdmin.Id && m.UserId == sysAdmin.UserId && m.BrandId == BrandId);
+                    if (!check)
+                    {
+                        string Nos = "YC000" + item.Id + sysAdmin.Id;
+                        var query = db.StoreHouse.Add(new Models.StoreHouse()
+                        {
+                            CreateDate = DateTime.Now, //创建时间
+                            CreateMan = SysUserName + "_" + SysRealName,
+                            ManageMobile = sysAdmin.MakerMobile, //手机号
+                            UserId = UserId, //运营中心创客Id
+                            OpId = UserId, //运营中心创客Id
+                            Address = store.Address,//仓库地址
+                            Areas = store.Areas,//所属地区
+                            ManageUserId = UserId,//仓库管理员
+                            StoreName = item.Name + "运营分仓", //仓库名称
+                            StoreNo = Nos, //仓库编号
+                            Sort = sysAdmin.Id,//运营中心Id
+                            Status = 1,
+                            BrandId = item.Id.ToString(),
+                            StoreKind = 2,//运营仓
+
+                        }).Entity;
+                        db.SaveChanges();
+
+                        var querys = opdb.StoreForOperate.Add(new OpModels.StoreForOperate()
+                        {
+                            CreateDate = DateTime.Now, //创建时间
+                            CreateMan = SysUserName + "_" + SysRealName,
+                            Sort = sysAdmin.UserId,
+                            OpId = sysAdmin.UserId,
+                            StoreId = query.Id,
+                            SeoKeyword = query.StoreNo,
+                            SeoDescription = query.StoreName,
+                        }).Entity;
+                        opdb.SaveChanges();
+                    }
+                }
+            }
+            db.SaveChanges();
             return "success";
         }
 

+ 15 - 13
Areas/Admin/Controllers/OperateServer/UserCashRecordOperateController.cs

@@ -538,20 +538,22 @@ namespace MySystem.Areas.Admin.Controllers
                     decimal BeforeAmount = account.TotalAmt + account.ValidAmount + account.ValidForGetAmount; //变更前总金额
                     decimal AfterAmount = account.TotalAmt + account.ValidAmount + account.ValidForGetAmount + TradeAmount; //变更后总金额
                     account.ValidForGetAmount += TradeAmount;//返回可提现余额
-                    opdb.AmountRecord.Add(new AmountRecord()
+
+                    OpAmountItem opAmountItem = new OpAmountItem
                     {
-                        CreateDate = DateTime.Now,
-                        UserId = edit.UserId, //创客
-                        SeoDescription = "提现驳回",
-                        UseAmount = TradeAmount, //变更金额
-                        BeforeAmount = BeforeAmount, //变更前总金额
-                        AfterAmount = AfterAmount, //变更后总金额
-                        AfterTotalAmt = account.TotalAmt,
-                        AfterValidForGetAmount = account.ValidForGetAmount,
-                        AfterValidAmount = account.ValidAmount,
-                        OperateType = 1,
-                    });
-                    opdb.SaveChanges();
+                        UserId = edit.UserId,//创客Id
+                        OperateType = 1,//操作类型(0 总和 1 增加 2 减少)
+                        ChangeType = 7,//类别
+                        Remark = "提现驳回",//备注
+                        UseAmount = edit.TradeAmount,//变更总额度
+                        UseValidForGetAmount = edit.TradeAmount,//变更可提现额度
+                        UseTotalAmt = 0,//变更未使用额度
+                        UseValidAmount = 0,//变更关联分仓额度
+                        DataType = 0,//来源类型,区分表(1订单,2机具,3申请记录,4购买运营中心,5预扣款 6兑换大盟主 7仓库)
+                        DataId = 0//来源Id,表的主键Id
+                    };
+
+                    RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", opAmountItem);
                 }
 
                 opdb.SaveChanges();

+ 16 - 12
Areas/Admin/Controllers/OperateServer/UserCashRecordOperatesController.cs

@@ -596,19 +596,23 @@ namespace MySystem.Areas.Admin.Controllers
                     decimal BeforeTotalAmount = account.ValidForGetAmount; //变更前总金额
                     account.ValidForGetAmount += TradeAmount;//返回可提现余额
                     decimal AfterTotalAmount = account.ValidForGetAmount; //变更后总金额
-                    opdb.AmountRecord.Add(new AmountRecord()
+
+                    OpAmountItem opAmountItem = new OpAmountItem
                     {
-                        CreateDate = DateTime.Now,
-                        SeoDescription = "提现驳回",
-                        UserId = edit.UserId, //创客
-                        UseAmount = TradeAmount, //变更金额
-                        BeforeAmount = BeforeTotalAmount, //变更前总金额
-                        AfterAmount = AfterTotalAmount, //变更后总金额
-                        AfterTotalAmt = account.TotalAmt,
-                        AfterValidForGetAmount = account.ValidForGetAmount,
-                        AfterValidAmount = account.ValidAmount,
-                    });
-                    opdb.SaveChanges();
+                        UserId = edit.UserId,//创客Id
+                        OperateType = 1,//操作类型(0 总和 1 增加 2 减少)
+                        ChangeType = 7,//类别
+                        Remark = "提现驳回",//备注
+                        UseAmount = edit.TradeAmount,//变更总额度
+                        UseValidForGetAmount = edit.TradeAmount,//变更可提现额度
+                        UseTotalAmt = 0,//变更未使用额度
+                        UseValidAmount = 0,//变更关联分仓额度
+                        DataType = 0,//来源类型,区分表(1订单,2机具,3申请记录,4购买运营中心,5预扣款 6兑换大盟主 7仓库)
+                        DataId = 0,//来源Id,表的主键Id
+                        NoAccount = 1//是否入账(0 是 1 否)
+                    };
+
+                    RedisDbconn.Instance.AddList("OperateAmountRecordServiceQueue", opAmountItem);
                 }
 
                 opdb.SaveChanges();

+ 131 - 0
Areas/Admin/Views/MainServer/PreAmountRecord/ImportByQueue.cshtml

@@ -0,0 +1,131 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    string ExcelKind = ViewBag.ExcelKind as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>导入数据</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+    <style>
+        .layui-form-label{
+            width: 135px !important;
+        }
+        .layui-form-item .layui-input-block{
+            margin-left: 165px !important;
+        }
+    </style>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        <input type="hidden" name="Kind" value="@ExcelKind" />
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+                        <div class="layui-form-item">
+                            @* <label class="layui-form-label">模板下载</label> *@
+                            <div class="layui-form-mid layui-word-aux" id="excelTemp">
+                                @if(ExcelKind == "1")
+                                {
+                                }
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">excel文件</label>
+                            <div class="layui-input-block">
+                                <div class="layui-upload">
+                                    <input type="hidden" id="ExcelPath" name="ExcelPath" value="">
+                                    <button class="layui-btn" type="button" id="ExcelPathBtn">选择</button>
+                                    <div class="layui-inline layui-word-aux"></div>
+                                </div>
+                                <div class="mt10" id="ExcelPathFile">
+                                </div>
+                            </div>
+                        </div>
+                        
+                    </div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            WebUploadJs('ExcelPathBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload/v2', {width:0,height:0,quality:0},{max_file_size:1048576},  function (filename) {
+                $('#ExcelPathFile').html(filename);
+                $('#ExcelPath').val(filename);
+            });
+
+            //穿梭框
+            
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+
+        });
+
+    </script>
+</body>
+</html>

+ 2 - 1
Areas/Admin/Views/MainServer/PreAmountRecord/Indexs.cshtml

@@ -140,7 +140,8 @@
         </div>
         <div class="layui-form-item ml10">
             <div class="layui-input-block">
-                <button type="button" class="layui-btn" onclick="ConfirmImport()">立即导入</button>
+                @* <button type="button" class="layui-btn" onclick="ConfirmImport()">立即导入</button> *@
+                <button type="button" class="layui-btn" onclick="ConfirmImportByQueue()">立即导入</button>
             </div>
         </div>
     </div>

+ 131 - 0
Areas/Admin/Views/MainServer/StoreHouseAmountRecord/ImportByQueue.cshtml

@@ -0,0 +1,131 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    string ExcelKind = ViewBag.ExcelKind as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>导入数据</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+    <style>
+        .layui-form-label{
+            width: 135px !important;
+        }
+        .layui-form-item .layui-input-block{
+            margin-left: 165px !important;
+        }
+    </style>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        <input type="hidden" name="Kind" value="@ExcelKind" />
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+                        <div class="layui-form-item">
+                            @* <label class="layui-form-label">模板下载</label> *@
+                            <div class="layui-form-mid layui-word-aux" id="excelTemp">
+                                @if(ExcelKind == "1")
+                                {
+                                }
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">excel文件</label>
+                            <div class="layui-input-block">
+                                <div class="layui-upload">
+                                    <input type="hidden" id="ExcelPath" name="ExcelPath" value="">
+                                    <button class="layui-btn" type="button" id="ExcelPathBtn">选择</button>
+                                    <div class="layui-inline layui-word-aux"></div>
+                                </div>
+                                <div class="mt10" id="ExcelPathFile">
+                                </div>
+                            </div>
+                        </div>
+                        
+                    </div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            WebUploadJs('ExcelPathBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload/v2', {width:0,height:0,quality:0},{max_file_size:1048576},  function (filename) {
+                $('#ExcelPathFile').html(filename);
+                $('#ExcelPath').val(filename);
+            });
+
+            //穿梭框
+            
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+
+        });
+
+    </script>
+</body>
+</html>

+ 144 - 0
Areas/Admin/Views/MainServer/Users/ImportByQueue.cshtml

@@ -0,0 +1,144 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    string ExcelKind = ViewBag.ExcelKind as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>导入数据</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+    <style>
+        .layui-form-label{
+            width: 135px !important;
+        }
+        .layui-form-item .layui-input-block{
+            margin-left: 165px !important;
+        }
+    </style>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        <input type="hidden" name="Kind" value="@ExcelKind" />
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">模板下载</label>
+                            <div class="layui-form-mid layui-word-aux" id="excelTemp">
+                                @if(ExcelKind == "1")
+                                {
+                                <a href="/users/批量修改提现结算金额模版.xlsx">点击下载批量修改提现结算金额模版</a>
+                                }
+                                @if(ExcelKind == "2")
+                                {
+                                <a href="/users/批量修改提现冻结金额模版.xlsx">点击下载批量修改提现冻结金额模版</a>
+                                }
+                                @if(ExcelKind == "3")
+                                {
+                                <a href="/users/提现风控模版.xlsx">点击下载提现风控模版</a>
+                                }
+                                @if(ExcelKind == "4")
+                                {
+                                <a href="/users/批量修改金额模版.xlsx">点击下载批量修改金额模版</a>
+                                }
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">excel文件</label>
+                            <div class="layui-input-block">
+                                <div class="layui-upload">
+                                    <input type="hidden" id="ExcelPath" name="ExcelPath" value="">
+                                    <button class="layui-btn" type="button" id="ExcelPathBtn">选择</button>
+                                    <div class="layui-inline layui-word-aux"></div>
+                                </div>
+                                <div class="mt10" id="ExcelPathFile">
+                                </div>
+                            </div>
+                        </div>
+                        
+                    </div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            WebUploadJs('ExcelPathBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload/v2', {width:0,height:0,quality:0},{max_file_size:1048576},  function (filename) {
+                $('#ExcelPathFile').html(filename);
+                $('#ExcelPath').val(filename);
+            });
+
+            //穿梭框
+            
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+
+        });
+
+    </script>
+</body>
+</html>

+ 2 - 0
Areas/Admin/Views/OperateServer/SysAdminOperate/EditBalance.cshtml

@@ -45,6 +45,8 @@
                                 <option value="2">增加</option>
                             </select>
                         </div>
+                    </div>
+                        </div>
                     </div>
                     <div class="layui-form-item">
                         <label class="layui-form-label">*金额</label>

+ 32 - 0
OpModels/AmountRecordNew.cs

@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.OpModels
+{
+    public partial class AmountRecordNew
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int Status { get; set; }
+        public int Version { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public int ChangeTypeId { get; set; }
+        public string Remark { get; set; }
+        public int ShowType { get; set; }
+        public decimal AfterValidAmount { get; set; }
+        public decimal AfterTotalAmt { get; set; }
+        public decimal AfterValidForGetAmount { get; set; }
+        public int OperateType { get; set; }
+        public decimal AfterAmount { get; set; }
+        public decimal BeforeAmount { get; set; }
+        public decimal UseAmount { get; set; }
+        public int ApplyId { get; set; }
+        public int UserId { get; set; }
+        public decimal UseValidForGetAmount { get; set; }
+        public decimal UseTotalAmt { get; set; }
+        public decimal UseValidAmount { get; set; }
+        public int DataType { get; set; }
+        public int DataId { get; set; }
+    }
+}

+ 17 - 0
OpModels/ChangeTypeKind.cs

@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.OpModels
+{
+    public partial class ChangeTypeKind
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int Status { get; set; }
+        public int Version { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string Operator { get; set; }
+        public string Name { get; set; }
+    }
+}

+ 18 - 0
OpModels/ChangeTypes.cs

@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.OpModels
+{
+    public partial class ChangeTypes
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int Status { get; set; }
+        public int Version { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public int TypeId { get; set; }
+        public int Kind { get; set; }
+        public string Name { get; set; }
+    }
+}

+ 180 - 0
OpModels/WebCMSEntities.cs

@@ -20,6 +20,9 @@ namespace MySystem.OpModels
         public virtual DbSet<Advertisment> Advertisment { get; set; }
         public virtual DbSet<AmountChangeRecord> AmountChangeRecord { get; set; }
         public virtual DbSet<AmountRecord> AmountRecord { get; set; }
+        public virtual DbSet<AmountRecordNew> AmountRecordNew { get; set; }
+        public virtual DbSet<ChangeTypeKind> ChangeTypeKind { get; set; }
+        public virtual DbSet<ChangeTypes> ChangeTypes { get; set; }
         public virtual DbSet<Col> Col { get; set; }
         public virtual DbSet<MachineApplyOpRecord> MachineApplyOpRecord { get; set; }
         public virtual DbSet<MenuRight> MenuRight { get; set; }
@@ -379,6 +382,183 @@ namespace MySystem.OpModels
                 entity.Property(e => e.Version).HasColumnType("int(11)");
             });
 
+            modelBuilder.Entity<AmountRecordNew>(entity =>
+            {
+                entity.HasComment("新合伙人额度变动记录");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.AfterAmount)
+                    .HasColumnType("decimal(18,2)")
+                    .HasComment("使用后剩余额度");
+
+                entity.Property(e => e.AfterTotalAmt)
+                    .HasColumnType("decimal(18,2)")
+                    .HasComment("使用后未使用额度");
+
+                entity.Property(e => e.AfterValidAmount)
+                    .HasColumnType("decimal(18,2)")
+                    .HasComment("使用后关联分仓额度");
+
+                entity.Property(e => e.AfterValidForGetAmount)
+                    .HasColumnType("decimal(18,2)")
+                    .HasComment("使用后可提现额度");
+
+                entity.Property(e => e.ApplyId)
+                    .HasColumnType("int(11)")
+                    .HasComment("申请单");
+
+                entity.Property(e => e.BeforeAmount)
+                    .HasColumnType("decimal(18,2)")
+                    .HasComment("使用前剩余额度");
+
+                entity.Property(e => e.ChangeTypeId)
+                    .HasColumnType("int(11)")
+                    .HasComment("收支类别");
+
+                entity.Property(e => e.CreateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("创建时间");
+
+                entity.Property(e => e.DataId)
+                    .HasColumnType("int(11)")
+                    .HasComment("数据来源Id");
+
+                entity.Property(e => e.DataType)
+                    .HasColumnType("int(11)")
+                    .HasComment("数据来源表类型");
+
+                entity.Property(e => e.OperateType)
+                    .HasColumnType("int(11)")
+                    .HasComment("操作类别");
+
+                entity.Property(e => e.Remark)
+                    .HasColumnType("varchar(100)")
+                    .HasComment("备注")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.ShowType)
+                    .HasColumnType("int(11)")
+                    .HasComment("显示类型");
+
+                entity.Property(e => e.Sort)
+                    .HasColumnType("int(11)")
+                    .HasComment("排序序号");
+
+                entity.Property(e => e.Status)
+                    .HasColumnType("int(11)")
+                    .HasComment("状态");
+
+                entity.Property(e => e.UpdateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("修改时间");
+
+                entity.Property(e => e.UseAmount)
+                    .HasColumnType("decimal(18,2)")
+                    .HasComment("使用额度");
+
+                entity.Property(e => e.UseTotalAmt)
+                    .HasColumnType("decimal(18,2)")
+                    .HasComment("使用未使用额度");
+
+                entity.Property(e => e.UseValidAmount)
+                    .HasColumnType("decimal(18,2)")
+                    .HasComment("使用关联分仓额度");
+
+                entity.Property(e => e.UseValidForGetAmount)
+                    .HasColumnType("decimal(18,2)")
+                    .HasComment("使用可提现额度");
+
+                entity.Property(e => e.UserId)
+                    .HasColumnType("int(11)")
+                    .HasComment("运营中心");
+
+                entity.Property(e => e.Version)
+                    .HasColumnType("int(11)")
+                    .HasComment("版本号");
+            });
+
+            modelBuilder.Entity<ChangeTypeKind>(entity =>
+            {
+                entity.HasComment("收支明细分类");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.CreateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("创建时间");
+
+                entity.Property(e => e.Name)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("分类名称")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Operator)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("操作人")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Sort)
+                    .HasColumnType("int(11)")
+                    .HasComment("排序序号");
+
+                entity.Property(e => e.Status)
+                    .HasColumnType("int(11)")
+                    .HasComment("状态");
+
+                entity.Property(e => e.UpdateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("修改时间");
+
+                entity.Property(e => e.Version)
+                    .HasColumnType("int(11)")
+                    .HasComment("版本号");
+            });
+
+            modelBuilder.Entity<ChangeTypes>(entity =>
+            {
+                entity.HasComment("收支明细");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.CreateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("创建时间");
+
+                entity.Property(e => e.Kind)
+                    .HasColumnType("int(11)")
+                    .HasComment("类型");
+
+                entity.Property(e => e.Name)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("名称")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Sort)
+                    .HasColumnType("int(11)")
+                    .HasComment("排序序号");
+
+                entity.Property(e => e.Status)
+                    .HasColumnType("int(11)")
+                    .HasComment("状态");
+
+                entity.Property(e => e.TypeId)
+                    .HasColumnType("int(11)")
+                    .HasComment("所属分类Id");
+
+                entity.Property(e => e.UpdateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("修改时间");
+
+                entity.Property(e => e.Version)
+                    .HasColumnType("int(11)")
+                    .HasComment("版本号");
+            });
+
             modelBuilder.Entity<Col>(entity =>
             {
                 entity.Property(e => e.Id).HasColumnType("int(11)");

+ 9 - 5
Startup.cs

@@ -104,7 +104,7 @@ namespace MySystem
                 Env = "Develop";
                 app.UseDeveloperExceptionPage();
             }
-            else 
+            else
             {
                 Env = "Production";
                 app.UseHsts();
@@ -132,19 +132,19 @@ namespace MySystem
                     name: "default",
                     pattern: "{controller=Home}/{action=Index}/{Id?}");
             });
-            
+
             initMainServer(Env);
             initBsServer();
             initCashServer();
             initSpServer();
             initOperateServer();
 
-            if(Env == "Develop")
+            if (Env == "Develop")
             {
                 SIMPosMerchantTradeService.Instance.Start(); //导入广电卡数据
-                GetRadioCardInfoService.Instance.Start(); //获取行销宝信息
+                // GetRadioCardInfoService.Instance.Start(); //获取行销宝信息
             }
-            if(Env == "Production")
+            if (Env == "Production")
             {
                 ResetUserTradeService.Instance.Start();
                 ResetMerchantTradeService.Instance.Start();
@@ -157,6 +157,10 @@ namespace MySystem
                 SycnUserMachineCountHelper.Instance.Start(); //重置创客机具数量
 
                 TestHelper.Instance.Start(); //生成兑换券
+
+                BatchEditUserAmountService.Instance.Start(); //创客信息相关数据导入
+                StoreHouseWithdrawalResultsService.Instance.Start(); //分仓临额提现结果导入
+                PreWithdrawalResultsService.Instance.Start(); //小分仓临额提现结果导入
             }
         }
 

+ 524 - 0
wwwroot/layuiadmin/modules_main/PreCardAmountRecord_Admin.js

@@ -0,0 +1,524 @@
+var ExcelData, ExcelKind;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/PreAmountRecord/Imports?r=" + Math.random(1),
+        data: "ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
+        dataType: "text",
+        success: function (data) {
+            if (data == "success") {
+                layer.msg("导入结果成功", { time: 2000 }, function () {
+                    window.location.reload();
+                });
+            }  else if (data.indexOf("warning") == 0) {
+                var datalist = data.split('|');
+                layer.alert(datalist[0], { time: 20000 }, function () {
+                    window.location.reload();
+                });
+            } else {
+                layer.msg(data);
+            }
+        }
+    });
+}
+
+function CheckImport(table, key, loadindex, index) {
+    $.ajax({
+        url: "/Admin/PreAmountRecord/CheckImportV2?r=" + Math.random(1),
+        data: "key=" + key,
+        dataType: "json",
+        success: function (data) {
+            if (data.status == 1) {
+                layer.msg("成功操作" + data.data + "条", {
+                    time: 2000
+                }, function () {
+                    layer.close(index); //关闭弹层
+                    layer.close(loadindex);
+                    table.reload('LAY-list-manage'); //数据刷新
+                });
+            } else if (data.status == 2) {
+                layer.close(index); //关闭弹层
+                layer.close(loadindex);
+                var content = '';
+                for (var i = 0; i < data.errList.length; i++) {
+                    content += data.errList[i] + '<br/>'
+                }
+                layer.alert(content);
+            } else {
+                layer.msg(data.data, {
+                    time: 1000
+                }, function () {
+                    CheckImport(table, key, loadindex, index);
+                });
+            }
+        }
+    });
+}
+
+var excel;
+layui.config({
+    base: '/layuiadmin/' //静态资源所在路径
+}).extend({
+    myexcel: 'layui/lay/modules/excel',
+    index: 'lib/index' //主入口模块
+}).use(['index', 'table', 'excel', 'laydate'], function () {
+    var $ = layui.$
+        , form = layui.form
+        , table = layui.table;
+
+    //- 筛选条件-日期
+    var laydate = layui.laydate;
+    var layCreateDate = laydate.render({
+        elem: '#CreateDate',
+        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;
+                    layCreateDate.hint('日期范围请不要超过1个月');
+                    setTimeout(function () {
+                        $(".laydate-btns-confirm").addClass("laydate-disabled");
+                    }, 1);
+                }
+            } else {
+                op = false;
+                layCreateDate.hint('日期范围请不要超过1个月');
+                setTimeout(function () {
+                    $(".laydate-btns-confirm").addClass("laydate-disabled");
+                }, 1);
+            }
+            if (op) {
+                $('#CreateDate').val(value);
+            }
+        }
+    });
+
+
+    //excel导入
+    excel = layui.excel;
+    $('#ExcelFile').change(function (e) {
+        var files = e.target.files;
+        excel.importExcel(files, {}, function (data) {
+            ExcelData = data[0].Sheet1;
+        });
+    });
+
+    //监听单元格编辑
+    table.on('edit(LAY-list-manage)', function (obj) {
+        var value = obj.value //得到修改后的值
+            , data = obj.data //得到所在行所有键值
+            , field = obj.field; //得到字段
+        if (field == "Sort") {
+            $.ajax({
+                type: "POST",
+                url: "/Admin/PreAmountRecord/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/PreAmountRecord/IndexsData' //模拟接口
+        , cols: [[
+            { type: 'checkbox', fixed: 'left' }
+            , { field: 'Id', fixed: 'left', title: 'ID', width: 80, sort: true, unresize: true }
+            , { field: 'Status', width: 200, title: '状态', sort: true }
+            , { field: 'UserIdRealName', width: 200, title: '创客真实姓名', sort: true }
+            , { field: 'UserIdMakerCode', width: 200, title: '创客编号', sort: true }
+            , { field: 'CreateDate', width: 200, title: '创建时间', sort: true }
+            , { field: 'UseAmount', width: 200, title: '申请提现临额', sort: true }
+            , { field: 'CertId', width: 200, title: '身份证号', sort: true }
+            , { field: 'SettleBankCardNo', width: 200, title: '银行卡号', sort: true }
+            , { field: 'SettleBankName', width: 200, title: '银行名称', sort: true }
+            , { field: 'Mobile', width: 200, title: '手机号', sort: true }
+            , { field: 'Type', width: 200, title: '交易类型', sort: true }
+
+            // , { field: 'Sort', fixed: 'right', title: '排序', width: 80, edit: 'text' }
+            // , { title: '操作', align: 'center', fixed: 'right', toolbar: '#table-list-tools' }
+        ]]
+        , where: {
+
+        }
+        , page: true
+        , limit: 30
+        , height: 'full-220'
+        , text: '对不起,加载出现异常!'
+        , done: function (res, curr, count) {
+            $(".layui-none").text("无数据");
+        }
+    });
+
+    //监听工具条
+    table.on('tool(LAY-list-manage)', function (obj) {
+        var data = obj.data;
+        if (obj.event === 'del') {
+            var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/PreAmountRecord/Delete?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {
+                            obj.del();
+                            layer.close(index);
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'edit') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '分仓机具额度记录-编辑'
+                , content: 'Edit?Id=' + data.Id + ''
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () {
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });
+                    }, 300);
+
+
+
+
+
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/PreAmountRecord/Edit?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+            layer.full(perContent);
+        }
+    });
+
+
+    //监听搜索
+    form.on('submit(LAY-list-front-search)', function (data) {
+        var field = data.field;
+
+        //执行重载
+        table.reload('LAY-list-manage', {
+            where: field,
+            page: {
+                curr: 1
+            }
+        });
+    });
+    form.on('submit(LAY-list-front-searchall)', function (data) {
+        table.reload('LAY-list-manage', {
+            where: null,
+            page: {
+                curr: 1
+            }
+        });
+    });
+
+    //事件
+    var active = {
+        batchdel: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要删除的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/PreAmountRecord/Delete?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , add: function () {
+            var perContent = layer.open({
+                type: 2
+                , title: '分仓机具额度记录-添加'
+                , content: 'Add'
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () {
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });
+                    }, 300);
+
+
+
+
+
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/PreAmountRecord/Add?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+            layer.full(perContent);
+        }
+        , ImportData: function () {
+            // ExcelKind = 1;
+            // layer.open({
+            //     type: 1,
+            //     title: '导入',
+            //     maxmin: false,
+            //     area: ['460px', '280px'],
+            //     content: $('#excelForm'),
+            //     cancel: function () {
+            //     }
+            // });
+            // $("#excelTemp");
+
+            var perContent = layer.open({
+                type: 2,
+                title: '导入小分仓临额提现结果',
+                content: 'ImportByQueue?ExcelKind=1',
+                maxmin: true,
+                area: ['650px', '350px'],
+                btn: ['确定', '取消'],
+                yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index],
+                        submitID = 'LAY-list-front-submit',
+                        submit = layero.find('iframe').contents().find('#' + submitID);
+
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        var loadindex = layer.load(1, {
+                            shade: [0.5, '#000']
+                        });
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/PreAmountRecord/ImportByQueuePost?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                if (data.indexOf("success") == 0) {
+                                    var datalist = data.split('|');
+                                    var key = datalist[1];
+                                    CheckImport(table, key, loadindex, index);
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+        }
+        , ExportExcel: function () {
+            var userdata = '';
+            $(".layuiadmin-card-header-auto input").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $(".layuiadmin-card-header-auto select").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            // $.ajax({
+            //     type: "GET",
+            //     url: "/Admin/PreAmountRecord/ExportsExcel?r=" + Math.random(1),
+            //     data: userdata,
+            //     dataType: "json",
+            //     success: function (data) {
+            //         data.Obj.unshift(data.Fields);
+            //         excel.exportExcel(data.Obj, data.Info, 'xlsx');
+            //         window.location.reload();
+            //     }
+            // });
+            var index = layer.confirm('确定导出吗?', function (index) {
+                var indexs = layer.load(1, {
+                    shade: [0.5, '#000']
+                });
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/PreAmountRecord/QuickExportExcelDo?r=" + Math.random(1),
+                    data: userdata,
+                    dataType: "text",
+                    success: function (data) {
+                        layer.close(index); //关闭弹层
+                        if (data == "success") {
+                            layer.close(indexs); //关闭弹层
+                            layer.msg('导出成功,请到我的下载中点击下载文件', {
+                                time: 1000
+                            }, function () {
+                                window.location.reload();
+                            });
+                        } else {
+                            layer.close(indexs); //关闭弹层
+                            layer.msg(data);
+                        }
+                    }
+                });
+            });
+        }
+        , BatchSetting: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要设置的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定批量设置完成记录吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/PreAmountRecord/BatchSetting?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , Close: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要关闭的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要关闭吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/PreAmountRecord/Close?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+    };
+
+    $('.layui-btn').on('click', function () {
+        var type = $(this).data('type');
+        active[type] ? active[type].call(this) : '';
+    });
+});

+ 524 - 0
wwwroot/layuiadmin/modules_main/StoreHouseCardAmountRecord_Admin.js

@@ -0,0 +1,524 @@
+var ExcelData, ExcelKind;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/StoreHouseAmountRecord/Imports?r=" + Math.random(1),
+        data: "ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
+        dataType: "text",
+        success: function (data) {
+            if (data == "success") {
+                layer.msg("导入结果成功", { time: 2000 }, function () {
+                    window.location.reload();
+                });
+            }  else if (data.indexOf("warning") == 0) {
+                var datalist = data.split('|');
+                layer.alert(datalist[0], { time: 20000 }, function () {
+                    window.location.reload();
+                });
+            } else {
+                layer.msg(data);
+            }
+        }
+    });
+}
+
+function CheckImport(table, key, loadindex, index) {
+    $.ajax({
+        url: "/Admin/StoreHouseAmountRecord/CheckImportV2?r=" + Math.random(1),
+        data: "key=" + key,
+        dataType: "json",
+        success: function (data) {
+            if (data.status == 1) {
+                layer.msg("成功操作" + data.data + "条", {
+                    time: 2000
+                }, function () {
+                    layer.close(index); //关闭弹层
+                    layer.close(loadindex);
+                    table.reload('LAY-list-manage'); //数据刷新
+                });
+            } else if (data.status == 2) {
+                layer.close(index); //关闭弹层
+                layer.close(loadindex);
+                var content = '';
+                for (var i = 0; i < data.errList.length; i++) {
+                    content += data.errList[i] + '<br/>'
+                }
+                layer.alert(content);
+            } else {
+                layer.msg(data.data, {
+                    time: 1000
+                }, function () {
+                    CheckImport(table, key, loadindex, index);
+                });
+            }
+        }
+    });
+}
+
+var excel;
+layui.config({
+    base: '/layuiadmin/' //静态资源所在路径
+}).extend({
+    myexcel: 'layui/lay/modules/excel',
+    index: 'lib/index' //主入口模块
+}).use(['index', 'table', 'excel', 'laydate'], function () {
+    var $ = layui.$
+        , form = layui.form
+        , table = layui.table;
+
+    //- 筛选条件-日期
+    var laydate = layui.laydate;
+    var layCreateDate = laydate.render({
+        elem: '#CreateDate',
+        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;
+                    layCreateDate.hint('日期范围请不要超过1个月');
+                    setTimeout(function () {
+                        $(".laydate-btns-confirm").addClass("laydate-disabled");
+                    }, 1);
+                }
+            } else {
+                op = false;
+                layCreateDate.hint('日期范围请不要超过1个月');
+                setTimeout(function () {
+                    $(".laydate-btns-confirm").addClass("laydate-disabled");
+                }, 1);
+            }
+            if (op) {
+                $('#CreateDate').val(value);
+            }
+        }
+    });
+
+
+    //excel导入
+    excel = layui.excel;
+    $('#ExcelFile').change(function (e) {
+        var files = e.target.files;
+        excel.importExcel(files, {}, function (data) {
+            ExcelData = data[0].Sheet1;
+        });
+    });
+
+    //监听单元格编辑
+    table.on('edit(LAY-list-manage)', function (obj) {
+        var value = obj.value //得到修改后的值
+            , data = obj.data //得到所在行所有键值
+            , field = obj.field; //得到字段
+        if (field == "Sort") {
+            $.ajax({
+                type: "POST",
+                url: "/Admin/StoreHouseAmountRecord/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/StoreHouseAmountRecord/IndexsData' //模拟接口
+        , cols: [[
+            { type: 'checkbox', fixed: 'left' }
+            , { field: 'Id', fixed: 'left', title: 'ID', width: 80, sort: true, unresize: true }
+            , { field: 'Status', width: 200, title: '状态', sort: true }
+            , { field: 'UserIdRealName', width: 200, title: '创客真实姓名', sort: true }
+            , { field: 'UserIdMakerCode', width: 200, title: '创客编号', sort: true }
+            , { field: 'CreateDate', width: 200, title: '创建时间', sort: true }
+            , { field: 'UseAmount', width: 200, title: '申请提现临额', sort: true }
+            , { field: 'CertId', width: 200, title: '身份证号', sort: true }
+            , { field: 'SettleBankCardNo', width: 200, title: '银行卡号', sort: true }
+            , { field: 'SettleBankName', width: 200, title: '银行名称', sort: true }
+            , { field: 'Mobile', width: 200, title: '手机号', sort: true }
+            , { field: 'Type', width: 200, title: '交易类型', sort: true }
+
+            // , { field: 'Sort', fixed: 'right', title: '排序', width: 80, edit: 'text' }
+            // , { title: '操作', align: 'center', fixed: 'right', toolbar: '#table-list-tools' }
+        ]]
+        , where: {
+
+        }
+        , page: true
+        , limit: 30
+        , height: 'full-220'
+        , text: '对不起,加载出现异常!'
+        , done: function (res, curr, count) {
+            $(".layui-none").text("无数据");
+        }
+    });
+
+    //监听工具条
+    table.on('tool(LAY-list-manage)', function (obj) {
+        var data = obj.data;
+        if (obj.event === 'del') {
+            var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/StoreHouseAmountRecord/Delete?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {
+                            obj.del();
+                            layer.close(index);
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'edit') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '分仓机具额度记录-编辑'
+                , content: 'Edit?Id=' + data.Id + ''
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () {
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });
+                    }, 300);
+
+
+
+
+
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/StoreHouseAmountRecord/Edit?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+            layer.full(perContent);
+        }
+    });
+
+
+    //监听搜索
+    form.on('submit(LAY-list-front-search)', function (data) {
+        var field = data.field;
+
+        //执行重载
+        table.reload('LAY-list-manage', {
+            where: field,
+            page: {
+                curr: 1
+            }
+        });
+    });
+    form.on('submit(LAY-list-front-searchall)', function (data) {
+        table.reload('LAY-list-manage', {
+            where: null,
+            page: {
+                curr: 1
+            }
+        });
+    });
+
+    //事件
+    var active = {
+        batchdel: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要删除的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/StoreHouseAmountRecord/Delete?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , add: function () {
+            var perContent = layer.open({
+                type: 2
+                , title: '分仓机具额度记录-添加'
+                , content: 'Add'
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () {
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });
+                    }, 300);
+
+
+
+
+
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/StoreHouseAmountRecord/Add?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+            layer.full(perContent);
+        }
+        , ImportData: function () {
+            // ExcelKind = 1;
+            // layer.open({
+            //     type: 1,
+            //     title: '导入',
+            //     maxmin: false,
+            //     area: ['460px', '280px'],
+            //     content: $('#excelForm'),
+            //     cancel: function () {
+            //     }
+            // });
+            // $("#excelTemp");
+
+            var perContent = layer.open({
+                type: 2,
+                title: '导入银行卡临额提现结果',
+                content: 'ImportByQueue?ExcelKind=1',
+                maxmin: true,
+                area: ['650px', '350px'],
+                btn: ['确定', '取消'],
+                yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index],
+                        submitID = 'LAY-list-front-submit',
+                        submit = layero.find('iframe').contents().find('#' + submitID);
+
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        var loadindex = layer.load(1, {
+                            shade: [0.5, '#000']
+                        });
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/StoreHouseAmountRecord/ImportByQueuePost?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                if (data.indexOf("success") == 0) {
+                                    var datalist = data.split('|');
+                                    var key = datalist[1];
+                                    CheckImport(table, key, loadindex, index);
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+        }
+        , ExportExcel: function () {
+            var userdata = '';
+            $(".layuiadmin-card-header-auto input").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $(".layuiadmin-card-header-auto select").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            // $.ajax({
+            //     type: "GET",
+            //     url: "/Admin/StoreHouseAmountRecord/ExportsExcel?r=" + Math.random(1),
+            //     data: userdata,
+            //     dataType: "json",
+            //     success: function (data) {
+            //         data.Obj.unshift(data.Fields);
+            //         excel.exportExcel(data.Obj, data.Info, 'xlsx');
+            //         window.location.reload();
+            //     }
+            // });
+            var index = layer.confirm('确定导出吗?', function (index) {
+                var indexs = layer.load(1, {
+                    shade: [0.5, '#000']
+                });
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/StoreHouseAmountRecord/QuickExportExcelDo?r=" + Math.random(1),
+                    data: userdata,
+                    dataType: "text",
+                    success: function (data) {
+                        layer.close(index); //关闭弹层
+                        if (data == "success") {
+                            layer.close(indexs); //关闭弹层
+                            layer.msg('导出成功,请到我的下载中点击下载文件', {
+                                time: 1000
+                            }, function () {
+                                window.location.reload();
+                            });
+                        } else {
+                            layer.close(indexs); //关闭弹层
+                            layer.msg(data);
+                        }
+                    }
+                });
+            });
+        }
+        , BatchSetting: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要设置的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定批量设置完成记录吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/StoreHouseAmountRecord/BatchSetting?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , Close: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要关闭的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要关闭吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/StoreHouseAmountRecord/Close?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+    };
+
+    $('.layui-btn').on('click', function () {
+        var type = $(this).data('type');
+        active[type] ? active[type].call(this) : '';
+    });
+});

+ 1333 - 0
wwwroot/layuiadmin/modules_main/Users_Admin.js

@@ -0,0 +1,1333 @@
+var ExcelData, ExcelKind;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/Users/Import?r=" + Math.random(1),
+        data: "Kind=" + ExcelKind + "&ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
+        dataType: "text",
+        success: function (data) {
+            if (data == "success") {
+                layer.msg("导入成功", { time: 2000 }, function () {
+                    window.location.reload();
+                });
+            } else if (data.indexOf("warning") == 0) {
+                var datalist = data.split('|');
+                layer.alert(datalist[0], { time: 20000 }, function () {
+                    window.location.reload();
+                });
+            } else {
+                layer.msg(data);
+            }
+        }
+    });
+}
+
+
+function CheckImport(table, key, loadindex, index) {
+    $.ajax({
+        url: "/Admin/Users/CheckImportV2?r=" + Math.random(1),
+        data: "key=" + key,
+        dataType: "json",
+        success: function (data) {
+            if (data.status == 1) {
+                layer.msg("成功操作" + data.data + "条", {
+                    time: 2000
+                }, function () {
+                    layer.close(index); //关闭弹层
+                    layer.close(loadindex);
+                    table.reload('LAY-list-manage'); //数据刷新
+                });
+            } else if (data.status == 2) {
+                layer.close(index); //关闭弹层
+                layer.close(loadindex);
+                var content = '';
+                for (var i = 0; i < data.errList.length; i++) {
+                    content += data.errList[i] + '<br/>'
+                }
+                layer.alert(content);
+            } else {
+                layer.msg(data.data, {
+                    time: 1000
+                }, function () {
+                    CheckImport(table, key, loadindex, index);
+                });
+            }
+        }
+    });
+}
+
+
+layui.config({
+    base: '/layuiadmin/' //静态资源所在路径
+}).extend({
+    myexcel: 'layui/lay/modules/excel',
+    index: 'lib/index' //主入口模块
+}).use(['index', 'table', 'excel', 'laydate'], function () {
+    var $ = layui.$
+        , form = layui.form
+        , table = layui.table;
+
+    //- 筛选条件-日期
+    var laydate = layui.laydate;
+    var layCreateDate = laydate.render({
+        elem: '#CreateDate',
+        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;
+                    layCreateDate.hint('日期范围请不要超过1个月');
+                    setTimeout(function () {
+                        $(".laydate-btns-confirm").addClass("laydate-disabled");
+                    }, 1);
+                }
+            } else {
+                op = false;
+                layCreateDate.hint('日期范围请不要超过1个月');
+                setTimeout(function () {
+                    $(".laydate-btns-confirm").addClass("laydate-disabled");
+                }, 1);
+            }
+            if (op) {
+                $('#CreateDate').val(value);
+            }
+        }
+    });
+
+
+    //excel导入
+    var excel = layui.excel;
+    $('#ExcelFile').change(function (e) {
+        var files = e.target.files;
+        excel.importExcel(files, {}, function (data) {
+            ExcelData = data[0].Sheet1;
+            console.log(data);
+        });
+    });
+
+    //监听单元格编辑
+    table.on('edit(LAY-list-manage)', function (obj) {
+        var value = obj.value //得到修改后的值
+            , data = obj.data //得到所在行所有键值
+            , field = obj.field; //得到字段
+        if (field == "Sort") {
+            $.ajax({
+                type: "POST",
+                url: "/Admin/Users/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/Users/IndexData' //模拟接口
+        , cols: [[
+            { type: 'checkbox', fixed: 'left' }
+            , { field: 'Id', width: 100, title: 'ID', sort: true }
+            , { field: 'MakerCode', width: 200, title: '创客编号', sort: true, templet: '#MakerCodeTpl' }
+            , { field: 'RealName', width: 200, title: '创客姓名', sort: true }
+            , { field: 'UserLevel', width: 200, title: '创客等级', sort: true }
+            , { field: 'AgentAreas', width: 200, title: '展业地区', sort: true }
+            , { field: 'SettleAmount', width: 200, title: '提现金额(元)', sort: true }
+            , { field: 'FreezeAmount', width: 200, title: '冻结金额(元)', sort: true }
+            , { field: 'CertId', width: 200, title: '身份证号', sort: true }
+            , { field: 'Mobile', width: 200, title: '联系手机', sort: true }
+            , { field: 'MerchantType', width: 200, title: '商户创客类型', sort: true }
+            , { field: 'MerchantDate', width: 200, title: '成为商户创客时间', sort: true }
+            , { field: 'ParentMakerCode', width: 200, title: '直属创客编号', sort: true }
+            , { field: 'ParentRealName', width: 200, title: '直属创客名称', sort: true }
+            , { field: 'TopMakerCode', width: 200, title: '顶级创客编号', sort: true }
+            , { field: 'TopRealName', width: 200, title: '顶级创客名称', sort: true }
+            , { field: 'AuthFlagName', width: 200, title: '实名状态', sort: true }
+            , { field: 'RiskFlagName', width: 200, title: '风控状态', sort: true }
+            , { field: 'CreateDate', width: 200, title: '注册时间', sort: true }
+
+            , { title: '操作', width: 2200, align: 'left', toolbar: '#table-list-tools' }
+        ]]
+        , where: {
+            SelfId: SelfId,
+            ParentId: ParentId,
+            MakerCode: MakerCode
+        }
+        , page: true
+        , limit: 30
+        , height: 'full-' + String($('.layui-card-header').height() + 130)
+        , text: '对不起,加载出现异常!'
+        , done: function (res, curr, count) {
+            $(".layui-none").text("无数据");
+        }
+    });
+
+    //监听工具条
+    table.on('tool(LAY-list-manage)', function (obj) {
+        var data = obj.data;
+        if (obj.event === 'del') {
+            var index = layer.confirm('是否确定注销' + data.MakerCode + ',' + data.RealName + '?', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/Users/Delete?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {
+                            obj.del();
+                            layer.close(index);
+                            parent.layer.msg('已注销');
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'cancle') {
+            var index = layer.confirm('是否确定注销' + data.MakerCode + ',' + data.RealName + '?', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/Users/Cancel?r=" + Math.random(1),
+                    data: "UserId=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {
+                            obj.del();
+                            layer.close(index);
+                            parent.layer.msg('已注销');
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'sycn') {
+            var index = layer.confirm('确定要同步该创客的机具数吗?', function (index) {
+                layer.close(index);
+                var loadindex = layer.load(1, {
+                    shade: [0.5, '#000']
+                });
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/Users/SycnData?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        layer.close(loadindex);
+                        if (data == "success") {
+                            layer.msg('同步成功');
+                        } else {
+                            layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'edit') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '服务商信息管理'
+                , content: 'Edit?Id=' + data.Id
+                , maxmin: true
+                , area: ['500px', '550px']
+                , btn: ['修改', '三要素验证', '四要素验证', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () {
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });
+                    }, 300);
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/Users/Edit?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    layer.msg("保存成功", { time: 1500 }, function () {
+                                        table.reload('LAY-list-manage'); //数据刷新
+                                    });
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , btn2: function () {
+                    layer.msg('验证通过');
+                    return false;
+                }
+                , btn3: function () {
+                    layer.msg('验证通过');
+                    return false;
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+        } else if (obj.event === 'EditSettleAmount') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '修改结算金额'
+                , content: 'EditSettleAmount?Id=' + data.Id
+                , maxmin: false
+                , area: ['450px', '550px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/Users/EditSettleAmount?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    layer.msg("保存成功", { time: 1500 }, function () {
+                                        table.reload('LAY-list-manage'); //数据刷新
+                                    });
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+        } else if (obj.event === 'EditCashFreezeAmt') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '修改账户金额'
+                , content: 'EditCashFreezeAmt?Id=' + data.Id
+                , maxmin: false
+                , area: ['450px', '550px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/Users/EditCashFreezeAmt?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    layer.msg("保存成功", { time: 1500 }, function () {
+                                        table.reload('LAY-list-manage'); //数据刷新
+                                    });
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+        } else if (obj.event === 'EditBalance') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '账户操作'
+                , content: 'EditBalance?Id=' + data.Id
+                , maxmin: false
+                , area: ['450px', '600px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/Users/EditBalance?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    layer.msg("保存成功", { time: 1500 }, function () {
+                                        table.reload('LAY-list-manage'); //数据刷新
+                                    });
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+        } else if (obj.event === 'LockEnterpriseMaker') {
+            var index = layer.confirm('是否确定取消' + data.MakerCode + ',' + data.RealName + '的企业账户权限?', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/Users/CloseEnterpriseMaker?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        layer.close(index); //关闭弹层
+                        if (data == "success") {
+                            layer.msg("已取消", { time: 1500 }, function () {
+                                table.reload('LAY-list-manage'); //数据刷新
+                            });
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'EnterpriseMaker') {
+            var index = layer.confirm('是否确定设置' + data.MakerCode + ',' + data.RealName + '的账号为企业账户权限?', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/Users/OpenEnterpriseMaker?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        layer.close(index); //关闭弹层
+                        if (data == "success") {
+                            layer.msg("设置成功", { time: 1500 }, function () {
+                                table.reload('LAY-list-manage'); //数据刷新
+                            });
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'SetBigLeader') {
+            var index = layer.confirm('是否确定设置' + data.MakerCode + ',' + data.RealName + '的账户为大盟主?', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/Users/SetBigLeader?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        layer.close(index); //关闭弹层
+                        if (data == "success") {
+                            layer.msg("设置成功", { time: 1500 }, function () {
+                                table.reload('LAY-list-manage'); //数据刷新
+                            });
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'SetSmallLeader') {
+            var index = layer.confirm('是否确定设置' + data.MakerCode + ',' + data.RealName + '的账号为小盟主?', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/Users/SetSmallLeader?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        layer.close(index); //关闭弹层
+                        if (data == "success") {
+                            layer.msg("设置成功", { time: 1500 }, function () {
+                                table.reload('LAY-list-manage'); //数据刷新
+                            });
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'ChangeLeaderAmount') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '修改盟主金额'
+                , content: 'ChangeLeaderAmount?Id=' + data.Id
+                , maxmin: false
+                , area: ['450px', '550px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/Users/ChangeLeaderAmount?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    layer.msg("修改成功", { time: 1500 }, function () {
+                                        table.reload('LAY-list-manage'); //数据刷新
+                                    });
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+        } else if (obj.event === 'detail') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '创客详情'
+                , content: 'Detail?Id=' + data.Id
+                , maxmin: false
+                , area: ['450px', '500px']
+                , btn: ['关闭']
+                , yes: function (index, layero) {
+                    layer.close(index); //关闭弹层
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+        } else if (obj.event === 'Lock') {
+            var index = layer.confirm('是否确定锁定' + data.MakerCode + ',' + data.RealName + '的账号,禁止他登录与提现?', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/Users/Open?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        layer.close(index); //关闭弹层
+                        if (data == "success") {
+                            layer.msg("已锁定", { time: 1500 }, function () {
+                                table.reload('LAY-list-manage'); //数据刷新
+                            });
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'UnLock') {
+            var index = layer.confirm('是否确定恢复' + data.MakerCode + ',' + data.RealName + '的账号,恢复他登录?', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/Users/Close?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        layer.close(index); //关闭弹层
+                        if (data == "success") {
+                            layer.msg("已解锁", { time: 1500 }, function () {
+                                table.reload('LAY-list-manage'); //数据刷新
+                            });
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'Risk') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '风控'
+                , content: 'Risk?Id=' + data.Id
+                , maxmin: false
+                , area: ['450px', '600px']
+                , btn: ['保存', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/Users/Risk?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    layer.msg("保存成功", { time: 1500 }, function () {
+                                        table.reload('LAY-list-manage'); //数据刷新
+                                    });
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+        } else if (obj.event === 'UnRisk') {
+            var index = layer.confirm('确定要解除风控吗?', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/Users/UnRisk?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        layer.close(index); //关闭弹层
+                        if (data == "success") {
+                            layer.msg("已解除风控", { time: 1500 }, function () {
+                                table.reload('LAY-list-manage'); //数据刷新
+                            });
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'ResetPwd') {
+            var index = layer.confirm('是否确定重置' + data.MakerCode + ',' + data.RealName + '的登录密码?', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/Users/ResetPwd?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        layer.close(index); //关闭弹层
+                        if (data.indexOf("success|") > -1) {
+                            var datalist = data.split('|');
+                            layer.alert('密码重置为:' + datalist[1]);
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'sycnamount') {
+            var index = layer.confirm('确定要重置该创客的小分仓额度吗?', function (index) {
+                layer.close(index);
+                var loadindex = layer.load(1, {
+                    shade: [0.5, '#000']
+                });
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/Users/SycnAmountData?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        layer.close(loadindex);
+                        if (data == "success") {
+                            layer.msg('重置成功');
+                            table.reload('LAY-list-manage');
+                        } else {
+                            layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'resetsmallposcount') {
+            var index = layer.confirm('确定要重置该创客的小分仓机具数吗?', function (index) {
+                layer.close(index);
+                var loadindex = layer.load(1, {
+                    shade: [0.5, '#000']
+                });
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/Users/ResetSmallPosCount?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        layer.close(loadindex);
+                        if (data == "success") {
+                            layer.msg('重置成功');
+                            table.reload('LAY-list-manage');
+                        } else {
+                            layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'cleartoken') {
+            var index = layer.confirm('确定要清除该创客的登陆TOKEN吗?', function (index) {
+                layer.close(index);
+                var loadindex = layer.load(1, {
+                    shade: [0.5, '#000']
+                });
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/Users/ClearToken?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        layer.close(loadindex);
+                        if (data == "success") {
+                            layer.msg('清除成功');
+                            table.reload('LAY-list-manage');
+                        } else {
+                            layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'sycntrade') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '同步交易额'
+                , content: 'SycnTradeAmount?Id=' + data.Id
+                , maxmin: false
+                , area: ['550px', '700px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        var loadindex = layer.load(1, {
+                            shade: [0.5, '#000']
+                        });
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/Users/SycnTradeAmountDo?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(loadindex); //关闭弹层
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    layer.alert('重置程序已启动,请稍后核对创客交易额');
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+        }
+    });
+
+
+    //监听搜索
+    form.on('submit(LAY-list-front-search)', function (data) {
+        var field = data.field;
+        field.ShowFlag = 1;
+        if (field.MakerCode == "" && field.RealName == "" && field.ParentMakerCode == "" && field.ParentRealName == "" && field.Mobile == "" && field.CertId == "" && field.CreateDateData == "" && field.UserLevel == "" && field.AuthFlagSelect == "" && field.RiskFlagSelect == "" && field.MerchantTypeSelect == "") {
+            layer.alert('请输入查询条件');
+        }
+        else {
+            //执行重载
+            table.reload('LAY-list-manage', {
+                where: field
+            });
+        }
+    });
+    form.on('submit(LAY-list-front-searchall)', function (data) {
+        table.reload('LAY-list-manage', {
+            where: {
+                SelfId: SelfId,
+                ParentId: ParentId,
+                MakerCode: MakerCode
+            }
+        });
+    });
+
+    //事件
+    var active = {
+        batchdel: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要注销的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要注销吗?注销后不能恢复!', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/Users/Delete?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , add: function () {
+            var perContent = layer.open({
+                type: 2
+                , title: '创客-添加'
+                , content: 'Add'
+                , maxmin: true
+                , area: ['500px', '550px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () {
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });
+                    }, 300);
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/Users/Add?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                if (data == "success") {
+                                    layer.close(index); //关闭弹层
+                                    layer.msg('新增成功', { time: 1500 }, function () {
+                                        table.reload('LAY-list-manage'); //数据刷新
+                                    });
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+        }
+        , ImportSettleAmount: function () {
+            // ExcelKind = 1;
+            // layer.open({
+            //     type: 1,
+            //     title: '导入',
+            //     maxmin: false,
+            //     area: ['460px', '280px'],
+            //     content: $('#excelForm'),
+            //     cancel: function () {
+            //     }
+            // });
+            // $("#excelTemp").html('<a href="/users/批量修改提现结算金额模版.xlsx">点击下载批量修改提现结算金额模版</a>');
+            var perContent = layer.open({
+                type: 2,
+                title: '导入结算金额',
+                content: 'ImportByQueue?ExcelKind=1',
+                maxmin: true,
+                area: ['650px', '350px'],
+                btn: ['确定', '取消'],
+                yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index],
+                        submitID = 'LAY-list-front-submit',
+                        submit = layero.find('iframe').contents().find('#' + submitID);
+
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        var loadindex = layer.load(1, {
+                            shade: [0.5, '#000']
+                        });
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/Users/ImportByQueuePost?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                if (data.indexOf("success") == 0) {
+                                    var datalist = data.split('|');
+                                    var key = datalist[1];
+                                    CheckImport(table, key, loadindex, index);
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+        }
+        , ImportFreezeAmt: function () {
+            // ExcelKind = 2;
+            // layer.open({
+            //     type: 1,
+            //     title: '导入',
+            //     maxmin: false,
+            //     area: ['460px', '280px'],
+            //     content: $('#excelForm'),
+            //     cancel: function () {
+            //     }
+            // });
+            // $("#excelTemp").html('<a href="/users/批量修改提现冻结金额模版.xlsx">点击下载批量修改提现冻结金额模版</a>');
+
+            var perContent = layer.open({
+                type: 2,
+                title: '导入提现冻结金额',
+                content: 'ImportByQueue?ExcelKind=2',
+                maxmin: true,
+                area: ['650px', '350px'],
+                btn: ['确定', '取消'],
+                yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index],
+                        submitID = 'LAY-list-front-submit',
+                        submit = layero.find('iframe').contents().find('#' + submitID);
+
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        var loadindex = layer.load(1, {
+                            shade: [0.5, '#000']
+                        });
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/Users/ImportByQueuePost?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                if (data.indexOf("success") == 0) {
+                                    var datalist = data.split('|');
+                                    var key = datalist[1];
+                                    CheckImport(table, key, loadindex, index);
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+        }
+        , ImportRisk: function () {
+            // ExcelKind = 3;
+            // layer.open({
+            //     type: 1,
+            //     title: '导入',
+            //     maxmin: false,
+            //     area: ['460px', '280px'],
+            //     content: $('#excelForm'),
+            //     cancel: function () {
+            //     }
+            // });
+            // $("#excelTemp").html('<a href="/users/提现风控模版.xlsx">点击下载提现风控模版</a>');
+
+            var perContent = layer.open({
+                type: 2,
+                title: '导入风控数据',
+                content: 'ImportByQueue?ExcelKind=3',
+                maxmin: true,
+                area: ['650px', '350px'],
+                btn: ['确定', '取消'],
+                yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index],
+                        submitID = 'LAY-list-front-submit',
+                        submit = layero.find('iframe').contents().find('#' + submitID);
+
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        var loadindex = layer.load(1, {
+                            shade: [0.5, '#000']
+                        });
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/Users/ImportByQueuePost?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                if (data.indexOf("success") == 0) {
+                                    var datalist = data.split('|');
+                                    var key = datalist[1];
+                                    CheckImport(table, key, loadindex, index);
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+        }
+        //new function 2022-05-24 
+        , ImportEditAmt: function () {
+            // ExcelKind = 4;
+            // layer.open({
+            //     type: 1,
+            //     title: '导入',
+            //     maxmin: false,
+            //     area: ['460px', '280px'],
+            //     content: $('#excelForm'),
+            //     cancel: function () {
+            //     }
+            // });
+            // $("#excelTemp").html('<a href="/users/批量修改金额模版.xlsx">点击下载批量修改金额模版</a>');
+
+            var perContent = layer.open({
+                type: 2,
+                title: '导入修改金额数据',
+                content: 'ImportByQueue?ExcelKind=4',
+                maxmin: true,
+                area: ['650px', '350px'],
+                btn: ['确定', '取消'],
+                yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index],
+                        submitID = 'LAY-list-front-submit',
+                        submit = layero.find('iframe').contents().find('#' + submitID);
+
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        var loadindex = layer.load(1, {
+                            shade: [0.5, '#000']
+                        });
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/Users/ImportByQueuePost?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                if (data.indexOf("success") == 0) {
+                                    var datalist = data.split('|');
+                                    var key = datalist[1];
+                                    CheckImport(table, key, loadindex, index);
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+        }
+        , ExportExcel: function () {
+            var userdata = '';
+            $(".layuiadmin-card-header-auto input").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $(".layuiadmin-card-header-auto select").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $.ajax({
+                type: "GET",
+                url: "/Admin/Users/ExportExcel?r=" + Math.random(1),
+                data: userdata,
+                dataType: "json",
+                success: function (data) {
+                    data.Obj.unshift(data.Fields);
+                    excel.exportExcel(data.Obj, data.Info, 'xlsx');
+                }
+            });
+        }
+        , ExportZSExcel: function () {
+            var userdata = '';
+            $(".layuiadmin-card-header-auto input").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $(".layuiadmin-card-header-auto select").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $.ajax({
+                type: "GET",
+                url: "/Admin/Users/ExportZSExcel?r=" + Math.random(1),
+                data: userdata,
+                dataType: "json",
+                success: function (data) {
+                    data.Obj.unshift(data.Fields);
+                    excel.exportExcel(data.Obj, data.Info, 'xlsx');
+                }
+            });
+        }
+        , ExportSJExcel: function () {
+            var userdata = '';
+            $(".layuiadmin-card-header-auto input").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $(".layuiadmin-card-header-auto select").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $.ajax({
+                type: "GET",
+                url: "/Admin/Users/ExportSJExcel?r=" + Math.random(1),
+                data: userdata,
+                dataType: "json",
+                success: function (data) {
+                    data.Obj.unshift(data.Fields);
+                    excel.exportExcel(data.Obj, data.Info, 'xlsx');
+                }
+            });
+        }
+        , ThreeElement: function () {
+            var perContent = layer.open({
+                type: 2
+                , title: '三/四要素验证'
+                , content: 'ThreeElement'
+                , maxmin: false
+                , area: ['450px', '450px']
+                , btn: ['验证', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/Users/ThreeElement?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                if (data == "success") {
+                                    layer.msg("验证通过");
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+        }
+        , Open: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要开启的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要开启吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/Users/Open?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , Close: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要关闭的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要关闭吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/Users/Close?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+    };
+
+    $('.layui-btn').on('click', function () {
+        var type = $(this).data('type');
+        active[type] ? active[type].call(this) : '';
+    });
+});