Commit c4c0718f authored by liudong1993's avatar liudong1993

返佣

parent 9b472457
...@@ -211,5 +211,9 @@ namespace Mall.Model.Entity.User ...@@ -211,5 +211,9 @@ namespace Mall.Model.Entity.User
/// 是否必须提完所有 /// 是否必须提完所有
/// </summary> /// </summary>
public int? IsWithdrawAll { get; set; } public int? IsWithdrawAll { get; set; }
/// <summary>
/// 是否启用粉象返佣 1是 2否
/// </summary>
public int? IsEnableFXGrade { get; set; }
} }
} }
...@@ -1261,8 +1261,64 @@ namespace Mall.Module.Product ...@@ -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(); 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) if (disModel != null)
{ {
//判断是否开启和平返佣 var BasicsModel = distributor_BasicsRepository.GetList(new RB_Distributor_Basics_Extend() { TenantId = TenantId, MallBaseId = MallBaseId }).FirstOrDefault();
List<WhereHelper> wheres = new List<WhereHelper>() { 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(){ new WhereHelper(){
FiledName=nameof(RB_Distributor_HPCommission.Status), FiledName=nameof(RB_Distributor_HPCommission.Status),
FiledValue=0, FiledValue=0,
...@@ -1284,100 +1340,100 @@ namespace Mall.Module.Product ...@@ -1284,100 +1340,100 @@ namespace Mall.Module.Product
OperatorEnum=OperatorEnum.Equal OperatorEnum=OperatorEnum.Equal
} }
}; };
if (distributor_HPCommissionRepository.Exists(wheres)) if (distributor_HPCommissionRepository.Exists(wheres))
{
//获取和平分销返佣
if (disModel.HPGradeId > 0 && model.CostPrice > 0)
{ {
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 (disModel.HPGradeId > 0 && model.CostPrice > 0)
if (hpcList.Any())
{ {
RB_Distributor_HPCommission_Extend hpcModel; string categoryids = string.Join(",", model.CategoryList.Select(x => x.CategoryId));
if (hpcList.Where(x => x.IsCommon != 1).Any()) var hpcList = distributor_HPCommissionRepository.GetList(new RB_Distributor_HPCommission_Extend() { Enabled = 1, CategoryIdsT = categoryids, TenantId = TenantId, MallBaseId = MallBaseId });
if (hpcList.Any())
{ {
//有使用非通用返佣 RB_Distributor_HPCommission_Extend hpcModel;
hpcModel = hpcList.Where(x => x.IsCommon != 1).FirstOrDefault(); if (hpcList.Where(x => x.IsCommon != 1).Any())
} {
else //有使用非通用返佣
{ hpcModel = hpcList.Where(x => x.IsCommon != 1).FirstOrDefault();
//查询通用返佣 }
hpcModel = hpcList.Where(x => x.IsCommon == 1).FirstOrDefault(); else
} {
//查询所有返佣比例 //查询通用返佣
var gList = distributor_HPGradeRatioRepository.GetList(new RB_Distributor_HPGradeRatio_Extend() { CommissionId = hpcModel.Id, TenantId = TenantId, MallBaseId = MallBaseId }); 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(); var ratioModel = gList.Where(x => x.GradeId == disModel.HPGradeId).FirstOrDefault();
decimal MPrice = (model.CostPrice ?? 0) / (1 - ((ratioModel.CommissionRatio ?? 0) / 100)); decimal MPrice = (model.CostPrice ?? 0) / (1 - ((ratioModel.CommissionRatio ?? 0) / 100));
model.MaxShare = MaxSellMoney - MPrice > 0 ? MaxSellMoney - MPrice : 0; model.MaxShare = MaxSellMoney - MPrice > 0 ? MaxSellMoney - MPrice : 0;
if (hpcModel.DecimalType == 1) if (hpcModel.DecimalType == 1)
{ {
model.MaxShare = Math.Ceiling(model.MaxShare); model.MaxShare = Math.Ceiling(model.MaxShare);
} }
else if (hpcModel.DecimalType == 2) else if (hpcModel.DecimalType == 2)
{ {
model.MaxShare = Math.Ceiling(model.MaxShare * 100) / 100; 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 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) //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 //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); model.MaxShare = Math.Round(model.MaxShare * MaxSellMoney / 100, 2, MidpointRounding.AwayFromZero);
} }
} }
else if (disModel.GradeId > 0) else
{ {
//获取分销商等级 if (disModel.GradeId == 0)
var disgradeModel = distributor_GradeRepository.GetEntity(disModel.GradeId);
if (disgradeModel != null)
{ {
//拿分销基础配置
//if ((BasicsModel?.IsCommissionResidue ?? 2) == 1) //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 //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); 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 ...@@ -98,7 +98,8 @@ namespace Mall.Module.User
WithdrawWay = "[" + (int)Common.Enum.User.DistrbutorWithdrawWayEnum.ZDDK + "]", WithdrawWay = "[" + (int)Common.Enum.User.DistrbutorWithdrawWayEnum.ZDDK + "]",
IsCommissionResidue = 2, IsCommissionResidue = 2,
HpReferralsGradeAudit = 2, HpReferralsGradeAudit = 2,
IsWithdrawAll = 2 IsWithdrawAll = 2,
IsEnableFXGrade = 2
}) > 0; }) > 0;
} }
else else
......
...@@ -900,6 +900,7 @@ namespace Mall.Module.User ...@@ -900,6 +900,7 @@ namespace Mall.Module.User
{ nameof(RB_Distributor_Basics.HpReferralsGradeAudit),demodel.HpReferralsGradeAudit}, { nameof(RB_Distributor_Basics.HpReferralsGradeAudit),demodel.HpReferralsGradeAudit},
{ nameof(RB_Distributor_Basics.IsCommissionResidue),demodel.IsCommissionResidue}, { nameof(RB_Distributor_Basics.IsCommissionResidue),demodel.IsCommissionResidue},
{ nameof(RB_Distributor_Basics.IsWithdrawAll),demodel.IsWithdrawAll}, { nameof(RB_Distributor_Basics.IsWithdrawAll),demodel.IsWithdrawAll},
{ nameof(RB_Distributor_Basics.IsEnableFXGrade),demodel.IsEnableFXGrade},
}; };
List<WhereHelper> whereHelpers = new List<WhereHelper>() { List<WhereHelper> whereHelpers = new List<WhereHelper>() {
new WhereHelper(){ new WhereHelper(){
...@@ -4485,14 +4486,79 @@ namespace Mall.Module.User ...@@ -4485,14 +4486,79 @@ namespace Mall.Module.User
var list = distributor_FXGradeRepository.GetList(new RB_Distributor_FXGrade_Extend() { TenantId = tenantId, MallBaseId = mallBaseId }); var list = distributor_FXGradeRepository.GetList(new RB_Distributor_FXGrade_Extend() { TenantId = tenantId, MallBaseId = mallBaseId });
if (list.Any()) 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 { else {
return ApiResult.Failed("没有数据"); 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 #endregion
#region ERP查询用户返佣 #region ERP查询用户返佣
......
...@@ -784,6 +784,7 @@ namespace Mall.WebApi.Controllers.User ...@@ -784,6 +784,7 @@ namespace Mall.WebApi.Controllers.User
demodel.IndexImage ??= 0; demodel.IndexImage ??= 0;
demodel.HpReferralsGradeAudit ??= 2; demodel.HpReferralsGradeAudit ??= 2;
demodel.IsWithdrawAll ??= 2; demodel.IsWithdrawAll ??= 2;
demodel.IsEnableFXGrade ??= 2;
demodel.TenantId = Convert.ToInt32(requestParm.uid); demodel.TenantId = Convert.ToInt32(requestParm.uid);
demodel.MallBaseId = requestParm.MallBaseId; demodel.MallBaseId = requestParm.MallBaseId;
demodel.CreateDate = DateTime.Now; demodel.CreateDate = DateTime.Now;
...@@ -836,6 +837,7 @@ namespace Mall.WebApi.Controllers.User ...@@ -836,6 +837,7 @@ namespace Mall.WebApi.Controllers.User
model.IsCommissionResidue, model.IsCommissionResidue,
model.HpReferralsGradeAudit, model.HpReferralsGradeAudit,
model.IsWithdrawAll, model.IsWithdrawAll,
model.IsEnableFXGrade,
UpdateDate = model.UpdateDate.HasValue ? model.UpdateDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "" 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