lcl 3 mesiacov pred
rodič
commit
f5b7c2bd66
2 zmenil súbory, kde vykonal 44 pridanie a 9 odobranie
  1. 1 1
      Program.cs
  2. 43 8
      Util/PrizeDo.cs

+ 1 - 1
Program.cs

@@ -125,7 +125,7 @@ app.Urls.Add("http://*:5802");
 // PrizeDo.sendPrize("QUEUE_KXS_MACHINE_PRIZE_CONFIG_DIVISION", "{\"brand_id\":12,\"pos_sn\":\"00005702880118407887\",\"user_id\":192332}");
 // PrizeDo.sendPrize("QUEUE_KXS_WIFI_PRIZE_CONFIG_DIVISION", "{\"brand_id\":23,\"pos_sn\":\"1162895007\",\"user_id\":192332}");
 // PrizeDo.sendPrize(4, "{\"PosSn\":\"CS00000000015859\"}");
-// PrizeDo.sendPrize(5, "{\"PosSn\":\"00000302T1NL90664172\"}");
+// PrizeDo.sendPrize("QUEUE_KXS_HAODA_PRIZE_CONFIG_DIVISION", "{\"brand_id\":21,\"pos_sn\":\"00000302T1NL90779290\",\"user_id\":192332}");
 // PrizeDo.sendPrize(6, "{\"PosSn\":\"1152131239\"}");
 // PrizeDo.sendPrize("QUEUE_KXS_PRIZE_MALL_CONFIG_DIVISION", "{\"order_id\":32,\"user_id\":212819}");
 // PrizeDo.sendPrize(7, "{\"OrderNo\":\"BM2024090817330511847441249\"}");

+ 43 - 8
Util/PrizeDo.cs

@@ -92,7 +92,7 @@ namespace Util
             var queryFieldService = App.GetService<IPriQueryFieldService>();
             var returnFieldService = App.GetService<IPriReturnFieldService>();
             //查询表
-            var queryTables = queryTableService.GetList(m => ids.Contains(m.id) && m.startDataFlag == false);
+            var queryTables = queryTableService.GetList(m => ids.Contains(m.id) && m.startDataFlag == false).OrderByDescending(m => m.sort).ThenBy(m => m.id).ToList();
             foreach(var queryTable in queryTables)
             {
                 string sql = "";
@@ -1820,8 +1820,8 @@ namespace Util
                 string prizeSourceData = "";
                 if(prizeSourceField.Contains(","))
                 {
-                    string[] prizeSourceFieldList = prizeSourceField.Split(',');
-                    foreach(string subField in prizeSourceFieldList)
+                    string[] list = prizeSourceField.Split(',');
+                    foreach(string subField in list)
                     {
                         string val = GetQueryTableData(condiDic, subField);
                         prizeSourceData += val + ",";
@@ -1846,9 +1846,15 @@ namespace Util
                     prizeCode = amountSet.prizeCode;
                     repeatFlag = amountSet.repeatFlag;
                 }
-                if(prizeSourceData.Contains(","))
+
+                if(!prizeSourceData.Contains("$") && !prizeSourceData.Contains("=") && prizeSourceData.Contains(","))
                 {
-                    string checkField = prizeSourceData.Split(',')[0] + ",";
+                    string[] prizeSourceDataList = prizeSourceData.Split(',');
+                    string checkField = "";
+                    for (int i = 0; i < prizeSourceDataList.Length - 1; i++)
+                    {
+                        checkField += prizeSourceDataList[i] + ",";
+                    }
                     amountSet = amountSetService.GetFirst(m => m.listId == sub.id && m.prizeSourceField.StartsWith(checkField) && m.prizeSourceField.EndsWith(",%"));
                     if(amountSet != null)
                     {
@@ -1856,9 +1862,30 @@ namespace Util
                         prizeAmount = amountSet.prizeAmount;
                         prizeCode = amountSet.prizeCode;
                         repeatFlag = amountSet.repeatFlag;
-                        prizeSourceData = prizeSourceData.Split(',')[1];
+                        prizeSourceData = prizeSourceDataList[prizeSourceDataList.Length - 1];
+                    }
+                }
+                string[] prizeSourceFieldList = prizeSourceData.Split(',');
+                var amountSets = amountSetService.GetList(m => m.listId == sub.id && m.prizeSourceField.Contains("${"));
+                foreach(var subAmountSet in amountSets)
+                {
+                    string subPrizeSourceField = subAmountSet.prizeSourceField;
+                    for (int i = 0; i < prizeSourceFieldList.Length; i++)
+                    {
+                        subPrizeSourceField = subPrizeSourceField.Replace("${" + i + "}", prizeSourceFieldList[i]);
+                    }
+                    DataTable dt = new();
+                    string chk = dt.Compute(subPrizeSourceField, "false").ToString();
+                    if(chk == "True")
+                    {
+                        prizePercent = subAmountSet.prizePercent;
+                        prizePercent = subAmountSet.prizePercent;
+                        prizeAmount = subAmountSet.prizeAmount;
+                        prizeCode = subAmountSet.prizeCode;
+                        repeatFlag = subAmountSet.repeatFlag;
                     }
                 }
+                
                 if(prizePercent > 0) prizeAmt += decimal.Parse(Function.CheckNum(prizeSourceData)) * prizePercent;
                 if(prizeAmount > 0) prizeAmt += prizeAmount;
                 decimal getPrizeAmount = prizeAmt;
@@ -1949,7 +1976,7 @@ namespace Util
             var queryReturnFieldService = App.GetService<IPriRecursionStartReturnFieldService>();
             int passCount = 0;
             //查询表
-            var queryTables = queryTableService.GetList(m => m.listId == sub.id);
+            var queryTables = queryTableService.GetList(m => m.listId == sub.id).OrderByDescending(m => m.sort).ThenBy(m => m.id).ToList();
             int allCount = queryTables.Count;
             foreach(var queryTable in queryTables)
             {
@@ -2553,7 +2580,15 @@ namespace Util
             if(str.StartsWith("#{this_month") && str.EndsWith("MONTH}#")) return DateTime.Now.AddMonths(int.Parse(str.Replace("#", "").Replace("{", "").Replace("}", "").Split(',')[1])).ToString("yyyy-MM");
             if(str.StartsWith("#{") && str.EndsWith("DAY}#")) return DateTime.Parse(str.Replace("#", "").Replace("{", "").Replace("}", "").Split(',')[0]).AddDays(int.Parse(str.Replace("#", "").Replace("{", "").Replace("}", "").Split(',')[1])).ToString("yyyy-MM-dd HH:mm:ss");
             if(str.StartsWith("#{") && str.EndsWith("MONTH}#")) return DateTime.Parse(str.Replace("#", "").Replace("{", "").Replace("}", "").Split(',')[0]).AddMonths(int.Parse(str.Replace("#", "").Replace("{", "").Replace("}", "").Split(',')[1])).ToString("yyyy-MM-dd HH:mm:ss");
-            if(str.StartsWith("#{") && str.EndsWith("}#"))
+            if(str.StartsWith("#{split") && str.EndsWith("}#"))
+            {
+                string[] data = str.Replace("#{", "").Replace("}#", "").Split(',');
+                string text = data[1];
+                string splitTag = data[2];
+                string index = data[3];
+                return text.Split(new string[]{ splitTag }, StringSplitOptions.None)[int.Parse(index)];
+            }
+            else if(str.StartsWith("#{") && str.EndsWith("}#"))
             {
                 string[] data = str.Replace("#{", "").Replace("}#", "").Split(',');
                 string tag = data[0];