Commit e222bdb4 authored by 黄奎's avatar 黄奎

页面修改

parent 3b90d7be
......@@ -4761,20 +4761,15 @@ namespace Mall.Module.Product
message = "您在黑名单状态无法下单,请联系管理员核实";
return false;
}
List<int> disList = new List<int>();
disList.Add(demodel.Province ?? 0);
disList.Add(demodel.City ?? 0);
disList.Add(demodel.District ?? 0);
var goodModel = goodsRepository.GetEntity(demodel.GoodsId);
decimal TotalExpress = 0;
decimal TotalMoney = 0;
string GoodsIds = "";
int TotalIntegralNumber = 0;//总使用积分
decimal TotalIntegralMoney = 0;//总使用积分抵扣金额
List<RB_Goods_CouponModel> GoodsCouponList = new List<RB_Goods_CouponModel>();//商品优惠卷 价格(每个商品优惠的价格)
decimal CouponsMoney = 0;//优惠卷验证
decimal EducationMoney = 0;//课程卡抵扣金额
int EducationNum = 0;//课程卡抵扣数量
#region 优惠卷初始化
List<RB_Member_DiscountCoupon_Extend> cList = new List<RB_Member_DiscountCoupon_Extend>();
List<Model.Extend.MarketingCenter.RB_DiscountCoupon_Extend> dcList = new List<Model.Extend.MarketingCenter.RB_DiscountCoupon_Extend>();
......@@ -4814,142 +4809,66 @@ namespace Mall.Module.Product
}
}
#endregion
List<FreeShippingGoodsDetail> SatisfiedGoodsList = new List<FreeShippingGoodsDetail>();//可包邮的商品
if (demodel.DetailList.Any())
{
//积分
Model.Entity.MarketingCenter.RB_Integral_Settings integralModel = new Model.Entity.MarketingCenter.RB_Integral_Settings();
if (demodel.Use_Integral == 1 && umodel.Integral > 0)
{
integralModel = integral_SettingsRepository.GetIntegralSettingsList(new Model.Entity.MarketingCenter.RB_Integral_Settings() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault();
}
int DefFreightId = 0;//默认运费id
GoodsIds = string.Join(",", demodel.DetailList.Select(x => x.GoodsId));
var gList = goodsRepository.GetList(new RB_Goods_Extend()
{
GoodsIds = GoodsIds,
TenantId = demodel.TenantId,
MallBaseId = demodel.MallBaseId,
GoodsClassify = 3
});
var clist = goods_CategoryRepository.GetList(new RB_Goods_Category_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var speciPList = goods_SpecificationPriceRepository.GetList(new RB_Goods_SpecificationPrice_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var mpriceList = goods_MemberPriceRepository.GetList(new RB_Goods_MemberPrice_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
List<Model.Extend.BaseSetUp.RB_Logistics_Rules_Extend> rulesList = new List<Model.Extend.BaseSetUp.RB_Logistics_Rules_Extend>();
List<Model.Extend.BaseSetUp.RB_Logistics_RulesPrice_Extend> priceList = new List<Model.Extend.BaseSetUp.RB_Logistics_RulesPrice_Extend>();
List<Model.Extend.BaseSetUp.RB_Logistics_RulesRegion_Extend> regionList = new List<Model.Extend.BaseSetUp.RB_Logistics_RulesRegion_Extend>();
if (gList.Any() && demodel.DeliveryMethod == OrderDeliveryMethodEnum.ExpressDistribution)
{
List<int> FreightIdList = new List<int>();
if (gList.Where(x => x.FreightId > 0).Any())
{
FreightIdList.AddRange(gList.Where(x => x.FreightId > 0).Select(x => x.FreightId ?? 0).ToList());
}
if (gList.Where(x => x.FreightId == 0).Any())
{
//查询默认
DefFreightId = logistics_RulesRepository.GetLogisticsRulesList(new Model.Extend.BaseSetUp.RB_Logistics_Rules_Extend() { IsDefault = 1, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault()?.ID ?? 0;
FreightIdList.Add(DefFreightId);
}
if (FreightIdList.Any())
{
rulesList = logistics_RulesRepository.GetLogisticsRulesList(new Model.Extend.BaseSetUp.RB_Logistics_Rules_Extend() { RulesIds = string.Join(",", FreightIdList), TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
priceList = logistics_RulesPriceRepository.GetListRepository(new Model.Extend.BaseSetUp.RB_Logistics_RulesPrice_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, RulesIds = string.Join(",", FreightIdList) });
if (priceList.Any())
{
string priceIds = string.Join(",", priceList.Select(x => x.ID));
regionList = logistics_RulesRegionRepository.GetListRepository(new Model.Extend.BaseSetUp.RB_Logistics_RulesRegion_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, PriceIds = priceIds });
}
}
}
var OrderGoodsNumList = new List<RB_Goods_Order_Extend>();
bool IsLimitOk = false;
if (gList.Where(x => x.LimitBuyGoodsNum > 0).Any())
#region 课程卡初始化
List<RB_Education_MemberCoupon_Extend> eList = new List<RB_Education_MemberCoupon_Extend>();
List<RB_Education_Coupon_Extend> deList = new List<RB_Education_Coupon_Extend>();
List<RB_Education_CouponProduct_Extend> edcpList = new List<RB_Education_CouponProduct_Extend>();
if (demodel.Use_Education_Id > 0)
{
IsLimitOk = true;
string LimitGoodsIds = string.Join(",", gList.Where(x => x.LimitBuyGoodsNum > 0).Select(x => x.Id));
//查询用户该商品已下单数量
OrderGoodsNumList = goods_OrderRepository.GetUserOrderGoodsNum(demodel.UserId ?? 0, LimitGoodsIds, demodel.TenantId, demodel.MallBaseId);
}
var OrderNumList = new List<RB_Goods_Order_Extend>();
if (gList.Where(x => x.LimitBuyOrderNum > 0).Any())
if (demodel.User_Coupon_Id > 0)
{
IsLimitOk = true;
string LimitGoodsIds = string.Join(",", gList.Where(x => x.LimitBuyOrderNum > 0).Select(x => x.Id));
//查询用户该商品已下单数量
OrderNumList = goods_OrderRepository.GetUserOrderNum(demodel.UserId ?? 0, LimitGoodsIds, demodel.TenantId, demodel.MallBaseId);
message = "套餐卡与优惠券不能同时使用";
return false;
}
//验证限购
if (OrderGoodsNumList.Any() || OrderNumList.Any())
{
List<int> GoodsIdList = demodel.DetailList.Select(x => x.GoodsId ?? 0).Distinct().ToList();
foreach (var item in GoodsIdList)
{
int GoodsNum = demodel.DetailList.Where(x => x.GoodsId == item).Sum(x => x.Number ?? 0);
var gmodel = gList.Where(x => x.Id == item).FirstOrDefault();
if (gmodel == null || gmodel.GoodsStatus != 1)
if (demodel.Use_Integral > 0)
{
message = "有商品不存在或者商品已失效";
message = "套餐卡与积分抵扣不能同时使用";
return false;
}
#region 验证商品限购,订单限购
if (gmodel.LimitBuyGoodsNum > 0)
{
var ogModel = OrderGoodsNumList.Where(x => x.GoodsId == gmodel.Id).FirstOrDefault();
if (ogModel != null)
eList = education_MemberCouponRepository.GetList(new RB_Education_MemberCoupon_Extend() { Ids = (demodel.Use_Education_Id ?? 0).ToString(), UserId = umodel.Id, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
if (eList.Any())
{
if (ogModel.GoodsTotalNum + GoodsNum > (gmodel.LimitBuyGoodsNum ?? 0))
var educationModel = eList.FirstOrDefault();
if (educationModel.HeXiao <= educationModel.UseHeXiao)
{
message = "该商品限购" + (gmodel.LimitBuyGoodsNum ?? 0) + "件,您已购买" + ogModel.GoodsTotalNum + "件";
message = "套餐卡剩余次数不足";
return false;
}
}
}
if (gmodel.LimitBuyOrderNum > 0)
string cIds = string.Join(",", eList.Select(x => x.CouponId).Distinct());
deList = education_CouponRepository.GetDiscountCouponList(new RB_Education_Coupon_Extend() { CouponIds = cIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }, true);
edcpList = education_CouponProductRepository.GetListByDiscountCouponIds(new Model.Entity.Education.RB_Education_Coupon() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }, cIds, true);
if (deList.Any())
{
var ogModel = OrderNumList.Where(x => x.GoodsId == gmodel.Id).FirstOrDefault();
if (ogModel != null)
foreach (var item in eList)
{
if (ogModel.OrderNum + 1 > (gmodel.LimitBuyOrderNum ?? 0))
if (item.CouponId > 0)
{
message = "该商品订单限购" + (gmodel.LimitBuyOrderNum ?? 0) + "单,您已购买" + ogModel.OrderNum + "单";
if (!deList.Where(x => x.ID == item.CouponId).Any())
{
message = "课程卡不存在,请核实后再试";
return false;
}
}
}
#endregion
}
}
else if (IsLimitOk)
{
List<int> GoodsIdList = demodel.DetailList.Select(x => x.GoodsId ?? 0).Distinct().ToList();
foreach (var item in GoodsIdList)
{
int GoodsNum = demodel.DetailList.Where(x => x.GoodsId == item).Sum(x => x.Number ?? 0);
var gmodel = gList.Where(x => x.Id == item).FirstOrDefault();
if (gmodel == null || gmodel.GoodsStatus != 1)
{
message = "有商品不存在或者商品已失效";
return false;
}
#region 验证商品限购,订单限购
if (gmodel.LimitBuyGoodsNum > 0)
#endregion
if (demodel.DetailList.Any())
{
if (GoodsNum > (gmodel.LimitBuyGoodsNum ?? 0))
//积分
Model.Entity.MarketingCenter.RB_Integral_Settings integralModel = new Model.Entity.MarketingCenter.RB_Integral_Settings();
if (demodel.Use_Integral == 1 && umodel.Integral > 0)
{
message = "该商品限购" + (gmodel.LimitBuyGoodsNum ?? 0) + "件";
return false;
}
}
#endregion
}
integralModel = integral_SettingsRepository.GetIntegralSettingsList(new Model.Entity.MarketingCenter.RB_Integral_Settings() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault();
}
List<int> YFCategoryList = new List<int>();//全局适配 分类
var mallbaseModel = mallBaseRepository.GetListRepository(new Model.Extend.BaseSetUp.RB_MallBase_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault();
GoodsIds = string.Join(",", demodel.DetailList.Select(x => x.GoodsId));
var gList = goodsRepository.GetListForCommission(new RB_Goods_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }, 3);
var clist = goods_CategoryRepository.GetList(new RB_Goods_Category_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var mpriceList = goods_MemberPriceRepository.GetList(new RB_Goods_MemberPrice_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
#region 微店价格
RB_SmallShops_Info_Extend smallModel = new RB_SmallShops_Info_Extend();
......@@ -4969,121 +4888,24 @@ namespace Mall.Module.Product
message = "有商品不存在或者商品已失效";
return false;
}
if (gmodel.PresentFXGrade > 0)
{
//是赠送VIP商品
if (demodel.DetailList.Count() > 1)
{
//多商品
message = "VIP商品不能与其他商品同时下单,请先购买VIP商品";
return false;
}
var disModel = distributor_InfoRepository.GetListForSingle(new RB_Distributor_Info_Extend() { UserId = umodel.Id }).FirstOrDefault();
if (disModel != null)
{
var fxgradeList = distributor_FXGradeRepository.GetList(new RB_Distributor_FXGrade_Extend() { TenantId = umodel.TenantId, MallBaseId = umodel.MallBaseId });
fxgradeList = fxgradeList.Where(x => x.IsGuest == 1 || x.IsGuest == 3).ToList();
if (!fxgradeList.Select(x => x.Id).Contains(disModel.FXGradeId ?? 0))
if (gmodel.GoodsClassify != 3)
{
message = "您当前等级无法购买VIP商品";
message = "有非线下服务类商品";
return false;
}
}
}
var categoryList = clist.Where(x => x.GoodsId == item.GoodsId).ToList();
if ((mallbaseModel?.IsFreeShipping ?? 0) == 1 && (gmodel.FullMoneyPinkage ?? 0) == 0 && (gmodel.FullNumPinkage ?? 0) == 0)
{
YFCategoryList.AddRange(categoryList.Select(x => x.CategoryId ?? 0).ToList());
}
item.InventoryNum = gmodel.InventoryNum ?? 0;
item.CommissionPrice = gmodel.Commission;// 粉象 返佣金额
item.CostMoney = (gmodel.IsCustomSpecification == 2) ? (gmodel.CostPrice ?? 0) : (speciPList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationSort == item.SpecificationSort).FirstOrDefault()?.CostMoney ?? 0);//gmodel.CostPrice ?? 0;
item.CostMoney = (gmodel.CostPrice ?? 0);
item.Specification = "[]";
item.SpecificationSort = "0";
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;//商品重量
#region 规格
//验证规格是否已失效
if (gmodel.IsCustomSpecification == 1)
{
if (string.IsNullOrEmpty(item.SpecificationSort))
{
message = "有商品已失效,请重新下单";
return false;
}
if (!speciPList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationSort == item.SpecificationSort).Any())
{
message = "有商品已失效,请重新下单";
return false;
}
}
else
{
if (!string.IsNullOrEmpty(item.SpecificationSort))
{
message = "有商品已失效,请重新下单";
return false;
}
}
if (!string.IsNullOrEmpty(item.SpecificationSort))
{
var speciPModel = speciPList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationSort == item.SpecificationSort).FirstOrDefault();
gmodel.SellingPrice = speciPModel?.SellingPrice ?? 0;
gmodel.InventoryNum = speciPModel?.InventoryNum ?? 0;
GoodsWeight = speciPModel?.GoodsWeight ?? 0;
item.InventoryNum = speciPModel?.InventoryNum ?? 0;
item.SpeciPriceId = speciPModel?.Id ?? 0;
item.ProductCode = speciPModel?.GoodsNumbers ?? "";
if (item.Number > speciPModel.InventoryNum)
{
message = "商品库存不足:" + gmodel.Name;
return false;
}
item.CommissionPrice = speciPModel?.Commission ?? 0;
item.SmallShopsCostPrice = gmodel.SellingPrice ?? 0;
if (demodel.SmallShopsId > 0)
{
if ((smallModel.UpPrice ?? 0) > 0 || smallPList.Where(x => x.GoodsId == item.GoodsId && x.UpPrice > 0).Any())
{
var sspModel = smallPList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationKey == item.SpecificationSort).FirstOrDefault();
if (sspModel != null)
{
//单商品设置的
if (sspModel.PriceType == 1)
{
gmodel.SellingPrice += Math.Ceiling((gmodel.SellingPrice ?? 0) * (sspModel.UpPrice ?? 0) / 100);
}
else if (sspModel.PriceType == 2)
{
gmodel.SellingPrice += (sspModel.UpPrice ?? 0);
}
}
else
{
if ((smallModel.UpPrice ?? 0) > 0)
{
if (smallModel.PriceType == 1)
{
gmodel.SellingPrice += Math.Ceiling((gmodel.SellingPrice ?? 0) * (smallModel.UpPrice ?? 0) / 100);
}
else if (smallModel.PriceType == 2)
{
gmodel.SellingPrice += (smallModel.UpPrice ?? 0);
}
}
}
}
}
}
else
{
item.SmallShopsCostPrice = gmodel.SellingPrice ?? 0;
if (demodel.SmallShopsId > 0)
{
......@@ -5118,8 +4940,8 @@ namespace Mall.Module.Product
}
}
}
}
#endregion
#region 会员价格
gmodel.MemberPrice = gmodel.SellingPrice ?? 0;
if (umodel.MemberGrade > 0)
......@@ -5193,8 +5015,6 @@ namespace Mall.Module.Product
#endregion
item.SmallShopsCostPrice = (item.SmallShopsCostPrice ?? 0) * (item.Number ?? 0);
item.NorGoodsMoney = item.Final_Price ?? 0;//用于计算 运费的 202-08-05 ld
item.GoodsWeight = GoodsWeight;
item.Unit_Price = gmodel.SellingPrice ?? 0;
item.Original_Price = (item.Unit_Price) * (item.Number);
......@@ -5351,39 +5171,103 @@ namespace Mall.Module.Product
}
#endregion
TotalMoney += (item.Final_Price ?? 0);
item.OrderType = OrderTypeEnum.OfflineService;
item.GoodServiceTime = goodModel?.ServiceTime ?? 0;
item.GoodsName = gmodel.Name;
item.CoverImage = "";
if (!string.IsNullOrEmpty(gmodel.CarouselImage) && gmodel.CarouselImage != "[]")
#region 课程卡
if (demodel.Use_Education_Id > 0)
{
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;
item.IntegralPresent = gmodel.IntegralPresent;
item.IntegralPresentType = gmodel.IntegralPresentType;
}
if (demodel.User_Coupon_Id > 0 && GoodsCouponList.Any())
var ccmodel = eList.Where(x => x.Id == demodel.Use_Education_Id).FirstOrDefault();
string couponItem = (ccmodel?.CouponId ?? 0).ToString();
if (!string.IsNullOrEmpty(couponItem))
{
decimal FinalMoney = GoodsCouponList.Sum(x => x.TotalMoney);
var ccmodel = cList.Where(x => x.Id == demodel.User_Coupon_Id).FirstOrDefault();
var dcModel = dcList.Where(x => x.ID == (ccmodel?.CouponId ?? 0)).FirstOrDefault();
var dcModel = deList.Where(x => x.ID == Convert.ToInt32(couponItem)).FirstOrDefault();
if (dcModel == null)
{
message = "优惠卷不存在,亲核实后再试";
return false;
}
if (dcModel.MinConsumePrice > 0)
if (dcModel.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Category) //指定分类
{
if (FinalMoney < dcModel.MinConsumePrice)
var categoryList1 = dcpList.Where(x => x.DiscountCouponId == Convert.ToInt32(couponItem) && x.DiscountCouponType == Common.Enum.MarketingCenter.UseTypeEnum.Category).Select(x => x.ProductId).ToList();//获取特殊优惠卷
if (categoryList.Select(x => x.Id).Where(x => categoryList1.Contains(x)).Any())
{
FinalMoney = 0;
if (dcModel.MaxDiscountsPrice == 0 || dcModel.MaxDiscountsPrice >= (item.Final_Price ?? 0))
{
GoodsCouponList.Add(new RB_Goods_CouponModel()
{
GoodsId = item.GoodsId ?? 0,
Key = item.SpecificationSort,
TotalMoney = item.Final_Price ?? 0,
CouponMoney = 0
});
}
}
}
else if (dcModel.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Product)//指定商品
{
var goodsList = dcpList.Where(x => x.DiscountCouponId == Convert.ToInt32(couponItem) && x.DiscountCouponType == Common.Enum.MarketingCenter.UseTypeEnum.Product).Select(x => x.ProductId).ToList();//获取特殊优惠卷
if (goodsList.Contains(item.GoodsId ?? 0))
{
if (dcModel.MaxDiscountsPrice == 0 || dcModel.MaxDiscountsPrice >= (item.Final_Price ?? 0))
{
GoodsCouponList.Add(new RB_Goods_CouponModel()
{
GoodsId = item.GoodsId ?? 0,
Key = item.SpecificationSort,
TotalMoney = item.Final_Price ?? 0,
CouponMoney = 0
});
}
}
}
else
{
if (dcModel.MaxDiscountsPrice == 0 || dcModel.MaxDiscountsPrice >= (item.Final_Price ?? 0))
{
GoodsCouponList.Add(new RB_Goods_CouponModel()
{
GoodsId = item.GoodsId ?? 0,
Key = item.SpecificationSort,
TotalMoney = item.Final_Price ?? 0,
CouponMoney = 0
});
}
}
}
}
#endregion
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;
item.IntegralPresent = gmodel.IntegralPresent;
item.IntegralPresentType = gmodel.IntegralPresentType;
}
if (demodel.User_Coupon_Id > 0 && GoodsCouponList.Any())
{
decimal FinalMoney = GoodsCouponList.Sum(x => x.TotalMoney);
var ccmodel = cList.Where(x => x.Id == demodel.User_Coupon_Id).FirstOrDefault();
var dcModel = dcList.Where(x => x.ID == (ccmodel?.CouponId ?? 0)).FirstOrDefault();
if (dcModel == null)
{
message = "优惠卷不存在,亲核实后再试";
return false;
}
if (dcModel.MinConsumePrice > 0)
{
if (FinalMoney < dcModel.MinConsumePrice)
{
FinalMoney = 0;
}
}
if (dcModel.CouponType == Common.Enum.MarketingCenter.CouponTypeEnum.FullReduction && FinalMoney > 0)
......@@ -5415,16 +5299,12 @@ namespace Mall.Module.Product
}
}
}
#region 处理全局包邮
List<RB_FreeShipping_Extend> freeShippingList = new List<RB_FreeShipping_Extend>();
if (YFCategoryList.Any())
if (demodel.Use_Education_Id > 0 && GoodsCouponList.Any())
{
YFCategoryList = YFCategoryList.Distinct().ToList();
string categoryIds = string.Join(",", YFCategoryList);
freeShippingList = freeShippingRepository.GetFreeShippingListByCategoryIds(new RB_FreeShipping_Extend { MallBaseId = demodel.MallBaseId, TenantId = demodel.TenantId, CategoryIds = categoryIds });
var ccmodel = eList.Where(x => x.Id == demodel.Use_Education_Id).FirstOrDefault();
GoodsCouponList = GoodsCouponList.OrderBy(x => x.TotalMoney).Take(ccmodel.HeXiao - ccmodel.UseHeXiao).ToList();
}
#endregion
List<int> ExpressGoodsId = new List<int>();//同商品 多规格
foreach (var item in demodel.DetailList)
{
var gmodel = gList.Where(x => x.Id == item.GoodsId).FirstOrDefault();
......@@ -5434,6 +5314,9 @@ namespace Mall.Module.Product
}
item.SupplierId = gmodel.SupplierId;
item.CouponMoney = 0;
item.GoodServiceTime = gmodel.ServiceTime;
if (demodel.User_Coupon_Id > 0)
{
var couponModel = GoodsCouponList.Where(x => x.GoodsId == item.GoodsId).FirstOrDefault();
if (couponModel != null)
{
......@@ -5446,232 +5329,21 @@ namespace Mall.Module.Product
item.SmallShopsCostPrice -= (item.CouponMoney ?? 0);
}
}
#region 运费
decimal Express = 0;
decimal TExpress = 0;
bool ExpressIsReckon = false;
if (demodel.DeliveryMethod == OrderDeliveryMethodEnum.ExpressDistribution)
{
//计算总和
int exNum = demodel.DetailList.Where(x => x.GoodsId == item.GoodsId).Sum(x => x.Number ?? 0);
decimal exMoney = demodel.DetailList.Where(x => x.GoodsId == item.GoodsId).Sum(x => x.NorGoodsMoney);
if (!((gmodel.FullNumPinkage > 0 && exNum >= gmodel.FullNumPinkage) || (gmodel.FullMoneyPinkage > 0 && exMoney >= gmodel.FullMoneyPinkage)))
{
bool FreeShipping_Use = false;
if ((gmodel.FullMoneyPinkage ?? 0) == 0 && (gmodel.FullNumPinkage ?? 0) == 0 && YFCategoryList.Any())
{
//查找全局包邮规则
if (freeShippingList != null && freeShippingList.Any())
{
var fullNumPinkageModel = freeShippingList.Where(x => item.CategoryIdList.Contains(x.CategoryId) && x.IsFreeShipping == 1 && x.IsEnable == 1 && x.FullNumPinkage > 0 && x.CategoryId > 0).OrderBy(x => x.FullNumPinkage).ThenByDescending(x => x.ID).FirstOrDefault();
if (fullNumPinkageModel == null || fullNumPinkageModel.ID <= 0)
{
fullNumPinkageModel = freeShippingList.Where(x => item.CategoryIdList.Contains(x.CategoryId) && x.IsFreeShipping == 1 && x.IsEnable == 1 && x.FullMoneyPinkage > 0 && x.CategoryId > 0).OrderBy(x => x.FullMoneyPinkage).ThenByDescending(x => x.ID).FirstOrDefault();
}
if (fullNumPinkageModel == null || fullNumPinkageModel.ID <= 0)
{
fullNumPinkageModel = freeShippingList.Where(x => item.CategoryIdList.Contains(x.CategoryId) && x.IsFreeShipping == 1 && x.IsEnable == 1 && x.FullNumPinkage > 0 && x.CategoryId == 0).OrderBy(x => x.FullNumPinkage).ThenByDescending(x => x.ID).FirstOrDefault();
}
if (fullNumPinkageModel == null || fullNumPinkageModel.ID <= 0)
{
fullNumPinkageModel = freeShippingList.Where(x => item.CategoryIdList.Contains(x.CategoryId) && x.IsFreeShipping == 1 && x.IsEnable == 1 && x.FullMoneyPinkage > 0 && x.CategoryId == 0).OrderBy(x => x.FullMoneyPinkage).ThenByDescending(x => x.ID).FirstOrDefault();
}
if (fullNumPinkageModel != null)
{
//看所有商品是否满足该规则
var sglist = SatisfiedGoodsList.Where(x => x.FreeShipping == fullNumPinkageModel.ID).ToList();
var nosglist = SatisfiedGoodsList.Where(x => x.FreeShipping != fullNumPinkageModel.ID).ToList();
if (sglist.Any())
{
//看着商品是否包含在这里面
if (sglist.Where(x => x.GoodsId == item.GoodsId && x.SpecificationKey == item.SpecificationSort).Any())
{
FreeShipping_Use = true;
item.FreeShippingRemarks = sglist.Where(x => x.GoodsId == item.GoodsId && x.SpecificationKey == item.SpecificationSort).FirstOrDefault().Name;
}
}
else
{
//根据 查询出所有的订单商品
var SatisfiedGoodsList2 = new List<FreeShippingGoodsDetail>();
foreach (var qitem in demodel.DetailList)
{
var qgmodel = gList.Where(x => x.Id == qitem.GoodsId).FirstOrDefault();
if (qgmodel != null && qgmodel.GoodsStatus == 1 && (qgmodel.FullMoneyPinkage ?? 0) == 0 && (qgmodel.FullNumPinkage ?? 0) == 0)
{
if (!nosglist.Where(x => x.GoodsId == qitem.GoodsId && x.SpecificationKey == qitem.SpecificationSort).Any())
{
var fpkModel = freeShippingList.Where(x => qitem.CategoryIdList.Contains(x.CategoryId) && x.IsFreeShipping == 1 && x.IsEnable == 1 && x.FullNumPinkage > 0 && x.CategoryId > 0).OrderBy(x => x.FullNumPinkage).ThenByDescending(x => x.ID).FirstOrDefault();
if (fpkModel == null || fpkModel.ID <= 0)
{
fpkModel = freeShippingList.Where(x => qitem.CategoryIdList.Contains(x.CategoryId) && x.IsFreeShipping == 1 && x.IsEnable == 1 && x.FullMoneyPinkage > 0 && x.CategoryId > 0).OrderBy(x => x.FullMoneyPinkage).ThenByDescending(x => x.ID).FirstOrDefault();
}
if (fpkModel == null || fpkModel.ID <= 0)
{
fpkModel = freeShippingList.Where(x => qitem.CategoryIdList.Contains(x.CategoryId) && x.IsFreeShipping == 1 && x.IsEnable == 1 && x.FullNumPinkage > 0 && x.CategoryId == 0).OrderBy(x => x.FullNumPinkage).ThenByDescending(x => x.ID).FirstOrDefault();
}
if (fpkModel == null || fpkModel.ID <= 0)
{
fpkModel = freeShippingList.Where(x => qitem.CategoryIdList.Contains(x.CategoryId) && x.IsFreeShipping == 1 && x.IsEnable == 1 && x.FullMoneyPinkage > 0 && x.CategoryId == 0).OrderBy(x => x.FullMoneyPinkage).ThenByDescending(x => x.ID).FirstOrDefault();
}
if (fpkModel != null && fpkModel.ID == fullNumPinkageModel.ID)
{
//是同一包邮规则里的
string Name = fullNumPinkageModel.Name;
if (fullNumPinkageModel.FullNumPinkage > 0)
{
Name += ":满" + fullNumPinkageModel.FullNumPinkage + "件包邮";
}
else if (fullNumPinkageModel.FullMoneyPinkage > 0)
{
Name += ":满" + fullNumPinkageModel.FullMoneyPinkage + "元包邮";
}
SatisfiedGoodsList2.Add(new FreeShippingGoodsDetail()
{
FreeShipping = fullNumPinkageModel.ID,
Name = Name,
GoodsId = qitem.GoodsId ?? 0,
SpecificationKey = qitem.SpecificationSort,
Number = qitem.Number ?? 0,
Money = qitem.NorGoodsMoney,
CategoryId = fullNumPinkageModel.CategoryId
});
}
}
}
}
if (SatisfiedGoodsList2.Any())
item.EducationCouponId = 0;
if (demodel.Use_Education_Id > 0)
{
//看是否满足包邮
if (fullNumPinkageModel.FullNumPinkage > 0)
{
if (SatisfiedGoodsList2.Sum(x => x.Number) >= fullNumPinkageModel.FullNumPinkage)
{
FreeShipping_Use = true;
SatisfiedGoodsList.AddRange(SatisfiedGoodsList2);
}
}
else if (fullNumPinkageModel.FullMoneyPinkage > 0)
{
if (SatisfiedGoodsList2.Sum(x => x.Money) >= fullNumPinkageModel.FullMoneyPinkage)
var couponModel = GoodsCouponList.Where(x => x.GoodsId == item.GoodsId).FirstOrDefault();
if (couponModel != null)
{
FreeShipping_Use = true;
SatisfiedGoodsList.AddRange(SatisfiedGoodsList2);
}
EducationMoney += couponModel.TotalMoney;
EducationNum += 1;
item.EducationCouponId = demodel.Use_Education_Id;
}
}
//看着商品是否包含在这里面
if (SatisfiedGoodsList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationKey == item.SpecificationSort).Any())
{
item.FreeShippingRemarks = SatisfiedGoodsList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationKey == item.SpecificationSort).FirstOrDefault().Name;
}
}
}
}
}
if (FreeShipping_Use == false)
{
int FreightId2 = gmodel.FreightId ?? 0;
if (gmodel.FreightId == 0)
{
FreightId2 = DefFreightId;
}
if (FreightId2 > 0)
{
var rulesModel = rulesList.Where(x => x.ID == FreightId2).FirstOrDefault();
List<Model.Extend.BaseSetUp.RB_Logistics_RulesPrice_Extend> priceList2 = priceList.Where(x => x.RulesId == FreightId2).ToList();
if (priceList2.Any())
{
var priceIds = priceList2.Select(x => x.ID).ToList();
var regionList2 = regionList.Where(x => priceIds.Contains(x.RulesPriceId)).ToList();
item.FreightMoney = 0;
var regionModel = regionList2.Where(x => disList.Contains(x.RegionId)).FirstOrDefault();
if (regionModel != null)
{
var pmodel = priceList2.Where(x => x.ID == regionModel.RulesPriceId).FirstOrDefault();
if (pmodel != null && rulesModel != null)
{
if (rulesModel.ChargeMode == Common.Enum.MallBase.ChargeModeEnum.Num)
{
//按件计费
if (exNum <= pmodel.First)
{
Express = pmodel.FirstPrice;
}
else
{
if (pmodel.Second > 0)
{
if ((exNum - pmodel.First) % pmodel.Second == 0)
{
Express = pmodel.FirstPrice + ((exNum - pmodel.First) / pmodel.Second) * pmodel.SecondPrice;
}
else
{
Express = pmodel.FirstPrice + ((exNum - pmodel.First) / pmodel.Second + 1) * pmodel.SecondPrice;
}
}
else
{
Express = pmodel.FirstPrice;
}
}
}
else
{
//重量计费
int TotalW = exNum * (item.GoodsWeight ?? 0);
if (TotalW <= pmodel.First)
{
Express = pmodel.FirstPrice;
}
else
{
if (pmodel.Second > 0)
{
if ((TotalW - pmodel.First) % pmodel.Second == 0)
{
Express = pmodel.FirstPrice + ((TotalW - pmodel.First) / pmodel.Second) * pmodel.SecondPrice;
}
else
{
Express = pmodel.FirstPrice + ((TotalW - pmodel.First) / pmodel.Second + 1) * pmodel.SecondPrice;
}
}
else
{
Express = pmodel.FirstPrice;
}
}
}
}
}
}
}
TExpress = Express;
if (exNum != item.Number)
{
Express = Math.Round(Express * (item.Number ?? 0) / exNum, 2, MidpointRounding.AwayFromZero);
if (!ExpressGoodsId.Contains(item.GoodsId ?? 0))
{
ExpressGoodsId.Add(item.GoodsId ?? 0);
}
else
{
ExpressIsReckon = true;
}
}
}
}
}
if (!ExpressIsReckon)
{
TotalExpress += TExpress;
}
#endregion
item.FreightMoney = Express;
item.CommentGiveIntegral = 0;
if (gmodel.IntegralComment > 0)
{
......@@ -5686,9 +5358,9 @@ namespace Mall.Module.Product
}
}
}
if (demodel.FreightMoney != TotalExpress)
if ((demodel?.EducationMoney??0) != EducationMoney)
{
message = "运费不正确";
message = "套餐卡抵扣金额不正确";
return false;
}
if (CouponsMoney != demodel.CouponMoney)
......@@ -5696,8 +5368,9 @@ namespace Mall.Module.Product
message = "优惠金额计算有误";
return false;
}
//验证总额
if (demodel.Income != (TotalMoney + TotalExpress))
if (demodel.Income != (TotalMoney - EducationMoney))
{
message = "订单合计金额不正确";
return false;
......@@ -5705,28 +5378,27 @@ namespace Mall.Module.Product
demodel.PreferPrice = TotalMoney + CouponsMoney;
#region 手续费计算
//decimal ServiceCharge = Convert.ToDecimal(Config.SettlementRate) / 100;
//if (ServiceCharge > 0)
//{
// decimal TotalFee = Math.Round((demodel.Income ?? 0) * ServiceCharge, 2, MidpointRounding.AwayFromZero);
// if (demodel.DetailList.Any())
// {
// int dcount = demodel.DetailList.Count();
// decimal avgFee = Math.Round(TotalFee / dcount, 2, MidpointRounding.AwayFromZero);
// foreach (var item in demodel.DetailList)
// {
// item.ServiceCharge = avgFee;
// }
// if (avgFee * dcount != TotalFee)
// {
// //多余的 直接算在第一个商品里
// var detailmodel = demodel.DetailList.FirstOrDefault();
// detailmodel.ServiceCharge += (TotalFee - avgFee * dcount);
// }
// }
//}
decimal ServiceCharge = Convert.ToDecimal(Config.SettlementRate) / 100;
if (ServiceCharge > 0)
{
decimal TotalFee = Math.Round((demodel.Income ?? 0) * ServiceCharge, 2, MidpointRounding.AwayFromZero);
if (demodel.DetailList.Any())
{
int dcount = demodel.DetailList.Count();
decimal avgFee = Math.Round(TotalFee / dcount, 2, MidpointRounding.AwayFromZero);
foreach (var item in demodel.DetailList)
{
item.ServiceCharge = avgFee;
}
if (avgFee * dcount != TotalFee)
{
//多余的 直接算在第一个商品里
var detailmodel = demodel.DetailList.FirstOrDefault();
detailmodel.ServiceCharge += (TotalFee - avgFee * dcount);
}
}
}
#endregion
try
{
Random R = new Random();
......@@ -5735,6 +5407,14 @@ namespace Mall.Module.Product
demodel.PaymentWay = OrderPaymentTypeEnum.OnlinePayment;//先默认在线支付
demodel.Remark ??= "";
demodel.ApplyForCancelStatus ??= 0;
if (demodel.Income == 0)
{
demodel.OrderStatus = OrderStatusEnum.Completed;
demodel.PaymentTime = DateTime.Now;
demodel.DeliveryTime = DateTime.Now;
demodel.ReceivingTime = DateTime.Now;
demodel.FinishTime = DateTime.Now;
}
int OrderId = goods_OrderRepository.Insert(demodel);
if (OrderId > 0)
{
......@@ -5751,7 +5431,7 @@ namespace Mall.Module.Product
}
#endregion
//插入订单明细+ 商品库存更新
InsertOrderDetail(demodel, null, OrderId, SatisfiedGoodsList);
InsertOrderDetail(demodel, null, OrderId, new List<FreeShippingGoodsDetail>());
//用户订单数增加
Dictionary<string, object> keyValues = new Dictionary<string, object>()
......@@ -5769,7 +5449,16 @@ namespace Mall.Module.Product
{ nameof(RB_Member_DiscountCoupon_Extend.UseDate),DateTime.Now},
{ nameof(RB_Member_DiscountCoupon_Extend.UseState),1}
};
member_CouponRepository.Update(keyValues1, new WhereHelper(nameof(RB_Member_DiscountCoupon_Extend.Id), item.Id));
List<WhereHelper> wheres1 = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_Member_DiscountCoupon_Extend.Id),
FiledValue=item.Id,
OperatorEnum=OperatorEnum.Equal
}
};
member_CouponRepository.Update(keyValues1, wheres1);
umodel.CouponsNum = (umodel.CouponsNum ?? 0) - 1;
}
if (umodel.CouponsNum < 0)
......@@ -5778,6 +5467,7 @@ namespace Mall.Module.Product
}
keyValues.Add(nameof(RB_Member_User_Extend.CouponsNum), umodel.CouponsNum);
}
//积分
if (demodel.Use_Integral == 1 && TotalIntegralNumber > 0)
{
keyValues.Add(nameof(RB_Member_User_Extend.Integral), (umodel.Integral ?? 0));
......@@ -5797,7 +5487,55 @@ namespace Mall.Module.Product
OrderId = OrderId
});
}
member_UserRepository.Update(keyValues, new WhereHelper(nameof(RB_Member_User_Extend.Id), umodel.Id));
List<WhereHelper> wheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_Member_User_Extend.Id),
FiledValue=umodel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
member_UserRepository.Update(keyValues, wheres);
#region 课程卡使用
if (demodel.Use_Education_Id > 0 && EducationNum > 0)
{
education_MemberUseCouponRepository.Insert(new Model.Entity.Education.RB_Education_MemberUseCoupon()
{
Id = 0,
MallBaseId = demodel.MallBaseId,
MemberCouponId = demodel.Use_Education_Id,
OrderId = OrderId,
Remarks = "",
Status = 0,
TenantId = demodel.TenantId,
UseDate = DateTime.Now,
UserId = demodel.UserId,
UseHeXiao = EducationNum
});
var educationModel = eList.FirstOrDefault();
if (educationModel != null)
{
//更新用户课程卡 已使用数量
Dictionary<string, object> keyValues1 = new Dictionary<string, object>()
{
{ nameof(RB_Education_MemberCoupon_Extend.UseHeXiao),educationModel.UseHeXiao + EducationNum}
};
List<WhereHelper> wheres1 = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_Education_MemberCoupon_Extend.Id),
FiledValue=educationModel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
education_MemberCouponRepository.Update(keyValues1, wheres1);
}
}
#endregion
//来自购物车的话 需清除购物车数据
if (demodel.IsFormShoppingCart == 1)
......@@ -5849,7 +5587,16 @@ namespace Mall.Module.Product
{nameof(RB_Member_User_Extend.IsBeDownline),1 },
{nameof(RB_Member_User_Extend.BeDownlineDate),DateTime.Now },
};
member_UserRepository.Update(keyValues1, new WhereHelper(nameof(RB_Member_User_Extend.Id), umodel.Id));
List<WhereHelper> wheres1 = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_Member_User_Extend.Id),
FiledValue=umodel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
member_UserRepository.Update(keyValues1, wheres1);
}
//任务执行返佣 失败查看日志,手动返佣(空闲可增加手动返佣接口)
......@@ -5864,7 +5611,7 @@ namespace Mall.Module.Product
Id = 0,
Type = 1,
SourceId = OrderId,
Content = "新增线下服务订单",
Content = "新增课程订单",
CreateDate = DateTime.Now,
MallBaseId = demodel.MallBaseId,
TenantId = demodel.TenantId
......
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