|
@@ -2,7 +2,7 @@
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Data;
|
|
|
-using MySystem.Models;
|
|
|
+using MySystem.PxcModels;
|
|
|
using Library;
|
|
|
using System.Threading;
|
|
|
using Microsoft.Extensions.Hosting;
|
|
@@ -40,15 +40,20 @@ namespace MySystem
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- string orderidstring = TendisDbconn.Instance.Get<string>("ConsumerOrders:Divi:List");
|
|
|
+ string orderidstring = TendisDbconn.Instance.LPop<string>("ConsumerOrders:Divi:List");
|
|
|
if (!string.IsNullOrEmpty(orderidstring))
|
|
|
{
|
|
|
int OrderId = int.Parse(function.CheckInt(orderidstring));
|
|
|
WebCMSEntities db = new WebCMSEntities();
|
|
|
+
|
|
|
ConsumerOrders order = db.ConsumerOrders.FirstOrDefault(m => m.Id == OrderId);
|
|
|
if (order != null)
|
|
|
{
|
|
|
- decimal PayMoney = order.PayMoney;
|
|
|
+ decimal PayMoney = order.PayMoney * 10000M;
|
|
|
+ if (OrderId == 81)
|
|
|
+ {
|
|
|
+ PayMoney = order.PayMoney * 5000M;
|
|
|
+ }
|
|
|
int MerchantId = order.MerchantId;
|
|
|
MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == MerchantId);
|
|
|
if (merchant != null)
|
|
@@ -62,7 +67,7 @@ namespace MySystem
|
|
|
int IsAll = set.IsAll; //是否收全额
|
|
|
if (IsAll == 0 && PayMoney >= MinPayMoney && GetPercent < 1)
|
|
|
{
|
|
|
- List<CustomTagSet> customTagSets = RedisDbconn.Instance.GetList<CustomTagSet>("CustomTagSet", 1, 1000); //获取公用配置参数集和 // TODO: 后台配置
|
|
|
+ List<CustomTagSet> customTagSets = TendisDbconn.Instance.GetList<CustomTagSet>("CustomTagSet", 1, 1000); //获取公用配置参数集和
|
|
|
//获取参数
|
|
|
CustomTagSet profitPercentSet = customTagSets.FirstOrDefault(m => m.Tags == "CusumerProfitPercent") ?? new CustomTagSet();
|
|
|
decimal profitPercent = decimal.Parse(function.CheckNum(profitPercentSet.Contents)); //基于收款金额的总分润比例;
|
|
@@ -70,54 +75,75 @@ namespace MySystem
|
|
|
decimal cusumerFeePercent = decimal.Parse(function.CheckNum(cusumerFeePercentSet.Contents)); //费率;
|
|
|
CustomTagSet minProfitSet = customTagSets.FirstOrDefault(m => m.Tags == "MinProfit") ?? new CustomTagSet();
|
|
|
decimal minProfit = decimal.Parse(function.CheckNum(minProfitSet.Contents)); //最小分润值;
|
|
|
- decimal DiviMoney = PayMoney * (1 - GetPercent - cusumerFeePercent - (1 - GetPercent) * profitPercent);
|
|
|
+ decimal DiviMoney = PayMoney * (1 - GetPercent - cusumerFeePercent - profitPercent);
|
|
|
if (DiviMoney > 0)
|
|
|
{
|
|
|
DiviMoney = DiviMoney / DiviPersons;
|
|
|
+ //付款人获取退款返现
|
|
|
+ decimal GetMoney = order.MaxDivi - order.CurDivi;
|
|
|
+ if (GetMoney >= DiviMoney)
|
|
|
+ {
|
|
|
+ GetMoney = DiviMoney;
|
|
|
+ }
|
|
|
+ if (GetMoney > minProfit)
|
|
|
+ {
|
|
|
+ order.CurDivi += GetMoney;
|
|
|
+ db.ConsumerProfit.Add(new ConsumerProfit()
|
|
|
+ {
|
|
|
+ CreateDate = DateTime.Now,
|
|
|
+ ConsumerId = order.ConsumerId,
|
|
|
+ MerchantId = order.MerchantId,
|
|
|
+ OrderId = OrderId,
|
|
|
+ GetMoney = GetMoney,
|
|
|
+ });
|
|
|
+ }
|
|
|
List<int> deletes = new List<int>();
|
|
|
- List<ConsumerOrders> orders = TendisDbconn.Instance.GetList<ConsumerOrders>("ConsumerOrders:Divi:" + MerchantId).OrderByDescending(m => m.Id).Take(DiviPersons).ToList();
|
|
|
- foreach (ConsumerOrders suborder in orders)
|
|
|
+ long CurDiviPersons = DiviPersons;
|
|
|
+ long CurQueueCount = TendisDbconn.Instance.Count("ConsumerOrders:Divi:" + MerchantId);
|
|
|
+ if (CurDiviPersons > CurQueueCount)
|
|
|
{
|
|
|
- if (suborder.CurDivi < suborder.MaxDivi)
|
|
|
+ CurDiviPersons = CurQueueCount;
|
|
|
+ }
|
|
|
+ CurDiviPersons = CurDiviPersons - 1;
|
|
|
+ while (CurDiviPersons > 0)
|
|
|
+ {
|
|
|
+ ConsumerOrders suborder = TendisDbconn.Instance.RPop<ConsumerOrders>("ConsumerOrders:Divi:" + MerchantId);
|
|
|
+ if (suborder != null)
|
|
|
{
|
|
|
- decimal GetMoney = suborder.MaxDivi - suborder.CurDivi;
|
|
|
- if (GetMoney >= DiviMoney)
|
|
|
- {
|
|
|
- GetMoney = DiviMoney;
|
|
|
- }
|
|
|
- if (GetMoney > minProfit)
|
|
|
+ if (suborder.CurDivi < suborder.MaxDivi)
|
|
|
{
|
|
|
- suborder.CurDivi += GetMoney;
|
|
|
- int ConsumerId = suborder.ConsumerId;
|
|
|
- db.ConsumerProfit.Add(new ConsumerProfit()
|
|
|
+ GetMoney = suborder.MaxDivi - suborder.CurDivi;
|
|
|
+ if (GetMoney >= DiviMoney)
|
|
|
{
|
|
|
- ConsumerId = suborder.ConsumerId,
|
|
|
- MerchantId = suborder.MerchantId,
|
|
|
- OrderId = OrderId,
|
|
|
- GetMoney = GetMoney,
|
|
|
- });
|
|
|
- if (suborder.CurDivi >= suborder.MaxDivi)
|
|
|
+ GetMoney = DiviMoney;
|
|
|
+ }
|
|
|
+ if (GetMoney > minProfit)
|
|
|
{
|
|
|
- deletes.Add(suborder.Id);
|
|
|
+ suborder.CurDivi += GetMoney;
|
|
|
+ db.ConsumerProfit.Add(new ConsumerProfit()
|
|
|
+ {
|
|
|
+ CreateDate = DateTime.Now,
|
|
|
+ ConsumerId = suborder.ConsumerId,
|
|
|
+ MerchantId = suborder.MerchantId,
|
|
|
+ OrderId = OrderId,
|
|
|
+ GetMoney = GetMoney,
|
|
|
+ });
|
|
|
+ if (suborder.CurDivi < suborder.MaxDivi)
|
|
|
+ {
|
|
|
+ TendisDbconn.Instance.AddList("ConsumerOrders:Divi:" + MerchantId, suborder);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ CurDiviPersons -= 1;
|
|
|
}
|
|
|
db.SaveChanges();
|
|
|
- foreach (int orderid in deletes)
|
|
|
- {
|
|
|
- ConsumerOrders deleteOrder = orders.FirstOrDefault(m => m.Id == orderid);
|
|
|
- orders.Remove(deleteOrder);
|
|
|
- }
|
|
|
- TendisDbconn.Instance.Clear("ConsumerOrders:Divi:" + MerchantId);
|
|
|
- TendisDbconn.Instance.AddList("ConsumerOrders:Divi:" + MerchantId, orders.ToArray());
|
|
|
- // FIXME: 从头部pop,从尾部add,没有中间出局的情况,出局直接弹出(不追加)
|
|
|
|
|
|
//创客分润
|
|
|
- DoProfit(db, order);
|
|
|
+ // DoProfit(db, order);
|
|
|
|
|
|
//代理商分润
|
|
|
- AgentProfit(db, order);
|
|
|
+ // AgentProfit(db, order);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -275,7 +301,6 @@ namespace MySystem
|
|
|
else if (trade_record.Sort == 14) OtherCondition = " and (Type=1 or Type=3)";
|
|
|
else if (trade_record.Sort == 6 || trade_record.Sort == 7 || trade_record.Sort == 18) OtherCondition = "";
|
|
|
else if (trade_record.Sort == 29) OtherCondition = " and Type=2";
|
|
|
- Models.WebCMSEntities dbv2 = new Models.WebCMSEntities();
|
|
|
PosMachines machine = dbnew.PosMachines.FirstOrDefault(m => m.PosSn == trade_record.SnNo) ?? new PosMachines();
|
|
|
if (machine.ActivationState == 0)
|
|
|
{
|
|
@@ -300,7 +325,7 @@ namespace MySystem
|
|
|
UserNav = buyuser.ParentNav,
|
|
|
UserLevel = buyuser.UserLevel,
|
|
|
});
|
|
|
- List<ProfitResult> list = StartActiveProft(dbv2, machine, trade_record.SnNo, trade_record.Sort, Users, new ActiveCheckData()
|
|
|
+ List<ProfitResult> list = StartActiveProft(dbnew, machine, trade_record.SnNo, trade_record.Sort, Users, new ActiveCheckData()
|
|
|
{
|
|
|
TableName = "TransactionRecord",
|
|
|
StatField = "Money",
|