mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2026-03-22 14:07:20 +08:00
【优化】完善不开启分销,代理模式下,走邀请好友计算三级佣金;不开启分销或者代理的情况下,默认不去计算分销和代理佣金。
【调整】目前的分销三级业务逻辑是用户下单,往上找三级必须都是分销商,才能每级都分佣,中间可能不是分销商而中断向上递归,调整为用户下单,往上找三级只要三级有是分销商的,就根据佣金结果给与佣金。不中断。 【优化】区分老版本企业付款到零钱与新版本商家付款到零钱enum命名。
This commit is contained in:
@@ -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
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user