Commit 2a080cf4 authored by liudong1993's avatar liudong1993

粉象返佣抵扣 + 订单规格图片问题

parent f098eb63
......@@ -326,5 +326,9 @@ namespace Mall.Model.Entity.Product
/// </summary>
public int StoresId { get; set; }
/// <summary>
/// 购买抵扣佣金金额
/// </summary>
public decimal? DeductionCommission { get; set; }
}
}
......@@ -124,6 +124,10 @@ namespace Mall.Model.Entity.Product
/// </summary>
public int? IsRemit { get; set; }
/// <summary>
/// 购买抵扣佣金
/// </summary>
public decimal? DeductionCommission { get; set; }
}
......
......@@ -354,5 +354,10 @@ namespace Mall.Model.Entity.Product
/// 服务人员的id
/// </summary>
public int? ServicepersonalId { get; set; }
/// <summary>
/// 购买抵扣佣金金额
/// </summary>
public decimal? DeductionCommission { get; set; }
}
}
......@@ -167,5 +167,10 @@ namespace Mall.Model.Entity.User
/// 粉象等级图标
/// </summary>
public string Icon { get; set; }
/// <summary>
/// 返佣类型 1正常返佣 2购买抵扣
/// </summary>
public int? CommissionType { get; set; }
}
}
......@@ -456,6 +456,10 @@ namespace Mall.Module.Product
var sModel = speciList.Where(x => x.GoodsId == item.GoodsId).ToList()[i];
var svModel = speciVList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationId == sModel.Id && x.Sort == Convert.ToInt32(KeyArr[i])).FirstOrDefault();
item.SpecificationList.Add(sModel.Name + ":" + svModel.Name);
if (i == 0 && !string.IsNullOrEmpty(svModel.Image))
{
item.CoverImage = svModel.Image;
}
}
}
var speciPModel = speciPList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationSort == item.SpecificationSort).FirstOrDefault();
......@@ -899,6 +903,7 @@ namespace Mall.Module.Product
model.Mobile,
model.DistrictAddress,
model.ShoppingAddress,
DeductionCommission = model.DeductionCommission ?? 0,
IsHaveExpress = erlist.Any() ? 1 : 2,
DetailList = model.DetailList.Select(x => new
{
......@@ -1409,6 +1414,20 @@ namespace Mall.Module.Product
bool address_enable = true;//地址Ok
List<object> goods_list = new List<object>();
List<FreeShippingGoodsDetail> SatisfiedGoodsList = new List<FreeShippingGoodsDetail>();//可包邮的商品
#region 提示无上级不返佣
bool PromptNoSuperiorFY = false;
var disbaseModel = distributor_BasicsRepository.GetList(new RB_Distributor_Basics_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault();
if ((disbaseModel?.IsEnableFXGrade ?? 2) == 1 && (disbaseModel?.IsEnableNoSuperiorFY ?? 1) == 2)
{
if ((umodel.SuperiorId ?? 0) == 0)
{
PromptNoSuperiorFY = true;
}
}
bool IsDeductionCommission = false;//是否抵扣佣金
decimal TotalDeductionCommission = 0;//粉象购买抵扣佣金
#endregion
if (demodel.DetailList.Any())
{
string GoodsIds = string.Join(",", demodel.DetailList.Select(x => x.GoodsId));
......@@ -1533,7 +1552,7 @@ namespace Mall.Module.Product
}
#region 图片
gmodel.CoverImage = "";
item.CoverImage = "";
//轮播
gmodel.CarouselImageList = new List<RB_ImageCommonModel>();
if (!string.IsNullOrEmpty(gmodel.CarouselImage) && gmodel.CarouselImage != "[]")
......@@ -1552,7 +1571,7 @@ namespace Mall.Module.Product
});
}
//封面图
gmodel.CoverImage = CarouselIdList[0];
item.CoverImage = CarouselIdList[0];
}
#endregion
......@@ -1578,6 +1597,7 @@ namespace Mall.Module.Product
}
}
item.CommissionPrice = gmodel.Commission;
//规格赋值
//gmodel.SpecificationNameList = new List<string>();
item.SpecificationNameList = new List<string>();
......@@ -1648,6 +1668,10 @@ namespace Mall.Module.Product
attr_id = svModel.Id,
attr_name = svModel.Name
});
if (i == 0 && !string.IsNullOrEmpty(svModel.Image))
{
item.CoverImage = svModel.Image;//规格图片赋值
}
}
}
var speciPModel = speciPList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationSort == item.SpecificationSort).FirstOrDefault();
......@@ -1659,6 +1683,7 @@ namespace Mall.Module.Product
{
return ApiResult.Failed("商品库存不足:" + gmodel.Name);
}
item.CommissionPrice = speciPModel?.Commission ?? 0;
if (demodel.SmallShopsId > 0)
{
......@@ -1986,6 +2011,57 @@ namespace Mall.Module.Product
}
#endregion
#region 购买抵扣佣金
if ((disbaseModel?.IsEnableFXGrade ?? 2) == 1)
{
if (((disbaseModel?.IsEnableNoSuperiorFY ?? 1) == 1) || ((disbaseModel?.IsEnableNoSuperiorFY ?? 1) == 2 && (umodel.SuperiorId ?? 0) > 0))
{
//验证用户必须是分销商 最低普通会员 不是以普通会员处理
var disModel = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, UserId = umodel.Id, AuditStatus = Common.Enum.User.DistributorAuditStatusEnum.Audited }).FirstOrDefault();
if (disModel != null)
{
if (disModel.FXGradeId > 0)
{
var FXModel = distributor_FXGradeRepository.GetEntity(disModel.FXGradeId);
//购买直接抵扣佣金
if (FXModel != null && FXModel.CommissionType == 2)
{
IsDeductionCommission = true;
//开始慢慢找 注 同级返佣数量 返佣建子表可以无限级返佣了 --2020/10/16 未使用课程卡的才能返佣
var DetailList = demodel.DetailList.Where(x => x.CommissionPrice > 0 && (x.EducationCouponId ?? 0) == 0).ToList();
foreach (var item in DetailList)
{
if ((item.PresentFXGrade ?? 0) > 0)
{
//是赠送VIP等级的 暂直接表示 反购买VIP佣金 2020-08-03 ld
continue;
}
//第一个进来 按等级的返佣比例给佣金
decimal DcommionMoney = 0;
if (FXModel.DecimalType == 1)
{
DcommionMoney = Math.Ceiling(item.CommissionPrice * (FXModel.CommissionRatio ?? 0) / 100);
}
else
{
DcommionMoney = Math.Ceiling(item.CommissionPrice * (FXModel.CommissionRatio ?? 0)) / 100;
}
item.TCommissionMoney = DcommionMoney * (item.Number ?? 0);
}
TotalDeductionCommission = DetailList.Sum(x => x.TCommissionMoney);
}
}
}
else
{
LogHelper.Write("粉象返佣 用户分销商信息不存在:UserId:" + umodel.Id);
}
}
}
#endregion
List<int> ExpressGoodsId = new List<int>();
//赋值
foreach (var item in demodel.DetailList)
......@@ -2298,6 +2374,7 @@ namespace Mall.Module.Product
freeShipping_Use = FreeShipping_Use,
freight_id = gmodel.FreightId,
express_price = item.Express,
deduction_commission = item.TCommissionMoney,
unit_price = item.Unit_Price,
total_original_price = (item.Original_Price ?? 0) * (item.Number ?? 0),
total_price = (item.Unit_Price ?? 0) * (item.Number ?? 0),//优惠券(有平摊情况) 积分抵扣 (默认从第一个商品抵扣)
......@@ -2311,7 +2388,7 @@ namespace Mall.Module.Product
original_price = item.Original_Price ?? 0,
no = gmodel.GoodsNumbers,
weight = item.GoodsWeight,
pic_url = gmodel.CoverImage,
pic_url = item.CoverImage,
individual_share = umodel?.IsDistributor ?? 2,// 是否分销商
share_type = gmodel.SeparateDistributionMoneyType,//分销佣金类型,
member_price = item.MemberPrice,
......@@ -2322,7 +2399,7 @@ namespace Mall.Module.Product
//extra= [],
//goods_warehouse_id = 19813,
name = gmodel.Name,
cover_pic = gmodel.CoverImage,
cover_pic = item.CoverImage,
detail = gmodel.GoodsDetails,
pic_list = gmodel.CarouselImageList.Select(x => new
{
......@@ -2342,7 +2419,7 @@ namespace Mall.Module.Product
attr_list = item.Attr_list,
discounts = item.Discounts,
member_discount = ((item.Unit_Price ?? 0) * (item.Number ?? 0)) - (item.MemberPrice * (item.Number ?? 0)),
cover_pic = gmodel.CoverImage,
cover_pic = item.CoverImage,
is_level_alone = gmodel.SeparateSetMember,//是否单独设置会员价
//custom_currency= [],
is_level = gmodel.EnjoyMember,//是否销售会员价格
......@@ -2404,19 +2481,7 @@ namespace Mall.Module.Product
}
}
#region 提示无上级不返佣
bool PromptNoSuperiorFY = false;
var disbaseModel = distributor_BasicsRepository.GetList(new RB_Distributor_Basics_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault();
if ((disbaseModel?.IsEnableFXGrade ?? 2) == 1 && (disbaseModel?.IsEnableNoSuperiorFY ?? 1) == 2)
{
if ((umodel.SuperiorId ?? 0) == 0)
{
PromptNoSuperiorFY = true;
}
}
#endregion
TotalGoodsMoney -= TotalDeductionCommission;//总额 减去抵扣佣金
mch_list.Add(new
{
mch = new
......@@ -2444,10 +2509,8 @@ namespace Mall.Module.Product
//store= null,
store_select_enable = true,
total_price = TotalGoodsMoney,
//pick_up_enable= true,
//pick_up_price= null,
//diff_goods_form_count= 0,
//has_goods_form= false
is_deduction_commission = IsDeductionCommission,
deduction_commission = TotalDeductionCommission
});
//minModel
......@@ -2782,6 +2845,7 @@ namespace Mall.Module.Product
}
#endregion
List<FreeShippingGoodsDetail> SatisfiedGoodsList = new List<FreeShippingGoodsDetail>();//可包邮的商品
decimal DeductionCommission = 0;//购买抵扣金额
if (demodel.DetailList.Any())
{
//积分
......@@ -2959,6 +3023,13 @@ namespace Mall.Module.Product
item.ProductCode = gmodel.GoodsNumbers;
item.CategoryIdList = categoryList.Select(x => x.CategoryId ?? 0).ToList();
int GoodsWeight = gmodel.GoodsWeight ?? 0;//商品重量
item.CoverImage = "";
if (!string.IsNullOrEmpty(gmodel.CarouselImage) && gmodel.CarouselImage != "[]")
{
List<string> CarouselIdList = JsonConvert.DeserializeObject<List<string>>(gmodel.CarouselImage);
//封面图
item.CoverImage = CarouselIdList[0];
}
#region 规格
//验证规格是否已失效
......@@ -2995,6 +3066,13 @@ namespace Mall.Module.Product
return ApiResult.Failed("商品库存不足:" + gmodel.Name);
}
item.CommissionPrice = speciPModel?.Commission ?? 0;
#region 查询规格图片
string simage = goods_SpecificationValueRepository.GetSpecificationImage(item.GoodsId ?? 0, item.SpecificationSort);
if (!string.IsNullOrEmpty(simage))
{
item.CoverImage = simage;//规格图片赋值
}
#endregion
item.SmallShopsCostPrice = gmodel.SellingPrice ?? 0;
if (demodel.SmallShopsId > 0)
......@@ -3307,13 +3385,6 @@ namespace Mall.Module.Product
TotalMoney += (item.Final_Price ?? 0);
item.OrderType = gmodel.GoodsType;
item.GoodsName = gmodel.Name;
item.CoverImage = "";
if (!string.IsNullOrEmpty(gmodel.CarouselImage) && gmodel.CarouselImage != "[]")
{
List<string> CarouselIdList = JsonConvert.DeserializeObject<List<string>>(gmodel.CarouselImage);
//封面图
item.CoverImage = CarouselIdList[0];
}
item.SeparateDistribution = gmodel.SeparateDistribution;
item.SeparateDistributionType = gmodel.SeparateDistributionType;
item.SeparateDistributionMoneyType = gmodel.SeparateDistributionMoneyType;
......@@ -3375,6 +3446,58 @@ namespace Mall.Module.Product
freeShippingList = freeShippingRepository.GetFreeShippingListByCategoryIds(new RB_FreeShipping_Extend { MallBaseId = demodel.MallBaseId, TenantId = demodel.TenantId, CategoryIds = categoryIds });
}
#endregion
#region 购买抵扣佣金
var disbaseModel = distributor_BasicsRepository.GetList(new RB_Distributor_Basics_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault();
if ((disbaseModel?.IsEnableFXGrade ?? 2) == 1)
{
if (((disbaseModel?.IsEnableNoSuperiorFY ?? 1) == 1) || ((disbaseModel?.IsEnableNoSuperiorFY ?? 1) == 2 && (umodel.SuperiorId ?? 0) > 0))
{
//验证用户必须是分销商 最低普通会员 不是以普通会员处理
var disModel = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, UserId = umodel.Id, AuditStatus = Common.Enum.User.DistributorAuditStatusEnum.Audited }).FirstOrDefault();
if (disModel != null)
{
if (disModel.FXGradeId > 0)
{
var FXModel = distributor_FXGradeRepository.GetEntity(disModel.FXGradeId);
//购买直接抵扣佣金
if (FXModel != null && FXModel.CommissionType == 2)
{
//开始慢慢找 注 同级返佣数量 返佣建子表可以无限级返佣了 --2020/10/16 未使用课程卡的才能返佣
var DetailList = demodel.DetailList.Where(x => x.CommissionPrice > 0 && (x.EducationCouponId ?? 0) == 0).ToList();
foreach (var item in DetailList)
{
if ((item.PresentFXGrade ?? 0) > 0)
{
//是赠送VIP等级的 暂直接表示 反购买VIP佣金 2020-08-03 ld
continue;
}
//第一个进来 按等级的返佣比例给佣金
decimal DcommionMoney = 0;
if (FXModel.DecimalType == 1)
{
DcommionMoney = Math.Ceiling(item.CommissionPrice * (FXModel.CommissionRatio ?? 0) / 100);
}
else
{
DcommionMoney = Math.Ceiling(item.CommissionPrice * (FXModel.CommissionRatio ?? 0)) / 100;
}
item.DeductionCommission = DcommionMoney * (item.Number ?? 0);
}
DeductionCommission = DetailList.Sum(x => x.DeductionCommission ?? 0);
}
}
}
else
{
LogHelper.Write("粉象返佣 用户分销商信息不存在:UserId:" + umodel.Id);
}
}
}
#endregion
List<int> ExpressGoodsId = new List<int>();//同商品 多规格
foreach (var item in demodel.DetailList)
{
......@@ -3646,8 +3769,12 @@ namespace Mall.Module.Product
{
return ApiResult.Failed("优惠金额计算有误");
}
if (DeductionCommission != (demodel.DeductionCommission ?? 0))
{
return ApiResult.Failed("抵扣佣金不正确");
}
//验证总额
if (demodel.Income != (TotalMoney + TotalExpress))
if (demodel.Income != (TotalMoney + TotalExpress - DeductionCommission))
{
return ApiResult.Failed("订单合计金额不正确");
}
......@@ -6221,10 +6348,11 @@ namespace Mall.Module.Product
});
Num++;
TotalCommission -= DcommionMoney;
RB_Goods_OrderCommission gocModel = new RB_Goods_OrderCommission()
{
Id = 0,
Commission = DcommionMoney,
Commission = FXModel.CommissionType == 2 ? 0 : DcommionMoney,//下单抵扣了 返佣金额=0
CommissionState = 1,
CreateDate = DateTime.Now,
Grade = FXModel.Id,
......@@ -6232,12 +6360,13 @@ namespace Mall.Module.Product
MallBaseId = demodel.MallBaseId,
OrderDetailId = item.Id,
OrderId = OrderId,
Remark = "粉象 " + FXModel.GradeName + "下单返佣,返佣比例:" + (FXModel.CommissionRatio ?? 0) + "%",
Remark = "粉象 " + FXModel.GradeName + "下单返佣,返佣比例:" + (FXModel.CommissionRatio ?? 0) + "%;" + (FXModel.CommissionType == 2 ? "已抵扣" + (DcommionMoney * (item.Number ?? 0)) + "金额" : ""),
TenantId = demodel.TenantId,
UpdateDate = DateTime.Now,
UserId = numodel.Id,
Type = 3,
IsRemit = 0
IsRemit = 0,
DeductionCommission = (DcommionMoney * (item.Number ?? 0))
};
gocList.Add(gocModel);
}
......@@ -7176,7 +7305,8 @@ namespace Mall.Module.Product
InsuranceCostMoney = item.InsuranceCostMoney ?? 0,
InsuranceFinanceId = 0,
CommentGiveIntegral = item.CommentGiveIntegral,
EducationCouponId = item.EducationCouponId
EducationCouponId = item.EducationCouponId,
DeductionCommission = item.DeductionCommission
}, trans);
item.Id = detailId;
if (detailId > 0 && SatisfiedGoodsList.Any())
......@@ -12604,7 +12734,7 @@ namespace Mall.Module.Product
model.District,
model.SmallShopsName,
model.SmallShopsId,
DeductionCommission = model.DeductionCommission ?? 0,
OrderExpressList = oeList.Select(x => new
{
x.Id,
......@@ -12630,7 +12760,8 @@ namespace Mall.Module.Product
x.GradeDescription,
x.UserName,
x.Mobile,
x.Commission
x.Commission,
DeductionCommission = x.DeductionCommission ?? 0
}),
VipCommissionInfo = clist.Select(x => new
{
......@@ -12667,6 +12798,7 @@ namespace Mall.Module.Product
x.IsBindExpress,
x.FreeShippingRemarks,
x.SmallShopsCostPrice,
x.DeductionCommission,
CouponMoney = x.CouponMoney ?? 0,
InsuranceMoney = x.InsuranceMoney ?? 0,
IntegralMoney = x.IntegralMoney ?? 0,
......
......@@ -5358,6 +5358,7 @@ namespace Mall.Module.User
{ nameof(RB_Distributor_FXGrade.DecimalType),demodel.DecimalType},
{ nameof(RB_Distributor_FXGrade.Description),demodel.Description},
{ nameof(RB_Distributor_FXGrade.Icon),demodel.Icon},
{ nameof(RB_Distributor_FXGrade.CommissionType),demodel.CommissionType}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
......
......@@ -83,7 +83,7 @@ where {where} order by oc.Id asc";
where += $@" and oc.{nameof(RB_Goods_OrderCommission.OrderId)} in({dmodel.OrderIds})";
}
string sql = $@"SELECT oc.OrderId,oc.UserId,oc.Grade,oc.Type,oc.CommissionState,SUM(oc.Commission) as Commission FROM RB_Goods_OrderCommission oc
string sql = $@"SELECT oc.OrderId,oc.UserId,oc.Grade,oc.Type,oc.CommissionState,SUM(oc.Commission) as Commission,SUM(oc.DeductionCommission) as DeductionCommission FROM RB_Goods_OrderCommission oc
left join rb_goods_orderaftersale oa on oc.OrderDetailId= oa.OrderDetialId and oa.Type=1 and oa.Status=0 and oa.ReOrderStatus in (2,3,4,5)
where {where} group by oc.OrderId,oc.UserId,oc.Grade,oc.Type order by oc.Grade asc";
return Get<RB_Goods_OrderCommission_Extend>(sql).ToList();
......
......@@ -43,5 +43,30 @@ namespace Mall.Repository.Product
string sql = $@"select * from RB_Goods_SpecificationValue where {where} order by Id asc";
return Get<RB_Goods_SpecificationValue_Extend>(sql).ToList();
}
/// <summary>
/// 获取规格值图片
/// </summary>
/// <param name="goodsId"></param>
/// <param name="specificationSort"></param>
/// <returns></returns>
public string GetSpecificationImage(int goodsId, string specificationSort)
{
try
{
int Sort = Convert.ToInt32(specificationSort.Split(":")[0]);
string sql = $@"select * from RB_Goods_SpecificationValue where Status=0 and GoodsId={goodsId} and Sort={Sort} and Image<> '' order by Id asc limit 1";
var model = Get<RB_Goods_SpecificationValue_Extend>(sql).FirstOrDefault();
if (model != null)
{
return model.Image ?? "";
}
return "";
}
catch (Exception)
{
return "";
}
}
}
}
......@@ -95,6 +95,7 @@ namespace Mall.WebApi.Controllers.MallBase
x.Income,
x.FreightMoney,
x.PaymentWay,
DeductionCommission = x.DeductionCommission ?? 0,
PaymentWayName = x.PaymentWay.GetEnumName(),
CouponMoney = x.CouponMoney ?? 0,
IntegralMoney = (x.DetailList != null && x.DetailList.Any()) ? (x.DetailList.Sum(x => x.IntegralMoney ?? 0)) : 0,
......@@ -137,6 +138,7 @@ namespace Mall.WebApi.Controllers.MallBase
InsuranceCostMoney = y.InsuranceCostMoney ?? 0,
IntegralMoney = y.IntegralMoney ?? 0,
IntegralNumber = y.IntegralNumber ?? 0,
DeductionCommission = y.DeductionCommission ?? 0,
SFinanceList = y.FinanceList.Where(z => z.Type == 1).Select(z => new
{
z.FrID,
......@@ -2338,7 +2340,8 @@ namespace Mall.WebApi.Controllers.MallBase
z.Mobile,
z.Name,
z.Commission,
z.CommissionState
z.CommissionState,
DeductionCommission = z.DeductionCommission ?? 0
}),
x.TenantId,
x.MallBaseId,
......
......@@ -2741,6 +2741,7 @@ namespace Mall.WebApi.Controllers.User
x.UpgradeId,
x.Description,
x.Icon,
x.CommissionType,
UpdateDate = x.UpdateDate.HasValue ? x.UpdateDate.Value.ToString("yyyy-MM-dd") : ""
});
return ApiResult.Success("", pagelist);
......
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