Explorar o código

Merge branch 'feature-dgy-小分仓撤回功能' into feature-dgy-后台测试

DuGuYang %!s(int64=2) %!d(string=hai) anos
pai
achega
6bb3a8915d
Modificáronse 43 ficheiros con 2529 adicións e 105 borrados
  1. 15 12
      AppStart/ExcelHelper.cs
  2. 3 1
      AppStart/Helper/PreStoreApplyQueue.cs
  3. 2 1
      AppStart/Helper/SycnHelpProfitService.cs
  4. 6 3
      AppStart/Helper/SycnProfitService.cs
  5. 6 3
      AppStart/Helper/SycnProfitServiceV2.cs
  6. 2 1
      AppStart/Helper/SycnProfitServiceV3.cs
  7. 162 0
      AppStart/OssTestHelper.cs
  8. 24 0
      AppStart/PublicFunction.cs
  9. 8 0
      AppStart/Redis/RedisDbconn.cs
  10. BIN=BIN
      Areas/.DS_Store
  11. BIN=BIN
      Areas/Admin/.DS_Store
  12. BIN=BIN
      Areas/Admin/Controllers/.DS_Store
  13. 4 0
      Areas/Admin/Controllers/BsServer/BaseController.cs
  14. 312 0
      Areas/Admin/Controllers/MainServer/CustomQueryController.cs
  15. 154 0
      Areas/Admin/Controllers/MainServer/CustomQueryDoController.cs
  16. 2 2
      Areas/Admin/Controllers/MainServer/OrdersController.cs
  17. 155 0
      Areas/Admin/Controllers/MainServer/PreSendStockDetailController.cs
  18. 4 2
      Areas/Admin/Controllers/MainServer/ProfitRewardRecordController.cs
  19. 4 2
      Areas/Admin/Controllers/MainServer/SysRechargeRecordController.cs
  20. 60 47
      Areas/Admin/Controllers/MainServer/SysToolsController.cs
  21. BIN=BIN
      Areas/Admin/Views/.DS_Store
  22. BIN=BIN
      Areas/Admin/Views/BsServer/.DS_Store
  23. BIN=BIN
      Areas/Admin/Views/MainServer/.DS_Store
  24. 231 0
      Areas/Admin/Views/MainServer/CustomQuery/Add.cshtml
  25. 234 0
      Areas/Admin/Views/MainServer/CustomQuery/Edit.cshtml
  26. 124 0
      Areas/Admin/Views/MainServer/CustomQuery/Index.cshtml
  27. 87 0
      Areas/Admin/Views/MainServer/CustomQueryDo/Index.cshtml
  28. 2 2
      Areas/Admin/Views/MainServer/PreSendStockDetail/Index.cshtml
  29. BIN=BIN
      Areas/Admin/Views/SpServer/.DS_Store
  30. BIN=BIN
      Areas/Api/.DS_Store
  31. 2 2
      Controllers/HomeController.cs
  32. 24 0
      Models/CustomQuery.cs
  33. 2 0
      Models/LeaderAccountRecord.cs
  34. 1 0
      Models/PosMachinesTwo.cs
  35. 1 0
      Models/PreSendStockDetail.cs
  36. 94 27
      Models/WebCMSEntities.cs
  37. BIN=BIN
      wwwroot/admin/.DS_Store
  38. BIN=BIN
      wwwroot/layuiadmin/.DS_Store
  39. 409 0
      wwwroot/layuiadmin/modules_main/CustomQueryDo_Admin.js
  40. 378 0
      wwwroot/layuiadmin/modules_main/CustomQuery_Admin.js
  41. 17 0
      wwwroot/layuiadmin/modules_main/PreSendStockDetail_Admin.js
  42. BIN=BIN
      wwwroot/other/.DS_Store
  43. BIN=BIN
      wwwroot/public/.DS_Store

+ 15 - 12
AppStart/ExcelHelper.cs

@@ -1117,7 +1117,7 @@ namespace MySystem
                                                         decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
                                                         decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                                                         decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-                                                        db.UserAccountRecord.Add(new UserAccountRecord()
+                                                        UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                                                         {
                                                             CreateDate = DateTime.Now,
                                                             UpdateDate = DateTime.Now,
@@ -1131,9 +1131,10 @@ namespace MySystem
                                                             AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
                                                             BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
                                                             AfterBalanceAmount = AfterBalanceAmount, //变更后余额
-                                                        });
+                                                        }).Entity;
                                                         db.SaveChanges();
                                                         RedisDbconn.Instance.Set("UserAccount:" + edit.UserId, account);
+                                                        PublicFunction.SplitUserAccountRecord(add);
                                                     }
                                                 }
                                                 db.SaveChanges();
@@ -1161,7 +1162,7 @@ namespace MySystem
                                                         decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
                                                         decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                                                         decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-                                                        db.UserAccountRecord.Add(new UserAccountRecord()
+                                                        UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                                                         {
                                                             CreateDate = DateTime.Now,
                                                             UpdateDate = DateTime.Now,
@@ -1175,8 +1176,8 @@ namespace MySystem
                                                             AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
                                                             BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
                                                             AfterBalanceAmount = AfterBalanceAmount, //变更后余额
-                                                        });
-                                                        db.UserAccountRecord.Add(new UserAccountRecord()
+                                                        }).Entity;
+                                                        UserAccountRecord add1 = db.UserAccountRecord.Add(new UserAccountRecord()
                                                         {
                                                             CreateDate = DateTime.Now,
                                                             UpdateDate = DateTime.Now,
@@ -1190,8 +1191,8 @@ namespace MySystem
                                                             AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
                                                             BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
                                                             AfterBalanceAmount = AfterBalanceAmount, //变更后余额
-                                                        });
-                                                        db.UserAccountRecord.Add(new UserAccountRecord()
+                                                        }).Entity;
+                                                        UserAccountRecord add2 = db.UserAccountRecord.Add(new UserAccountRecord()
                                                         {
                                                             CreateDate = DateTime.Now,
                                                             UpdateDate = DateTime.Now,
@@ -1205,9 +1206,11 @@ namespace MySystem
                                                             AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
                                                             BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
                                                             AfterBalanceAmount = AfterBalanceAmount, //变更后余额
-                                                        });
+                                                        }).Entity;
                                                         db.SaveChanges();
-                                                        RedisDbconn.Instance.Set("UserAccount:" + edit.UserId, account);
+                                                        PublicFunction.SplitUserAccountRecord(add);
+                                                        PublicFunction.SplitUserAccountRecord(add1);
+                                                        PublicFunction.SplitUserAccountRecord(add2);
                                                     }
                                                 }
                                                 else if (Status == 2)
@@ -1230,7 +1233,7 @@ namespace MySystem
                                                             decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
                                                             decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                                                             decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-                                                            db.UserAccountRecord.Add(new UserAccountRecord()
+                                                            UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                                                             {
                                                                 CreateDate = DateTime.Now,
                                                                 UpdateDate = DateTime.Now,
@@ -1244,9 +1247,9 @@ namespace MySystem
                                                                 AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
                                                                 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
                                                                 AfterBalanceAmount = AfterBalanceAmount, //变更后余额
-                                                            });
+                                                            }).Entity;
                                                             db.SaveChanges();
-                                                            RedisDbconn.Instance.Set("UserAccount:" + edit.UserId, account);
+                                                            PublicFunction.SplitUserAccountRecord(add);
                                                         }
                                                     }
                                                 }

+ 3 - 1
AppStart/Helper/PreStoreApplyQueue.cs

@@ -77,7 +77,7 @@ public class PreStoreApplyHelper
                             decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
                             decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                             decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-                            UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
+                            UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                             {
                                 CreateDate = DateTime.Now,
                                 UpdateDate = DateTime.Now,
@@ -91,6 +91,8 @@ public class PreStoreApplyHelper
                                 BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
                                 AfterBalanceAmount = AfterBalanceAmount, //变更后余额
                             }).Entity;
+                            db.SaveChanges();
+                            PublicFunction.SplitUserAccountRecord(add);
                         }
                     }
                     db.SaveChanges();

+ 2 - 1
AppStart/Helper/SycnHelpProfitService.cs

@@ -108,7 +108,7 @@ namespace MySystem
                     decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
                     decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                     decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-                    UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
+                    UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                     {
                         CreateDate = DateTime.Now,
                         UpdateDate = DateTime.Now,
@@ -127,6 +127,7 @@ namespace MySystem
                     db.SaveChanges();
                     tran.Commit();
                     op = true;
+                    PublicFunction.SplitUserAccountRecord(add);
                 }
                 catch (Exception ex)
                 {

+ 6 - 3
AppStart/Helper/SycnProfitService.cs

@@ -121,7 +121,7 @@ namespace MySystem
                         decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
                         decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                         decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-                        UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
+                        UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                         {
                             CreateDate = DateTime.Now,
                             UpdateDate = DateTime.Now,
@@ -138,6 +138,7 @@ namespace MySystem
                             Remark = ProfitType == 1 ? "直拓商户分润" : "品牌推广服务费",
                         }).Entity;
                         db.SaveChanges();
+                        PublicFunction.SplitUserAccountRecord(add);
                     }
                     tran.Commit();
                 }
@@ -183,7 +184,7 @@ namespace MySystem
                     decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
                     decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                     decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-                    UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
+                    UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                     {
                         CreateDate = DateTime.Now,
                         UpdateDate = DateTime.Now,
@@ -200,6 +201,7 @@ namespace MySystem
                     }).Entity;
                     db.SaveChanges();
                     tran.Commit();
+                    PublicFunction.SplitUserAccountRecord(add);
                 }
                 catch (Exception ex)
                 {
@@ -266,7 +268,7 @@ namespace MySystem
                         decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
                         decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                         decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-                        UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
+                        UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                         {
                             CreateDate = DateTime.Now,
                             UpdateDate = DateTime.Now,
@@ -283,6 +285,7 @@ namespace MySystem
                             Remark = "直拓商户补贴",
                         }).Entity;
                         db.SaveChanges();
+                        PublicFunction.SplitUserAccountRecord(add);
                     }
                     tran.Commit();
                 }

+ 6 - 3
AppStart/Helper/SycnProfitServiceV2.cs

@@ -140,7 +140,7 @@ namespace MySystem
                             decimal AfterTotalAmount = account.TotalAmount + ProfitAmount; //变更后总金额
                             decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                             decimal AfterBalanceAmount = account.BalanceAmount + ProfitAmount; //变更后余额
-                            UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
+                            UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                             {
                                 CreateDate = DateTime.Now,
                                 UpdateDate = DateTime.Now,
@@ -173,6 +173,7 @@ namespace MySystem
                                 UserIds.Add(UserId);
                             }
                             tran.Commit();
+                            PublicFunction.SplitUserAccountRecord(add);
                         }
                         catch (Exception ex)
                         {
@@ -276,7 +277,7 @@ namespace MySystem
                             decimal AfterTotalAmount = account.TotalAmount + ProfitMoney; //变更后总金额
                             decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                             decimal AfterBalanceAmount = account.BalanceAmount + ProfitMoney; //变更后余额
-                            UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
+                            UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                             {
                                 CreateDate = DateTime.Now,
                                 UpdateDate = DateTime.Now,
@@ -305,6 +306,7 @@ namespace MySystem
                             profit.ProfitRate += ProfitMoney;
                             db.SaveChanges();
                             tran.Commit();
+                            PublicFunction.SplitUserAccountRecord(add);
                         }
                         catch (Exception ex)
                         {
@@ -375,7 +377,7 @@ namespace MySystem
                     decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
                     decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                     decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-                    UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
+                    UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                     {
                         CreateDate = DateTime.Now,
                         UpdateDate = DateTime.Now,
@@ -393,6 +395,7 @@ namespace MySystem
                     }).Entity;
                     db.SaveChanges();
                     tran.Commit();
+                    PublicFunction.SplitUserAccountRecord(add);
                 }
                 catch (Exception ex)
                 {

+ 2 - 1
AppStart/Helper/SycnProfitServiceV3.cs

@@ -218,7 +218,7 @@ namespace MySystem
                     decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
                     decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                     decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-                    UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
+                    UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                     {
                         CreateDate = DateTime.Now,
                         UpdateDate = DateTime.Now,
@@ -236,6 +236,7 @@ namespace MySystem
                     }).Entity;
                     db.SaveChanges();
                     tran.Commit();
+                    PublicFunction.SplitUserAccountRecord(add);
                 }
                 catch (Exception ex)
                 {

+ 162 - 0
AppStart/OssTestHelper.cs

@@ -0,0 +1,162 @@
+using System;
+using System.Threading;
+using System.Linq;
+using System.IO;
+using Aliyun.OSS;
+using Aliyun.OSS.Common;
+using Library;
+using System.Text.RegularExpressions;
+using MySystem.Models;
+
+namespace MySystem
+{
+    public class OssTestHelper
+    {
+        string key = "LTAI5tAp9ASZtq4wYzuXfeer"; //阿里云AccessKey ID
+        string secret = "N0o6TwowU8r4aeNWoefMnnus9Q2saW";  //阿里云Access Key Secret
+        public string PathName = ConfigurationManager.AppSettings["Database"].ToString();
+        // public string endpoint = "oss-cn-chengdu.aliyuncs.com";  //endpoint
+        public string endpoint = "oss-cn-chengdu-internal.aliyuncs.com";  //endpoint
+        public string bucketName = "kexiaoshuang";
+        public string SourceHost = ConfigurationManager.AppSettings["OssHost"].ToString();
+        public bool OssStatus = true;
+        public readonly static OssTestHelper Instance = new OssTestHelper();
+        private OssTestHelper()
+        {
+        }
+
+        public void Start()//启动
+        {
+            Thread thread = new Thread(threadStart);
+            thread.IsBackground = true;
+            thread.Start();
+        }
+
+        public void Add(string data)
+        {
+            function.WritePage("/OSSTempFiles/", function.MD532(Guid.NewGuid().ToString()) + ".txt", data);
+        }
+
+        private void threadStart()
+        {
+            var client = new OssClient(endpoint, key, secret);
+            while (true)
+            {
+                string dataFilePath = function.getPath("/OSSTempFiles/");
+                DirectoryInfo TheFolder = new DirectoryInfo(dataFilePath);
+                if (TheFolder.Exists)
+                {
+                    //遍历文件
+                    if (TheFolder.GetFiles().Length > 0)
+                    {
+                        try
+                        {
+                            foreach (FileInfo NextFile in TheFolder.GetFiles())
+                            {
+                                string FileFullName = dataFilePath + NextFile.Name;
+                                string data = function.ReadInstance("/OSSTempFiles/" + NextFile.Name);
+                                ScanQueue(data, FileFullName, client);
+                            }
+                        }
+                        catch (Exception ex)
+                        {
+                            function.WriteLog(ex.ToString(), "OSS上传队列异常");
+                        }
+                    }
+                }
+                //没有任务,休息1秒钟
+                Thread.Sleep(1000);
+            }
+        }
+
+        //要执行的方法
+        public void ScanQueue(string data, string FileFullName)
+        {
+            // SystemSet set = new WebCMSEntities().SystemSet.FirstOrDefault() ?? new SystemSet();
+            // if (set.UploadOss == 1)
+            if(OssStatus)
+            {
+                var client = new OssClient(endpoint, key, secret);
+                ScanQueue(data, FileFullName, client);
+            }
+        }
+        private void ScanQueue(string data, string FileFullName, OssClient client)
+        {
+            // 上传文件。
+            string localFile = function.getPath(PathName + data);
+            string filePath = data.TrimStart('/');
+            if (!data.StartsWith(PathName))
+            {
+                filePath = PathName + data;
+            }
+            var result = client.PutObject(bucketName, filePath, localFile, new ObjectMetadata()
+            {
+                ExpirationTime = DateTime.Parse("2050-12-31 23:59:59")
+            });
+            if (!string.IsNullOrEmpty(result.ETag))
+            {
+                if (result.ETag.Length == 32)
+                {
+                    if (File.Exists(localFile))
+                    {
+                        File.Delete(localFile);
+                    }
+                }
+            }
+
+            if (File.Exists(FileFullName))
+            {
+                File.Delete(FileFullName);
+            }
+        }
+
+        public string GetUrlBase64(string url)
+        {
+            var client = new OssClient(endpoint, key, secret);
+            var obj = client.GetObject(bucketName, url);
+            Stream stream = obj.Content;
+            byte[] bytes;
+            using (var memoryStream = new MemoryStream())
+            {
+                stream.CopyTo(memoryStream);
+                bytes = memoryStream.ToArray();
+            }
+            string base64 = Convert.ToBase64String(bytes);
+            return base64;
+        }
+
+
+
+
+        /// <summary>
+        /// 解析编辑器中的图片(oss)
+        /// </summary>
+        /// <param name="content"></param>
+        /// <returns></returns>
+        public string CheckOSSPic(string content)
+        {
+            if (string.IsNullOrEmpty(content))
+            {
+                content = "";
+            }
+            if (OssStatus)
+            {
+                MatchCollection MC = Regex.Matches(content, "<img.*?>");
+                foreach (Match match in MC)
+                {
+                    string imgstr = match.Value;
+                    Match submatch = Regex.Match(imgstr, "src=\".*?\"");
+                    if (submatch.Success)
+                    {
+                        string src = submatch.Value.Replace("src=\"", "").Replace("\"", "");
+                        if (!src.StartsWith("http"))
+                        {
+                            content = content.Replace(src, OssHelper.Instance.SourceHost + src);
+                        }
+                    }
+                }
+            }
+            return content;
+        }
+    }
+}

+ 24 - 0
AppStart/PublicFunction.cs

@@ -595,5 +595,29 @@ namespace MySystem
         public static Dictionary<string, Dictionary<string, string>> OpTables = new Dictionary<string, Dictionary<string, string>>();//运营中心数据模型
 
         #endregion
+    
+    
+        #region 发送分表数据
+
+        public static void SplitTradeRecord(TradeRecord obj, string TradeMonth = "")
+        {
+            if(string.IsNullOrEmpty(TradeMonth))
+            {
+                TradeMonth = DateTime.Now.ToString("yyyyMM");
+            }
+            RedisDbconn.Instance.AddList("AddTradeRecordQueue", Newtonsoft.Json.JsonConvert.SerializeObject(obj) + "#cut#" + TradeMonth);
+        }
+
+        public static void SplitUserAccountRecord(UserAccountRecord obj, string TradeMonth = "")
+        {
+            if(string.IsNullOrEmpty(TradeMonth))
+            {
+                TradeMonth = DateTime.Now.ToString("yyyyMM");
+            }
+            RedisDbconn.Instance.AddList("AddUserAccountRecordQueue", Newtonsoft.Json.JsonConvert.SerializeObject(obj) + "#cut#" + TradeMonth);
+        }
+
+        #endregion
+    
     }
 }

+ 8 - 0
AppStart/Redis/RedisDbconn.cs

@@ -147,6 +147,14 @@ namespace MySystem
         }
         #endregion
 
+        #region 删除列表对象
+        public long DelFromList(string key, object value)
+        {
+            return csredis.LRem(key, 0, value);
+            // return false;
+        }
+        #endregion
+
         #region 获取列表
         public List<T> GetList<T>(string key, int pageNum = 1, int pageSize = 10)
         {

BIN=BIN
Areas/.DS_Store


BIN=BIN
Areas/Admin/.DS_Store


BIN=BIN
Areas/Admin/Controllers/.DS_Store


+ 4 - 0
Areas/Admin/Controllers/BsServer/BaseController.cs

@@ -141,6 +141,10 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 url = url.Replace("/PosCouponRecord/", "/PosCouponOrders/");
             }
+            if (url.Contains("/CustomQueryDo/"))
+            {
+                url = url.Replace("/CustomQueryDo/", "/CustomQuery/");
+            }
             if (!string.IsNullOrEmpty(url))
             {
                 url = url.Substring(0, url.LastIndexOf("/"));

+ 312 - 0
Areas/Admin/Controllers/MainServer/CustomQueryController.cs

@@ -0,0 +1,312 @@
+/*
+ * 自定义查询
+ */
+
+using System;
+using System.Web;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using MySystem.Models;
+using Library;
+using LitJson;
+using MySystemLib;
+
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class CustomQueryController : BaseController
+    {
+        public CustomQueryController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+            OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+        }
+
+        #region 自定义查询列表
+
+        /// <summary>
+        /// 根据条件查询自定义查询列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(CustomQuery data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询自定义查询列表
+
+        /// <summary>
+        /// 自定义查询列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(CustomQuery data, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("Title", "1"); //标题
+
+
+            string condition = " and Status>-1";
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("CustomQuery", Fields, "Id desc", "0", page, limit, condition);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+
+            }
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加自定义查询
+
+        /// <summary>
+        /// 增加或修改自定义查询信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加自定义查询
+
+        /// <summary>
+        /// 增加或修改自定义查询信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(CustomQuery data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("SqlContent", data.SqlContent); //sql语句
+            Fields.Add("Title", data.Title); //标题
+            Fields.Add("AdminNames", data.AdminNames); //后台账号
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("CustomQuery", Fields, 0);
+            AddSysLog(data.Id.ToString(), "CustomQuery", "add");
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 修改自定义查询
+
+        /// <summary>
+        /// 增加或修改自定义查询信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edit(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            CustomQuery editData = db.CustomQuery.FirstOrDefault(m => m.Id == Id) ?? new CustomQuery();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改自定义查询
+
+        /// <summary>
+        /// 增加或修改自定义查询信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(CustomQuery data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("SqlContent", data.SqlContent); //sql语句
+            Fields.Add("Title", data.Title); //标题
+            Fields.Add("AdminNames", data.AdminNames); //后台账号
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("CustomQuery", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "CustomQuery", "update");
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除自定义查询信息
+
+        /// <summary>
+        /// 删除自定义查询信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "CustomQuery", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("CustomQuery", Fields, id);
+            }
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 开启
+
+        /// <summary>
+        /// 开启
+        /// </summary>
+        /// <returns></returns>
+        public string Open(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "CustomQuery", "open");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("CustomQuery", Fields, id);
+            }
+            db.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 关闭
+
+        /// <summary>
+        /// 关闭
+        /// </summary>
+        /// <returns></returns>
+        public string Close(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "CustomQuery", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 0);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("CustomQuery", Fields, id);
+            }
+            db.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 排序
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id"></param>
+        public string Sort(int Id, int Sort)
+        {
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Sort("CustomQuery", Sort, Id);
+
+            AddSysLog(Id.ToString(), "CustomQuery", "sort");
+            return "success";
+        }
+        #endregion
+
+        #region 导入数据
+        /// <summary>
+        /// 导入数据
+        /// </summary>
+        /// <param name="ExcelData"></param>
+        public string Import(string ExcelData)
+        {
+            ExcelData = HttpUtility.UrlDecode(ExcelData);
+            JsonData list = JsonMapper.ToObject(ExcelData);
+            for (int i = 1; i < list.Count; i++)
+            {
+                JsonData dr = list[i];
+
+                db.CustomQuery.Add(new CustomQuery()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                db.SaveChanges();
+            }
+            AddSysLog("0", "CustomQuery", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(CustomQuery data)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("Title", "1"); //标题
+
+
+            string condition = " and Status>-1";
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("CustomQuery", Fields, "Id desc", "0", 1, 20000, condition, "", false);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+
+            }
+
+            Dictionary<string, object> result = new Dictionary<string, object>();
+            result.Add("Status", "1");
+            result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
+            result.Add("Obj", diclist);
+            Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "CustomQuery", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+    }
+}

+ 154 - 0
Areas/Admin/Controllers/MainServer/CustomQueryDoController.cs

@@ -0,0 +1,154 @@
+/*
+ * 自定义查询
+ */
+
+using System;
+using System.Web;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Data;
+using System.Threading.Tasks;
+using System.Text.RegularExpressions;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using MySystem.Models;
+using Library;
+using LitJson;
+using MySystemLib;
+
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class CustomQueryDoController : BaseController
+    {
+        public CustomQueryDoController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+            OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+        }
+
+        #region 自定义查询列表
+
+        /// <summary>
+        /// 根据条件查询自定义查询列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(int Id, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            ViewBag.Id = Id.ToString();
+            Dictionary<string, string> query = new Dictionary<string, string>();
+            CustomQuery item = db.CustomQuery.FirstOrDefault(m => m.Id == Id) ?? new CustomQuery();
+            string sql = item.SqlContent;
+            MatchCollection mc = Regex.Matches(sql, @"\$\{.*?\}\$");
+            foreach(Match m in mc)
+            {
+                string[] fieldData = m.Value.Replace("${", "").Replace("}$", "").Split('|');
+                string fieldName = fieldData[0];
+                string Title = fieldData[1];
+                if(!query.ContainsKey(fieldName))
+                {
+                    query.Add(fieldName, Title);
+                }
+            }
+            ViewBag.query = query;
+
+            string[] fieldList = item.SeoDescription.Split(',');
+            string cols = "";
+            foreach(string Title in fieldList)
+            {
+                cols += ",{field:'" + Title + "', width: 200, title:'" + Title + "'}";
+            }
+            ViewBag.cols = cols;
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询自定义查询列表
+
+        /// <summary>
+        /// 自定义查询列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(int Id, int page = 1, int limit = 30)
+        {
+            CustomQuery item = db.CustomQuery.FirstOrDefault(m => m.Id == Id) ?? new CustomQuery();
+            string sql = item.SqlContent;
+            MatchCollection mc = Regex.Matches(sql, @"\$\{.*?\}\$");
+            foreach(Match m in mc)
+            {
+                string[] fieldData = m.Value.Replace("${", "").Replace("}$", "").Split('|');
+                string fieldName = fieldData[0];
+                sql = sql.Replace(m.Value, Request.Query[fieldName].ToString());
+            }
+            if(page > 1)
+            {
+                int skip = (page - 1) * limit;
+                sql += " limit " + skip + "," + limit;
+            }
+            else
+            {
+                sql += " limit " + limit;
+            }
+            DataTable dt = CustomerSqlConn.dtable(sql, MysqlConn.SqlConnStr);
+            List<Dictionary<string, string>> diclist = new List<Dictionary<string, string>>();
+            foreach(DataRow dr in dt.Rows)
+            {
+                Dictionary<string, string> row = new Dictionary<string, string>();   
+                foreach(DataColumn dc in dt.Columns)
+                {                 
+                    if (dc.DataType == typeof(DateTime))
+                    {
+                        row.Add(dc.ColumnName, string.IsNullOrEmpty(dr[dc.ColumnName].ToString()) ? "" : DateTime.Parse(dr[dc.ColumnName].ToString()).ToString("yyyy-MM-dd HH:mm:ss"));
+                    }
+                    else
+                    {
+                        row.Add(dc.ColumnName, dr[dc.ColumnName].ToString());
+                    }
+                }
+                diclist.Add(row);
+            }
+            Dictionary<string, object> obj = new Dictionary<string, object>();
+            obj.Add("code", 0);
+            obj.Add("msg", "");
+            obj.Add("count", 300);
+            obj.Add("data", diclist);
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public string ExportExcel(int Id)
+        {
+            var sysAdmin = bsdb.SysAdmin.FirstOrDefault(m => m.AdminName == SysUserName && m.Status > -1);
+            CustomQuery item = db.CustomQuery.FirstOrDefault(m => m.Id == Id) ?? new CustomQuery();
+            string sql = item.SqlContent;
+            MatchCollection mc = Regex.Matches(sql, @"\$\{.*?\}\$");
+            foreach(Match m in mc)
+            {
+                string[] fieldData = m.Value.Replace("${", "").Replace("}$", "").Split('|');
+                string fieldName = fieldData[0];
+                sql = sql.Replace(m.Value, Request.Query[fieldName].ToString());
+            }
+            var FileName = item.Title + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+            string SendData = "{\"Operater\":\"" + sysAdmin.Id + "\",\"SqlString\":\"" + sql + "\",\"FileName\":\"" + FileName + "\",\"MaxCount\":\"0\"}";
+            RedisDbconn.Instance.AddList("ExportQueue", SendData);
+            return "success";
+        }
+
+        #endregion
+
+    }
+}

+ 2 - 2
Areas/Admin/Controllers/MainServer/OrdersController.cs

@@ -1530,7 +1530,7 @@ namespace MySystem.Areas.Admin.Controllers
                                 decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
                                 decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                                 decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-                                UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
+                                UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                                 {
                                     CreateDate = DateTime.Now,
                                     UpdateDate = DateTime.Now,
@@ -1546,7 +1546,7 @@ namespace MySystem.Areas.Admin.Controllers
                                     QueryCount = order.Id,
                                 }).Entity;
                                 db.SaveChanges();
-                                RedisDbconn.Instance.Set("UserAccount:" + ParentUserId, account);
+                                PublicFunction.SplitUserAccountRecord(add);
 
                                 //推荐下单上级获得30天的机具循环天数
                                 var posList = db.PosMachinesTwo.Select(m => new { m.Id, m.UserId, m.BindingState, m.RecycEndDate }).Where(m => m.UserId == ParentUserId && m.BindingState == 0 && m.RecycEndDate != null).ToList();

+ 155 - 0
Areas/Admin/Controllers/MainServer/PreSendStockDetailController.cs

@@ -585,6 +585,161 @@ namespace MySystem.Areas.Admin.Controllers
         #endregion
 
 
+        #region 预发机撤回
+
+        /// <summary>
+        /// 预发机撤回
+        /// </summary>
+        /// <returns></returns>
+        public string Cancle(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "PreSendStockDetail", "cancle");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("PreSendStockDetail", Fields, id);
+
+                string check = RedisDbconn.Instance.Get<string>("SmallStoreCancel:" + id);
+                if (!string.IsNullOrEmpty(check))
+                {
+                    return "请勿频繁操作,稍后再试";
+                }
+                RedisDbconn.Instance.Set("SmallStoreCancel:" + id, "wait");
+                RedisDbconn.Instance.SetExpire("SmallStoreCancel:" + id, 3);
+                var query = db.PreSendStockDetail.FirstOrDefault(m => m.Id == id);
+                var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == query.FromUserId) ?? new UserAccount();
+                var tuserAccount = db.UserAccount.FirstOrDefault(m => m.Id == query.ToUserId) ?? new UserAccount();
+                KqProducts kqProducts = db.KqProducts.FirstOrDefault(m => m.Id == query.BrandId);
+                var date = DateTime.Now.AddDays(-30);
+                var amount = 0;
+                if (query != null)
+                {
+                    PosMachinesTwo posMachinesTwo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == query.SnId) ?? new PosMachinesTwo();
+                    StoreHouse storeHouse = db.StoreHouse.FirstOrDefault(m => m.Id == query.FromStoreId) ?? new StoreHouse();
+                    PosMachinesTwo pm = db.PosMachinesTwo.FirstOrDefault(m => m.Id == query.SnId);
+                    var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == posMachinesTwo.BrandId);
+                    if (brandInfo.Name.Contains("电签"))
+                    {
+                        amount = 200;
+                    }
+                    if (brandInfo.Name.Contains("大POS"))
+                    {
+                        amount = 300;
+                    }
+                    if (pm != null)
+                    {
+                        // if (pm.BindingState == 1)
+                        // {
+                        //     return "机具已绑定,不可撤回!请创客申请机具后补录!";
+                        // }
+                        SmallStoreHouse smallStoreHouse = db.SmallStoreHouse.FirstOrDefault(m => m.UserId == query.ToUserId);
+                        posMachinesTwo.PreUserId = 0;
+                        query.UpdateDate = DateTime.Now;
+                        query.Status = -1;
+                        query.CancelFlag = 1;
+                        storeHouse.LaveNum += 1;
+                        smallStoreHouse.UpdateDate = DateTime.Now;
+                        smallStoreHouse.LaveNum += 1;
+                        smallStoreHouse.TotalNum -= 1;
+                        if (query.CreateDate <= date)
+                        {
+                            //撤回占用小分仓额度的增加接收创客的小分仓可用额度
+                            if (query.AuthFlag == 1 && tuserAccount.SmallStoreDeposit >= amount)
+                            {
+                                userAccount.ValidAmount -= amount;//扣减分仓可用额度
+                                tuserAccount.SmallStoreDeposit -= amount;
+                                tuserAccount.ValidPreAmount += amount;//增加小分仓可用额度
+                                var add = db.UserAccountRecord.Add(new UserAccountRecord()
+                                {
+                                    CreateDate = DateTime.Now,
+                                    Remark = "小分仓押金退还",
+                                    ChangeType = 66,
+                                    BeforeBalanceAmount = tuserAccount.SmallStoreDeposit + amount, //变更前小分仓押金
+                                    AfterBalanceAmount = tuserAccount.SmallStoreDeposit, //变更后小分仓押金
+                                    ChangeAmount = amount,//变动金额
+                                    UserId = tuserAccount.Id,
+                                }).Entity;
+                                db.SaveChanges();
+                            }
+                        }
+                        else
+                        {
+                            //撤回占用小分仓额度的增加接收创客的小分仓可用额度
+                            if (query.AuthFlag == 1)
+                            {
+                                tuserAccount.ValidPreAmount += amount;//增加小分仓可用额度
+                                userAccount.ValidAmount -= amount;//扣减分仓可用额度
+                            }
+                        }
+                        
+                        RedisDbconn.Instance.AddList("PreWithholdQueue", "{\"UserId\":\"" + query.ToUserId + "\",\"SnNo\":\"" + query.SnNo + "\"}");
+
+                        string text = string.Format("创客-首页-仓库管理-小分仓-撤回,UserId: '" + query.FromUserId + "',ToUserId: '" + smallStoreHouse.UserId + "',LaveNum:'" + smallStoreHouse.LaveNum + "',TotalNum:'" + smallStoreHouse.TotalNum + "',ChangeCount:'" + 1 + "',Time'" + DateTime.Now + "'");
+                        function.WriteLog(text, "smallstorehouse");//小分仓记录日志
+                        if (smallStoreHouse.LaveNum > 10 || smallStoreHouse.TotalNum < 0)
+                        {
+                            return "*库存已重置,不可撤回!";
+                        }
+                        db.SaveChanges();
+                        RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal()
+                        {
+                            UserId = query.ToUserId, //收货创客
+                            Title = "预发机撤回通知", //标题
+                            Content = "<div class='f16'>您的预发机 SN:<br/>" + query.SnNo + "<br/>已被" + storeHouse.StoreName + " 撤回!</div>", //内容
+                            Summary = "您的预发机: " + kqProducts.Name + "  sn:" + query.SnNo + "已被 " + storeHouse.StoreName + " 撤回!",
+                            CreateDate = DateTime.Now,
+
+                        }));
+
+                        var toUser = db.Users.FirstOrDefault(m => m.Id == query.ToUserId);
+                        RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal()
+                        {
+                            UserId = query.FromUserId, //收货创客
+                            Title = "预发机撤回通知", //标题
+                            Content = "<div class='f16'>已撤回创客:" + toUser.MakerCode + " " + toUser.RealName + " 的预发机 SN:<br/>" + query.SnNo + "</div>", //内容
+                            Summary = "已撤回创客:" + toUser.MakerCode + " " + toUser.RealName + " 的预发机 SN:" + query.SnNo + "",
+                            CreateDate = DateTime.Now,
+
+                        }));
+
+                        //删除预发机过期提醒
+                        List<Dictionary<string, string>> result = RedisDbconn.Instance.GetList<Dictionary<string, string>>("PrePosRing:" + DateTime.Now.ToString("yyyyMMdd") + ":" + query.ToUserId);
+                        if (result.Count > 0)
+                        {
+                            foreach (Dictionary<string, string> item in result)
+                            {
+                                if (item["SnNo"] == pm.PosSn)
+                                {
+                                    RedisDbconn.Instance.DelFromList("PrePosRing:" + DateTime.Now.ToString("yyyyMMdd") + ":" + query.ToUserId, item);
+                                }
+                            }
+                        }
+                        result = RedisDbconn.Instance.GetList<Dictionary<string, string>>("PrePosRingForExpired:" + DateTime.Now.ToString("yyyyMMdd") + ":" + query.ToUserId);
+                        if (result.Count > 0)
+                        {
+                            foreach (Dictionary<string, string> item in result)
+                            {
+                                if (item["SnNo"] == pm.PosSn)
+                                {
+                                    RedisDbconn.Instance.DelFromList("PrePosRingForExpired:" + DateTime.Now.ToString("yyyyMMdd") + ":" + query.ToUserId, item);
+                                }
+                            }
+                        }
+                    }
+                }
+                RedisDbconn.Instance.SetExpire("SmallStoreCancel:" + id, 1);
+            }
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+
         #region 预发货库存明细列表(占额度超过30天未兑换)
 
         /// <summary>

+ 4 - 2
Areas/Admin/Controllers/MainServer/ProfitRewardRecordController.cs

@@ -636,7 +636,7 @@ namespace MySystem.Areas.Admin.Controllers
                         decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
                         decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                         decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-                        UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
+                        UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                         {
                             CreateDate = DateTime.Now,
                             UpdateDate = DateTime.Now,
@@ -653,6 +653,7 @@ namespace MySystem.Areas.Admin.Controllers
                             Remark = ProfitType == 1 ? "直拓商户分润" : "品牌推广服务费",
                         }).Entity;
                         db.SaveChanges();
+                        PublicFunction.SplitUserAccountRecord(add);
                         RedisDbconn.Instance.Clear("UserAccount:" + UserId);
                         RedisDbconn.Instance.Clear("UserAccount:Income:" + UserId + ":" + DateTime.Now.ToString("yyyyMM"));
                     }
@@ -712,7 +713,7 @@ namespace MySystem.Areas.Admin.Controllers
                         decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
                         decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                         decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-                        UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
+                        UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                         {
                             CreateDate = DateTime.Now,
                             UpdateDate = DateTime.Now,
@@ -729,6 +730,7 @@ namespace MySystem.Areas.Admin.Controllers
                             Remark = "直拓商户补贴",
                         }).Entity;
                         db.SaveChanges();
+                        PublicFunction.SplitUserAccountRecord(add);
                         RedisDbconn.Instance.Clear("UserAccount:" + UserId);
                         RedisDbconn.Instance.Clear("UserAccount:Income:" + UserId + ":" + DateTime.Now.ToString("yyyyMM"));
                     }

+ 4 - 2
Areas/Admin/Controllers/MainServer/SysRechargeRecordController.cs

@@ -494,7 +494,7 @@ namespace MySystem.Areas.Admin.Controllers
                     decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
                     decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                     decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-                    db.UserAccountRecord.Add(new UserAccountRecord()
+                    UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                     {
                         CreateDate = DateTime.Now,
                         UpdateDate = DateTime.Now,
@@ -509,7 +509,9 @@ namespace MySystem.Areas.Admin.Controllers
                         BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
                         AfterBalanceAmount = AfterBalanceAmount, //变更后余额
                         Remark = edit.SeoDescription, //备注
-                    });
+                    }).Entity;
+                    db.SaveChanges();
+                    PublicFunction.SplitUserAccountRecord(add);
                 }
             }
             db.SaveChanges();

+ 60 - 47
Areas/Admin/Controllers/MainServer/SysToolsController.cs

@@ -1008,7 +1008,7 @@ namespace MySystem.Areas.Admin.Controllers
                                 decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
                                 decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                                 decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-                                UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
+                                UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                                 {
                                     CreateDate = DateTime.Now,
                                     UpdateDate = DateTime.Now,
@@ -1024,7 +1024,7 @@ namespace MySystem.Areas.Admin.Controllers
                                     AfterBalanceAmount = AfterBalanceAmount, //变更后余额
                                 }).Entity;
                                 db.SaveChanges();
-                                RedisDbconn.Instance.Set("UserAccount:" + GetUserId, account);
+                                PublicFunction.SplitUserAccountRecord(add);
 
                                 string dateString = pos.ActivationTime.Value.ToString("yyyyMMdd");
                                 string monthString = pos.ActivationTime.Value.ToString("yyyyMM");
@@ -1052,7 +1052,7 @@ namespace MySystem.Areas.Admin.Controllers
                                 RedisDbconn.Instance.AddNumber("ActiveRewardAmt:mer:" + pos.BindMerchantId + ":" + pos.BrandId + ":" + dateString, prize);
 
                                 //收支明细
-                                RedisDbconn.Instance.AddList("UserAccountRecord:" + GetUserId + ":1:" + monthString, userAccountRecord);
+                                RedisDbconn.Instance.AddList("UserAccountRecord:" + GetUserId + ":1:" + monthString, add);
                                 RedisDbconn.Instance.AddNumber("UserAccount:" + GetUserId + ":1:" + monthString, prize);
                             }
                         }
@@ -1289,21 +1289,30 @@ namespace MySystem.Areas.Admin.Controllers
                 }
                 string DepositGets = "未领取";
                 string DepositUsers = "";
-                ActiveReward rewards = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.RewardAmount != 40) ?? new ActiveReward();
-                if (rewards.Id > 0)
+                string aDepositGets = "";
+                // ActiveReward rewards = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.RewardAmount != 40) ?? new ActiveReward();
+                // if (rewards.Id > 0)
+                // {
+                //     Users user = db.Users.FirstOrDefault(m => m.Id == rewards.UserId) ?? new Users();
+                //     DepositGets = "已领取";
+                //     DepositUsers = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName;
+                // }
+                // string ActiveTimes = rewards.CreateDate == null ? "" : rewards.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
+                var rewards = db.ActiveReward.Where(m => m.KqSnNo == pos.PosSn).ToList();
+                foreach (var item in rewards)
                 {
-                    Users user = db.Users.FirstOrDefault(m => m.Id == rewards.UserId) ?? new Users();
-                    DepositGets = "已领取";
-                    DepositUsers = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName;
+                    Users user = db.Users.FirstOrDefault(m => m.Id == item.UserId) ?? new Users();
+                    var time = item.CreateDate == null ? "" : item.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
+                    aDepositGets += "已领取:" + item.RewardAmount + ",创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",领取时间:" + time + "\n";
                 }
-                string ActiveTimes = rewards.CreateDate == null ? "" : rewards.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
                 var storeInfo = db.StoreHouse.FirstOrDefault(m => m.Id == pos.StoreId) ?? new StoreHouse();
                 string results = "该机具为故障机" + "\n";
                 results += "所在仓库:" + storeInfo.StoreNo + "\n";
                 results += "仓库名称:" + storeInfo.StoreName + "\n";
                 results += "服务费返现实际返现对象:" + DepositUsers + "\n";
                 results += "服务费:" + Deposits + "\n";
-                results += "是否返现:" + DepositGets + ",领取时间:" + ActiveTimes + "\n";
+                // results += "是否返现:" + DepositGets + ",领取时间:" + ActiveTimes + "\n";
+                results += "是否返现:" + DepositGets + "\n";
                 return results;
             }
             string merInfo = "";
@@ -1376,31 +1385,32 @@ namespace MySystem.Areas.Admin.Controllers
             string DepositToUser = "";
             decimal headAmount = 0;
             decimal footAmount = 0;
-            ActiveReward reward = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.RewardAmount != 40) ?? new ActiveReward();
-            if (reward.Id > 0)
-            {
-                Users user = db.Users.FirstOrDefault(m => m.Id == reward.UserId) ?? new Users();
-                DepositGet = "已领取";
-                DepositUser = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName;
-                var fAmount = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.ActType == 0);
-                if (fAmount != null)
-                {
-                    headAmount = fAmount.RewardAmount;
-                }
-                var lAmount = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.ActType == 1);
-                if (lAmount != null)
-                {
-                    footAmount = lAmount.RewardAmount;
-                }
-            }
-            string DepositGet6 = "未领取";
-            string DepositUser6 = "";
-            ActiveReward lisreward = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.BrandId == 6 && m.RewardAmount == 40) ?? new ActiveReward();
-            if (lisreward.Id > 0)
+            string aDepositGet = "";
+            // ActiveReward reward = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.RewardAmount != 40) ?? new ActiveReward();
+            // if (reward.Id > 0)
+            // {
+            //     Users user = db.Users.FirstOrDefault(m => m.Id == reward.UserId) ?? new Users();
+            //     DepositGet = "已领取";
+            //     DepositUser = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName;
+            //     var fAmount = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.ActType == 0);
+            //     if (fAmount != null)
+            //     {
+            //         headAmount = fAmount.RewardAmount;
+            //     }
+            //     var lAmount = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.ActType == 1);
+            //     if (lAmount != null)
+            //     {
+            //         footAmount = lAmount.RewardAmount;
+            //     }
+            // }
+            // string DepositGet6 = "未领取";
+            // string DepositUser6 = "";
+            var reward = db.ActiveReward.Where(m => m.KqSnNo == pos.PosSn).ToList();
+            foreach (var item in reward)
             {
-                Users user = db.Users.FirstOrDefault(m => m.Id == lisreward.UserId) ?? new Users();
-                DepositGet6 = "已领取";
-                DepositUser6 = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName;
+                Users user = db.Users.FirstOrDefault(m => m.Id == item.UserId) ?? new Users();
+                var time = item.CreateDate == null ? "" : item.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
+                aDepositGet += "已领取:" + item.RewardAmount + ",创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",领取时间:" + time + "\n";
             }
             string FluxGet6 = "未领取";
             string FluxUser6 = "";
@@ -1453,8 +1463,8 @@ namespace MySystem.Areas.Admin.Controllers
             string CreateDate = pos.CreateDate == null ? "" : pos.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
             string TransferTime = pos.TransferTime == null ? "" : pos.TransferTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
             string RecycEndDate = pos.RecycEndDate == null ? "" : pos.RecycEndDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
-            string ActiveTime = reward.CreateDate == null ? "" : reward.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
-            string ActiveTime6 = lisreward.CreateDate == null ? "" : lisreward.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
+            // string ActiveTime = reward.CreateDate == null ? "" : reward.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
+            // string ActiveTime6 = lisreward.CreateDate == null ? "" : lisreward.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
             string result = "";
             result += "机器持有人顶级:创客编号:" + posTopUser.MakerCode + ",姓名:" + posTopUser.RealName + "\n";
             result += "\n";
@@ -1490,15 +1500,16 @@ namespace MySystem.Areas.Admin.Controllers
             result += "申请循环后的SN:" + applyorder.SnNos + "\n";
             result += "是否发货:" + SendStatus + ",发货时间:" + SendDate + "\n";
             result += "服务费:" + Deposit + "\n";
-            result += "是否返现:" + DepositGet + ",领取时间:" + ActiveTime + "\n";
-            result += "返现金额:" + headAmount + " " + " " + footAmount + "\n";
+            // result += "是否返现:" + DepositGet + ",领取时间:" + ActiveTime + "\n";
+            result += "是否返现:" + aDepositGet + "\n";
+            // result += "返现金额:" + headAmount + " " + " " + footAmount + "\n";
             result += "服务费返现应返现对象:" + DepositToUser + "\n";
-            result += "服务费返现实际返现对象:" + DepositUser + "\n";
-            if (pos.BrandId == 6)
-            {
-                result += "立刷10000奖励:" + DepositGet6 + ",领取时间:" + ActiveTime6 + "\n";
-                result += "立刷10000奖励发放人:" + DepositUser6 + "\n";
-            }
+            // result += "服务费返现实际返现对象:" + DepositUser + "\n";
+            // if (pos.BrandId == 6)
+            // {
+            //     result += "立刷10000奖励:" + DepositGet6 + ",领取时间:" + ActiveTime6 + "\n";
+            //     result += "立刷10000奖励发放人:" + DepositUser6 + "\n";
+            // }
             result += "流量费:" + FluxGet6 + "\n";
             result += "流量费发放对象:" + FluxUser6 + "\n";
             result += "开机奖20:" + OpenUser20 + "\n";
@@ -3212,7 +3223,7 @@ namespace MySystem.Areas.Admin.Controllers
             decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
             decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
             decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-            UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
+            UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
             {
                 CreateDate = DateTime.Now,
                 UpdateDate = DateTime.Now,
@@ -3228,6 +3239,7 @@ namespace MySystem.Areas.Admin.Controllers
                 QueryCount = OrderId,
             }).Entity;
             db.SaveChanges();
+            PublicFunction.SplitUserAccountRecord(add);
         }
         #endregion
 
@@ -3551,7 +3563,7 @@ namespace MySystem.Areas.Admin.Controllers
                         decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
                         decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
                         decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
-                        UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
+                        UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
                         {
                             CreateDate = DateTime.Now,
                             UpdateDate = DateTime.Now,
@@ -3569,6 +3581,7 @@ namespace MySystem.Areas.Admin.Controllers
                         db.SaveChanges();
                         spdb.Dispose();
                         db.Dispose();
+                        PublicFunction.SplitUserAccountRecord(add);
                         return "发放成功";
                     }
                 }
@@ -4188,7 +4201,7 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 return "请输入商户手机号";
             }
-            var posMerchant = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == MerchantNo && m.KqSnNo == PosSn && m.MerchantName.StartsWith(MerchantName.Substring(0, 1))) ?? new PosMerchantInfo();
+            var posMerchant = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == MerchantNo && m.KqSnNo == PosSn && (m.MerchantName.StartsWith(MerchantName.Substring(0, 1)) || m.MerchantName.Contains(MerchantName))) ?? new PosMerchantInfo();
             var query = "";
             query += "修改前:" + posMerchant.KqSnNo + "," + posMerchant.MerchantNo + "," + posMerchant.MerchantName + "," + posMerchant.MerIdcardNo + "," + posMerchant.MerchantMobile;
             query += "修改后:" + PosSn + "," + MerchantNo + "," + MerchantName + "," + MerIdcardNo + "," + MerchantMobile;

BIN=BIN
Areas/Admin/Views/.DS_Store


BIN=BIN
Areas/Admin/Views/BsServer/.DS_Store


BIN=BIN
Areas/Admin/Views/MainServer/.DS_Store


+ 231 - 0
Areas/Admin/Views/MainServer/CustomQuery/Add.cshtml

@@ -0,0 +1,231 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right 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>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <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-input-inline">
+                                <input class="layui-input" type="text" id="Title" name="Title" maxlength="50"
+                                    lay-verify="required|" autocomplete="off" placeholder="请输入标题">
+                            </div>
+                        </div>
+                        <div class="layui-form-item layui-form-text">
+                            <label class="layui-form-label">sql语句</label>
+                            <div class="layui-input-block">
+                                <textarea class="layui-textarea" id="SqlContent" name="SqlContent" maxlength=""
+                                    lay-verify="required|" placeholder="请输入sql语句"></textarea>
+                            </div>
+                        </div>
+                        <div class="layui-form-item layui-form-text">
+                            <label class="layui-form-label">返回字段</label>
+                            <div class="layui-input-block">
+                                <textarea class="layui-textarea" id="SeoDescription" name="SeoDescription" maxlength=""
+                                    lay-verify="required|" placeholder="请输入返回字段"></textarea>
+                            </div>
+                        </div>
+                        <div class="layui-form-item layui-form-text">
+                            <label class="layui-form-label">后台账号</label>
+                            <div class="layui-input-block">
+                                <textarea class="layui-textarea" id="AdminNames" name="AdminNames" maxlength="500"
+                                    lay-verify="" placeholder="请输入后台账号"></textarea>
+                            </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@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        
+        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');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 234 - 0
Areas/Admin/Views/MainServer/CustomQuery/Edit.cshtml

@@ -0,0 +1,234 @@
+@using MySystem.Models;
+@{CustomQuery editData = ViewBag.data as CustomQuery;}
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right 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>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        <input type="hidden" name="Id" value="@editData.Id" />
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <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-input-inline">
+                                <input class="layui-input" type="text" id="Title" name="Title"
+                                    value="@editData.Title" maxlength="50" lay-verify="required|" autocomplete="off"
+                                    placeholder="请输入标题">
+                            </div>
+                        </div>
+                        <div class="layui-form-item layui-form-text">
+                            <label class="layui-form-label">sql语句</label>
+                            <div class="layui-input-block">
+                                <textarea class="layui-textarea" id="SqlContent" name="SqlContent" maxlength=""
+                                    lay-verify="required|" placeholder="请输入sql语句">@editData.SqlContent</textarea>
+                            </div>
+                        </div>
+                        <div class="layui-form-item layui-form-text">
+                            <label class="layui-form-label">返回字段</label>
+                            <div class="layui-input-block">
+                                <textarea class="layui-textarea" id="SeoDescription" name="SeoDescription" maxlength=""
+                                    lay-verify="required|" placeholder="请输入返回字段">@editData.SeoDescription</textarea>
+                            </div>
+                        </div>
+                        <div class="layui-form-item layui-form-text">
+                            <label class="layui-form-label">后台账号</label>
+                            <div class="layui-input-block">
+                                <textarea class="layui-textarea" id="AdminNames" name="AdminNames" maxlength="500"
+                                    lay-verify="" placeholder="请输入后台账号">@editData.AdminNames</textarea>
+                            </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@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+        
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        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');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 124 - 0
Areas/Admin/Views/MainServer/CustomQuery/Index.cshtml

@@ -0,0 +1,124 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right 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">
+    <link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <style>
+        .layui-input-inline{
+            width: 175px !important;
+        }
+        .layui-form-label{
+            width: 85px !important;
+        }
+        .layui-inline{
+            margin-right: 0px !important;
+        }
+        .w100{
+            width: 100px !important;
+        }
+        .ml50{
+            margin-left: 50px !important;
+        }
+    </style>
+</head>
+<body>
+    <div class="layui-fluid">
+        <div class="layui-card">
+            <div class="layui-form layui-card-header layuiadmin-card-header-auto">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+<label class="layui-form-label">标题</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="Title" placeholder="" autocomplete="off">
+</div>
+</div>
+
+                    <div class="layui-inline ml50">
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-search">
+                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>查询
+                        </button>
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-searchall">
+                            <i class="layui-icon layui-icon-list layuiadmin-button-btn"></i>全部
+                        </button>
+                    </div>
+                </div>
+            </div>
+
+            <div class="layui-card-body">
+                <div style="padding-bottom: 10px;">
+                    @if (RightInfo.Contains("," + right + "_add,"))
+                    {
+                        <button class="layui-btn" data-type="add"><i class="layui-icon layui-icon-add-1 layuiadmin-button-btn"></i>添加</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        <button class="layui-btn" data-type="batchdel"><i class="layui-icon layui-icon-delete layuiadmin-button-btn"></i>删除</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    
+                    }
+                </div>
+                
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
+                    }
+                    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-href="/Admin/CustomQueryDo/Index?right=@right&Id=@("{{d.Id}}")"><i class="layui-icon layui-icon-edit"></i>查询</a>
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    
+                    }
+                </script>
+            </div>
+        </div>
+    </div>
+    <div id="excelForm" style="display:none; padding:20px;">
+        <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">
+                </div>
+            </div>
+            <div class="layui-form-item">
+                <label class="layui-form-label">excel文件</label>
+                <div class="layui-form-mid layui-word-aux">
+                    <div class="layui-upload">
+                        <input type="file" id="ExcelFile" name="ExcelFile" value="">
+                    </div>
+                    <div class="mt10" id="ExcelFileList">
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item ml10">
+            <div class="layui-input-block">
+                <button type="button" class="layui-btn" onclick="ConfirmImport()">立即导入</button>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/layuiadmin/modules_main/CustomQuery_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+        
+    </script>
+</body>
+</html>

+ 87 - 0
Areas/Admin/Views/MainServer/CustomQueryDo/Index.cshtml

@@ -0,0 +1,87 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    Dictionary<string, string> query = ViewBag.query as Dictionary<string, 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">
+    <link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <style>
+        .layui-input-inline{
+            width: 175px !important;
+        }
+        .layui-form-label{
+            width: 85px !important;
+        }
+        .layui-inline{
+            margin-right: 0px !important;
+        }
+        .w100{
+            width: 100px !important;
+        }
+        .ml50{
+            margin-left: 50px !important;
+        }
+    </style>
+</head>
+<body>
+    <div class="layui-fluid">
+        <div class="layui-card">
+            <div class="layui-form layui-card-header layuiadmin-card-header-auto">
+                <input type="hidden" name="Id" value="@(ViewBag.Id)">
+                <div class="layui-form-item">
+                    @foreach(string key in query.Keys)
+                    {
+                    <div class="layui-inline">
+                        <label class="layui-form-label">@(query[key])</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="@(key)" placeholder="" autocomplete="off">
+                        </div>
+                    </div>
+                    }
+                    <div class="layui-inline ml50">
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-search">
+                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>查询
+                        </button>
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-searchall">
+                            <i class="layui-icon layui-icon-list layuiadmin-button-btn"></i>全部
+                        </button>
+                    </div>
+                </div>
+            </div>
+
+            <div class="layui-card-body">
+                <div style="padding-bottom: 10px;">
+                    <button class="layui-btn" data-type="ExportExcel"><i class="layui-icon layui-icon-export layuiadmin-button-btn"></i>导出</button>
+                </div>
+                
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    
+                    }
+                </script>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/layuiadmin/modules_main/CustomQueryDo_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+        var mycols = [[
+            { type: 'checkbox', fixed: 'left' }
+            @(Html.Raw(ViewBag.cols))
+        ]];
+        var Id = "@(ViewBag.Id)";
+    </script>
+</body>
+</html>

+ 2 - 2
Areas/Admin/Views/MainServer/PreSendStockDetail/Index.cshtml

@@ -192,9 +192,9 @@
                     {
                         <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
                     }
-                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    @if (RightInfo.Contains("," + right + "_Cancle,"))
                     {
-
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="Cancle"><i class="layui-icon layui-icon-edit"></i>撤回</a>
                     }
                 </script>
             </div>

BIN=BIN
Areas/Admin/Views/SpServer/.DS_Store


BIN=BIN
Areas/Api/.DS_Store


+ 2 - 2
Controllers/HomeController.cs

@@ -176,9 +176,9 @@ namespace MySystem.Controllers
             return html;
         }
     
-        public string test()
+        public string test(string p)
         {
-            return DecryptString("tI2uU8zQp54=", "0535YANTAIJIANWANZHONG9912321232");
+            return OssTestHelper.Instance.GetUrlBase64(p);
         }
 
         private SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();

+ 24 - 0
Models/CustomQuery.cs

@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.Models
+{
+    public partial class CustomQuery
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int QueryCount { get; set; }
+        public int Status { get; set; }
+        public int Version { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string CreateMan { get; set; }
+        public string UpdateMan { get; set; }
+        public string SeoTitle { get; set; }
+        public string SeoKeyword { get; set; }
+        public string SeoDescription { get; set; }
+        public string AdminNames { get; set; }
+        public string Title { get; set; }
+        public string SqlContent { get; set; }
+    }
+}

+ 2 - 0
Models/LeaderAccountRecord.cs

@@ -29,5 +29,7 @@ namespace MySystem.Models
         public string CreateMan { get; set; }
         public string UpdateMan { get; set; }
         public int Version { get; set; }
+        public decimal LeaderReserve { get; set; }
+        public int LeaderId { get; set; }
     }
 }

+ 1 - 0
Models/PosMachinesTwo.cs

@@ -60,5 +60,6 @@ namespace MySystem.Models
         public string SourcePosSn { get; set; }
         public int RecycStatus { get; set; }
         public string OutBatchNo { get; set; }
+        public int WithholdFlag { get; set; }
     }
 }

+ 1 - 0
Models/PreSendStockDetail.cs

@@ -29,5 +29,6 @@ namespace MySystem.Models
         public int BrandId { get; set; }
         public int StoreId { get; set; }
         public ulong AuthFlag { get; set; }
+        public int WithholdFlag { get; set; }
     }
 }

+ 94 - 27
Models/WebCMSEntities.cs

@@ -47,6 +47,7 @@ namespace MySystem.Models
         public virtual DbSet<CouponAssignRecords> CouponAssignRecords { get; set; }
         public virtual DbSet<Coupons> Coupons { get; set; }
         public virtual DbSet<CouponsForUser> CouponsForUser { get; set; }
+        public virtual DbSet<CustomQuery> CustomQuery { get; set; }
         public virtual DbSet<CustomTagSet> CustomTagSet { get; set; }
         public virtual DbSet<ErpCompanys> ErpCompanys { get; set; }
         public virtual DbSet<ExportExcels> ExportExcels { get; set; }
@@ -2664,6 +2665,82 @@ namespace MySystem.Models
                 entity.Property(e => e.Version).HasColumnType("int(11)");
             });
 
+            modelBuilder.Entity<CustomQuery>(entity =>
+            {
+                entity.HasComment("自定义查询");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.AdminNames)
+                    .HasColumnType("varchar(500)")
+                    .HasComment("后台账号")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.CreateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("创建时间");
+
+                entity.Property(e => e.CreateMan)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("创建人")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.QueryCount)
+                    .HasColumnType("int(11)")
+                    .HasComment("点击量");
+
+                entity.Property(e => e.SeoDescription)
+                    .HasColumnType("varchar(500)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoKeyword)
+                    .HasColumnType("varchar(200)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoTitle)
+                    .HasColumnType("varchar(100)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Sort)
+                    .HasColumnType("int(11)")
+                    .HasComment("排序序号");
+
+                entity.Property(e => e.SqlContent)
+                    .HasColumnType("mediumtext")
+                    .HasComment("sql语句")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Status)
+                    .HasColumnType("int(11)")
+                    .HasComment("状态");
+
+                entity.Property(e => e.Title)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("标题")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.UpdateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("更新时间");
+
+                entity.Property(e => e.UpdateMan)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("更新人")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Version)
+                    .HasColumnType("int(11)")
+                    .HasComment("版本号");
+            });
+
             modelBuilder.Entity<CustomTagSet>(entity =>
             {
                 entity.HasComment("自定义全局标签");
@@ -4153,6 +4230,14 @@ namespace MySystem.Models
                     .HasCharSet("utf8")
                     .HasCollation("utf8_general_ci");
 
+                entity.Property(e => e.LeaderId)
+                    .HasColumnType("int(11)")
+                    .HasComment("大盟主Id");
+
+                entity.Property(e => e.LeaderReserve)
+                    .HasColumnType("decimal(18,2)")
+                    .HasComment("大盟主储备金");
+
                 entity.Property(e => e.ProductType).HasColumnType("int(11)");
 
                 entity.Property(e => e.QueryCount).HasColumnType("int(11)");
@@ -9800,6 +9885,10 @@ namespace MySystem.Models
                     .HasColumnType("longtext")
                     .HasCharSet("utf8")
                     .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.WithholdFlag)
+                    .HasColumnType("int(11)")
+                    .HasComment("预扣标记");
             });
 
             modelBuilder.Entity<PosMerchantInfo>(entity =>
@@ -10265,6 +10354,10 @@ namespace MySystem.Models
                 entity.Property(e => e.ToUserId).HasColumnType("int(11)");
 
                 entity.Property(e => e.UpdateDate).HasColumnType("datetime");
+
+                entity.Property(e => e.WithholdFlag)
+                    .HasColumnType("int(11)")
+                    .HasComment("预扣标记");
             });
 
             modelBuilder.Entity<ProductComment>(entity =>
@@ -10709,8 +10802,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<Products>(entity =>
             {
-                entity.HasComment("商品信息");
-
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
                 entity.Property(e => e.BannerPhoto)
@@ -10723,7 +10814,7 @@ namespace MySystem.Models
                 entity.Property(e => e.BuyCount).HasColumnType("int(11)");
 
                 entity.Property(e => e.ColId)
-                    .HasColumnType("varchar(100)")
+                    .HasColumnType("varchar(30)")
                     .HasCharSet("utf8")
                     .HasCollation("utf8_general_ci");
 
@@ -10895,8 +10986,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<ProfitObjectActivations>(entity =>
             {
-                entity.HasComment("激活奖励设置");
-
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
                 entity.Property(e => e.Code)
@@ -10962,8 +11051,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<ProfitObjectContinueFloors>(entity =>
             {
-                entity.HasComment("继续分润层级");
-
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
                 entity.Property(e => e.AddProfitVal).HasColumnType("decimal(18,6)");
@@ -11014,8 +11101,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<ProfitObjectFloors>(entity =>
             {
-                entity.HasComment("分润对象层级");
-
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
                 entity.Property(e => e.AddProfitVal).HasColumnType("decimal(18,6)");
@@ -11070,8 +11155,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<ProfitObjectLevelKinds>(entity =>
             {
-                entity.HasComment("分润对象等级分类");
-
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
                 entity.Property(e => e.BankCardType).HasColumnType("int(11)");
@@ -11127,8 +11210,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<ProfitObjectLevels>(entity =>
             {
-                entity.HasComment("分润对象等级");
-
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
                 entity.Property(e => e.AddProfitVal).HasColumnType("decimal(18,6)");
@@ -11192,8 +11273,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<ProfitObjects>(entity =>
             {
-                entity.HasComment("分润对象");
-
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
                 entity.Property(e => e.CreateDate).HasColumnType("datetime");
@@ -11258,8 +11337,6 @@ namespace MySystem.Models
                 entity.HasKey(e => e.CheckData)
                     .HasName("PRIMARY");
 
-                entity.HasComment("激活奖励队列");
-
                 entity.Property(e => e.CheckData)
                     .HasColumnType("varchar(100)")
                     .HasCharSet("utf8")
@@ -11268,8 +11345,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<ProfitObjectsActiveParams>(entity =>
             {
-                entity.HasComment("分润对象活动参数");
-
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
                 entity.Property(e => e.CreateDate).HasColumnType("datetime");
@@ -11329,8 +11404,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<ProfitObjectsActives>(entity =>
             {
-                entity.HasComment("分润对象活动奖");
-
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
                 entity.Property(e => e.CardType).HasColumnType("int(11)");
@@ -11408,8 +11481,6 @@ namespace MySystem.Models
                 entity.HasKey(e => e.Name)
                     .HasName("PRIMARY");
 
-                entity.HasComment("活动名称为主键的关联表");
-
                 entity.Property(e => e.Name)
                     .HasColumnType("varchar(50)")
                     .HasCharSet("utf8")
@@ -11420,8 +11491,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<ProfitObjectsRule>(entity =>
             {
-                entity.HasComment("分润对象规则");
-
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
                 entity.Property(e => e.Code)
@@ -11480,8 +11549,6 @@ namespace MySystem.Models
 
             modelBuilder.Entity<ProfitObjectsRuleDetails>(entity =>
             {
-                entity.HasComment("分润对象规则配置明细");
-
                 entity.Property(e => e.Id).HasColumnType("int(11)");
 
                 entity.Property(e => e.Code)

BIN=BIN
wwwroot/admin/.DS_Store


BIN=BIN
wwwroot/layuiadmin/.DS_Store


+ 409 - 0
wwwroot/layuiadmin/modules_main/CustomQueryDo_Admin.js

@@ -0,0 +1,409 @@
+var ExcelData,ExcelKind;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/CustomQueryDo/Import?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 {
+                layer.msg(data);
+            }
+        }
+    });
+}
+
+function resetClickFlag() {
+    setTimeout(function(){
+        clickFlag = true;
+    }, 10000);
+}
+function resetExportFlag() {
+    setTimeout(function(){
+        exportFlag = true;
+    }, 10000);
+}
+
+var excel;
+var clickFlag = true;
+var exportFlag = true;
+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;
+    
+
+    //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/CustomQueryDo/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+    
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/CustomQueryDo/IndexData' //模拟接口
+        , cols: mycols
+        , where: {
+            Id: Id
+        }
+        , 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/CustomQueryDo/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/CustomQueryDo/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) {
+        if(!clickFlag) {
+            layer.msg('请勿重复操作');
+            return;
+        }
+        clickFlag = false;
+        resetClickFlag();
+        var field = data.field;
+        //执行重载
+        table.reload('LAY-list-manage', {
+            where: field,
+            page: {
+                curr: 1
+            }
+        });
+    });
+    form.on('submit(LAY-list-front-searchall)', function (data) {
+        if(!clickFlag) {
+            layer.msg('请勿重复操作');
+            return;
+        }
+        clickFlag = false;
+        resetClickFlag();
+        table.reload('LAY-list-manage', {
+            where: {
+                Id: Id
+            },
+            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/CustomQueryDo/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/CustomQueryDo/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").html('<a href="/excelfile/模板文件.xlsx">点击下载模板文件</a>');
+        }
+        , ExportExcel: function () {
+            if(!exportFlag) {
+                layer.msg('请勿重复操作');
+                return;
+            }
+            exportFlag = false;
+            resetExportFlag();
+            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/CustomQueryDo/ExportExcel?r=" + Math.random(1),
+                data: userdata,
+                dataType: "text",
+                success: function (data) {
+                    if (data == "success") {
+                        layer.msg('导出成功,请到我的下载中点击下载文件', {
+                            time: 3000
+                        }, function () {
+                        });
+                    } else {
+                        layer.msg(data);
+                    }
+                }
+            });
+        }
+        , 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/CustomQueryDo/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/CustomQueryDo/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) : '';
+    });
+});

+ 378 - 0
wwwroot/layuiadmin/modules_main/CustomQuery_Admin.js

@@ -0,0 +1,378 @@
+var ExcelData,ExcelKind;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/CustomQuery/Import?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 {
+                layer.msg(data);
+            }
+        }
+    });
+}
+
+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;
+    
+
+    //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/CustomQuery/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+    
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/CustomQuery/IndexData' //模拟接口
+        , cols: [[
+            { type: 'checkbox', fixed: 'left' }
+    		, {field:'Id', fixed: 'left', title:'ID', width:80, sort: true, unresize: true}
+            ,{field:'Title', 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/CustomQuery/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/CustomQuery/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/CustomQuery/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/CustomQuery/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").html('<a href="/excelfile/模板文件.xlsx">点击下载模板文件</a>');
+        }
+        , 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/CustomQuery/ExportExcel?r=" + Math.random(1),
+                data: userdata,
+                dataType: "json",
+                success: function (data) {
+                    data.Obj.unshift(data.Fields);
+                    excel.exportExcel(data.Obj, data.Info, 'xlsx');
+                }
+            });
+        }
+        , 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/CustomQuery/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/CustomQuery/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) : '';
+    });
+});

+ 17 - 0
wwwroot/layuiadmin/modules_main/PreSendStockDetail_Admin.js

@@ -174,6 +174,23 @@ layui.config({
                     }
                 });
             });
+        }
+        else if (obj.event === 'Cancle') {
+            var index = layer.confirm('确定要撤回吗?撤回后不能恢复!', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/PreSendStockDetail/Cancle?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {
+                            layer.close(index);
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
         } else if (obj.event === 'edit') {
             var tr = $(obj.tr);
             var perContent = layer.open({

BIN=BIN
wwwroot/other/.DS_Store


BIN=BIN
wwwroot/public/.DS_Store