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