Commit c4c0718f authored by liudong1993's avatar liudong1993

返佣

parent 9b472457
......@@ -211,5 +211,9 @@ namespace Mall.Model.Entity.User
/// 是否必须提完所有
/// </summary>
public int? IsWithdrawAll { get; set; }
/// <summary>
/// 是否启用粉象返佣 1是 2否
/// </summary>
public int? IsEnableFXGrade { get; set; }
}
}
......@@ -1261,8 +1261,64 @@ namespace Mall.Module.Product
var disModel = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { TenantId = TenantId, MallBaseId = MallBaseId, UserId = UserId, AuditStatus = Common.Enum.User.DistributorAuditStatusEnum.Audited }).FirstOrDefault();
if (disModel != null)
{
//判断是否开启和平返佣
List<WhereHelper> wheres = new List<WhereHelper>() {
var BasicsModel = distributor_BasicsRepository.GetList(new RB_Distributor_Basics_Extend() { TenantId = TenantId, MallBaseId = MallBaseId }).FirstOrDefault();
if ((BasicsModel?.IsEnableFXGrade??2) == 1)
{
if (model.IsCustomSpecification == 1)
{
var dcList = model.SpecificationPriceList.Where(x => x.DistributorGrade == disModel.GradeId).ToList();
model.MaxShare = dcList.Max(x => x.OneCommission ?? 0);
if (model.SeparateDistributionMoneyType == 1)
{
model.MaxShare = Math.Round(model.MaxShare * MaxSellMoney / 100, 2, MidpointRounding.AwayFromZero);
}
}
else
{
if (disModel.GradeId == 0)
{
//拿分销基础配置
//if ((BasicsModel?.IsCommissionResidue ?? 2) == 1)
//{
// model.MaxShare = (BasicsModel?.OneCommission ?? 0) + (BasicsModel?.TwoCommission ?? 0) + (BasicsModel?.ThreeCommission ?? 0);
//}
//else
//{
model.MaxShare = BasicsModel?.OneCommission ?? 0;
//}
if ((BasicsModel?.DistributorCommissionType ?? 2) == 1)
{
model.MaxShare = Math.Round(model.MaxShare * MaxSellMoney / 100, 2, MidpointRounding.AwayFromZero);
}
}
else if (disModel.GradeId > 0)
{
//获取分销商等级
var disgradeModel = distributor_GradeRepository.GetEntity(disModel.GradeId);
if (disgradeModel != null)
{
//if ((BasicsModel?.IsCommissionResidue ?? 2) == 1)
//{
// model.MaxShare = (disgradeModel?.OneCommission ?? 0) + (disgradeModel?.TwoCommission ?? 0) + (disgradeModel?.ThreeCommission ?? 0);
//}
//else
//{
model.MaxShare = disgradeModel?.OneCommission ?? 0;
//}
if ((disgradeModel?.DistributionCommissionType ?? 2) == 1)
{
model.MaxShare = Math.Round(model.MaxShare * MaxSellMoney / 100, 2, MidpointRounding.AwayFromZero);
}
}
}
}
}
else
{
//判断是否开启和平返佣
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Distributor_HPCommission.Status),
FiledValue=0,
......@@ -1284,100 +1340,100 @@ namespace Mall.Module.Product
OperatorEnum=OperatorEnum.Equal
}
};
if (distributor_HPCommissionRepository.Exists(wheres))
{
//获取和平分销返佣
if (disModel.HPGradeId > 0 && model.CostPrice > 0)
if (distributor_HPCommissionRepository.Exists(wheres))
{
string categoryids = string.Join(",", model.CategoryList.Select(x => x.CategoryId));
var hpcList = distributor_HPCommissionRepository.GetList(new RB_Distributor_HPCommission_Extend() { Enabled = 1, CategoryIdsT = categoryids, TenantId = TenantId, MallBaseId = MallBaseId });
if (hpcList.Any())
//获取和平分销返佣
if (disModel.HPGradeId > 0 && model.CostPrice > 0)
{
RB_Distributor_HPCommission_Extend hpcModel;
if (hpcList.Where(x => x.IsCommon != 1).Any())
string categoryids = string.Join(",", model.CategoryList.Select(x => x.CategoryId));
var hpcList = distributor_HPCommissionRepository.GetList(new RB_Distributor_HPCommission_Extend() { Enabled = 1, CategoryIdsT = categoryids, TenantId = TenantId, MallBaseId = MallBaseId });
if (hpcList.Any())
{
//有使用非通用返佣
hpcModel = hpcList.Where(x => x.IsCommon != 1).FirstOrDefault();
}
else
{
//查询通用返佣
hpcModel = hpcList.Where(x => x.IsCommon == 1).FirstOrDefault();
}
//查询所有返佣比例
var gList = distributor_HPGradeRatioRepository.GetList(new RB_Distributor_HPGradeRatio_Extend() { CommissionId = hpcModel.Id, TenantId = TenantId, MallBaseId = MallBaseId });
RB_Distributor_HPCommission_Extend hpcModel;
if (hpcList.Where(x => x.IsCommon != 1).Any())
{
//有使用非通用返佣
hpcModel = hpcList.Where(x => x.IsCommon != 1).FirstOrDefault();
}
else
{
//查询通用返佣
hpcModel = hpcList.Where(x => x.IsCommon == 1).FirstOrDefault();
}
//查询所有返佣比例
var gList = distributor_HPGradeRatioRepository.GetList(new RB_Distributor_HPGradeRatio_Extend() { CommissionId = hpcModel.Id, TenantId = TenantId, MallBaseId = MallBaseId });
var ratioModel = gList.Where(x => x.GradeId == disModel.HPGradeId).FirstOrDefault();
decimal MPrice = (model.CostPrice ?? 0) / (1 - ((ratioModel.CommissionRatio ?? 0) / 100));
model.MaxShare = MaxSellMoney - MPrice > 0 ? MaxSellMoney - MPrice : 0;
if (hpcModel.DecimalType == 1)
{
model.MaxShare = Math.Ceiling(model.MaxShare);
}
else if (hpcModel.DecimalType == 2)
{
model.MaxShare = Math.Ceiling(model.MaxShare * 100) / 100;
var ratioModel = gList.Where(x => x.GradeId == disModel.HPGradeId).FirstOrDefault();
decimal MPrice = (model.CostPrice ?? 0) / (1 - ((ratioModel.CommissionRatio ?? 0) / 100));
model.MaxShare = MaxSellMoney - MPrice > 0 ? MaxSellMoney - MPrice : 0;
if (hpcModel.DecimalType == 1)
{
model.MaxShare = Math.Ceiling(model.MaxShare);
}
else if (hpcModel.DecimalType == 2)
{
model.MaxShare = Math.Ceiling(model.MaxShare * 100) / 100;
}
}
}
}
}
else
{
var BasicsModel = distributor_BasicsRepository.GetList(new RB_Distributor_Basics_Extend() { TenantId = TenantId, MallBaseId = MallBaseId }).FirstOrDefault();
if (model.SeparateDistribution == 1)
{
var dcList = model.DistributionCommissionList.Where(x => x.DistributorGrade == disModel.GradeId).ToList();
//if ((BasicsModel?.IsCommissionResidue ?? 2) == 1)
//{
// model.MaxShare = dcList.Max(x => (x.OneCommission ?? 0) + (x.TwoCommission ?? 0) + (x.ThreeCommission ?? 0));
//}
//else
//{
model.MaxShare = dcList.Max(x => x.OneCommission ?? 0);
//}
// 这里需注意,可能需要分销 是否提所有返佣控制
if (model.SeparateDistributionMoneyType == 1)
{
model.MaxShare = Math.Round(model.MaxShare * MaxSellMoney / 100, 2, MidpointRounding.AwayFromZero);
}
}
else
{
if (disModel.GradeId == 0)
if (model.SeparateDistribution == 1)
{
//拿分销基础配置
var dcList = model.DistributionCommissionList.Where(x => x.DistributorGrade == disModel.GradeId).ToList();
//if ((BasicsModel?.IsCommissionResidue ?? 2) == 1)
//{
// model.MaxShare = (BasicsModel?.OneCommission ?? 0) + (BasicsModel?.TwoCommission ?? 0) + (BasicsModel?.ThreeCommission ?? 0);
// model.MaxShare = dcList.Max(x => (x.OneCommission ?? 0) + (x.TwoCommission ?? 0) + (x.ThreeCommission ?? 0));
//}
//else
//{
model.MaxShare = BasicsModel?.OneCommission ?? 0;
model.MaxShare = dcList.Max(x => x.OneCommission ?? 0);
//}
if ((BasicsModel?.DistributorCommissionType ?? 2) == 1)
// 这里需注意,可能需要分销 是否提所有返佣控制
if (model.SeparateDistributionMoneyType == 1)
{
model.MaxShare = Math.Round(model.MaxShare * MaxSellMoney / 100, 2, MidpointRounding.AwayFromZero);
}
}
else if (disModel.GradeId > 0)
else
{
//获取分销商等级
var disgradeModel = distributor_GradeRepository.GetEntity(disModel.GradeId);
if (disgradeModel != null)
if (disModel.GradeId == 0)
{
//拿分销基础配置
//if ((BasicsModel?.IsCommissionResidue ?? 2) == 1)
//{
// model.MaxShare = (disgradeModel?.OneCommission ?? 0) + (disgradeModel?.TwoCommission ?? 0) + (disgradeModel?.ThreeCommission ?? 0);
// model.MaxShare = (BasicsModel?.OneCommission ?? 0) + (BasicsModel?.TwoCommission ?? 0) + (BasicsModel?.ThreeCommission ?? 0);
//}
//else
//{
model.MaxShare = disgradeModel?.OneCommission ?? 0;
model.MaxShare = BasicsModel?.OneCommission ?? 0;
//}
if ((disgradeModel?.DistributionCommissionType ?? 2) == 1)
if ((BasicsModel?.DistributorCommissionType ?? 2) == 1)
{
model.MaxShare = Math.Round(model.MaxShare * MaxSellMoney / 100, 2, MidpointRounding.AwayFromZero);
}
}
else if (disModel.GradeId > 0)
{
//获取分销商等级
var disgradeModel = distributor_GradeRepository.GetEntity(disModel.GradeId);
if (disgradeModel != null)
{
//if ((BasicsModel?.IsCommissionResidue ?? 2) == 1)
//{
// model.MaxShare = (disgradeModel?.OneCommission ?? 0) + (disgradeModel?.TwoCommission ?? 0) + (disgradeModel?.ThreeCommission ?? 0);
//}
//else
//{
model.MaxShare = disgradeModel?.OneCommission ?? 0;
//}
if ((disgradeModel?.DistributionCommissionType ?? 2) == 1)
{
model.MaxShare = Math.Round(model.MaxShare * MaxSellMoney / 100, 2, MidpointRounding.AwayFromZero);
}
}
}
}
}
}
......
......@@ -98,7 +98,8 @@ namespace Mall.Module.User
WithdrawWay = "[" + (int)Common.Enum.User.DistrbutorWithdrawWayEnum.ZDDK + "]",
IsCommissionResidue = 2,
HpReferralsGradeAudit = 2,
IsWithdrawAll = 2
IsWithdrawAll = 2,
IsEnableFXGrade = 2
}) > 0;
}
else
......
......@@ -900,6 +900,7 @@ namespace Mall.Module.User
{ nameof(RB_Distributor_Basics.HpReferralsGradeAudit),demodel.HpReferralsGradeAudit},
{ nameof(RB_Distributor_Basics.IsCommissionResidue),demodel.IsCommissionResidue},
{ nameof(RB_Distributor_Basics.IsWithdrawAll),demodel.IsWithdrawAll},
{ nameof(RB_Distributor_Basics.IsEnableFXGrade),demodel.IsEnableFXGrade},
};
List<WhereHelper> whereHelpers = new List<WhereHelper>() {
new WhereHelper(){
......@@ -4485,14 +4486,79 @@ namespace Mall.Module.User
var list = distributor_FXGradeRepository.GetList(new RB_Distributor_FXGrade_Extend() { TenantId = tenantId, MallBaseId = mallBaseId });
if (list.Any())
{
var pModel = list.Where(x => x.IsGuest == 1).FirstOrDefault();
if (pModel == null) {
return ApiResult.Failed("未查询到普通会员等级");
}
List<string> TitleList = new List<string>();
TitleList.Add("等级名称");
TitleList.Add("级别标准");
TitleList.Add(pModel.GradeName);
TitleList.Add("间接普会");
foreach (var item in list) {
if (item.Id != pModel.Id) {
TitleList.Add(item.GradeName);
}
}
List<object> ContenList = new List<object>();
foreach (var item in list) {
List<string> itemList = new List<string>();
itemList.Add(item.GradeName);
itemList.Add((item.CommissionRatio ?? 0).ToString() + "%");
foreach (var qitem in list) {
if (qitem.Id == pModel.Id)
{
itemList.Add(GetFXGradeRatioCommon(list, item.Id, qitem.Id, 1).ToString() + "%");
itemList.Add(GetFXGradeRatioCommon(list, item.Id, qitem.Id, 2).ToString() + "%");
}
else
{
itemList.Add(GetFXGradeRatioCommon(list, item.Id, qitem.Id).ToString() + "%");
}
}
ContenList.Add(itemList);
}
return ApiResult.Success();
return ApiResult.Success("",new {
TitleList,
ContenList
});
}
else {
return ApiResult.Failed("没有数据");
}
}
/// <summary>
/// 获取比例
/// </summary>
/// <param name="list"></param>
/// <param name="id1"></param>
/// <param name="id2"></param>
/// <returns></returns>
private decimal GetFXGradeRatioCommon(List<RB_Distributor_FXGrade_Extend> list, int id1, int id2, int Type = 1)
{
var model1 = list.Where(x => x.Id == id1).FirstOrDefault();
var model2 = list.Where(x => x.Id == id2).FirstOrDefault();
var pModel = list.Where(x => x.IsGuest == 1).FirstOrDefault();
if (id1 == id2 && Type == 1)
{
return model1.SiblingRatio ?? 0;
}
if (model2.Grade > model1.Grade)
{
return 0;
}
if (model1.Grade > model2.Grade && Type == 1) {
return (model1.CommissionRatio ?? 0) - (model2.CommissionRatio ?? 0);
}
if (id2 == pModel.Id && Type == 2) {
if (id1 == id2) { return 0; }
return (model1.CommissionRatio ?? 0) - ((pModel.CommissionRatio ?? 0) + (pModel.SiblingRatio ?? 0));
}
return 0;
}
#endregion
#region ERP查询用户返佣
......
......@@ -784,6 +784,7 @@ namespace Mall.WebApi.Controllers.User
demodel.IndexImage ??= 0;
demodel.HpReferralsGradeAudit ??= 2;
demodel.IsWithdrawAll ??= 2;
demodel.IsEnableFXGrade ??= 2;
demodel.TenantId = Convert.ToInt32(requestParm.uid);
demodel.MallBaseId = requestParm.MallBaseId;
demodel.CreateDate = DateTime.Now;
......@@ -836,6 +837,7 @@ namespace Mall.WebApi.Controllers.User
model.IsCommissionResidue,
model.HpReferralsGradeAudit,
model.IsWithdrawAll,
model.IsEnableFXGrade,
UpdateDate = model.UpdateDate.HasValue ? model.UpdateDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
});
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment