Commit 91349953 authored by 吴春's avatar 吴春
parents 8970e714 d6d990ac
......@@ -713,8 +713,13 @@ namespace Mall.Module.User
}
}
}
}
vipBuyRepository.DBSession.Commit();
}
}
vipBuyRepository.DBSession.Commit();
if (basicModel.IsEnableFXGrade == 1) {
//购买vip之后 其上级验证 如果满足升级 将自动升级为更高级别的分销商
System.Threading.Tasks.Task.Run(() => FXAutoUpgradeUserDistributorGrade(BuyUserId, TenantId, MallBaseId));
}
return true;
}
......@@ -726,5 +731,124 @@ namespace Mall.Module.User
return false;
}
}
/// <summary>
/// 自动升级粉象分销商等级
/// </summary>
/// <param name="BuyUserId"></param>
/// <returns></returns>
public bool FXAutoUpgradeUserDistributorGrade(int BuyUserId,int TenantId,int MallBaseId) {
try
{
var umodel = member_UserRepository.GetEntity(BuyUserId);
if (umodel == null) { return false; }
if (umodel.SuperiorId > 0)
{
//粉象等级列表
var FXList = distributor_FXGradeRepository.GetList(new RB_Distributor_FXGrade_Extend() { TenantId = TenantId, MallBaseId = MallBaseId });
var dispmodel = distributor_InfoRepository.GetListForSingle(new RB_Distributor_Info_Extend() { UserId = umodel.SuperiorId, AuditStatus = Common.Enum.User.DistributorAuditStatusEnum.Audited, TenantId = TenantId, MallBaseId = MallBaseId }).FirstOrDefault();
if (dispmodel == null) { return false; }
var fxpmodel = FXList.Where(x => x.Id == (dispmodel.FXGradeId ?? 0)).FirstOrDefault();
var fxNext = FXList.Where(x => x.Grade > fxpmodel.Grade).OrderBy(x => x.Grade).FirstOrDefault();
if (fxpmodel != null && fxNext != null && fxNext.IsUpgrade == 1 && fxNext.UpgradeNum > 0 && fxNext.UpgradeId > 0)
{
//查询当前父级用户是否满足升级
var gmodel = FXList.Where(x => x.Id == fxNext.UpgradeId).FirstOrDefault();
//获取其下级数量
var upFXList = FXList.Where(x => x.Grade >= gmodel.Grade).ToList();
int MeetNum = 0;
//已发展等级
if (upFXList.Any())
{
string FXGradeIds = string.Join(",", upFXList.Select(x => x.Id));
MeetNum = member_UserRepository.GetUserReferralsForFX(new RB_Member_User_Extend() { TenantId = TenantId, MallBaseId = MallBaseId, SuperiorId = umodel.SuperiorId, FXGradeIds = FXGradeIds });
}
if ((fxNext.UpgradeNum ?? 0) <= MeetNum)
{
//可以升级咯
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Distributor_Info.FXGradeId),fxNext.Id},
{ nameof(RB_Distributor_Info.Remark),dispmodel.Remark+" 分销商满足升级条件:"+(fxNext.UpgradeNum ?? 0)+"位"+(gmodel.GradeName??"")+"下线,已自动升级为"+(fxNext.GradeName??"")},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Distributor_Info.Id),
FiledValue=dispmodel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
bool flag = distributor_InfoRepository.Update(keyValues, wheres);
if (flag) {
//继续找其上级的上级
//查询出当前用户的所有上级
var upmodel = member_UserRepository.GetEntity(umodel.SuperiorId);
if (upmodel.SuperiorId > 0)
{
string UserIds = member_UserRepository.GetMemberParentIdStr(upmodel.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, AuditStatus = Common.Enum.User.DistributorAuditStatusEnum.Audited, TenantId = TenantId, MallBaseId = MallBaseId });
int PId = upmodel.SuperiorId ?? 0;
for (var i = 1; i < ulist.Count(); i++) {
if (PId <= 0) { break; }
var uppmodel = ulist.Where(x => x.Id == PId).FirstOrDefault();
if (uppmodel == null) { break; }
var disppmodel = dlist.Where(x => x.UserId == uppmodel.Id).FirstOrDefault();
if (disppmodel == null) { break; }
var fxppmodel = FXList.Where(x => x.Id == (disppmodel.FXGradeId ?? 0)).FirstOrDefault();
if (fxppmodel == null) { break; }
var fxpNext = FXList.Where(x => x.Grade > fxppmodel.Grade).OrderBy(x => x.Grade).FirstOrDefault();
if (fxppmodel != null && fxpNext != null && fxpNext.IsUpgrade == 1 && fxpNext.UpgradeNum > 0 && fxpNext.UpgradeId > 0)
{
//查询当前父级用户是否满足升级
var gpmodel = FXList.Where(x => x.Id == fxpNext.UpgradeId).FirstOrDefault();
//获取其下级数量
var upFXpList = FXList.Where(x => x.Grade >= gpmodel.Grade).ToList();
int pMeetNum = 0;
//已发展等级
if (upFXpList.Any())
{
string FXGradeIds = string.Join(",", upFXpList.Select(x => x.Id));
pMeetNum = member_UserRepository.GetUserReferralsForFX(new RB_Member_User_Extend() { TenantId = TenantId, MallBaseId = MallBaseId, SuperiorId = uppmodel.Id, FXGradeIds = FXGradeIds });
}
if ((fxpNext.UpgradeNum ?? 0) <= pMeetNum)
{
//上级可以升级咯
Dictionary<string, object> keyValues1 = new Dictionary<string, object>() {
{ nameof(RB_Distributor_Info.FXGradeId),fxNext.Id},
{ nameof(RB_Distributor_Info.Remark),dispmodel.Remark+" 分销商满足升级条件:"+(fxpNext.UpgradeNum ?? 0)+"位"+(gpmodel.GradeName??"")+"下线,已自动升级为"+(fxpNext.GradeName??"")},
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Distributor_Info.Id),
FiledValue=dispmodel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
distributor_InfoRepository.Update(keyValues1, wheres1);
}
else {
break;
}
}
else {
break;
}
PId = uppmodel.SuperiorId ?? 0;
}
}
}
}
}
}
return true;
}
catch (Exception ex)
{
LogHelper.Write(ex, "FXAutoUpgradeUserDistributorGrade");
return false;
}
}
}
}
......@@ -61,26 +61,61 @@ where {where} order by v.Id desc";
/// <param name="dmodel"></param>
/// <returns></returns>
public List<RB_VipBuy_Commission_Extend> GetList(RB_VipBuy_Commission_Extend dmodel) {
string where = " 1=1 and b.Status =0";
string where = " 1=1 ";
if (dmodel.TenantId > 0)
{
where += $@" and b.{nameof(RB_VipBuy_Commission.TenantId)}={dmodel.TenantId}";
where += $@" and v.{nameof(RB_VipBuy_Commission.TenantId)}={dmodel.TenantId}";
}
if (dmodel.MallBaseId > 0)
{
where += $@" and b.{nameof(RB_VipBuy_Commission.MallBaseId)}={dmodel.MallBaseId}";
where += $@" and v.{nameof(RB_VipBuy_Commission.MallBaseId)}={dmodel.MallBaseId}";
}
if (dmodel.Id > 0)
{
where += $@" and b.{nameof(RB_VipBuy_Commission.Id)}={dmodel.Id}";
where += $@" and v.{nameof(RB_VipBuy_Commission.Id)}={dmodel.Id}";
}
if (!string.IsNullOrEmpty(dmodel.VipIds))
{
where += $@" and v.{nameof(RB_VipBuy_Commission.Id)} in({dmodel.VipIds})";
}
if (dmodel.OrderId > 0)
{
where += $@" and b.{nameof(RB_VipBuy_Commission.OrderId)}={dmodel.OrderId}";
where += $@" and v.{nameof(RB_VipBuy_Commission.OrderId)}={dmodel.OrderId}";
}
if (dmodel.UserId > 0)
{
where += $@" and v.{nameof(RB_VipBuy_Commission.UserId)}={dmodel.UserId}";
}
if (dmodel.Type > 0)
{
where += $@" and v.{nameof(RB_VipBuy_Commission.Type)}={dmodel.Type}";
}
if (dmodel.IsRemit == 2) {
where += $@" and v.{nameof(RB_VipBuy_Commission.IsRemit)} <> 1";
}
string sql = $@"select v.* from RB_VipBuy_Commission v where {where} order by v.Id desc";
string sql = $@"select v.*,vb.OrderNo from RB_VipBuy_Commission v
inner join rb_vip_buy vb on v.OrderId = vb.Id
where {where} order by v.Id desc";
return Get<RB_VipBuy_Commission_Extend>(sql).ToList();
}
/// <summary>
/// 获取vip返佣总额
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public decimal getVipBuyCommissionMoney(int userId)
{
string sql = $@"select SUM(v.Commission) as Commission from RB_VipBuy_Commission v where v.UserId=" + userId;
var obj = ExecuteScalar(sql);
if (obj != null)
{
return Convert.ToDecimal(obj);
}
else {
return 0;
}
}
}
}
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