【优化】完善不开启分销,代理模式下,走邀请好友计算三级佣金;不开启分销或者代理的情况下,默认不去计算分销和代理佣金。

【调整】目前的分销三级业务逻辑是用户下单,往上找三级必须都是分销商,才能每级都分佣,中间可能不是分销商而中断向上递归,调整为用户下单,往上找三级只要三级有是分销商的,就根据佣金结果给与佣金。不中断。
【优化】区分老版本企业付款到零钱与新版本商家付款到零钱enum命名。
This commit is contained in:
大灰灰
2022-11-17 23:33:01 +08:00
parent 1b2357844b
commit fb2a8333eb
9 changed files with 255 additions and 159 deletions

View File

@@ -339,10 +339,12 @@ namespace CoreCms.Net.Configuration
{
[Description("银行线下转账")]
线 = 0,
[Description("微信付款到零钱")]
= 1,
[Description("微信付款到银行卡")]
= 2
[Description("企业付款到零钱")]
= 1,
[Description("企业付款到银行卡")]
= 2,
[Description("商家转账到零钱")]
= 3
}
#endregion
@@ -3064,5 +3066,27 @@ namespace CoreCms.Net.Configuration
#endregion
#region
/// <summary>
/// 邀请好友佣金分配方式
/// </summary>
public enum InviteCommissionType
{
/// <summary>
/// 百分比
/// </summary>
[Description("百分比")]
CommissionTypePre = 1,
/// <summary>
/// 固定
/// </summary>
[Description("固定")]
CommissionTypeFixed = 2,
}
#endregion
}
}

View File

@@ -134,5 +134,14 @@ namespace CoreCms.Net.IServices
/// </summary>
/// <returns></returns>
Task<List<StatisticsOut>> StatisticsOrder(int day);
/// <summary>
/// 当关闭分销和代理的时候走个人邀请好友分佣
/// </summary>
/// <param name="orderId"></param>
/// <returns></returns>
Task<WebApiCallBack> InviteCommission(string orderId);
}
}

View File

@@ -55,70 +55,28 @@ namespace CoreCms.Net.RedisMQ
if (order != null)
{
var allConfigs = await _settingServices.GetConfigDictionaries();
//是否开启三级分销(1开启2未开启)
var openDistribution = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.OpenDistribution).ObjectToInt(0);
//是否开启代理模块(1开启2未开启)
var isOpenAgent = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.IsOpenAgent).ObjectToInt(0);
//佣金分配模式
var commissionChannel = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionChannel).ObjectToInt(1);
if (commissionChannel == (int)GlobalEnumVars.CommissionChannel.)
switch (commissionChannel)
{
var jm = await _agentOrderServices.AddData(order);
jm.status = true;
jm.msg = "分销成功";
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单完结后走代理结佣-仅代理", JsonConvert.SerializeObject(jm));
return;
}
else if (commissionChannel == (int)GlobalEnumVars.CommissionChannel.)
{
var jm = await _distributionOrderServices.AddData(order); //添加分享关联订单日志
//判断是否可以成为分销商
//先判断是否已经是经销商了。
bool check = await _distributionServices.ExistsAsync(p => p.userId == order.userId);
var distributionType = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.DistributionType).ObjectToInt(0);
if (distributionType == 3) //无需审核,但是要满足提交
case (int)GlobalEnumVars.CommissionChannel. when isOpenAgent == 1:
{
var info = new CoreCmsDistribution();
//判断是否分销商
if (check == false)
{
await _distributionServices.CheckCondition(allConfigs, info, order.userId);
if (info.ConditionStatus == true && info.ConditionProgress == 100)
{
//添加用户
var user = await _userServices.QueryByClauseAsync(p => p.id == order.userId);
var iData = new CoreCmsDistribution();
iData.userId = order.userId;
iData.mobile = user.mobile;
iData.name = !string.IsNullOrEmpty(user.nickName) ? user.nickName : user.mobile;
iData.verifyStatus = (int)GlobalEnumVars.DistributionVerifyStatus.VerifyYes;
iData.verifyTime = DateTime.Now;
await _distributionServices.AddData(iData, order.userId);
}
}
}
//已经是经销商的判断是否可以升级
if (check)
{
await _distributionServices.CheckUpdate(order.userId);
}
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单完结后走分销结佣-仅分销", JsonConvert.SerializeObject(jm));
return;
}
else if (commissionChannel == (int)GlobalEnumVars.CommissionChannel.)
{
var jm = await _agentOrderServices.AddData(order);
//判断是走代理还是走分销
if (jm.status == true)
{
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单完结后走代理结佣-先代理后分销", JsonConvert.SerializeObject(jm));
var jm = await _agentOrderServices.AddData(order);
jm.status = true;
jm.msg = "分销成功";
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单完结后走代理结佣-仅代理", JsonConvert.SerializeObject(jm));
return;
}
else
case (int)GlobalEnumVars.CommissionChannel. when openDistribution == 1:
{
await _distributionOrderServices.AddData(order); //添加分享关联订单日志
//判断是否可以成为分销商
//先判断是否已经是经销商了。
var jm = await _distributionOrderServices.AddData(order); //添加分享关联订单日志
//判断是否可以成为分销商
//先判断是否已经是经销商了。
bool check = await _distributionServices.ExistsAsync(p => p.userId == order.userId);
var distributionType = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.DistributionType).ObjectToInt(0);
if (distributionType == 3) //无需审核,但是要满足提交
@@ -128,7 +86,7 @@ namespace CoreCms.Net.RedisMQ
if (check == false)
{
await _distributionServices.CheckCondition(allConfigs, info, order.userId);
if (info.ConditionStatus == true && info.ConditionProgress == 100)
if (info.ConditionStatus && info.ConditionProgress == 100)
{
//添加用户
var user = await _userServices.QueryByClauseAsync(p => p.id == order.userId);
@@ -148,17 +106,23 @@ namespace CoreCms.Net.RedisMQ
{
await _distributionServices.CheckUpdate(order.userId);
}
jm.status = true;
jm.msg = "分销成功";
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单完结后走分销结佣-先代理后分销", JsonConvert.SerializeObject(jm));
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单完结后走分销结佣-仅分销", JsonConvert.SerializeObject(jm));
return;
}
}
else if (commissionChannel == (int)GlobalEnumVars.CommissionChannel.)
{
var jm = await _distributionOrderServices.AddData(order);
if (jm.status)
case (int)GlobalEnumVars.CommissionChannel. when openDistribution == 1 && isOpenAgent == 1:
{
var jm = await _agentOrderServices.AddData(order);
//判断是走代理还是走分销
if (jm.status)
{
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单完结后走代理结佣-先代理后分销", JsonConvert.SerializeObject(jm));
return;
}
await _distributionOrderServices.AddData(order); //添加分享关联订单日志
//判断是否可以成为分销商
//先判断是否已经是经销商了。
bool check = await _distributionServices.ExistsAsync(p => p.userId == order.userId);
var distributionType = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.DistributionType).ObjectToInt(0);
if (distributionType == 3) //无需审核,但是要满足提交
@@ -190,14 +154,54 @@ namespace CoreCms.Net.RedisMQ
}
jm.status = true;
jm.msg = "分销成功";
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单完结后走分销结佣-先分销后代理", JsonConvert.SerializeObject(jm));
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单完结后走分销结佣-先代理后分销", JsonConvert.SerializeObject(jm));
return;
}
else
case (int)GlobalEnumVars.CommissionChannel. when openDistribution == 1 && isOpenAgent == 1:
{
jm = await _agentOrderServices.AddData(order);
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单完结后走代理结佣-先分销后代理", JsonConvert.SerializeObject(jm));
return;
var jm = await _distributionOrderServices.AddData(order);
if (jm.status)
{
bool check = await _distributionServices.ExistsAsync(p => p.userId == order.userId);
var distributionType = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.DistributionType).ObjectToInt(0);
if (distributionType == 3) //无需审核,但是要满足提交
{
var info = new CoreCmsDistribution();
//判断是否分销商
if (check == false)
{
await _distributionServices.CheckCondition(allConfigs, info, order.userId);
if (info.ConditionStatus && info.ConditionProgress == 100)
{
//添加用户
var user = await _userServices.QueryByClauseAsync(p => p.id == order.userId);
var iData = new CoreCmsDistribution();
iData.userId = order.userId;
iData.mobile = user.mobile;
iData.name = !string.IsNullOrEmpty(user.nickName) ? user.nickName : user.mobile;
iData.verifyStatus = (int)GlobalEnumVars.DistributionVerifyStatus.VerifyYes;
iData.verifyTime = DateTime.Now;
await _distributionServices.AddData(iData, order.userId);
}
}
}
//已经是经销商的判断是否可以升级
if (check)
{
await _distributionServices.CheckUpdate(order.userId);
}
jm.status = true;
jm.msg = "分销成功";
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单完结后走分销结佣-先分销后代理", JsonConvert.SerializeObject(jm));
return;
}
else
{
jm = await _agentOrderServices.AddData(order);
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单完结后走代理结佣-先分销后代理", JsonConvert.SerializeObject(jm));
return;
}
}
}

View File

@@ -57,8 +57,12 @@ namespace CoreCms.Net.RedisMQ
}
else
{
//对已经计入分销佣金订单表里面的数据进行储值到分销商余额内。
await _distributionOrderServices.FinishOrder(msg);
//对已经计入代理商佣金订单表里面的数据进行储值到代理商余额内。
await _agentOrderServices.FinishOrder(msg);
//邀请要求模式下进行分佣,会检测是否开启了三级分销和代理模式。
await _userServices.InviteCommission(msg);
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单完结结佣", "订单编号获取正常:" + msg);
}

View File

@@ -22,6 +22,8 @@ using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.DTO.Distribution;
using CoreCms.Net.Model.ViewModels.UI;
using CoreCms.Net.Utility.Extensions;
using CoreCms.Net.Utility.Helper;
using SqlSugar;
@@ -42,10 +44,11 @@ namespace CoreCms.Net.Services
private readonly ICoreCmsUserBalanceServices _balanceServices;
private readonly ICoreCmsGoodsServices _goodsServices;
private readonly ICoreCmsDistributionOrderDetailsServices _distributionOrderDetailsServices;
private readonly ICoreCmsSettingServices _settingServices;
private readonly IUnitOfWork _unitOfWork;
public CoreCmsDistributionOrderServices(IUnitOfWork unitOfWork, ICoreCmsDistributionOrderRepository dal, ICoreCmsDistributionServices distributionServices, ICoreCmsUserBalanceServices balanceServices, ICoreCmsOrderServices orderServices, ICoreCmsUserServices userServices, ICoreCmsOrderItemServices orderItemServices, ICoreCmsProductsDistributionServices productsDistributionServices, ICoreCmsProductsServices productsServices, ICoreCmsGoodsServices goodsServices, ICoreCmsDistributionOrderDetailsServices distributionOrderDetailsServices)
public CoreCmsDistributionOrderServices(IUnitOfWork unitOfWork, ICoreCmsDistributionOrderRepository dal, ICoreCmsDistributionServices distributionServices, ICoreCmsUserBalanceServices balanceServices, ICoreCmsOrderServices orderServices, ICoreCmsUserServices userServices, ICoreCmsOrderItemServices orderItemServices, ICoreCmsProductsDistributionServices productsDistributionServices, ICoreCmsProductsServices productsServices, ICoreCmsGoodsServices goodsServices, ICoreCmsDistributionOrderDetailsServices distributionOrderDetailsServices, ICoreCmsSettingServices settingServices)
{
this._dal = dal;
_distributionServices = distributionServices;
@@ -57,6 +60,7 @@ namespace CoreCms.Net.Services
_productsServices = productsServices;
_goodsServices = goodsServices;
_distributionOrderDetailsServices = distributionOrderDetailsServices;
_settingServices = settingServices;
base.BaseDal = dal;
_unitOfWork = unitOfWork;
}
@@ -107,7 +111,10 @@ namespace CoreCms.Net.Services
//获取货品关联的分销数据
var productsDistributions = await _productsDistributionServices.QueryListByClauseAsync(p => productIds.Contains(p.productsId));
await AddOther(order, orderItems, goods, products, productsDistributions, 1, user.parentId); //本级是否返利
var allConfigs = await _settingServices.GetConfigDictionaries();
var distributionLevel = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.DistributionLevel).ObjectToInt(0);
await AddOther(order, orderItems, goods, products, productsDistributions, 1, user.parentId, distributionLevel); //本级是否返利
}
jm.status = true;
@@ -128,8 +135,9 @@ namespace CoreCms.Net.Services
/// <param name="productsDistributions">货品分销数据</param>
/// <param name="level">第几级</param>
/// <param name="userId">用户id</param>
/// <param name="distributionLevel">三级分销开启的层级</param>
/// <returns></returns>
private async Task AddOther(CoreCmsOrder order, List<CoreCmsOrderItem> orderItems, List<CoreCmsGoods> goods, List<CoreCmsProducts> products, List<CoreCmsProductsDistribution> productsDistributions, int level = 0, int userId = 0)
private async Task AddOther(CoreCmsOrder order, List<CoreCmsOrderItem> orderItems, List<CoreCmsGoods> goods, List<CoreCmsProducts> products, List<CoreCmsProductsDistribution> productsDistributions, int level = 0, int userId = 0, int distributionLevel = 3)
{
var user = await _userServices.QueryByClauseAsync(p => p.id == userId);
if (user != null)
@@ -281,13 +289,12 @@ namespace CoreCms.Net.Services
}
}
}
if (user.parentId > 0 && ommissionDto != null && level < ommissionDto.DistributionLevel)
{
//返第二级
level++;
await AddOther(order, orderItems, goods, products, productsDistributions, level, user.parentId);
}
}
if (user.parentId > 0 && level < distributionLevel)
{
//返第二级
level++;
await AddOther(order, orderItems, goods, products, productsDistributions, level, user.parentId, distributionLevel);
}
}
}

View File

@@ -408,90 +408,51 @@ namespace CoreCms.Net.Services
if (info == null)
{
jm.msg = "不是分销商的,不返利";
return jm; //不是分销商的,不返利。
return jm;
}
var allConfigs = await _settingServices.GetConfigDictionaries();
var commissionType = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionType).ObjectToInt(0);
var dto = new DistributionDto();
if (info.gradeId > 0)
{
var res = await _distributionResultRepository.QueryListByClauseAsync(p => p.gradeId == info.gradeId);
var res = await _distributionResultRepository.QueryListByClauseAsync(p => p.gradeId == info.gradeId, p => p.id, OrderByType.Asc, true, true);
if (res != null && res.Any())
{
dto.grade_id = info.gradeId;
res.ForEach(p =>
{
var obj = JObject.Parse(p.parameters);
if (p.code == "COMMISSION_1")
switch (p.code)
{
dto.commission_1 = new Commission()
{
type = obj["commissionType"].ObjectToInt(0),
discount = obj["discount"].ObjectToDecimal(0)
};
}
else if (p.code == "COMMISSION_2")
{
dto.commission_2 = new Commission()
{
type = obj["commissionType"].ObjectToInt(0),
discount = obj["discount"].ObjectToDecimal(0)
};
}
else if (p.code == "COMMISSION_3")
{
dto.commission_3 = new Commission()
{
type = obj["commissionType"].ObjectToInt(0),
discount = obj["discount"].ObjectToDecimal(0)
};
case "COMMISSION_1":
dto.commission_1 = new Commission()
{
type = obj["commissionType"].ObjectToInt(0),
discount = obj["discount"].ObjectToDecimal(0)
};
break;
case "COMMISSION_2":
dto.commission_2 = new Commission()
{
type = obj["commissionType"].ObjectToInt(0),
discount = obj["discount"].ObjectToDecimal(0)
};
break;
case "COMMISSION_3":
dto.commission_3 = new Commission()
{
type = obj["commissionType"].ObjectToInt(0),
discount = obj["discount"].ObjectToDecimal(0)
};
break;
}
});
}
else
{
dto.grade_id = 0;
dto.commission_1 = new Commission()
{
type = commissionType,
discount = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionFirst).ObjectToDecimal(0)
};
dto.commission_2 = new Commission()
{
type = commissionType,
discount = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionSecond).ObjectToDecimal(0)
};
dto.commission_3 = new Commission()
{
type = commissionType,
discount = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionThird).ObjectToDecimal(0)
};
jm.msg = "未获取到佣金设置,不返利";
return jm;
}
}
else
{
dto.grade_id = 0;
dto.commission_1 = new Commission()
{
type = commissionType,
discount = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionFirst).ObjectToDecimal(0)
};
dto.commission_2 = new Commission()
{
type = commissionType,
discount = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionSecond).ObjectToDecimal(0)
};
dto.commission_3 = new Commission()
{
type = commissionType,
discount = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionThird).ObjectToDecimal(0)
};
}
dto.DistributionLevel = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.DistributionLevel).ObjectToInt(0);
jm.status = true;
jm.data = dto;
jm.msg = "获取成功";

View File

@@ -55,13 +55,15 @@ namespace CoreCms.Net.Services
private readonly IUnitOfWork _unitOfWork;
private readonly PermissionRequirement _permissionRequirement;
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly ICoreCmsOrderServices _orderServices;
private readonly ICoreCmsBillPaymentsServices _billPaymentsServices;
public CoreCmsUserServices(IUnitOfWork unitOfWork
, ICoreCmsUserRepository dal
, ICoreCmsUserBalanceServices userBalanceServices
, ICoreCmsSettingServices settingServices
, ICoreCmsUserPointLogServices userPointLogServices, ICoreCmsSmsServices smsServices, ICoreCmsUserWeChatInfoServices userWeChatInfoServices, ICoreCmsUserGradeServices userGradeServices, PermissionRequirement permissionRequirement, IHttpContextAccessor httpContextAccessor, ICoreCmsUserLogServices userLogServices, IServiceProvider serviceProvider)
, ICoreCmsUserPointLogServices userPointLogServices, ICoreCmsSmsServices smsServices, ICoreCmsUserWeChatInfoServices userWeChatInfoServices, ICoreCmsUserGradeServices userGradeServices, PermissionRequirement permissionRequirement, IHttpContextAccessor httpContextAccessor, ICoreCmsUserLogServices userLogServices, IServiceProvider serviceProvider, ICoreCmsOrderServices orderServices, ICoreCmsBillPaymentsServices billPaymentsServices)
{
this._dal = dal;
base.BaseDal = dal;
@@ -76,6 +78,8 @@ namespace CoreCms.Net.Services
_httpContextAccessor = httpContextAccessor;
_userLogServices = userLogServices;
_serviceProvider = serviceProvider;
_orderServices = orderServices;
_billPaymentsServices = billPaymentsServices;
}
@@ -727,6 +731,7 @@ namespace CoreCms.Net.Services
#endregion
#region
/// <summary>
/// 根据条件查询分页数据
/// </summary>
@@ -743,8 +748,9 @@ namespace CoreCms.Net.Services
return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize);
}
#endregion
#region
/// <summary>
/// 按天统计新会员
/// </summary>
@@ -753,7 +759,9 @@ namespace CoreCms.Net.Services
{
return await _dal.Statistics(day);
}
#endregion
#region
/// <summary>
/// 按天统计当天下单活跃会员
/// </summary>
@@ -763,7 +771,86 @@ namespace CoreCms.Net.Services
return await _dal.StatisticsOrder(day);
}
#endregion
#region
/// <summary>
/// 当关闭分销和代理的时候走个人邀请好友分佣
/// </summary>
/// <param name="orderId"></param>
/// <returns></returns>
public async Task<WebApiCallBack> InviteCommission(string orderId)
{
var jm = new WebApiCallBack();
var allConfigs = await _settingServices.GetConfigDictionaries();
//分佣类型1百分比/2固定金额
var commissionType = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionType).ObjectToInt(0);
//一级佣金
var commissionFirst = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionFirst).ObjectToDecimal(0);
//二级佣金
var commissionSecond = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionSecond).ObjectToDecimal(0);
//三级佣金
var commissionThird = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CommissionFirst).ObjectToDecimal(0);
//是否开启三级分销(1开启2未开启)
var openDistribution = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.OpenDistribution).ObjectToInt(0);
//是否开启代理模块(1开启2未开启)
var isOpenAgent = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.IsOpenAgent).ObjectToInt(0);
//当分销模块和代理模块都关闭的情况下,才去计算邀请好友的操作。
if (openDistribution != 2 || isOpenAgent != 2) return jm;
var order = await _orderServices.QueryByClauseAsync(p => p.orderId == orderId && p.status == (int)GlobalEnumVars.OrderStatus.Complete);
if (order == null)
{
jm.msg = "订单查询失败";
return jm;
}
var user = await _dal.QueryByClauseAsync(p => p.id == order.userId, true);
// 获取付款单,我们只拿付款单的实际金额去计算,不用订单的金额。这样直接不用去计算优惠了,只看用户付了多少。从上面提佣金出来。
var billPayments = await _billPaymentsServices.QueryByClauseAsync(p => p.sourceId == orderId && p.status == (int)GlobalEnumVars.BillPaymentsStatus.Payed);
if (billPayments.money <= 0) return jm;
{
//1级佣金
var commissionLevel1 = commissionType == (int)GlobalEnumVars.InviteCommissionType.CommissionTypeFixed
? commissionFirst
: Math.Round(commissionFirst * billPayments.money / 100, 2);
//2级佣金
var commissionLevel2 = commissionType == (int)GlobalEnumVars.InviteCommissionType.CommissionTypeFixed
? commissionSecond
: Math.Round(commissionSecond * billPayments.money / 100, 2);
//3级佣金
var commissionLevel3 = commissionType == (int)GlobalEnumVars.InviteCommissionType.CommissionTypeFixed
? commissionThird
: Math.Round(commissionThird * billPayments.money / 100, 2);
//下面存储就不做递归了,三层直接判断了
if (user.parentId <= 0) return jm;
var parentLevel1 = await _dal.QueryByClauseAsync(p => p.id == user.parentId, true);
if (parentLevel1 == null) return jm;
{
//钱挪到会员余额里面
await _userBalanceServices.Change(user.parentId, (int)GlobalEnumVars.UserBalanceSourceTypes.Distribution, commissionLevel1, orderId);
if (parentLevel1.parentId <= 0) return jm;
var parentLevel2 = await _dal.QueryByClauseAsync(p => p.id == parentLevel1.parentId, true);
//钱挪到会员余额里面
await _userBalanceServices.Change(parentLevel1.parentId, (int)GlobalEnumVars.UserBalanceSourceTypes.Distribution, commissionLevel2, orderId);
if (parentLevel2.parentId <= 0) return jm;
{
var parentLevel3 = await _dal.QueryByClauseAsync(p => p.id == parentLevel2.parentId, true);
if (parentLevel3 != null)
{
//钱挪到会员余额里面
await _userBalanceServices.Change(parentLevel2.parentId, (int)GlobalEnumVars.UserBalanceSourceTypes.Distribution, commissionLevel3, orderId);
}
}
}
}
return jm;
}
#endregion
}
}

View File

@@ -270,7 +270,7 @@ namespace CoreCms.Net.Services
jm.msg = GlobalErrorCodeVars.Code10000;
jm.status = false;
break;
case (int)GlobalEnumVars.UserTocashType.:
case (int)GlobalEnumVars.UserTocashType.:
{
var user = await _userServices.QueryByIdAsync(info.userId);
if (user == null)
@@ -317,7 +317,7 @@ namespace CoreCms.Net.Services
break;
}
case (int)GlobalEnumVars.UserTocashType.:
case (int)GlobalEnumVars.UserTocashType.:
{
var user = await _userServices.QueryByIdAsync(info.userId);
if (user == null)

View File

@@ -448,10 +448,10 @@
<div class="layui-form-item">
<label class="layui-form-label">说明</label>
<div class="layui-form-mid layui-word-aux">
仅代理指只计算代理分佣逻辑如果代理分佣逻辑不满足而不继续执行<br />
仅分销指只计算三级分销佣金如果三级分佣模式不满足则不继续执行<br />
先代理后分销指先计算代理分佣逻辑是否满足如果是则只走代理分佣逻辑如果不是验证之后则继续执行三级分销分佣逻辑<br />
先分销后代理指先计算是否三级分销满足满足则只计算三级分级分销如果不满足再继续执行代理分佣逻辑<br />
仅代理指只计算代理分佣逻辑如果代理分佣逻辑不满足而不继续执行必须要开启代理模块<br />
仅分销指只计算三级分销佣金如果三级分佣模式不满足则不继续执行必须要开启分销模块此分销模块不是邀请好友的三级佣金模式<br />
先代理后分销指先计算代理分佣逻辑是否满足如果是则只走代理分佣逻辑如果不是验证之后则继续执行三级分销分佣逻辑必须要开启代理模块分销模块<br />
先分销后代理指先计算是否三级分销满足满足则只计算三级分级分销如果不满足再继续执行代理分佣逻辑必须要开启代理模块分销模块<br />
</div>
</div>
@@ -673,7 +673,7 @@
</div>
</div>
<blockquote class="layui-elem-quote">
佣金设置当不开启三级分销时候推广好友三级统一返现比例
佣金设置当不开启分销代理两个独立佣金模块的时候推广好友三级统一返现比例
</blockquote>
<div class="layui-form-item">
<label class="layui-form-label">{{d.data.configs['commissionType']['sKey']}}</label>