Commit f883ca96 authored by liudong1993's avatar liudong1993

返佣

parent 759adbfa
......@@ -53,6 +53,22 @@ namespace Mall.Module.User
/// 会员信息
/// </summary>
private readonly RB_Member_UserRepository member_UserRepository = new RB_Member_UserRepository();
/// <summary>
/// 分销商
/// </summary>
private readonly RB_Distributor_InfoRepository distributor_InfoRepository = new RB_Distributor_InfoRepository();
/// <summary>
/// vip购买返佣
/// </summary>
private readonly RB_VipBuy_CommissionRepository vipBuy_CommissionRepository = new RB_VipBuy_CommissionRepository();
/// <summary>
/// 粉象vip购买返佣金额
/// </summary>
private readonly RB_Distributor_FXCommissionRepository distributor_FXCommissionRepository = new RB_Distributor_FXCommissionRepository();
/// <summary>
/// 粉象发脓等级
/// </summary>
private readonly RB_Distributor_FXGradeRepository distributor_FXGradeRepository = new RB_Distributor_FXGradeRepository();
private readonly MiniProgramMsgModule appletWeChatModule = new MiniProgramMsgModule();
......@@ -355,10 +371,221 @@ namespace Mall.Module.User
/// 新增vip购买返佣
/// </summary>
/// <param name="OrderId">vip购买单号id</param>
/// <param name="UserId">购买人</param>
/// <param name="BuyUserId">购买人</param>
/// <returns></returns>
public bool InsertVipBuyCommission(int OrderId, int UserId) {
public bool InsertVipBuyCommission(int OrderId, int BuyUserId,int IsFristBuy,int TenantId,int MallBaseId) {
try
{
//获取用户当前分销商
var basicModel = distributor_BasicsRepository.GetList(new RB_Distributor_Basics_Extend() { TenantId = TenantId, MallBaseId = MallBaseId }).FirstOrDefault();
if (basicModel.IsEnableFXGrade == 1)
{
var uModel = member_UserRepository.GetEntity(BuyUserId);
if (uModel == null) { return false; }
//粉象等级列表
var FXList = distributor_FXGradeRepository.GetList(new RB_Distributor_FXGrade_Extend() { TenantId = TenantId, MallBaseId = MallBaseId });
var VipModel = FXList.Where(x => x.IsGuest == 3).FirstOrDefault();
var PTModel = FXList.Where(x => x.IsGuest == 1).FirstOrDefault();
//vip购买返佣金额列表
var FXCList = distributor_FXCommissionRepository.GetFXCommissionList(new RB_Distributor_FXCommission_Extend() { TenantId = TenantId, MallBaseId = MallBaseId });
var disModel = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { TenantId = TenantId, MallBaseId = MallBaseId, UserId = BuyUserId, AuditStatus = Common.Enum.User.DistributorAuditStatusEnum.Audited }).FirstOrDefault();
if (disModel != null) {
if (disModel.FXGradeId != VipModel.Id) {
return false;
}
//求其上级
var pmodel = member_UserRepository.GetEntity(uModel.SuperiorId);
if (pmodel == null) { return false; }
var dispModel = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { TenantId = TenantId, MallBaseId = MallBaseId, UserId = pmodel.Id, AuditStatus = Common.Enum.User.DistributorAuditStatusEnum.Audited }).FirstOrDefault();
if (dispModel != null) {
var pfxModel = FXList.Where(x => x.Id == dispModel.FXGradeId).FirstOrDefault();
if (pfxModel == null) { return false; }
if (pfxModel.Grade < VipModel.Grade) {
return false;//其上级不是vip 直接后面的全部不提
}
//查询出当前用户的所有上级
string UserIds = member_UserRepository.GetMemberParentIdStr(pmodel.Id);
var ulist = member_UserRepository.GetList(new RB_Member_User_Extend() { UserIds = UserIds, TenantId = TenantId, MallBaseId = MallBaseId });
//查询出用户的所有分销信息
var dlist = distributor_InfoRepository.GetListForSingle(new RB_Distributor_Info_Extend() { UserIds = UserIds, TenantId = TenantId, MallBaseId = MallBaseId });
foreach (var item in dlist)
{
item.Grade = FXList.Where(x => x.Id == item.FXGradeId).FirstOrDefault()?.Grade ?? 0;
}
//返佣
List<RB_VipBuy_Commission> gocList = new List<RB_VipBuy_Commission>();
List<Model.Entity.Product.FXOrderCommissionNumModel> fxNumList = new List<Model.Entity.Product.FXOrderCommissionNumModel>();
int UserId = pmodel.Id;
int Num = 1;
while (UserId > 0)
{
var numodel = ulist.Where(x => x.Id == UserId).FirstOrDefault();
if (numodel == null)
{
UserId = 0;
break;
}
var d2Model = dlist.Where(x => x.UserId == numodel.Id).FirstOrDefault();
if (d2Model == null)
{
UserId = 0;
break;
}
var FXGModel = FXList.Where(x => x.Id == d2Model.FXGradeId).FirstOrDefault();
if (FXGModel == null)
{
UserId = 0;
break;
}
if (!fxNumList.Any())
{
UserId = numodel.SuperiorId ?? 0;
//第一个人 拿直推vip
var fxcModel = FXCList.Where(x => x.FXGradeId == FXGModel.Id && x.CommissionGradeId == VipModel.Id && x.GradeType == 1).FirstOrDefault();
fxNumList.Add(new Model.Entity.Product.FXOrderCommissionNumModel()
{
GradeId = FXGModel.Id,
Grade = FXGModel.Grade ?? 0,
Money = fxcModel?.CommissionPrice ?? 0,
Sort = Num,
IsSelfBuy = 2
});
gocList.Add(new RB_VipBuy_Commission()
{
Id = 0,
Commission = fxcModel?.CommissionPrice ?? 0,
CreateDate = DateTime.Now,
Grade = FXGModel.Id,
IsRemit = 0,
MallBaseId = MallBaseId,
OrderId = OrderId,
Remark = IsFristBuy == 1 ? "下线购买vip返佣" : "下线续费vip返佣",
TenantId = TenantId,
Type = 1,
UpdateDate = DateTime.Now,
UserId = UserId
});
Num++;
}
else
{
//后面的拿间接vip 或者其他
int MaxGrade = fxNumList.Max(x => x.Grade);
if (FXGModel.Grade < MaxGrade)
{
//后面的全部不返佣
UserId = 0;
break;
}
int MaxGradeNum = fxNumList.Where(x => x.Grade == FXGModel.Grade).Count();
int MaxGradeId = fxNumList.Where(x => x.Grade == MaxGrade).FirstOrDefault()?.GradeId ?? 0;
if ((FXGModel.SiblingRebatesNum ?? 0) + 1 > MaxGradeNum)
{
UserId = numodel.SuperiorId ?? 0;
decimal DcommionMoney = 0;
if (MaxGradeNum >= 1 && MaxGrade == VipModel.Id)
{
//拿间接vip
var fxcModel = FXCList.Where(x => x.FXGradeId == FXGModel.Id && x.CommissionGradeId == VipModel.Id && x.GradeType == 2).FirstOrDefault();
DcommionMoney = fxcModel?.CommissionPrice ?? 0;
}
else if (FXGModel.Grade > VipModel.Grade)
{
var fxcModel = FXCList.Where(x => x.FXGradeId == FXGModel.Id && x.CommissionGradeId == MaxGradeId && x.GradeType == 1).FirstOrDefault();
DcommionMoney = fxcModel?.CommissionPrice ?? 0;
}
fxNumList.Add(new Model.Entity.Product.FXOrderCommissionNumModel()
{
GradeId = FXGModel.Id,
Grade = FXGModel.Grade ?? 0,
Money = DcommionMoney,
Sort = Num,
IsSelfBuy = 2
});
gocList.Add(new RB_VipBuy_Commission()
{
Id = 0,
Commission = DcommionMoney,
CreateDate = DateTime.Now,
Grade = FXGModel.Id,
IsRemit = 0,
MallBaseId = MallBaseId,
OrderId = OrderId,
Remark = IsFristBuy == 1 ? "下线购买vip返佣" : "下线续费vip返佣",
TenantId = TenantId,
Type = 1,
UpdateDate = DateTime.Now,
UserId = UserId
});
Num++;
}
else
{
UserId = 0;
//该等级的已提完了 看是否可以直接找到下一个等级的
var fx2List = dlist.Where(x => x.Grade > MaxGrade).ToList();
if (fx2List.Any())
{
//说明是有下一级的
for (var i = 0; i < ulist.Count; i++)
{
var n1umodel = ulist.Where(x => x.Id == (numodel.SuperiorId ?? 0)).FirstOrDefault();
if (n1umodel == null)
{
UserId = 0;
break;
}
var dis1Model = dlist.Where(x => x.UserId == n1umodel.Id).FirstOrDefault();
var FXG2Model = new RB_Distributor_FXGrade_Extend();
if (dis1Model == null)
{
UserId = 0;
break;
}
FXG2Model = FXList.Where(x => x.Id == dis1Model.FXGradeId).FirstOrDefault();
if (FXG2Model == null)
{
UserId = 0;
break;
}
if (FXG2Model.Grade < MaxGrade)
{
//后面的全部不返佣
UserId = 0;
break;
}
else if (FXG2Model.Grade > MaxGrade)
{
//已找到上级 继续返佣
UserId = n1umodel.Id;
break;
}
}
}
}
}
}
foreach (var qitem in gocList)
{
vipBuy_CommissionRepository.Insert(qitem);
}
}
}
}
return true;
}
catch (Exception ex)
{
LogHelper.Write(ex, "InsertVipBuyCommission");
return false;
}
}
}
}
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