Commit e40c3243 authored by 吴春's avatar 吴春
parents 98a0e5cc bb972274
......@@ -417,5 +417,14 @@ namespace Mall.Model.Entity.Product
/// 返佣总金额
/// </summary>
public decimal Commission { get; set; }
/// <summary>
/// 赠送粉象等级
/// </summary>
public int? PresentFXGrade { get; set; }
/// <summary>
/// 赠送的月份 几个月
/// </summary>
public int? PresentFXMonth { get; set; }
}
}
......@@ -214,5 +214,14 @@ namespace Mall.Model.Entity.Product
/// 积分赠送
/// </summary>
public int? IntegralGoodsPresent { get; set; }
/// <summary>
/// 赠送粉象等级
/// </summary>
public int? PresentFXGrade { get; set; }
/// <summary>
/// 赠送粉象等级期限(月)
/// </summary>
public int? PresentFXMonth { get; set; }
}
}
......@@ -206,6 +206,10 @@ namespace Mall.Module.Product
/// 粉象返佣
/// </summary>
private readonly RB_Distributor_FXGradeRepository distributor_FXGradeRepository = new RB_Distributor_FXGradeRepository();
/// <summary>
/// vip购买记录
/// </summary>
private readonly RB_Vip_BuyRepository vip_BuyRepository = new RB_Vip_BuyRepository();
#region 购物车
......@@ -2295,6 +2299,9 @@ namespace Mall.Module.Product
item.CommissionPrice = gmodel.Commission;// 粉象 返佣金额
item.CostMoney = gmodel.CostPrice ?? 0;//(gmodel.IsCustomSpecification==2)?(gmodel.CostPrice ?? 0):(speciPList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationSort == item.SpecificationSort).FirstOrDefault().CostMoney);
item.PresentFXGrade = gmodel.PresentFXGrade ?? 0;//赠送粉象分销等级
item.PresentFXMonth = gmodel.PresentFXMonth ?? 0;
item.ProductCode = gmodel.GoodsNumbers;
item.CategoryIdList = categoryList.Select(x => x.CategoryId ?? 0).ToList();
int GoodsWeight = gmodel.GoodsWeight ?? 0;//商品重量
......@@ -2828,11 +2835,12 @@ namespace Mall.Module.Product
}
};
member_UserRepository.Update(keyValues1, wheres1, trans);
}
}
//任务执行返佣 失败查看日志,手动返佣(空闲可增加手动返佣接口)
Task.Run(() => InsertOrderCommission(demodel, umodel, GoodsIds, OrderId));
//记录日志
Task.Run(() => goods_LogRepository.Insert(new RB_Goods_Log()
goods_LogRepository.Insert(new RB_Goods_Log()
{
Id = 0,
Type = 1,
......@@ -2841,7 +2849,7 @@ namespace Mall.Module.Product
CreateDate = DateTime.Now,
MallBaseId = demodel.MallBaseId,
TenantId = demodel.TenantId
}));
});
}
goods_OrderRepository.DBSession.Commit();
return ApiResult.Success("", new { OrderId });
......@@ -2854,6 +2862,178 @@ namespace Mall.Module.Product
}
}
/// <summary>
/// 赠送粉象等级
/// </summary>
/// <param name="demodel"></param>
/// <param name="umodel"></param>
/// <param name="OrderId"></param>
private void InsertPresentFXGrade(RB_Goods_Order_Extend demodel, int UserId, int OrderId)
{
var basicModel = distributor_BasicsRepository.GetList(new RB_Distributor_Basics_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault();
if ((basicModel?.IsEnableFXGrade ?? 2) == 1)
{
var disModel = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { UserId = UserId, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault();
if (disModel == null)
{
LogHelper.Write("该用户分销商等级不存在,UserId:" + UserId);
}
if (demodel.DetailList.Where(x => x.PresentFXGrade > 0).Any() && disModel != null)
{
var FXList = distributor_FXGradeRepository.GetList(new RB_Distributor_FXGrade_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var VIPModel = FXList.Where(x => x.IsGuest == 3).FirstOrDefault();
List<int> GradeList = new List<int>();//等级列表
int VIPMonths = 0;//vip赠送月份
foreach (var item in demodel.DetailList)
{
if (item.PresentFXGrade > 0)
{
//有赠送粉象等级
GradeList.Add(item.PresentFXGrade??0);
if (item.PresentFXGrade == (VIPModel?.Id ?? 0))
{
VIPMonths += (item.PresentFXMonth ?? 0) * (item.Number ?? 0);
}
}
}
//判断等级 取最高级别
int MaxGradeId = 0;
int MaxGrade = 0;
if (GradeList.Distinct().Count() > 1)
{
//说明有两种级别 取最高的
foreach (var item in GradeList.Distinct())
{
var fxmodel = FXList.Where(x => x.Id == item).FirstOrDefault();
MaxGrade = (fxmodel.Grade ?? 0) > MaxGrade ? (fxmodel.Grade ?? 0) : MaxGrade;
}
MaxGradeId = FXList.Where(x => x.Grade == MaxGrade).FirstOrDefault()?.Id ?? 0;
}
else
{
MaxGradeId = GradeList.FirstOrDefault();
var fxmodel = FXList.Where(x => x.Id == MaxGradeId).FirstOrDefault();
MaxGrade = (fxmodel.Grade ?? 0) > MaxGrade ? (fxmodel.Grade ?? 0) : MaxGrade;
}
var oldGrade = FXList.Where(x => x.Id == disModel.FXGradeId).FirstOrDefault()?.Grade ?? 0;
try
{
bool UpdateGrade = false;
if (MaxGradeId > 0 && MaxGrade >= oldGrade && MaxGradeId == (VIPModel?.Id ?? 0))
{
UpdateGrade = true;
string MaxGradeName = FXList.Where(x => x.Id == MaxGradeId).FirstOrDefault()?.GradeName ?? "";
//vip
var VipExpiryDate = DateTime.Now.AddMonths(VIPMonths);
if (VIPMonths >= 1)
{
VipExpiryDate = Convert.ToDateTime(VipExpiryDate.AddDays(-1).ToString("yyyy-MM-dd 23:59:59"));
}
if (MaxGrade == oldGrade && disModel.VipExpiryDate.HasValue)
{
if (disModel.VipExpiryDate > DateTime.Now)
{
VipExpiryDate = disModel.VipExpiryDate.Value.AddMonths(VIPMonths);
}
}
Dictionary<string, object> keyValues1 = new Dictionary<string, object>
{
{ nameof(RB_Distributor_Info_Extend.FXGradeId), MaxGradeId },
{ nameof(RB_Distributor_Info_Extend.VipExpiryDate), VipExpiryDate }
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Distributor_Info_Extend.Id),
FiledValue=disModel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
bool gflag = distributor_InfoRepository.Update(keyValues1, wheres1);
if (gflag)
{
//新增vip赠送记录表
Random R1 = new Random();
int Rstr1 = R1.Next(111, 999);
string OrderNo1 = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Rstr1;
vip_BuyRepository.Insert(new Model.Entity.User.RB_Vip_Buy()
{
CreateDate = DateTime.Now,
ExpiryDate = VipExpiryDate,
GradeId = MaxGradeId,
GradeName = MaxGradeName,
Id = 0,
MallBaseId = demodel.MallBaseId,
MerchantsNo = "",
Money = 0,
OrderNo = OrderNo1,
PayState = 1,
PayTime = null,
PayWay = 1,
Remark = "下单赠送,订单号:" + demodel.OrderNo + "(" + OrderId + ")",
Status = 0,
TenantId = demodel.TenantId,
UserId = UserId
});
}
}
else if (MaxGradeId > 0 && MaxGrade > oldGrade)
{
UpdateGrade = true;
string MaxGradeName = FXList.Where(x => x.Id == MaxGradeId).FirstOrDefault()?.GradeName ?? "";
//比vip高级
Dictionary<string, object> keyValues1 = new Dictionary<string, object>
{
{ nameof(RB_Distributor_Info_Extend.FXGradeId), MaxGradeId }
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Distributor_Info_Extend.Id),
FiledValue=disModel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
bool gflag = distributor_InfoRepository.Update(keyValues1, wheres1);
if (gflag)
{
//新增vip赠送记录表
Random R1 = new Random();
int Rstr1 = R1.Next(111, 999);
string OrderNo1 = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Rstr1;
vip_BuyRepository.Insert(new Model.Entity.User.RB_Vip_Buy()
{
CreateDate = DateTime.Now,
ExpiryDate = null,
GradeId = MaxGradeId,
GradeName = MaxGradeName,
Id = 0,
MallBaseId = demodel.MallBaseId,
MerchantsNo = "",
Money = 0,
OrderNo = OrderNo1,
PayState = 1,
PayTime = null,
PayWay = 1,
Remark = "下单赠送,订单号:" + demodel.OrderNo + "(" + OrderId + ")",
Status = 0,
TenantId = demodel.TenantId,
UserId = UserId
});
}
}
if (UpdateGrade)
{
new UserCommonModule().FXAutoUpgradeUserDistributorGrade(UserId, demodel.TenantId, demodel.MallBaseId);
}
}
catch (Exception ex)
{
LogHelper.Write(ex, "InsertPresentFXGrade赠送粉象分销等级失败,OrderId:" + OrderId);
}
}
}
}
/// <summary>
/// 其他付款
/// </summary>
......@@ -3050,7 +3230,7 @@ namespace Mall.Module.Product
try
{
var basicModel = distributor_BasicsRepository.GetList(new RB_Distributor_Basics_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault();
if (basicModel.IsEnableFXGrade == 1)
if ((basicModel?.IsEnableFXGrade??2) == 1)
{
//粉象返佣
var FXList = distributor_FXGradeRepository.GetList(new RB_Distributor_FXGrade_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
......@@ -3890,7 +4070,12 @@ namespace Mall.Module.Product
IntegralNumber = item.IntegralNumber,
CouponMoney = item.CouponMoney,
IntegralGoodsPresent = IntegralPresent,
SupplierId = item.SupplierId
SupplierId = item.SupplierId,
CostFinanceId = 0,
FreightCostMoney = 0,
FreightFinanceId = 0,
PresentFXGrade = item.PresentFXGrade,
PresentFXMonth = item.PresentFXMonth
}, trans);
item.Id = detailId;
......@@ -6896,6 +7081,21 @@ namespace Mall.Module.Product
});
}
}
#region 粉象等级赠送 2020-07-21
if (dlist.Any())
{
var demodel = new RB_Goods_Order_Extend
{
TenantId = tenantId,
MallBaseId = mallBaseId,
DetailList = dlist,
OrderNo = orderModel.OrderNo
};
InsertPresentFXGrade(demodel, orderModel.UserId ?? 0, orderModel.OrderId);
}
#endregion
}
else if (type == 3)
{
......
......@@ -1260,13 +1260,13 @@ namespace Mall.Module.Product
#region 最高返佣
model.MaxShare = 0;
var BasicsModel = distributor_BasicsRepository.GetList(new RB_Distributor_Basics_Extend() { TenantId = TenantId, MallBaseId = MallBaseId }).FirstOrDefault();
if (UserId > 0)
{
//获取分销商信息
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)
{
var BasicsModel = distributor_BasicsRepository.GetList(new RB_Distributor_Basics_Extend() { TenantId = TenantId, MallBaseId = MallBaseId }).FirstOrDefault();
if ((BasicsModel?.IsEnableFXGrade??2) == 1)
{
var FXList = distributor_FXGradeRepository.GetList(new RB_Distributor_FXGrade_Extend() { TenantId = TenantId, MallBaseId = MallBaseId });
......@@ -1634,6 +1634,22 @@ namespace Mall.Module.Product
}
#endregion
#region 赠送vip会员
string PresentFXGradeMsg = "";
if ((BasicsModel?.IsEnableFXGrade ?? 2) == 1)
{
if (model.PresentFXGrade > 0) {
var fxmodel = distributor_FXGradeRepository.GetEntity(model.PresentFXGrade);
if (fxmodel != null) {
PresentFXGradeMsg = "购买收货后赠送" + fxmodel + "会员";
if (model.PresentFXMonth > 0) {
PresentFXGradeMsg += (model.PresentFXMonth ?? 0) + "个月";
}
}
}
}
#endregion
#region 会员价格
decimal price_member_max = 0, price_member_min = 0, price_min = 0, price_max = 0;
if (model.EnjoyMember == 1 && model.SeparateSetMember == 1 && model.MemberPriceList.Any())
......@@ -1840,7 +1856,8 @@ namespace Mall.Module.Product
integral = new
{
title = Integral > 0 ? "购买可得" + Integral + "积分" : ""
}
},
PresentFXGradeMsg
},
//plugin_extra = new List<object>(),
express = model.Express,//快递费用 读取默认收货地址 如果没有为0 如果有 根据商品运费匹配 找出快递费用
......
......@@ -847,7 +847,7 @@ namespace Mall.Module.User
}
catch (Exception ex)
{
LogHelper.Write(ex, "FXAutoUpgradeUserDistributorGrade");
LogHelper.Write(ex, "FXAutoUpgradeUserDistributorGrade自动升级失败,BuyUserId:"+ BuyUserId);
return false;
}
}
......
......@@ -1535,6 +1535,34 @@ namespace Mall.Module.User
return flag;
}
/// <summary>
/// 新增分销商
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public bool SetDistributorInfoForFX(int FXGradeId,int UserId,int TenantId,int MallBaseId)
{
var demodel = new RB_Distributor_Info_Extend();
demodel.UserId = UserId;
demodel.TotalCommission ??= 0;
demodel.CommissionWithdrawal ??= 0;
demodel.Name ??= "";
demodel.Mobile ??= "";
demodel.GradeId ??= 0;
demodel.HPGradeId ??= 0;
demodel.FXGradeId = FXGradeId;
demodel.AuditStatus = Common.Enum.User.DistributorAuditStatusEnum.Audited;
demodel.AuditDate = DateTime.Now;
demodel.Remark = "粉象模式 自动生成普通会员分销商信息";
demodel.Status = 0;
demodel.TenantId = TenantId;
demodel.MallBaseId = MallBaseId;
demodel.CreateDate = DateTime.Now;
demodel.UpdateDate = DateTime.Now;
bool flag = distributor_InfoRepository.Insert(demodel) > 0;
return flag;
}
/// <summary>
/// 验证分销商
/// </summary>
......@@ -2187,9 +2215,31 @@ namespace Mall.Module.User
}
}
}
if (!string.IsNullOrEmpty(remodel.ReOrderNos) && !string.IsNullOrEmpty(remodel.ReVipIds)) {
List<int> VipIdList = JsonConvert.DeserializeObject<List<int>>(remodel.ReVipIds);
if (VipIdList.Any())
{
var oclist = vipBuy_CommissionRepository.GetList(new RB_VipBuy_Commission_Extend() { UserId = remodel.UserId, VipIds = string.Join(",", VipIdList) });
foreach (var qitem in oclist)
{
Dictionary<string, object> keyValues2 = new Dictionary<string, object>() {
{ nameof(RB_VipBuy_Commission_Extend.IsRemit),0}
};
List<WhereHelper> wheres2 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_VipBuy_Commission_Extend.Id),
FiledValue=qitem.Id,
OperatorEnum=OperatorEnum.Equal
}
};
vipBuy_CommissionRepository.Update(keyValues2, wheres2);
}
}
}
}
catch (Exception)
catch (Exception ex)
{
LogHelper.Write(ex, "SetDistributorRemitAudit回滚返佣字段失败");
}
#endregion
}
......@@ -3000,6 +3050,9 @@ namespace Mall.Module.User
threeNum = member_UserRepository.GetDistributorReferralsNumTwo(umodel.Id, 3, userInfo.TenantId, userInfo.MallBaseId);
}
//Vip购买返佣金额
decimal VipBuyCommission = vipBuy_CommissionRepository.getVipBuyCommissionMoney(userInfo.UserId);
var CustomModel = distributor_CustomRepository.GetList(new RB_Distributor_Custom_Extend() { TenantId = userInfo.TenantId, MallBaseId = userInfo.MallBaseId }).FirstOrDefault();
if (CustomModel == null)
{
......@@ -3043,7 +3096,8 @@ namespace Mall.Module.User
OrderCommission,
RemitMoney = remitMoney,
ReferralsNum = (basicsModel?.IsEnableFXGrade ?? 0) == 1 ? fxNum : (oneNum + twoNum + threeNum),
IsEnableFXGrade = (basicsModel?.IsEnableFXGrade ?? 0)
IsEnableFXGrade = (basicsModel?.IsEnableFXGrade ?? 0),
VipBuyCommission
}
};
}
......@@ -3322,15 +3376,40 @@ namespace Mall.Module.User
{
//所有未提现的 返佣
var clist = goods_OrderCommissionRepository.GetUserCommissionRemit(demodel.UserId ?? 0);
if (clist.Any())
var viplist = vipBuy_CommissionRepository.GetList(new RB_VipBuy_Commission_Extend() { UserId = demodel.UserId, Type = 1, IsRemit = 2 });
if (clist.Any() || viplist.Any())
{
//获取订单列表
string OrderIds = string.Join(",", clist.Select(x => x.OrderId).Distinct());
var olist = goods_OrderRepository.GetOrderList(new RB_Goods_Order_Extend() { OrderIds = OrderIds });
olist = olist.OrderByDescending(x => x.CreateDate).ToList();
List<int> OrderIdList = new List<int>();
List<int> VipIdList = new List<int>();
string OrderNos = "";
decimal TMoney = (demodel.AppliedMoney ?? 0);
//首先查询 vip购买返佣,有的话 优先提vip返佣的
if (viplist.Any()) {
foreach (var item in viplist) {
if (TMoney > 0) {
TMoney -= (item.Commission ?? 0);
Dictionary<string, object> keyValues2 = new Dictionary<string, object>() {
{ nameof(RB_VipBuy_Commission_Extend.IsRemit),1}
};
List<WhereHelper> wheres2 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_VipBuy_Commission_Extend.Id),
FiledValue=item.Id,
OperatorEnum=OperatorEnum.Equal
}
};
vipBuy_CommissionRepository.Update(keyValues2, wheres2, trans);
OrderNos += "\"VIP " + item.OrderNo + "\":" + (item.Commission ?? 0) + "元,";
VipIdList.Add(item.Id);
}
}
}
//开始递减金额 订单不足的 给与提示
foreach (var item in olist)
{
......@@ -3366,20 +3445,24 @@ namespace Mall.Module.User
{
OrderNos += " 余额" + TMoney + "尚未找到相关订单";
}
else if (TMoney < 0) {
OrderNos += " 多出" + (0 - TMoney) + "存在未匹配到正确的订单";
}
if (!string.IsNullOrEmpty(OrderNos))
{
Dictionary<string, object> keyValues1 = new Dictionary<string, object>() {
{ nameof(RB_Distributor_Remit_Extend.ReOrderNos),OrderNos},
{ nameof(RB_Distributor_Remit_Extend.ReOrderIds),JsonConvert.SerializeObject(OrderIdList)},
};
{ nameof(RB_Distributor_Remit_Extend.ReOrderNos),OrderNos},
{ nameof(RB_Distributor_Remit_Extend.ReOrderIds),JsonConvert.SerializeObject(OrderIdList)},
{ nameof(RB_Distributor_Remit_Extend.ReVipIds),JsonConvert.SerializeObject(VipIdList)},
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Distributor_Remit_Extend.Id),
FiledValue=RemitId,
OperatorEnum=OperatorEnum.Equal
}
};
new WhereHelper(){
FiledName=nameof(RB_Distributor_Remit_Extend.Id),
FiledValue=RemitId,
OperatorEnum=OperatorEnum.Equal
}
};
distributor_RemitRepository.Update(keyValues1, wheres1, trans);
}
}
......@@ -3595,13 +3678,17 @@ namespace Mall.Module.User
else
{
var FXList = distributor_FXGradeRepository.GetList(new RB_Distributor_FXGrade_Extend() { TenantId = userInfo.TenantId, MallBaseId = userInfo.MallBaseId });
FXList = FXList.Where(x => x.Grade >= gmodel.Grade).ToList();
var upfxmodel = FXList.Where(x => x.Id == upgmodel.UpgradeId).FirstOrDefault();
int MeetNum = 0;
//已发展等级
if (FXList.Any())
if (upfxmodel != null)
{
string FXGradeIds = string.Join(",", FXList.Select(x => x.Id));
MeetNum = member_UserRepository.GetUserReferralsForFX(new RB_Member_User_Extend() { TenantId = userInfo.TenantId, MallBaseId = userInfo.MallBaseId, SuperiorId = userInfo.UserId, FXGradeIds = FXGradeIds });
FXList = FXList.Where(x => x.Grade >= upfxmodel.Grade).ToList();
//已发展等级
if (FXList.Any())
{
string FXGradeIds = string.Join(",", FXList.Select(x => x.Id));
MeetNum = member_UserRepository.GetUserReferralsForFX(new RB_Member_User_Extend() { TenantId = userInfo.TenantId, MallBaseId = userInfo.MallBaseId, SuperiorId = userInfo.UserId, FXGradeIds = FXGradeIds });
}
}
return new
{
......@@ -3647,9 +3734,14 @@ namespace Mall.Module.User
{
return "该等级未启用自动升级";
}
var FXList = distributor_FXGradeRepository.GetList(new RB_Distributor_FXGrade_Extend() { TenantId = userInfo.TenantId, MallBaseId = userInfo.MallBaseId });
FXList = FXList.Where(x => x.Grade >= gmodel.Grade).ToList();
var upfxmodel = FXList.Where(x => x.Id == gmodel.UpgradeId).FirstOrDefault();
if (upfxmodel == null)
{
return "未满足升级条件";
}
FXList = FXList.Where(x => x.Grade >= upfxmodel.Grade).ToList();
int MeetNum = 0;
//已发展等级
if (FXList.Any())
......@@ -4478,21 +4570,17 @@ namespace Mall.Module.User
Msg = "该用户不是分销商"
};
}
if ((model.HPGradeId ?? 0) <= 0)
{
return new
{
Status = 2,
Msg = "该用户不是和平分销商等级"
};
}
var gmodel = distributor_HPGradeInfoRepository.GetEntity(model.HPGradeId);
var fxmodel = distributor_FXGradeRepository.GetEntity(model.FXGradeId);
return new
{
Status = 1,
UserName = umodel?.Name ?? "",
HPGrade = gmodel.Grade,
HPGradeName = gmodel.GradeName
HPGrade = gmodel?.Grade ?? 0,
HPGradeName = gmodel?.GradeName ?? "默认等级",
FXGrade = fxmodel?.Grade ?? 0,
FXGradeName = fxmodel?.GradeName ?? "默认等级"
};
}
......
......@@ -1531,7 +1531,9 @@ namespace Mall.WebApi.Controllers.MallBase
})
}),
model.CarouselImageList,
model.ServiceList
model.ServiceList,
model.PresentFXGrade,
model.PresentFXMonth
});
}
......@@ -1981,6 +1983,9 @@ namespace Mall.WebApi.Controllers.MallBase
demodel.ProxyRises ??= 0;
demodel.ProxyMoney ??= 0;
demodel.IsProcurement = 2;//新增时
demodel.PresentFXGrade ??= 0;//赠送粉象等级
demodel.PresentFXMonth ??= 0;
if (demodel.IsProxy == 1 && demodel.CostPrice > 0)
{
decimal ProxyMoney = 0;
......
......@@ -108,6 +108,19 @@ namespace Mall.WebApi.Controllers.User
int UserId = userModule.AddMemberUserInfo(demodel);
bool flag = UserId > 0;
if (flag) {
#region 粉象返佣 自动注册分销商 普通会员等级
if ((basicsModel?.IsEnableFXGrade ?? 2) == 1) {
try
{
var FXPModel = userModule.GetFXDistributorGradeList(new RB_Distributor_FXGrade_Extend() { IsGuest = 1, MallBaseId = requestParm.MallBaseId, TenantId = requestParm.TenantId }).FirstOrDefault();
userModule.SetDistributorInfoForFX(FXPModel?.Id ?? 0, UserId, requestParm.TenantId, requestParm.MallBaseId);
}
catch (Exception ex)
{
LogHelper.Write(ex, "粉象模式 自动生成分销商失败,UserId:" + UserId);
}
}
#endregion
//返回基本信息
TokenUserInfo userInfo = new TokenUserInfo { uid = UserId.ToString(), requestFrom = ApiRequestFromEnum.MiniProgram };
#region JWT
......
......@@ -250,7 +250,7 @@ namespace Mall.WebApi.Controllers.User
},
ColumnHight = 30
};
for (var i = 0; i < 6; i++)
for (var i = 0; i < 5; i++)
{
datarow.ExcelRows.Add(new ExcelColumn(value: "") { });
}
......
......@@ -27,6 +27,7 @@
<ProjectReference Include="..\Mall.Common\Mall.Common.csproj" />
<ProjectReference Include="..\Mall.DataAccess\Mall.DataAccess.csproj" />
<ProjectReference Include="..\Mall.Model\Mall.Model.csproj" />
<ProjectReference Include="..\Mall.Module.User\Mall.Module.User.csproj" />
<ProjectReference Include="..\Mall.Repository\Mall.Repository.csproj" />
</ItemGroup>
......
......@@ -10,6 +10,7 @@ using Mall.Model.Entity.User;
using Mall.Model.Extend.Finance;
using Mall.Model.Extend.Product;
using Mall.Model.Extend.User;
using Mall.Module.User;
using Mall.Repository;
using Mall.Repository.BaseSetUp;
using Mall.Repository.Finance;
......@@ -96,6 +97,12 @@ namespace Mall.WindowsService.Module
/// 售后订单流程
/// </summary>
private static RB_Goods_OrderAfterSaleLogRepository goods_OrderAfterSaleLogRepository = new RB_Goods_OrderAfterSaleLogRepository();
/// <summary>
/// 分销基础配置
/// </summary>
private static RB_Distributor_BasicsRepository distributor_BasicsRepository = new RB_Distributor_BasicsRepository();
private static RB_Distributor_FXGradeRepository distributor_FXGradeRepository = new RB_Distributor_FXGradeRepository();
private static RB_Vip_BuyRepository vip_BuyRepository = new RB_Vip_BuyRepository();
/// <summary>
......@@ -832,6 +839,20 @@ and DATE_FORMAT(b.PaymentTime,'%y-%m-%d')<DATE_FORMAT('{endDate}','%y-%m-%d') A
});
}
}
#region 粉象等级赠送 2020-07-21
if (dlist.Any())
{
var demodel = new RB_Goods_Order_Extend
{
TenantId = tenantId,
MallBaseId = mallBaseId,
DetailList = dlist,
OrderNo = orderModel.OrderNo
};
InsertPresentFXGrade(demodel, orderModel.UserId ?? 0, orderModel.OrderId);
}
#endregion
}
else if (type == 3)
{
......@@ -842,6 +863,178 @@ and DATE_FORMAT(b.PaymentTime,'%y-%m-%d')<DATE_FORMAT('{endDate}','%y-%m-%d') A
return flag;
}
/// <summary>
/// 赠送粉象等级
/// </summary>
/// <param name="demodel"></param>
/// <param name="umodel"></param>
/// <param name="OrderId"></param>
private static void InsertPresentFXGrade(RB_Goods_Order_Extend demodel, int UserId, int OrderId)
{
var basicModel = distributor_BasicsRepository.GetList(new RB_Distributor_Basics_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault();
if ((basicModel?.IsEnableFXGrade ?? 2) == 1)
{
var disModel = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { UserId = UserId, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault();
if (disModel == null)
{
Helper.LogHelper.Write("该用户分销商等级不存在,UserId:" + UserId);
}
if (demodel.DetailList.Where(x => x.PresentFXGrade > 0).Any() && disModel != null)
{
var FXList = distributor_FXGradeRepository.GetList(new RB_Distributor_FXGrade_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var VIPModel = FXList.Where(x => x.IsGuest == 3).FirstOrDefault();
List<int> GradeList = new List<int>();//等级列表
int VIPMonths = 0;//vip赠送月份
foreach (var item in demodel.DetailList)
{
if (item.PresentFXGrade > 0)
{
//有赠送粉象等级
GradeList.Add(item.PresentFXGrade ?? 0);
if (item.PresentFXGrade == (VIPModel?.Id ?? 0))
{
VIPMonths += (item.PresentFXMonth ?? 0) * (item.Number ?? 0);
}
}
}
//判断等级 取最高级别
int MaxGradeId = 0;
int MaxGrade = 0;
if (GradeList.Distinct().Count() > 1)
{
//说明有两种级别 取最高的
foreach (var item in GradeList.Distinct())
{
var fxmodel = FXList.Where(x => x.Id == item).FirstOrDefault();
MaxGrade = (fxmodel.Grade ?? 0) > MaxGrade ? (fxmodel.Grade ?? 0) : MaxGrade;
}
MaxGradeId = FXList.Where(x => x.Grade == MaxGrade).FirstOrDefault()?.Id ?? 0;
}
else
{
MaxGradeId = GradeList.FirstOrDefault();
var fxmodel = FXList.Where(x => x.Id == MaxGradeId).FirstOrDefault();
MaxGrade = (fxmodel.Grade ?? 0) > MaxGrade ? (fxmodel.Grade ?? 0) : MaxGrade;
}
var oldGrade = FXList.Where(x => x.Id == disModel.FXGradeId).FirstOrDefault()?.Grade ?? 0;
try
{
bool UpdateGrade = false;
if (MaxGradeId > 0 && MaxGrade >= oldGrade && MaxGradeId == (VIPModel?.Id ?? 0))
{
UpdateGrade = true;
string MaxGradeName = FXList.Where(x => x.Id == MaxGradeId).FirstOrDefault()?.GradeName ?? "";
//vip
var VipExpiryDate = DateTime.Now.AddMonths(VIPMonths);
if (VIPMonths >= 1)
{
VipExpiryDate = Convert.ToDateTime(VipExpiryDate.AddDays(-1).ToString("yyyy-MM-dd 23:59:59"));
}
if (MaxGrade == oldGrade && disModel.VipExpiryDate.HasValue)
{
if (disModel.VipExpiryDate > DateTime.Now)
{
VipExpiryDate = disModel.VipExpiryDate.Value.AddMonths(VIPMonths);
}
}
Dictionary<string, object> keyValues1 = new Dictionary<string, object>
{
{ nameof(RB_Distributor_Info_Extend.FXGradeId), MaxGradeId },
{ nameof(RB_Distributor_Info_Extend.VipExpiryDate), VipExpiryDate }
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Distributor_Info_Extend.Id),
FiledValue=disModel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
bool gflag = distributor_InfoRepository.Update(keyValues1, wheres1);
if (gflag)
{
//新增vip赠送记录表
Random R1 = new Random();
int Rstr1 = R1.Next(111, 999);
string OrderNo1 = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Rstr1;
vip_BuyRepository.Insert(new Mall.Model.Entity.User.RB_Vip_Buy()
{
CreateDate = DateTime.Now,
ExpiryDate = VipExpiryDate,
GradeId = MaxGradeId,
GradeName = MaxGradeName,
Id = 0,
MallBaseId = demodel.MallBaseId,
MerchantsNo = "",
Money = 0,
OrderNo = OrderNo1,
PayState = 1,
PayTime = null,
PayWay = 1,
Remark = "下单赠送,订单号:" + demodel.OrderNo + "(" + OrderId + ")",
Status = 0,
TenantId = demodel.TenantId,
UserId = UserId
});
}
}
else if (MaxGradeId > 0 && MaxGrade > oldGrade)
{
UpdateGrade = true;
string MaxGradeName = FXList.Where(x => x.Id == MaxGradeId).FirstOrDefault()?.GradeName ?? "";
//比vip高级
Dictionary<string, object> keyValues1 = new Dictionary<string, object>
{
{ nameof(RB_Distributor_Info_Extend.FXGradeId), MaxGradeId }
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Distributor_Info_Extend.Id),
FiledValue=disModel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
bool gflag = distributor_InfoRepository.Update(keyValues1, wheres1);
if (gflag)
{
//新增vip赠送记录表
Random R1 = new Random();
int Rstr1 = R1.Next(111, 999);
string OrderNo1 = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Rstr1;
vip_BuyRepository.Insert(new Mall.Model.Entity.User.RB_Vip_Buy()
{
CreateDate = DateTime.Now,
ExpiryDate = null,
GradeId = MaxGradeId,
GradeName = MaxGradeName,
Id = 0,
MallBaseId = demodel.MallBaseId,
MerchantsNo = "",
Money = 0,
OrderNo = OrderNo1,
PayState = 1,
PayTime = null,
PayWay = 1,
Remark = "下单赠送,订单号:" + demodel.OrderNo + "(" + OrderId + ")",
Status = 0,
TenantId = demodel.TenantId,
UserId = UserId
});
}
}
if (UpdateGrade)
{
new UserCommonModule().FXAutoUpgradeUserDistributorGrade(UserId, demodel.TenantId, demodel.MallBaseId);
}
}
catch (Exception ex)
{
Helper.LogHelper.Write("InsertPresentFXGrade赠送粉象分销等级失败,OrderId:" + OrderId + " Msg:" + ex.Message);
}
}
}
}
#endregion
#region 售后时间到了发放佣金
......
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