lcl hai 2 meses
pai
achega
ab22fc4383
Modificáronse 3 ficheiros con 247 adicións e 212 borrados
  1. BIN=BIN
      .DS_Store
  2. 3 1
      Program.cs
  3. 244 211
      Util/PrizeDo.cs

BIN=BIN
.DS_Store


+ 3 - 1
Program.cs

@@ -131,7 +131,9 @@ app.Urls.Add("http://*:5802");
 // PrizeDo.sendPrize(7, "{\"OrderNo\":\"BM2024090817330511847441249\"}");
 // PrizeDo.sendPrize(7, "{\"OrderNo\":\"BM2024090817360962275551251\"}");
 
-RabbitMQClient.Instance.Start();
+PrizeDo.sendPrize("KXS_LEADER_STA_PRIZE", "{\"month\":\"202411\"}");
+
+// RabbitMQClient.Instance.Start();
 
 // CopyProject.Copy(5, 7);
 

+ 244 - 211
Util/PrizeDo.cs

@@ -100,7 +100,7 @@ namespace Util
             {
                 return jsonData[param.fieldEnName].ToString();
             }
-            return "0";
+            return key;
         }
 
         //数据库链接
@@ -149,6 +149,7 @@ namespace Util
                     {
                         string aliasName = returnField.fieldAliasName;
                         if(string.IsNullOrEmpty(aliasName)) aliasName = tableEnName + "_" + returnField.fieldEnName;
+                        if(aliasName.Contains("-")) aliasName = aliasName.Split('-')[0];
                         if(returnField.fieldReturnKind == "2")
                         {
                             fields += "count(" + returnField.fieldEnName + ") " + aliasName + ",";
@@ -191,6 +192,7 @@ namespace Util
                         string fieldQueryKind = queryField.fieldQueryKind;
                         string fieldQueryModel = queryField.fieldQueryModel;
                         string fieldQueryValue = queryField.fieldQueryValue;
+                        fieldQueryValue = MatchExpressionVal(fieldQueryValue);
                         string fieldQueryValueType = queryField.fieldQueryValueType;
                         if(fieldQueryKind == "1") //模糊匹配
                         {
@@ -499,278 +501,287 @@ namespace Util
             var queryTable = queryTableService.GetFirst(m => ids.Contains(m.id) && m.startDataFlag == true);
             if (queryTable != null)
             {
-                string groupBy = "";
-                string tableEnName = queryTable.tableEnName;
-                if(tableEnName.Contains("#{")) tableEnName = MatchExpressionVal(tableEnName);
-
-                //查询返回字段
-                string fields = "";
-                Dictionary<string, string> fieldDic = new();
-                var returnFields = returnFieldService.GetList(m => m.queryTableId == queryTable.id);
-                foreach(var returnField in returnFields)
-                {
-                    if(returnField.fieldReturnKind == "2")
-                    {
-                        fields += "count(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
-                    }
-                    else if(returnField.fieldReturnKind == "3")
-                    {
-                        fields += "sum(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
-                    }
-                    else if(returnField.fieldReturnKind == "4")
-                    {
-                        fields += "avg(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
-                    }
-                    else if(returnField.fieldReturnKind == "5")
-                    {
-                        fields += "max(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
-                    }
-                    else if(returnField.fieldReturnKind == "6")
-                    {
-                        fields += "min(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
-                    }
-                    else
-                    {
-                        fields += returnField.fieldEnName + " " + tableEnName + "_" + returnField.fieldEnName + ",";
-                    }
-                    fieldDic.Add(tableEnName + "_" + returnField.fieldEnName, returnField.fieldName);
-                }
-                fields = fields.TrimEnd(',');
-
-                //查询匹配条件
-                string condi = "";
-                var queryFields = queryFieldService.GetList(m => m.queryTableId == queryTable.id);
-                foreach(var queryField in queryFields)
+                string sql = "";
+                if(string.IsNullOrEmpty(queryTable.customSql))
                 {
-                    string fieldEnName = queryField.fieldEnName;
-                    string fieldQueryKind = queryField.fieldQueryKind;
-                    string fieldQueryModel = queryField.fieldQueryModel;
-                    string fieldQueryValue = queryField.fieldQueryValue;
-                    string fieldQueryValueType = queryField.fieldQueryValueType;
+                    string groupBy = "";
+                    string tableEnName = queryTable.tableEnName;
+                    if(tableEnName.Contains("#{")) tableEnName = MatchExpressionVal(tableEnName);
 
-                    //拼装聚合字段
-                    if(queryField.groupByFlag)
+                    //查询返回字段
+                    string fields = "";
+                    Dictionary<string, string> fieldDic = new();
+                    var returnFields = returnFieldService.GetList(m => m.queryTableId == queryTable.id);
+                    foreach(var returnField in returnFields)
                     {
-                        groupBy += queryField.fieldEnName + ",";
+                        if(returnField.fieldReturnKind == "2")
+                        {
+                            fields += "count(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
+                        }
+                        else if(returnField.fieldReturnKind == "3")
+                        {
+                            fields += "sum(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
+                        }
+                        else if(returnField.fieldReturnKind == "4")
+                        {
+                            fields += "avg(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
+                        }
+                        else if(returnField.fieldReturnKind == "5")
+                        {
+                            fields += "max(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
+                        }
+                        else if(returnField.fieldReturnKind == "6")
+                        {
+                            fields += "min(" + returnField.fieldEnName + ") " + tableEnName + "_" + returnField.fieldEnName.Split('+')[0] + ",";
+                        }
+                        else
+                        {
+                            fields += returnField.fieldEnName + " " + tableEnName + "_" + returnField.fieldEnName + ",";
+                        }
+                        fieldDic.Add(tableEnName + "_" + returnField.fieldEnName, returnField.fieldName);
                     }
-                    else
+                    fields = fields.TrimEnd(',');
+
+                    //查询匹配条件
+                    string condi = "";
+                    var queryFields = queryFieldService.GetList(m => m.queryTableId == queryTable.id);
+                    foreach(var queryField in queryFields)
                     {
-                        if(fieldQueryKind == "1") //模糊匹配
+                        string fieldEnName = queryField.fieldEnName;
+                        string fieldQueryKind = queryField.fieldQueryKind;
+                        string fieldQueryModel = queryField.fieldQueryModel;
+                        string fieldQueryValue = queryField.fieldQueryValue;
+                        string fieldQueryValueType = queryField.fieldQueryValueType;
+
+                        //拼装聚合字段
+                        if(queryField.groupByFlag)
                         {
-                            condi += " and " + fieldEnName + " like ";
-                            if(fieldQueryModel == "request_param")
-                            {
-                                Dictionary<string, string> req = getRequestParams(projectId, content);
-                                string val = req.ContainsKey(fieldQueryValue) ? req[fieldQueryValue] : "0";
-                                condi += "'%" + val + "%'";
-                            }
-                            else if(fieldQueryModel == "fixed_value")
-                            {
-                                condi += "'%" + GetExpressionVal(fieldQueryValue) + "%'";
-                            }
-                            else if(fieldQueryModel == "db_field")
-                            {
-                                condi += "'%" + GetDbExpressionVal(fieldQueryValue) + "%'";
-                            }
-                            else if(fieldQueryModel == "query_field")
-                            {
-                                string val = GetQueryTableData(dic, fieldQueryValue);
-                                condi += "'%" + val + "%'";                            
-                            }
+                            groupBy += queryField.fieldEnName + ",";
                         }
-                        else if(fieldQueryKind == "2") //精确匹配
+                        else
                         {
-                            if(fieldQueryValue == "null" && fieldQueryValueType == "text") condi += " and " + fieldEnName + " is null";
-                            else
+                            if(fieldQueryKind == "1") //模糊匹配
                             {
-                                condi += " and " + fieldEnName + "=";
-                                string val = "";
+                                condi += " and " + fieldEnName + " like ";
                                 if(fieldQueryModel == "request_param")
                                 {
                                     Dictionary<string, string> req = getRequestParams(projectId, content);
-                                    val = req.ContainsKey(fieldQueryValue) ? req[fieldQueryValue] : "0";
+                                    string val = req.ContainsKey(fieldQueryValue) ? req[fieldQueryValue] : "0";
+                                    condi += "'%" + val + "%'";
                                 }
                                 else if(fieldQueryModel == "fixed_value")
                                 {
-                                    val = GetExpressionVal(fieldQueryValue);
+                                    condi += "'%" + GetExpressionVal(fieldQueryValue) + "%'";
                                 }
                                 else if(fieldQueryModel == "db_field")
                                 {
-                                    val = GetDbExpressionVal(fieldQueryValue);
+                                    condi += "'%" + GetDbExpressionVal(fieldQueryValue) + "%'";
                                 }
                                 else if(fieldQueryModel == "query_field")
                                 {
-                                    val = GetQueryTableData(dic, fieldQueryValue);
+                                    string val = GetQueryTableData(dic, fieldQueryValue);
+                                    condi += "'%" + val + "%'";                            
                                 }
-                                if(fieldQueryValueType == "text")
-                                {
-                                    val = "'" + val + "'";
-                                }
-                                condi += val;
                             }
-                        }
-                        else if(fieldQueryKind == "5" || fieldQueryKind == "6") //数组匹配/排除
-                        {
-                            if(fieldQueryKind == "5") condi += " and " + fieldEnName + " in (";
-                            else if(fieldQueryKind == "6") condi += " and " + fieldEnName + " not in (";
-                            string val = "";
-                            string[] valList = fieldQueryValue.Split(',');
-                            if(fieldQueryModel == "request_param")
+                            else if(fieldQueryKind == "2") //精确匹配
                             {
-                                Dictionary<string, string> req = getRequestParams(projectId, content);
-                                foreach(string sub in valList)
+                                if(fieldQueryValue == "null" && fieldQueryValueType == "text") condi += " and " + fieldEnName + " is null";
+                                else
                                 {
-                                    if(fieldQueryValueType == "text")
+                                    condi += " and " + fieldEnName + "=";
+                                    string val = "";
+                                    if(fieldQueryModel == "request_param")
                                     {
-                                        val += "'" + req[sub] + "',";
+                                        Dictionary<string, string> req = getRequestParams(projectId, content);
+                                        val = req.ContainsKey(fieldQueryValue) ? req[fieldQueryValue] : "0";
                                     }
-                                    else
+                                    else if(fieldQueryModel == "fixed_value")
                                     {
-                                        val += req[sub] + ",";
+                                        val = GetExpressionVal(fieldQueryValue);
                                     }
-                                }
-                            }
-                            else if(fieldQueryModel == "fixed_value")
-                            {
-                                foreach(string sub in valList)
-                                {
-                                    if(fieldQueryValueType == "text")
+                                    else if(fieldQueryModel == "db_field")
                                     {
-                                        val += "'" + GetExpressionVal(sub) + "',";
+                                        val = GetDbExpressionVal(fieldQueryValue);
                                     }
-                                    else
+                                    else if(fieldQueryModel == "query_field")
                                     {
-                                        val += GetExpressionVal(sub) + ",";
+                                        val = GetQueryTableData(dic, fieldQueryValue);
                                     }
-                                }
-                            }
-                            else if(fieldQueryModel == "db_field")
-                            {
-                                foreach(string sub in valList)
-                                {
                                     if(fieldQueryValueType == "text")
                                     {
-                                        val += "'" + GetDbExpressionVal(sub) + "',";
-                                    }
-                                    else
-                                    {
-                                        val += GetDbExpressionVal(sub) + ",";
+                                        val = "'" + val + "'";
                                     }
+                                    condi += val;
                                 }
                             }
-                            else if(fieldQueryModel == "query_field")
+                            else if(fieldQueryKind == "5" || fieldQueryKind == "6") //数组匹配/排除
                             {
-                                foreach(string sub in valList)
+                                if(fieldQueryKind == "5") condi += " and " + fieldEnName + " in (";
+                                else if(fieldQueryKind == "6") condi += " and " + fieldEnName + " not in (";
+                                string val = "";
+                                string[] valList = fieldQueryValue.Split(',');
+                                if(fieldQueryModel == "request_param")
                                 {
-                                    string dicVal = GetQueryTableData(dic, sub);
-                                    if(fieldQueryValueType == "text")
-                                    {
-                                        val += "'" + dicVal + "',";
-                                    }
-                                    else
+                                    Dictionary<string, string> req = getRequestParams(projectId, content);
+                                    foreach(string sub in valList)
                                     {
-                                        val += dicVal + ",";
+                                        if(fieldQueryValueType == "text")
+                                        {
+                                            val += "'" + req[sub] + "',";
+                                        }
+                                        else
+                                        {
+                                            val += req[sub] + ",";
+                                        }
                                     }
-                                }                       
-                            }
-                            val = val.TrimEnd(',');
-                            condi += val + ")";
-                        }
-                        else if(fieldQueryKind == "3") //范围匹配
-                        {
-                            string[] val = fieldQueryValue.Split(':');
-                            if(fieldQueryModel == "request_param")
-                            {
-                                Dictionary<string, string> req = getRequestParams(projectId, content);
-                                if(fieldQueryValueType == "number")
-                                {
-                                    if(!string.IsNullOrEmpty(req[val[0]])) condi += " and " + fieldEnName + ">=" + req[val[0]];
-                                    if(!string.IsNullOrEmpty(req[val[1]])) condi += " and " + fieldEnName + "<=" + req[val[1]];
-                                }
-                                else
-                                {
-                                    if(!string.IsNullOrEmpty(req[val[0]])) condi += " and " + fieldEnName + ">='" + req[val[0]] + "'";
-                                    if(!string.IsNullOrEmpty(req[val[1]])) condi += " and " + fieldEnName + "<='" + req[val[1]] + "'";
-                                }
-                            }
-                            else if(fieldQueryModel == "fixed_value")
-                            {
-                                if(fieldQueryValueType == "number")
-                                {
-                                    if(!string.IsNullOrEmpty(val[0])) condi += " and " + fieldEnName + ">=" + val[0];
-                                    if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<=" + val[1];
                                 }
-                                else
+                                else if(fieldQueryModel == "fixed_value")
                                 {
-                                    if(!string.IsNullOrEmpty(val[0])) condi += " and " + fieldEnName + ">='" + GetExpressionVal(val[0]) + "'";
-                                    if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<='" + GetExpressionVal(val[1]) + "'";
+                                    foreach(string sub in valList)
+                                    {
+                                        if(fieldQueryValueType == "text")
+                                        {
+                                            val += "'" + GetExpressionVal(sub) + "',";
+                                        }
+                                        else
+                                        {
+                                            val += GetExpressionVal(sub) + ",";
+                                        }
+                                    }
                                 }
-                            }
-                            else if(fieldQueryModel == "db_field")
-                            {
-                                if(!string.IsNullOrEmpty(val[0])) condi += " and " + fieldEnName + ">=" + GetDbExpressionVal(val[0]);
-                                if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<=" + GetDbExpressionVal(val[1]);
-                            }
-                            else if(fieldQueryModel == "query_field")
-                            {
-                                string valLeft = val[0];
-                                string valRight = val[1];
-                                string dicValLeft = GetQueryTableData(dic, valLeft);
-                                string dicValRight = GetQueryTableData(dic, valRight);
-                                if(fieldQueryValueType == "number")
+                                else if(fieldQueryModel == "db_field")
                                 {
-                                    if(!string.IsNullOrEmpty(dicValLeft)) condi += " and " + fieldEnName + ">=" + dicValLeft;
-                                    if(!string.IsNullOrEmpty(dicValRight)) condi += " and " + fieldEnName + "<=" + dicValRight;
+                                    foreach(string sub in valList)
+                                    {
+                                        if(fieldQueryValueType == "text")
+                                        {
+                                            val += "'" + GetDbExpressionVal(sub) + "',";
+                                        }
+                                        else
+                                        {
+                                            val += GetDbExpressionVal(sub) + ",";
+                                        }
+                                    }
                                 }
-                                else
+                                else if(fieldQueryModel == "query_field")
                                 {
-                                    if(!string.IsNullOrEmpty(dicValLeft)) condi += " and " + fieldEnName + ">='" + GetExpressionVal(dicValLeft) + "'";
-                                    if(!string.IsNullOrEmpty(dicValRight)) condi += " and " + fieldEnName + "<='" + GetExpressionVal(dicValRight) + "'";
+                                    foreach(string sub in valList)
+                                    {
+                                        string dicVal = GetQueryTableData(dic, sub);
+                                        if(fieldQueryValueType == "text")
+                                        {
+                                            val += "'" + dicVal + "',";
+                                        }
+                                        else
+                                        {
+                                            val += dicVal + ",";
+                                        }
+                                    }                       
                                 }
+                                val = val.TrimEnd(',');
+                                condi += val + ")";
                             }
-                        }
-                        else if(fieldQueryKind == "4") //取反匹配
-                        {
-                            if(fieldQueryValue == "null" && fieldQueryValueType == "text") condi += " and " + fieldEnName + " is not null";
-                            else
+                            else if(fieldQueryKind == "3") //范围匹配
                             {
-                                condi += " and " + fieldEnName + "!=";
-                                string val = "";
+                                string[] val = fieldQueryValue.Split(':');
                                 if(fieldQueryModel == "request_param")
                                 {
                                     Dictionary<string, string> req = getRequestParams(projectId, content);
-                                    val = req.ContainsKey(fieldQueryValue) ? req[fieldQueryValue] : "0";
+                                    if(fieldQueryValueType == "number")
+                                    {
+                                        if(!string.IsNullOrEmpty(req[val[0]])) condi += " and " + fieldEnName + ">=" + req[val[0]];
+                                        if(!string.IsNullOrEmpty(req[val[1]])) condi += " and " + fieldEnName + "<=" + req[val[1]];
+                                    }
+                                    else
+                                    {
+                                        if(!string.IsNullOrEmpty(req[val[0]])) condi += " and " + fieldEnName + ">='" + req[val[0]] + "'";
+                                        if(!string.IsNullOrEmpty(req[val[1]])) condi += " and " + fieldEnName + "<='" + req[val[1]] + "'";
+                                    }
                                 }
                                 else if(fieldQueryModel == "fixed_value")
                                 {
-                                    val = GetExpressionVal(fieldQueryValue);
+                                    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 + ">='" + GetExpressionVal(val[0]) + "'";
+                                        if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<='" + GetExpressionVal(val[1]) + "'";
+                                    }
                                 }
                                 else if(fieldQueryModel == "db_field")
                                 {
-                                    val = GetDbExpressionVal(fieldQueryValue);
+                                    if(!string.IsNullOrEmpty(val[0])) condi += " and " + fieldEnName + ">=" + GetDbExpressionVal(val[0]);
+                                    if(!string.IsNullOrEmpty(val[1])) condi += " and " + fieldEnName + "<=" + GetDbExpressionVal(val[1]);
                                 }
                                 else if(fieldQueryModel == "query_field")
                                 {
-                                    val = GetQueryTableData(dic, fieldQueryValue);
+                                    string valLeft = val[0];
+                                    string valRight = val[1];
+                                    string dicValLeft = GetQueryTableData(dic, valLeft);
+                                    string dicValRight = GetQueryTableData(dic, valRight);
+                                    if(fieldQueryValueType == "number")
+                                    {
+                                        if(!string.IsNullOrEmpty(dicValLeft)) condi += " and " + fieldEnName + ">=" + dicValLeft;
+                                        if(!string.IsNullOrEmpty(dicValRight)) condi += " and " + fieldEnName + "<=" + dicValRight;
+                                    }
+                                    else
+                                    {
+                                        if(!string.IsNullOrEmpty(dicValLeft)) condi += " and " + fieldEnName + ">='" + GetExpressionVal(dicValLeft) + "'";
+                                        if(!string.IsNullOrEmpty(dicValRight)) condi += " and " + fieldEnName + "<='" + GetExpressionVal(dicValRight) + "'";
+                                    }
                                 }
-                                if(fieldQueryValueType == "text")
+                            }
+                            else if(fieldQueryKind == "4") //取反匹配
+                            {
+                                if(fieldQueryValue == "null" && fieldQueryValueType == "text") condi += " and " + fieldEnName + " is not null";
+                                else
                                 {
-                                    val = "'" + val + "'";
+                                    condi += " and " + fieldEnName + "!=";
+                                    string val = "";
+                                    if(fieldQueryModel == "request_param")
+                                    {
+                                        Dictionary<string, string> req = getRequestParams(projectId, content);
+                                        val = req.ContainsKey(fieldQueryValue) ? req[fieldQueryValue] : "0";
+                                    }
+                                    else if(fieldQueryModel == "fixed_value")
+                                    {
+                                        val = GetExpressionVal(fieldQueryValue);
+                                    }
+                                    else if(fieldQueryModel == "db_field")
+                                    {
+                                        val = GetDbExpressionVal(fieldQueryValue);
+                                    }
+                                    else if(fieldQueryModel == "query_field")
+                                    {
+                                        val = GetQueryTableData(dic, fieldQueryValue);
+                                    }
+                                    if(fieldQueryValueType == "text")
+                                    {
+                                        val = "'" + val + "'";
+                                    }
+                                    condi += val;
                                 }
-                                condi += val;
                             }
                         }
                     }
-                }
 
-                if(!string.IsNullOrEmpty(groupBy)) groupBy = " group by " + groupBy.TrimEnd(',') + " order by " + groupBy.TrimEnd(',');
+                    if(!string.IsNullOrEmpty(groupBy)) groupBy = " group by " + groupBy.TrimEnd(',') + " order by " + groupBy.TrimEnd(',');
 
-                var db = initDb(queryTable.databaseId);
-                if(!string.IsNullOrEmpty(queryTable.tableEnName))
+                    if(!string.IsNullOrEmpty(queryTable.orderBy))
+                    {
+                        groupBy += " " + queryTable.orderBy;
+                    }
+                    sql = "select " + fields + " from " + tableEnName + " where 1=1" + condi + groupBy + " limit " + skip + "," + size;
+                }
+                else
                 {
-                    groupBy += " " + queryTable.tableEnName;
+                    sql = queryTable.customSql;
                 }
-                string sql = "select " + fields + " from " + tableEnName + " where 1=1" + condi + groupBy + " limit " + skip + "," + size;
+
+                var db = initDb(queryTable.databaseId);
                 var items = db.Ado.GetDataTable(sql);
                 return items;
             }
@@ -788,6 +799,7 @@ namespace Util
             var prizeObjectTable = prizeObjectTableService.GetFirst(m => m.id == prizeObjectTag) ?? new PriPrizeObjectTable();
             //查询返回字段
             string field = prizeObjectTable.selectField;
+            if(string.IsNullOrEmpty(field)) return "0";
             int projectId = prizeObjectTable.projectId;
 
             logStepDic.Add("奖励发放对象说明", prizeObjectTable.note);
@@ -1982,11 +1994,11 @@ namespace Util
                     setLogPrizeAmount(sub.id, prizeAmt);
                     Function.WriteLog(batchNo + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p14", "接收mq数据日志");
                     var req = getRequestParams(projectId, content);
-                    var requestParamField = req[sub.requestParamField];
+                    // var requestParamField = req[sub.requestParamField];
                     var sendFlag = false;
                     if(!repeatFlag) sendFlag = recordService.Any(m => m.prizeObjId == prizeObjectId && m.listId == sub.id && m.prizeCode == prizeCode && m.requestParamField == content);
                     Function.WriteLog(batchNo + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p15", "接收mq数据日志");
-                    if(!sendFlag)
+                    if(!sendFlag && prizeObjectId != "0" && !string.IsNullOrEmpty(prizeObjectId))
                     {
                         PriRecord item = new PriRecord()
                         {
@@ -2045,6 +2057,10 @@ namespace Util
                         }
                         Function.WriteLog(batchNo + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "-p18", "接收mq数据日志");
                     }
+                    else if(project.requestMode == "db")
+                    {
+                        prizeToDatabase(projectId, sub.id, content, condiDic, prizeAmt, startData); //入库
+                    }
                     loopAmount = getPrizeAmount;
                 }
             }
@@ -2329,6 +2345,8 @@ namespace Util
                     string fieldEnName = prizeInField.fieldEnName;
                     string fieldQueryModel = prizeInField.fieldQueryModel;
                     string fieldQueryValue = prizeInField.fieldQueryValue;
+                    fieldQueryValue = GetDbExpressionVal(fieldQueryValue, projectId, content, condiDic, startData);
+                    fieldQueryValue = MatchExpressionVal(fieldQueryValue);
                     string fieldQueryValueType = prizeInField.fieldQueryValueType;
                     if(fieldQueryModel == "request_param")
                     {
@@ -2337,7 +2355,22 @@ namespace Util
                     }
                     else if(fieldQueryModel == "query_field")
                     {
-                        fieldQueryValue = GetQueryTableData(condiDic, fieldQueryValue);
+                        if (fieldQueryValue.Contains("+") || fieldQueryValue.Contains("-") || fieldQueryValue.Contains("*") || fieldQueryValue.Contains("/") || fieldQueryValue.Contains("(") || fieldQueryValue.Contains(")"))
+                        {
+                            string[] texts = fieldQueryValue.Split(new char[] { '+', '-', '*', '/', '(', ')' });
+                            foreach (string text in texts)
+                            {
+                                string val = GetStartData(startData, text);
+                                if(string.IsNullOrEmpty(val)) val = GetQueryTableData(condiDic, text);
+                                fieldQueryValue = fieldQueryValue.Replace(text, val);
+                            }
+                            DataTable dt = new();
+                            fieldQueryValue = dt.Compute(fieldQueryValue, "false").ToString();
+                        }
+                        else
+                        {
+                            fieldQueryValue = GetQueryTableData(condiDic, fieldQueryValue);
+                        }
                     }
                     else if(fieldQueryModel == "querystart_list_field")
                     {
@@ -2377,8 +2410,8 @@ namespace Util
                         fieldQueryValue = prize_amt.ToString();
                     }
                     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));
+                    if(fieldQueryValueType == "int") doFields.Add(fieldEnName, int.Parse(Function.CheckInt(fieldQueryValue)));
+                    if(fieldQueryValueType == "number") doFields.Add(fieldEnName, decimal.Parse(Function.CheckNum(fieldQueryValue)));
                     if(fieldQueryValueType == "datetime") doFields.Add(fieldEnName, DateTime.Parse(fieldQueryValue));
                     if(fieldQueryValueType == "bool") doFields.Add(fieldEnName, bool.Parse(fieldQueryValue));
 
@@ -2722,9 +2755,9 @@ namespace Util
             {
                 string matchValue = m.Value.Replace("${", "").Replace("}", "");
                 string val = "";
-                if(string.IsNullOrEmpty(val) || val == "0") val = getRequestParams(projectId, content, matchValue);
-                if(string.IsNullOrEmpty(val) || val == "0") val = GetQueryTableData(dic, matchValue);
-                if(string.IsNullOrEmpty(val) || val == "0") val = GetStartData(startData, matchValue);
+                if(string.IsNullOrEmpty(val) || val == matchValue) val = getRequestParams(projectId, content, matchValue);
+                if(string.IsNullOrEmpty(val) || val == matchValue) val = GetQueryTableData(dic, matchValue);
+                if(string.IsNullOrEmpty(val) || val == matchValue) val = GetStartData(startData, matchValue);
                 str = str.Replace(m.Value, val);
             }
             return str;
@@ -2759,13 +2792,13 @@ namespace Util
                 if(m.Success)
                 {
                     string keyString = m.Value.Replace("${", "").Replace("}$", "");
-                    string val = condiDic.Any(m => m.FieldEnName == keyString) ? condiDic.FirstOrDefault(m => m.FieldEnName == keyString).Value.ToString() : "0";
+                    string val = condiDic.Any(m => m.FieldEnName == keyString) ? condiDic.FirstOrDefault(m => m.FieldEnName == keyString).Value.ToString() : key;
                     key = key.Replace(m.Value, val);
                     key = GetExpressionVal(key);
                     return key;
                 }
             }
-            return condiDic.Any(m => m.FieldEnName == key) ? condiDic.FirstOrDefault(m => m.FieldEnName == key).Value.ToString() : "0";
+            return condiDic.Any(m => m.FieldEnName == key) ? condiDic.FirstOrDefault(m => m.FieldEnName == key).Value.ToString() : key;
         }
         public static string GetQueryTableTitle(List<QueryCondition> condiDic, string key)
         {
@@ -2773,7 +2806,7 @@ namespace Util
         }
         public static string GetStartData(Dictionary<string, string> startData, string key)
         {
-            return startData.ContainsKey(key) ? startData[key] : "";
+            return startData.ContainsKey(key) ? startData[key] : key;
         }
 
         //合并字典