Commit 26709c8b authored by 黄奎's avatar 黄奎

新增订单

parent d2d4cdb1
......@@ -309,7 +309,7 @@ namespace Mall.Model.Entity.Product
/// </summary>
public int? SmallShopsId { get; set; }
/// <summary>
/// 订单分类 0正常订单 1司导订单 2教育订单
/// 订单分类 0正常订单 1司导订单 2教育订单 3-线下服务订单
/// </summary>
public int OrderClassify { get; set; }
/// <summary>
......@@ -320,5 +320,11 @@ namespace Mall.Model.Entity.Product
/// 课程卡抵扣金额
/// </summary>
public decimal? EducationMoney { get; set; }
/// <summary>
/// 门店编号
/// </summary>
public int StoresId { get; set; }
}
}
......@@ -4597,6 +4597,1147 @@ namespace Mall.Module.Product
}
}
/// <summary>
/// 线下服务订单
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
[TransactionCallHandler]
public bool SetAppletOfflineGoodsOrderModule(RB_Goods_Order_Extend demodel,out string message)
{
message = "";
var umodel = member_UserRepository.GetEntity(demodel.UserId);
if (umodel == null)
{
message = "用户不存在";
return false;
}
if (demodel.SmallShopsId == 0)
{
demodel.SmallShopsId = umodel.SmallShopId;
}
if (umodel.Blacklist == 1)
{
message = "您在黑名单状态无法下单,请联系管理员核实";
return false;
}
List<int> disList = new List<int>();
disList.Add(demodel.Province ?? 0);
disList.Add(demodel.City ?? 0);
disList.Add(demodel.District ?? 0);
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;//优惠卷验证
#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>();
List<Model.Extend.MarketingCenter.RB_DiscountCoupon_Product_Extend> dcpList = new List<Model.Extend.MarketingCenter.RB_DiscountCoupon_Product_Extend>();
demodel.CouponsIds = "";
bool IsCommissionCoupons = true;// 是否通用优惠券 2020-08-13 ld
if (demodel.User_Coupon_Id > 0)
{
demodel.CouponsIds = demodel.User_Coupon_Id.ToString();
if (!string.IsNullOrEmpty(demodel.CouponsIds))
{
cList = member_CouponRepository.GetList(new RB_Member_DiscountCoupon_Extend() { UseState = 0, Ids = demodel.CouponsIds, UserId = umodel.Id, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
if (cList.Any())
{
string cIds = string.Join(",", cList.Select(x => x.CouponId).Distinct());
dcList = discountCouponRepository.GetDiscountCouponList(new Model.Extend.MarketingCenter.RB_DiscountCoupon_Extend() { CouponIds = cIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }, true);
dcpList = discountCoupon_ProductRepository.GetListByDiscountCouponIds(new Model.Entity.MarketingCenter.RB_DiscountCoupon() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }, cIds, true);
if (dcList.Any())
{
foreach (var item in cList)
{
if (item.CouponId > 0)
{
if (!dcList.Where(x => x.ID == item.CouponId).Any())
{
message = "优惠券不存在,请核实后再试";
return false;
}
}
}
if (dcList.Where(x => x.SmallShopId > 0).Any())
{
IsCommissionCoupons = false;
}
}
}
}
}
#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 });
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())
{
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())
{
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);
}
//验证限购
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)
{
message = "有商品不存在或者商品已失效";
return false;
}
#region 验证商品限购,订单限购
if (gmodel.LimitBuyGoodsNum > 0)
{
var ogModel = OrderGoodsNumList.Where(x => x.GoodsId == gmodel.Id).FirstOrDefault();
if (ogModel != null)
{
if (ogModel.GoodsTotalNum + GoodsNum > (gmodel.LimitBuyGoodsNum ?? 0))
{
message = "该商品限购" + (gmodel.LimitBuyGoodsNum ?? 0) + "件,您已购买" + ogModel.GoodsTotalNum + "件";
return false;
}
}
}
if (gmodel.LimitBuyOrderNum > 0)
{
var ogModel = OrderNumList.Where(x => x.GoodsId == gmodel.Id).FirstOrDefault();
if (ogModel != null)
{
if (ogModel.OrderNum + 1 > (gmodel.LimitBuyOrderNum ?? 0))
{
message = "该商品订单限购" + (gmodel.LimitBuyOrderNum ?? 0) + "单,您已购买" + ogModel.OrderNum + "单";
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)
{
if (GoodsNum > (gmodel.LimitBuyGoodsNum ?? 0))
{
message = "该商品限购" + (gmodel.LimitBuyGoodsNum ?? 0) + "件";
return false;
}
}
#endregion
}
}
List<int> YFCategoryList = new List<int>();//全局适配 分类
var mallbaseModel = mallBaseRepository.GetListRepository(new Model.Extend.BaseSetUp.RB_MallBase_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault();
#region 微店价格
RB_SmallShops_Info_Extend smallModel = new RB_SmallShops_Info_Extend();
List<RB_SmallShops_Price_Extend> smallPList = new List<RB_SmallShops_Price_Extend>();
if (demodel.SmallShopsId > 0)
{
smallModel = smallShops_InfoRepository.GetEntity<RB_SmallShops_Info_Extend>(demodel.SmallShopsId);
smallPList = smallShops_PriceRepository.GetList(new RB_SmallShops_Price_Extend() { SmallShopsId = demodel.SmallShopsId, GoodsIds = GoodsIds });
}
#endregion
foreach (var item in demodel.DetailList)
{
var gmodel = gList.Where(x => x.Id == item.GoodsId).FirstOrDefault();
if (gmodel == null || gmodel.GoodsStatus != 1)
{
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))
{
message = "您当前等级无法购买VIP商品";
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.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
{
if (item.Number > gmodel.InventoryNum)
{
message = "商品库存不足:" + gmodel.Name;
return false;
}
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 == "").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);
}
}
}
}
}
}
#endregion
#region 会员价格
gmodel.MemberPrice = gmodel.SellingPrice ?? 0;
if (umodel.MemberGrade > 0)
{
if (gmodel.EnjoyMember == 1 && gmodel.SeparateSetMember == 1)
{
gmodel.MemberPrice = mpriceList.Where(x => x.GoodsId == item.GoodsId && x.MemberGrade == umodel.MemberGrade && x.SpecificationSort == item.SpecificationSort).FirstOrDefault()?.MemberPrice ?? 0;
item.IsMemberPrice = 1;
item.SmallShopsCostPrice = gmodel.MemberPrice;
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.MemberPrice += Math.Ceiling((gmodel.MemberPrice) * (sspModel.UpPrice ?? 0) / 100);
}
else if (sspModel.PriceType == 2)
{
gmodel.MemberPrice += (sspModel.UpPrice ?? 0);
}
}
else
{
if ((smallModel.UpPrice ?? 0) > 0)
{
if (smallModel.PriceType == 1)
{
gmodel.MemberPrice += Math.Ceiling((gmodel.MemberPrice) * (smallModel.UpPrice ?? 0) / 100);
}
else if (smallModel.PriceType == 2)
{
gmodel.MemberPrice += (smallModel.UpPrice ?? 0);
}
}
}
}
}
}
else
{
//求会员等级折扣
var gradeModel = member_GradeRepository.GetList(new RB_Member_Grade_Extend() { Grade = umodel.MemberGrade, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault();
gmodel.MemberPrice = Math.Round((gmodel.SellingPrice ?? 0) * (gradeModel?.Discount ?? 10) / 10, 2, MidpointRounding.AwayFromZero);
item.SmallShopsCostPrice = Math.Round((item.SmallShopsCostPrice ?? 0) * (gradeModel?.Discount ?? 10) / 10, 2, MidpointRounding.AwayFromZero);
item.DiscountRate = gradeModel?.Discount ?? 10;
}
}
if (umodel.MemberGrade > 0)
{
item.Final_Price = gmodel.MemberPrice * (item.Number ?? 0);
}
else
{
item.Final_Price = (gmodel.SellingPrice ?? 0) * (item.Number ?? 0);
}
#endregion
#region 直播返佣
item.LiveCommission = 0;
item.LiveFinanceIds = "";
if (gmodel.IsLiveGoods == 1)
{
item.LiveCommission = (item.CommissionPrice / 4) * (item.Number ?? 0);
}
#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);
#region 积分
if (umodel.Integral > 0 && gmodel.PointsDeduction > 0 && integralModel.IntegralNum > 0)
{
decimal SingleMaxMoney = 0, MultMaxMoney = 0;
if (gmodel.PointsDeductionType == 1)
{
SingleMaxMoney = Math.Round(gmodel.MemberPrice * (gmodel.PointsDeduction ?? 0) / 100, 2, MidpointRounding.AwayFromZero);
MultMaxMoney = Math.Round(gmodel.MemberPrice * (item.Number ?? 0) * (gmodel.PointsDeduction ?? 0) / 100, 2, MidpointRounding.AwayFromZero);
}
if (gmodel.IsMultipleDeduction == 1)
{
//可以多件商品可累计抵扣
if (gmodel.PointsDeductionType == 1)
{
int MaxInterral = Convert.ToInt32(MultMaxMoney * integralModel.IntegralNum);
//最多可抵扣积分
if (umodel.Integral > MaxInterral)
{
item.IntegralNumber = MaxInterral;
item.IntegralMoney = Math.Round(Convert.ToDecimal(MaxInterral) / integralModel.IntegralNum, 2, MidpointRounding.AwayFromZero);
umodel.Integral -= MaxInterral;
}
else
{
item.IntegralNumber = umodel.Integral;
item.IntegralMoney = Math.Round(Convert.ToDecimal(umodel.Integral ?? 0) / integralModel.IntegralNum, 2, MidpointRounding.AwayFromZero);
umodel.Integral = 0;
}
}
else
{
int MaxInterral = Convert.ToInt32((gmodel.PointsDeduction ?? 0) * integralModel.IntegralNum * (item.Number ?? 0));
//最多可抵扣积分
if (umodel.Integral > MaxInterral)
{
item.IntegralNumber = MaxInterral;
item.IntegralMoney = Math.Round(Convert.ToDecimal(MaxInterral) / integralModel.IntegralNum, 2, MidpointRounding.AwayFromZero);
umodel.Integral -= MaxInterral;
}
else
{
item.IntegralNumber = umodel.Integral;
item.IntegralMoney = Math.Round(Convert.ToDecimal(umodel.Integral ?? 0) / integralModel.IntegralNum, 2, MidpointRounding.AwayFromZero);
umodel.Integral = 0;
}
}
}
else
{
//单件商品
if (gmodel.PointsDeductionType == 1)
{
int MaxInterral = Convert.ToInt32(SingleMaxMoney * integralModel.IntegralNum);
//最多可抵扣积分
if (umodel.Integral > MaxInterral)
{
item.IntegralNumber = MaxInterral;
item.IntegralMoney = Math.Round(Convert.ToDecimal(MaxInterral) / integralModel.IntegralNum, 2, MidpointRounding.AwayFromZero);
umodel.Integral -= MaxInterral;
}
else
{
item.IntegralNumber = umodel.Integral;
item.IntegralMoney = Math.Round(Convert.ToDecimal(umodel.Integral ?? 0) / integralModel.IntegralNum, 2, MidpointRounding.AwayFromZero);
umodel.Integral = 0;
}
}
else
{
int MaxInterral = Convert.ToInt32((gmodel.PointsDeduction ?? 0) * integralModel.IntegralNum);
//最多可抵扣积分
if (umodel.Integral > MaxInterral)
{
item.IntegralNumber = MaxInterral;
item.IntegralMoney = Math.Round(Convert.ToDecimal(MaxInterral) / integralModel.IntegralNum, 2, MidpointRounding.AwayFromZero);
umodel.Integral -= MaxInterral;
}
else
{
item.IntegralNumber = umodel.Integral;
item.IntegralMoney = Math.Round(Convert.ToDecimal(umodel.Integral ?? 0) / integralModel.IntegralNum, 2, MidpointRounding.AwayFromZero);
umodel.Integral = 0;
}
}
}
}
if (demodel.Use_Integral == 1)
{
TotalIntegralNumber += (item.IntegralNumber ?? 0);
TotalIntegralMoney += (item.IntegralMoney ?? 0);
item.Final_Price -= (item.IntegralMoney ?? 0);
item.SmallShopsCostPrice -= (item.IntegralMoney ?? 0);
}
#endregion
#region 优惠券
//decimal CouponsMoney = 0;
if (demodel.User_Coupon_Id > 0)
{
var ccmodel = cList.Where(x => x.Id == demodel.User_Coupon_Id).FirstOrDefault();
string couponItem = (ccmodel?.CouponId ?? 0).ToString();
if (!string.IsNullOrEmpty(couponItem))
{
var dcModel = dcList.Where(x => x.ID == Convert.ToInt32(couponItem)).FirstOrDefault();
if (dcModel == null)
{
message = "优惠卷不存在,亲核实后再试";
return false;
}
dcModel.DiscountsPrice = dcModel.DiscountsPrice == 0 ? 10 : dcModel.DiscountsPrice;
if (dcModel.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Category) //指定分类
{
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())
{
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))
{
GoodsCouponList.Add(new RB_Goods_CouponModel()
{
GoodsId = item.GoodsId ?? 0,
Key = item.SpecificationSort,
TotalMoney = item.Final_Price ?? 0,
CouponMoney = 0
});
}
}
else
{
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)
{
CouponsMoney = dcModel.DiscountsPrice;
}
else if (dcModel.CouponType == Common.Enum.MarketingCenter.CouponTypeEnum.Discount && FinalMoney > 0)
{
decimal disMoney = Math.Round(FinalMoney * (10 - dcModel.DiscountsPrice) / 10, 2, MidpointRounding.AwayFromZero);
if (dcModel.MaxDiscountsPrice > 0 && dcModel.MaxDiscountsPrice < disMoney)
{
disMoney = dcModel.MaxDiscountsPrice;
}
CouponsMoney = disMoney;
}
//每个商品优惠券分摊金额
if (CouponsMoney > 0)
{
foreach (var item in GoodsCouponList)
{
item.CouponMoney = Math.Round((item.TotalMoney / FinalMoney) * CouponsMoney, 2, MidpointRounding.AwayFromZero);
}
if (CouponsMoney != GoodsCouponList.Sum(x => x.CouponMoney))
{
//四舍五入存在差值
decimal diffMoney = CouponsMoney - GoodsCouponList.Sum(x => x.CouponMoney);
var gcModel = GoodsCouponList.OrderBy(x => x.CouponMoney).Take(1).FirstOrDefault();
gcModel.CouponMoney += diffMoney;
}
}
}
#region 处理全局包邮
List<RB_FreeShipping_Extend> freeShippingList = new List<RB_FreeShipping_Extend>();
if (YFCategoryList.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 });
}
#endregion
List<int> ExpressGoodsId = new List<int>();//同商品 多规格
foreach (var item in demodel.DetailList)
{
var gmodel = gList.Where(x => x.Id == item.GoodsId).FirstOrDefault();
if (gmodel == null || gmodel.GoodsStatus != 1)
{
continue;
}
item.SupplierId = gmodel.SupplierId;
item.CouponMoney = 0;
var couponModel = GoodsCouponList.Where(x => x.GoodsId == item.GoodsId).FirstOrDefault();
if (couponModel != null)
{
item.CouponMoney = couponModel.CouponMoney;
TotalMoney -= (item.CouponMoney ?? 0);//总价格需减去优惠券金额
item.Final_Price -= (item.CouponMoney ?? 0);
if (IsCommissionCoupons)
{
//通用优惠券
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())
{
//看是否满足包邮
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)
{
FreeShipping_Use = true;
SatisfiedGoodsList.AddRange(SatisfiedGoodsList2);
}
}
}
//看着商品是否包含在这里面
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();
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)
{
if (gmodel.IntegralCommentType == 1)
{
item.CommentGiveIntegral = Convert.ToInt32(Math.Floor((gmodel.IntegralComment ?? 0) * (item.Final_Price ?? 0) / 100));
}
else
{
item.CommentGiveIntegral = Convert.ToInt32((gmodel.IntegralComment ?? 0) * (item.Number ?? 0));
}
}
}
}
if (demodel.FreightMoney != TotalExpress)
{
message = "运费不正确";
return false;
}
if (CouponsMoney != demodel.CouponMoney)
{
message = "优惠金额计算有误";
return false;
}
//验证总额
if (demodel.Income != (TotalMoney + TotalExpress))
{
message = "订单合计金额不正确";
return false;
}
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);
}
}
}
#endregion
try
{
Random R = new Random();
int Rstr = R.Next(111, 999);
demodel.OrderNo = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Rstr;
demodel.PaymentWay = OrderPaymentTypeEnum.OnlinePayment;//先默认在线支付
demodel.Remark ??= "";
demodel.ApplyForCancelStatus ??= 0;
int OrderId = goods_OrderRepository.Insert(demodel);
if (OrderId > 0)
{
demodel.OrderId = OrderId;
#region 公司比例
demodel.CompanyProfitRate = 0;
demodel.CompanyId = 0;
var pUserId = member_UserRepository.GetMemberFristParentren(demodel.UserId ?? 0);
if (pUserId > 0)
{
var pumodel = member_UserRepository.GetEntity(pUserId);
demodel.CompanyProfitRate = (pumodel?.CompanyProfitRate ?? 0);
demodel.CompanyId = pUserId;
}
#endregion
//插入订单明细+ 商品库存更新
InsertOrderDetail(demodel, null, OrderId, SatisfiedGoodsList);
//用户订单数增加
Dictionary<string, object> keyValues = new Dictionary<string, object>()
{
{ nameof(RB_Member_User_Extend.OrderNum),(umodel.OrderNum??0)+1}
};
//优惠券使用
if (cList.Any())
{
foreach (var item in cList)
{
Dictionary<string, object> keyValues1 = new Dictionary<string, object>()
{
{ 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));
umodel.CouponsNum = (umodel.CouponsNum ?? 0) - 1;
}
if (umodel.CouponsNum < 0)
{
umodel.CouponsNum = 0;
}
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));
member_IntegralRepository.Insert(new Model.Entity.User.RB_Member_Integral()
{
Id = 0,
CreateDate = DateTime.Now,
Description = "订单使用积分抵扣" + TotalIntegralMoney + "元,订单号:" + demodel.OrderNo,
Image = 0,
Integral = TotalIntegralNumber,
MallBaseId = demodel.MallBaseId,
PlatformType = demodel.OrderSource,
Remarks = "",
TenantId = demodel.TenantId,
Type = Common.Enum.MarketingCenter.RecordTypeEnum.Expend,
UserId = demodel.UserId,
OrderId = OrderId
});
}
member_UserRepository.Update(keyValues, new WhereHelper(nameof(RB_Member_User_Extend.Id), umodel.Id));
//来自购物车的话 需清除购物车数据
if (demodel.IsFormShoppingCart == 1)
{
foreach (var cartItem in demodel.ShoppingCartIdList)
{
Dictionary<string, object> keyValues2 = new Dictionary<string, object>()
{
{ nameof(RB_Goods_ShoppingCart.Status),1},
{ nameof(RB_Goods_ShoppingCart.UpdateDate),DateTime.Now}
};
List<WhereHelper> wheres2 = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_Goods_ShoppingCart.Id),
FiledValue=cartItem,
OperatorEnum=OperatorEnum.IN
},
new WhereHelper()
{
FiledName=nameof(RB_Goods_ShoppingCart.UserId),
FiledValue=demodel.UserId,
OperatorEnum=OperatorEnum.IN
},
new WhereHelper()
{
FiledName=nameof(RB_Goods_ShoppingCart.TenantId),
FiledValue=demodel.TenantId,
OperatorEnum=OperatorEnum.Equal
},
new WhereHelper()
{
FiledName=nameof(RB_Goods_ShoppingCart.MallBaseId),
FiledValue=demodel.MallBaseId,
OperatorEnum=OperatorEnum.Equal
}
};
goods_ShoppingCartRepository.Update(keyValues2, wheres2);
}
}
//下线
if (umodel.DownlineCondition == Common.Enum.User.DistrbutorReferralsEnum.SCXD && umodel.IsBeDownline == 2)
{
//首次下单成为下线
Dictionary<string, object> keyValues1 = new Dictionary<string, object>()
{
{nameof(RB_Member_User_Extend.SuperiorId),umodel.WaitSuperiorId },
{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));
}
//任务执行返佣 失败查看日志,手动返佣(空闲可增加手动返佣接口)
if (demodel.User_Coupon_Id > 0 && demodel.CouponMoney > 0)
{
demodel.CouponDestription = "使用" + (IsCommissionCoupons ? "通用" : "店铺") + "优惠券抵扣";
}
Task.Run(() => InsertOrderCommission(demodel, umodel, GoodsIds, OrderId));
//记录日志
goods_LogRepository.Insert(new RB_Goods_Log()
{
Id = 0,
Type = 1,
SourceId = OrderId,
Content = "新增线下服务订单",
CreateDate = DateTime.Now,
MallBaseId = demodel.MallBaseId,
TenantId = demodel.TenantId
});
}
return true;
}
catch (Exception ex)
{
LogHelper.Write(ex, "SetAppletOfflineGoodsOrderModule");
return false;
}
}
/// <summary>
/// 赠送粉象等级
/// </summary>
......
......@@ -694,6 +694,63 @@ namespace Mall.WebApi.Controllers.MallBase
return orderModule.SetAppletSDGoodsOrderInfo(demodel);
}
/// <summary>
/// 线下服务下单
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetAppletOfflineGoodsOrderInfo()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
RB_Goods_Order_Extend demodel = JsonConvert.DeserializeObject<RB_Goods_Order_Extend>(req.msg.ToString());
if (string.IsNullOrEmpty(demodel.Consignee))
{
return ApiResult.ParamIsNull("请传递联系人");
}
if (string.IsNullOrEmpty(demodel.Mobile))
{
return ApiResult.ParamIsNull("请传递联系人手机号码");
}
demodel.DeliveryMethod = Common.Enum.Goods.OrderDeliveryMethodEnum.VerificationShop;
if ((demodel.Income ?? 0) <= 0)
{
return ApiResult.ParamIsNull("订单金额不正确");
}
if (demodel.StoresId <= 0)
{
return ApiResult.ParamIsNull("请选择服务门店");
}
demodel.BuyerMessage ??= "";//买家留言
demodel.OrderSource ??= Common.Enum.User.UserSourceEnum.WeiXin;
#region 赋默认值
demodel.TenantId = userInfo.TenantId;
demodel.MallBaseId = userInfo.MallBaseId;
demodel.Country ??= 2;
demodel.OrderStatus = Common.Enum.Goods.OrderStatusEnum.NonPayment;
demodel.CreateDate = DateTime.Now;
demodel.Fee ??= 0;
demodel.FreightMoney ??= 0;
demodel.HistoryOrderStatus ??= 0;
demodel.IsApplyForCancel ??= 2;
demodel.IsOrderCommission ??= 2;
demodel.MerchantsNo ??= "";
demodel.Recycled ??= 2;
demodel.Refund ??= 0;
demodel.Status = 0;
demodel.AnchorName ??= "";
demodel.UpdateDate = DateTime.Now;
demodel.UserId = userInfo.UserId;
demodel.SmallShopsId = req.SmallShopsId;
demodel.OrderClassify = 3;
demodel.DestinationAddress ??= "";
#endregion
bool flag= orderModule.SetAppletOfflineGoodsOrderModule(demodel,out string message);
return flag ? ApiResult.Success(message: message) : ApiResult.Failed(message: message);
}
/// <summary>
/// ERP下单
/// </summary>
......
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