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

【调整】目前的分销三级业务逻辑是用户下单,往上找三级必须都是分销商,才能每级都分佣,中间可能不是分销商而中断向上递归,调整为用户下单,往上找三级只要三级有是分销商的,就根据佣金结果给与佣金。不中断。
【优化】区分老版本企业付款到零钱与新版本商家付款到零钱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

@@ -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 = "获取成功";