Browse Source

区分数据库配置,可选可配置

lcl 6 months ago
parent
commit
80644de432

+ 16 - 0
Controllers/Admin/Pri/PriDatabaseSetController.cs

@@ -13,6 +13,7 @@ namespace Controllers.Admin
     /// <summary>
     /// PriDatabaseSet)Controller
     /// </summary>
+    // [Route("${Router}$")]
     // [ApiExplorerSettings(GroupName = "PriDatabaseSet")]
     public class PriDatabaseSetController : BaseController
     {
@@ -102,6 +103,21 @@ namespace Controllers.Admin
         }
 
 
+          /// <param name="page">分页参数</param>
+        /// <summary>
+        /// 下拉框数据
+        /// </summary>
+        /// <param name="page">分页对象</param>
+        /// <returns>下拉框数据</returns>
+        [HttpGet]
+        [Route("/v1/pri/PriDatabaseSet/getPriDatabaseSetDic")]
+        public IActionResult getPriDatabaseSetDic([FromQuery] PagerInfo page)
+        {
+            var response = _PriDatabaseSetService.getPriDatabaseSetDic(page);
+            return SUCCESS(response);
+        }
+
+
 
 
     }

+ 7 - 0
Model/Database/PriDatabaseSet.cs

@@ -73,6 +73,13 @@ namespace Model
         public string? databaseName { get; set; }
 
 
+        /// <summary>
+        /// 数据库
+        /// </summary>
+        [SugarColumn(ColumnDescription = "数据库", Length = 50, ColumnName = "title")]
+        public string? title { get; set; }
+
+
         /// <summary>
         /// 项目
         /// </summary>

+ 7 - 0
Model/Database/PriPrizeInTable.cs

@@ -80,6 +80,13 @@ namespace Model
         public string? excuteKind { get; set; }
 
 
+        /// <summary>
+        /// 查询库
+        /// </summary>
+        [SugarColumn(ColumnDescription = "查询库", ColumnName = "database_id")]
+        public int databaseId { get; set; }
+
+
 
     }
 }

+ 7 - 0
Model/Database/PriPrizeObjectTable.cs

@@ -80,6 +80,13 @@ namespace Model
         public string? selectField { get; set; }
 
 
+        /// <summary>
+        /// 查询库
+        /// </summary>
+        [SugarColumn(ColumnDescription = "查询库", ColumnName = "database_id")]
+        public int databaseId { get; set; }
+
+
 
     }
 }

+ 7 - 0
Model/Database/PriQueryTable.cs

@@ -73,6 +73,13 @@ namespace Model
         public int projectId { get; set; }
 
 
+        /// <summary>
+        /// 查询库
+        /// </summary>
+        [SugarColumn(ColumnDescription = "查询库", ColumnName = "database_id")]
+        public int databaseId { get; set; }
+
+
 
     }
 }

+ 7 - 0
Model/Database/PriRecursionEndTable.cs

@@ -59,6 +59,13 @@ namespace Model
         public int status { get; set; }
 
 
+        /// <summary>
+        /// 查询库
+        /// </summary>
+        [SugarColumn(ColumnDescription = "查询库", ColumnName = "database_id")]
+        public int databaseId { get; set; }
+
+
         /// <summary>
         /// ID
         /// </summary>

+ 7 - 0
Model/Database/PriRecursionStartTable.cs

@@ -73,6 +73,13 @@ namespace Model
         public int listId { get; set; }
 
 
+        /// <summary>
+        /// 查询库
+        /// </summary>
+        [SugarColumn(ColumnDescription = "查询库", ColumnName = "database_id")]
+        public int databaseId { get; set; }
+
+
 
     }
 }

+ 24 - 0
Model/Vo/Admin/GetPriDatabaseSetDicVo.cs

@@ -0,0 +1,24 @@
+using Newtonsoft.Json;
+
+namespace Vo.Admin
+{
+    /// <summary>
+    /// 下拉框数据
+    /// </summary>
+    public class GetPriDatabaseSetDicVo
+    {
+        /// <summary>
+        /// ID
+        /// </summary>
+        public int id { get; set; }
+
+
+        /// <summary>
+        /// 数据库说明
+        /// </summary>
+        public string title { get; set; }
+
+
+
+    }
+}

+ 6 - 0
Model/Vo/Admin/GetPriDatabaseSetListVo.cs

@@ -37,6 +37,12 @@ namespace Vo.Admin
         public string password { get; set; }
 
 
+        /// <summary>
+        /// 数据库名称
+        /// </summary>
+        public string title { get; set; }
+
+
 
     }
 }

+ 6 - 0
Model/Vo/Admin/GetPriDatabaseSetQueryVo.cs

@@ -43,6 +43,12 @@ namespace Vo.Admin
         public string databaseName { get; set; }
 
 
+        /// <summary>
+        /// 数据库名称
+        /// </summary>
+        public string title { get; set; }
+
+
         /// <summary>
         /// 项目
         /// </summary>

+ 6 - 0
Model/Vo/Admin/GetPriPrizeInTableQueryVo.cs

@@ -31,6 +31,12 @@ namespace Vo.Admin
         public string excuteKind { get; set; }
 
 
+        /// <summary>
+        /// 查询库
+        /// </summary>
+        public int databaseId { get; set; }
+
+
 
     }
 }

+ 6 - 0
Model/Vo/Admin/GetPriPrizeObjectTableQueryVo.cs

@@ -39,6 +39,12 @@ namespace Vo.Admin
         public string selectField { get; set; }
 
 
+        /// <summary>
+        /// 查询库
+        /// </summary>
+        public int databaseId { get; set; }
+
+
 
     }
 }

+ 6 - 0
Model/Vo/Admin/GetPriQueryTableDicVo.cs

@@ -13,6 +13,12 @@ namespace Vo.Admin
         public string tableEnName { get; set; }
 
 
+        /// <summary>
+        /// 说明
+        /// </summary>
+        public string summary { get; set; }
+
+
         /// <summary>
         /// ID
         /// </summary>

+ 6 - 0
Model/Vo/Admin/GetPriQueryTableQueryVo.cs

@@ -31,6 +31,12 @@ namespace Vo.Admin
         public int projectId { get; set; }
 
 
+        /// <summary>
+        /// 查询库
+        /// </summary>
+        public int databaseId { get; set; }
+
+
 
     }
 }

+ 6 - 0
Model/Vo/Admin/GetPriRecursionEndTableQueryVo.cs

@@ -25,6 +25,12 @@ namespace Vo.Admin
         public int id { get; set; }
 
 
+        /// <summary>
+        /// 查询库
+        /// </summary>
+        public int databaseId { get; set; }
+
+
 
     }
 }

+ 6 - 0
Model/Vo/Admin/GetPriRecursionStartTableQueryVo.cs

@@ -25,6 +25,12 @@ namespace Vo.Admin
         public int listId { get; set; }
 
 
+        /// <summary>
+        /// 查询库
+        /// </summary>
+        public int databaseId { get; set; }
+
+
 
     }
 }

+ 8 - 0
Services/IService/IPriDatabaseSetService.cs

@@ -17,6 +17,14 @@ namespace Services
         PagedInfo<GetPriDatabaseSetListVo> getPriDatabaseSetList([FromQuery] PagerInfo page, [FromQuery] PriDatabaseSet param);
 
 
+        /// <summary>
+        /// 数据库连接配置-下拉框数据
+        /// </summary>
+        /// <param name="page">分页参数</param>
+        /// <returns>下拉框数据</returns>
+        PagedInfo<GetPriDatabaseSetDicVo> getPriDatabaseSetDic([FromQuery] PagerInfo page);
+
+
 
     }
 }

+ 17 - 0
Services/PriDatabaseSetService.cs

@@ -36,6 +36,23 @@ namespace Services
         }
 
 
+        /// <summary>
+        /// 数据库连接配置-下拉框数据
+        /// </summary>
+        /// <param name="page">分页参数</param>
+        /// <returns>下拉框数据</returns>
+        public PagedInfo<GetPriDatabaseSetDicVo> getPriDatabaseSetDic([FromQuery] PagerInfo page)
+        {
+            //拼装查询条件
+            var predicate = Expressionable.Create<PriDatabaseSet>();
+            var response = Queryable()
+                .Where(predicate.ToExpression())
+                .OrderByDescending(m => m.id)
+                .ToPage<PriDatabaseSet, GetPriDatabaseSetDicVo>(page);
+            return response;
+        }
+
+
 
     }
 }

+ 151 - 7
Util/PrizeDo.cs

@@ -42,10 +42,10 @@ namespace Util
         }
 
         //数据库链接
-        public static SqlSugarClient initDb(int projectId)
+        public static SqlSugarClient initDb(int id)
         {
             var databaseSetService = App.GetService<IPriDatabaseSetService>();
-            var connectionString = databaseSetService.GetFirst(m => m.projectId == projectId);
+            var connectionString = databaseSetService.GetFirst(m => m.id == id);
             string server = connectionString.ipAddress;
             int port = connectionString.port;
             string user = connectionString.userId;
@@ -102,6 +102,10 @@ namespace Util
                         {
                             condi += "'%" + GetExpressionVal(fieldQueryValue) + "%'";
                         }
+                        else if(fieldQueryModel == "db_field")
+                        {
+                            condi += "'%" + GetDbExpressionVal(fieldQueryValue) + "%'";
+                        }
                     }
                     else if(fieldQueryKind == "2") //精确匹配
                     {
@@ -119,6 +123,10 @@ namespace Util
                             {
                                 val = GetExpressionVal(fieldQueryValue);
                             }
+                            else if(fieldQueryModel == "db_field")
+                            {
+                                val = GetDbExpressionVal(fieldQueryValue);
+                            }
                             if(fieldQueryValueType == "text")
                             {
                                 val = "'" + val + "'";
@@ -161,6 +169,20 @@ namespace Util
                                 }
                             }
                         }
+                        else if(fieldQueryModel == "db_field")
+                        {
+                            foreach(string sub in valList)
+                            {
+                                if(fieldQueryValueType == "text")
+                                {
+                                    val += "'" + GetDbExpressionVal(sub) + "',";
+                                }
+                                else
+                                {
+                                    val += GetDbExpressionVal(sub) + ",";
+                                }
+                            }
+                        }
                         val = val.TrimEnd(',');
                         condi += val + ")";
                     }
@@ -194,6 +216,19 @@ namespace Util
                                 if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<='" + GetExpressionVal(val[1]) + "'";
                             }
                         }
+                        else if(fieldQueryModel == "db_field")
+                        {
+                            if(fieldQueryValueType == "number")
+                            {
+                                if(!string.IsNullOrEmpty(val[0])) condi += " and " + fieldEnName + ">=" + val[0];
+                                if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<=" + val[1];
+                            }
+                            else
+                            {
+                                if(!string.IsNullOrEmpty(val[0])) condi += " and " + fieldEnName + ">='" + GetDbExpressionVal(val[0]) + "'";
+                                if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<='" + GetDbExpressionVal(val[1]) + "'";
+                            }
+                        }
                     }
                     else if(fieldQueryKind == "4") //取反匹配
                     {
@@ -211,6 +246,10 @@ namespace Util
                             {
                                 val = GetExpressionVal(fieldQueryValue);
                             }
+                            else if(fieldQueryModel == "db_field")
+                            {
+                                val = GetDbExpressionVal(fieldQueryValue);
+                            }
                             if(fieldQueryValueType == "text")
                             {
                                 val = "'" + val + "'";
@@ -220,7 +259,7 @@ namespace Util
                     }
                 }
 
-                var db = initDb(projectId);
+                var db = initDb(queryTable.databaseId);
                 string sql = "select " + fields + " from " + queryTable.tableEnName + " where 1=1" + condi;
                 var items = db.Ado.GetDataTable(sql);
                 if(items.Rows.Count > 0)
@@ -267,6 +306,10 @@ namespace Util
                     {
                         condi += "'%" + GetExpressionVal(fieldQueryValue) + "%'";
                     }
+                    else if(fieldQueryModel == "db_field")
+                    {
+                        condi += "'%" + GetDbExpressionVal(fieldQueryValue) + "%'";
+                    }
                 }
                 else if(fieldQueryKind == "2") //精确匹配
                 {
@@ -281,6 +324,10 @@ namespace Util
                     {
                         val = GetExpressionVal(fieldQueryValue);
                     }
+                    else if(fieldQueryModel == "db_field")
+                    {
+                        val = GetDbExpressionVal(fieldQueryValue);
+                    }
                     if(fieldQueryValueType == "text")
                     {
                         val = "'" + val + "'";
@@ -322,6 +369,20 @@ namespace Util
                             }
                         }
                     }
+                    else if(fieldQueryModel == "db_field")
+                    {
+                        foreach(string sub in valList)
+                        {
+                            if(fieldQueryValueType == "text")
+                            {
+                                val += "'" + GetDbExpressionVal(sub) + "',";
+                            }
+                            else
+                            {
+                                val += GetDbExpressionVal(sub) + ",";
+                            }
+                        }
+                    }
                     val = val.TrimEnd(',');
                     condi += val + ")";
                 }
@@ -355,6 +416,19 @@ namespace Util
                             if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<='" + GetExpressionVal(val[1]) + "'";
                         }
                     }
+                    else if(fieldQueryModel == "db_field")
+                    {
+                        if(fieldQueryValueType == "number")
+                        {
+                            if(!string.IsNullOrEmpty(val[0])) condi += " and " + fieldEnName + ">=" + val[0];
+                            if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<=" + val[1];
+                        }
+                        else
+                        {
+                            if(!string.IsNullOrEmpty(val[0])) condi += " and " + fieldEnName + ">='" + GetDbExpressionVal(val[0]) + "'";
+                            if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<='" + GetDbExpressionVal(val[1]) + "'";
+                        }
+                    }
                 }
                 else if(fieldQueryKind == "4") //取反匹配
                 {
@@ -369,6 +443,10 @@ namespace Util
                     {
                         val = GetExpressionVal(fieldQueryValue);
                     }
+                    else if(fieldQueryModel == "db_field")
+                    {
+                        val = GetDbExpressionVal(fieldQueryValue);
+                    }
                     if(fieldQueryValueType == "text")
                     {
                         val = "'" + val + "'";
@@ -377,7 +455,7 @@ namespace Util
                 }
             }
 
-            var db = initDb(projectId);
+            var db = initDb(prizeObjectTable.databaseId);
             var item = db.Ado.GetScalar("select " + field + " from " + prizeObjectTable.tableEnName + " where 1=1" + condi);
             if(item != null)
             {
@@ -407,11 +485,12 @@ namespace Util
                     var loopSetService = App.GetService<IPriLoopSetService>();
                     var recursionStartTableService = App.GetService<IPriRecursionStartTableService>();
                     var loopSet = loopSetService.GetFirst(m => m.listId == sub.id) ?? new PriLoopSet();
+                    var recursionStartTable = recursionStartTableService.GetFirst(m => m.listId == sub.id) ?? new PriRecursionStartTable();
                     var tableEnName = loopSet.tableEnName; //递归查询表
                     var parentField = loopSet.parentField; //父字段
                     var sonField = loopSet.sonField; //子字段
                     var afterPrizeFlag = loopSet.afterPrizeFlag; //发奖后是否继续
-                    var db = initDb(projectId);
+                    var db = initDb(recursionStartTable.databaseId);
                     string objId = prizeObjectId;
                     bool op = true;
                     while(!string.IsNullOrEmpty(objId) && objId != "0" && op)
@@ -639,6 +718,10 @@ namespace Util
                         {
                             condi += "'%" + GetExpressionVal(fieldQueryValue) + "%'";
                         }
+                        else if(fieldQueryModel == "db_field")
+                        {
+                            condi += "'%" + GetDbExpressionVal(fieldQueryValue) + "%'";
+                        }
                     }
                     else if(fieldQueryKind == "2") //精确匹配
                     {
@@ -653,6 +736,10 @@ namespace Util
                         {
                             val = GetExpressionVal(fieldQueryValue);
                         }
+                        else if(fieldQueryModel == "db_field")
+                        {
+                            val = GetDbExpressionVal(fieldQueryValue);
+                        }
                         if(fieldQueryValueType == "text")
                         {
                             val = "'" + val + "'";
@@ -694,6 +781,20 @@ namespace Util
                                 }
                             }
                         }
+                        else if(fieldQueryModel == "db_field")
+                        {
+                            foreach(string subval in valList)
+                            {
+                                if(fieldQueryValueType == "text")
+                                {
+                                    val += "'" + GetDbExpressionVal(subval) + "',";
+                                }
+                                else
+                                {
+                                    val += GetDbExpressionVal(subval) + ",";
+                                }
+                            }
+                        }
                         val = val.TrimEnd(',');
                         condi += val + ")";
                     }
@@ -727,6 +828,19 @@ namespace Util
                                 if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<='" + GetExpressionVal(val[1]) + "'";
                             }
                         }
+                        else if(fieldQueryModel == "db_field")
+                        {
+                            if(fieldQueryValueType == "number")
+                            {
+                                if(!string.IsNullOrEmpty(val[0])) condi += " and " + fieldEnName + ">=" + val[0];
+                                if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<=" + val[1];
+                            }
+                            else
+                            {
+                                if(!string.IsNullOrEmpty(val[0])) condi += " and " + fieldEnName + ">='" + GetDbExpressionVal(val[0]) + "'";
+                                if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<='" + GetDbExpressionVal(val[1]) + "'";
+                            }
+                        }
                     }
                     else if(fieldQueryKind == "4") //取反匹配
                     {
@@ -741,6 +855,10 @@ namespace Util
                         {
                             val = GetExpressionVal(fieldQueryValue);
                         }
+                        else if(fieldQueryModel == "db_field")
+                        {
+                            val = GetDbExpressionVal(fieldQueryValue);
+                        }
                         if(fieldQueryValueType == "text")
                         {
                             val = "'" + val + "'";
@@ -749,7 +867,7 @@ namespace Util
                     }
                 }
 
-                var db = initDb(projectId);
+                var db = initDb(queryTable.databaseId);
                 var item = db.Ado.GetScalar("select " + fields + " from " + queryTable.tableEnName + " where 1=1" + condi);
                 if(item != null) passCount += 1;
             }
@@ -765,12 +883,12 @@ namespace Util
             var prizeInTableService = App.GetService<IPriPrizeInTableService>();
             var prizeInFieldService = App.GetService<IPriPrizeInFieldService>();
             var prizeInQueryFieldService = App.GetService<IPriPrizeInQueryFieldService>();
-            var db = initDb(projectId);
 
             //入库表
             var prizeInTables = prizeInTableService.GetList(m => m.projectId == projectId);
             foreach(var prizeInTable in prizeInTables)
             {
+                var db = initDb(prizeInTable.databaseId);
                 Dictionary<string, object> doFields = new Dictionary<string, object>();
                 //入库字段
                 var prizeInFields = prizeInFieldService.GetList(m => m.inTableId == prizeInTable.id);
@@ -789,6 +907,10 @@ namespace Util
                     {
                         fieldQueryValue = GetExpressionVal(fieldQueryValue);
                     }
+                    else if(fieldQueryModel == "db_field")
+                    {
+                        fieldQueryValue = GetDbExpressionVal(fieldQueryValue);
+                    }
                     if(fieldQueryValueType == "text") doFields.Add(fieldEnName, fieldQueryValue);
                     if(fieldQueryValueType == "int") doFields.Add(fieldEnName, int.Parse(fieldQueryValue));
                     if(fieldQueryValueType == "number") doFields.Add(fieldEnName, decimal.Parse(fieldQueryValue));
@@ -873,6 +995,20 @@ namespace Util
                                 }
                             }
                         }
+                        else if(fieldQueryModel == "db_field")
+                        {
+                            foreach(string sub in valList)
+                            {
+                                if(fieldQueryValueType == "text")
+                                {
+                                    val += "'" + GetDbExpressionVal(sub) + "',";
+                                }
+                                else
+                                {
+                                    val += GetDbExpressionVal(sub) + ",";
+                                }
+                            }
+                        }
                         val = val.TrimEnd(',');
                         condi += val + ")";
                     }
@@ -948,5 +1084,13 @@ namespace Util
             if(str.StartsWith("#{this_month") && str.EndsWith("MONTH}#")) str = DateTime.Now.AddMonths(int.Parse(str.Replace("#", "").Replace("{", "").Replace("}", "").Split(',')[1])).ToString("yyyy-MM");
             return str;
         }
+
+        //库内字段值表达式
+        public static string GetDbExpressionVal(string str)
+        {
+            if(str.StartsWith("#{now") && str.EndsWith("DAY}#")) str = "DATE_ADD(" + str + ",INTERVAL " + str.Replace("#", "").Replace("{", "").Replace("}", "").Split(',')[1] + " DAY)";
+            if(str.StartsWith("#{now") && str.EndsWith("MONTH}#")) str = "DATE_ADD(" + str + ",INTERVAL " + str.Replace("#", "").Replace("{", "").Replace("}", "").Split(',')[1] + " MONTH)";
+            return str;
+        }
     }
 }