Browse Source

优化返现逻辑

lcl 1 year ago
parent
commit
e680b60719
3 changed files with 49 additions and 7 deletions
  1. 2 0
      Controllers/HomeController.cs
  2. 38 0
      Models/Tables/TmpOrder.cs
  3. 9 7
      Util/HaoDa/ProfitHelper.cs

+ 2 - 0
Controllers/HomeController.cs

@@ -10,6 +10,8 @@ using LitJson;
 using System.Data;
 using MySystem.Models.Main;
 using System.Text.RegularExpressions;
+using Aop.Api.Domain;
+using MySystem.Models;
 
 namespace MySystem.Controllers
 {

+ 38 - 0
Models/Tables/TmpOrder.cs

@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.Models
+{
+    public partial class TmpOrder
+    {
+        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 decimal CurDivi { get; set; }
+        public decimal MaxDivi { get; set; }
+        public string SnNo { get; set; }
+        public decimal ReturnMoney { get; set; }
+        public decimal PayMoney { get; set; }
+        public int PayMode { get; set; }
+        public string OrderNo { get; set; }
+        public int ConsumerId { get; set; }
+        public int MerchantId { get; set; }
+        public ulong IsAct { get; set; }
+        public int UserId { get; set; }
+        public decimal MerchantActualAmount { get; set; }
+        public string DivideLog { get; set; }
+        public string TradePayNo { get; set; }
+        public int SetRecordId { get; set; }
+        public int DivideFlag { get; set; }
+        public DateTime? DivideDate { get; set; }
+    }
+}

+ 9 - 7
Util/HaoDa/ProfitHelper.cs

@@ -8,6 +8,7 @@ using System.Threading;
 using Microsoft.Extensions.Hosting;
 using System.Threading.Tasks;
 using LitJson;
+using MySystem.Models;
 
 namespace MySystem
 {
@@ -104,7 +105,6 @@ namespace MySystem
                                 function.WriteLog("活动开启", "返现逻辑日志");
                                 // PayMoney * (1 - 0.1 - 0.0038 - 0.01);
                                 decimal DiviMoney = PayMoney * (1 - GetPercent - cusumerFeePercent - profitPercent);
-                                DiviMoney = Math.Round(DiviMoney, 2);
                                 if (DiviMoney > 0)
                                 {
                                     function.WriteLog("返现队列开始", "返现逻辑日志");
@@ -112,6 +112,7 @@ namespace MySystem
                                     order.ReturnFlag = 1;
                                     db.SaveChanges();
                                     DiviMoney = DiviMoney / DiviPersons;
+                                    DiviMoney = Math.Round(DiviMoney, 2);
                                     List<int> deletes = new List<int>();
                                     long CurDiviPersons = DiviPersons;
                                     long QueueCount = RedisDbconn.Instance.Count("ConsumerOrdersHd:Divi:" + PayMode + ":" + MerchantId);
@@ -194,24 +195,23 @@ namespace MySystem
                                                             function.WriteLog("返现未达最大值继续", "返现逻辑日志");
                                                             // RedisDbconn.Instance.AddList("ConsumerOrdersHd:Divi:" + PayMode + ":" + MerchantId, suborder);
                                                             RedisDbconn.Instance.SetList("ConsumerOrdersHd:Divi:" + PayMode + ":" + MerchantId, 0, suborder);
+                                                            RedisDbconn.Instance.AddList("ConsumerOrdersSetDiviHd", "{\"OrderId\":\"" + suborder.Id + "\",\"DiviAmt\":\"" + suborder.CurDivi + "\"}");
                                                         }
                                                         else
                                                         {
                                                             suborder.CurDivi = TmpCurDivi;
                                                             function.WriteLog("返现达最大值,出局", "返现逻辑日志");
-                                                            RedisDbconn.Instance.DelFromList("ConsumerOrdersHd:Divi:" + PayMode + ":" + MerchantId, suborder);
                                                             ConsumerOrders editOrder = db.ConsumerOrders.FirstOrDefault(m => m.Id == suborder.Id);
                                                             if (editOrder != null)
                                                             {
                                                                 editOrder.ReturnFlag = 0;
-                                                                editOrder.CurDivi = editOrder.MaxDivi;
                                                                 db.SaveChanges();
+                                                                RedisDbconn.Instance.AddList("ConsumerOrdersSetDiviHd", "{\"OrderId\":\"" + suborder.Id + "\",\"DiviAmt\":\"" + suborder.MaxDivi + "\"}");
                                                             }
+                                                            RedisDbconn.Instance.DelFromList("ConsumerOrdersHd:Divi:" + PayMode + ":" + MerchantId, suborder);
                                                         }
                                                     }
                                                     Thread.Sleep(1000);
-
-                                                    RedisDbconn.Instance.AddList("ConsumerOrdersSetDiviHd", "{\"OrderId\":\"" + suborder.Id + "\",\"DiviAmt\":\"" + suborder.CurDivi + "\"}");
                                                 }
                                             }
                                             else
@@ -219,14 +219,16 @@ namespace MySystem
                                                 //否者计算人数不计入退款名额
                                                 suborder.CurDivi = TmpCurDivi;
                                                 function.WriteLog("返现达最大值,出局", "返现逻辑日志");
-                                                RedisDbconn.Instance.DelFromList("ConsumerOrdersHd:Divi:" + PayMode + ":" + MerchantId, suborder);
                                                 ConsumerOrders editOrder = db.ConsumerOrders.FirstOrDefault(m => m.Id == suborder.Id);
                                                 if (editOrder != null)
                                                 {
                                                     editOrder.ReturnFlag = 0;
-                                                    editOrder.CurDivi = editOrder.MaxDivi;
                                                     db.SaveChanges();
+                                                    RedisDbconn.Instance.AddList("ConsumerOrdersSetDiviHd", "{\"OrderId\":\"" + suborder.Id + "\",\"DiviAmt\":\"" + suborder.MaxDivi + "\"}");
                                                 }
+                                                RedisDbconn.Instance.DelFromList("ConsumerOrdersHd:Divi:" + PayMode + ":" + MerchantId, suborder);
+                                                TmpOrder tmporder = Newtonsoft.Json.JsonConvert.DeserializeObject<TmpOrder>(Newtonsoft.Json.JsonConvert.SerializeObject(order));
+                                                RedisDbconn.Instance.DelFromList("ConsumerOrdersHd:Divi:" + PayMode + ":" + MerchantId, tmporder);
                                                 CurDiviPersons += 1;
                                                 function.WriteLog("出局:CurDiviPersons:" + CurDiviPersons, "返现逻辑日志");
                                             }