Browse Source

订单同步增加优惠券拆分信息

AddValidOverTime
shanji 2 years ago
parent
commit
28df062c8d
  1. 208
      BBWY.Server.Business/Sync/OrderSyncBusiness.cs
  2. 2
      BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs

208
BBWY.Server.Business/Sync/OrderSyncBusiness.cs

@ -211,6 +211,8 @@ namespace BBWY.Server.Business
List<OrderSku> insertOrderSkuList = new List<OrderSku>();
List<OrderCoupon> insertOrderCouponList = new List<OrderCoupon>();
List<OrderTotalInfo> insertOrderTotalInfoList = new List<OrderTotalInfo>();
List<OrderCoupon_New> insertOrderCouponNewList = new List<OrderCoupon_New>();
List<OrderPromotion> insertOrderPromotionList = new List<OrderPromotion>();
IList<IUpdate<Order>> updateOrderList = new List<IUpdate<Order>>();
Dictionary<string, IUpdate<OrderSku>> updateOrderSkuDictionary = new Dictionary<string, IUpdate<OrderSku>>();
@ -391,7 +393,7 @@ namespace BBWY.Server.Business
var wareId = orderSkuJToken.Value<string>("wareId");
var skuId = orderSkuJToken.Value<string>("skuId");
var dbOsku = currentDbOrderSkuList.FirstOrDefault(osku => osku.SkuId == skuId);
var skuUpdateKey = $"";
var skuUpdateKey = $"{orderId}_{skuId}";
if (dbOsku != null && dbOsku.ProductId != wareId && !updateOrderSkuDictionary.ContainsKey(skuUpdateKey))
{
var update = fsql.Update<OrderSku>(dbOsku.Id).Set(osku => osku.ProductId, wareId);
@ -652,11 +654,192 @@ namespace BBWY.Server.Business
#endregion
#region 优惠券/促销/拆分明细
if (orderState != Enums.OrderState. &&
orderState != Enums.OrderState. &&
!dbOrderTotalList.Any(ot => ot.Id == orderId))
if (!dbOrderTotalList.Any(ot => ot.Id == orderId))
{
var orderCouponDetailHttpResult = restApiService.SendRequest("http://yunding.qiyue666.com", "api/PlatformSDK/GetOrderCouponDetail", new
{
OrderId = orderId,
AppKey = appKey,
AppSecret = appSecret,
AppToken = appToken,
Platform = Enums.Platform.
}, null, HttpMethod.Post);
if (orderCouponDetailHttpResult.StatusCode == System.Net.HttpStatusCode.OK)
{
var orderCouponDetailResponse = JsonConvert.DeserializeObject<ApiResponse<JToken>>(orderCouponDetailHttpResult.Content);
if (orderCouponDetailResponse.Success)
{
var jtoken = orderCouponDetailResponse.Data["jingdong_pop_order_coupondetail_responce"]["couponDetailExternal"]["couponDetailVo"];
#region 订单合计信息
var orderTotal = new OrderTotalInfo()
{
CreateTime = DateTime.Now,
Id = orderId,
TotalBalance = jtoken.Value<decimal>("totalBalance"),
TotalBaseDiscount = jtoken.Value<decimal>("TotalBaseDiscount"),
TotalBaseFee = jtoken.Value<decimal>("totalBaseFee"),
TotalCoupon = jtoken.Value<decimal>("totalCoupon"),
TotalDongQuan = jtoken.Value<decimal>("totalDongQuan"),
TotalExpiryGiftDiscount = jtoken.Value<decimal>("totalExpiryGiftDiscount"),
TotalGlobalGeneralIncludeTax = jtoken.Value<decimal>("totalGlobalGeneralIncludeTax"),
TotalGlobalGeneralTax = jtoken.Value<decimal>("totalGlobalGeneralTax"),
TotalItemPrice = jtoken.Value<decimal>("totalItemPrice"),
TotalJdZhiFuYouHui = jtoken.Value<decimal>("totalJdZhiFuYouHui"),
TotalJingDou = jtoken.Value<decimal>("totalJingDou"),
TotalJingQuan = jtoken.Value<decimal>("totalJingQuan"),
TotalJingXiangLiJin = jtoken.Value<decimal>("totalJingXiangLiJin"),
TotalLiJinYouHui = jtoken.Value<decimal>("totalLiJinYouHui"),
TotalLuoDiPeiService = jtoken.Value<decimal>("totalLuoDiPeiService"),
TotalManJian = jtoken.Value<decimal>("totalManJian"),
TotalPingTaiChengDanYouHuiQuan = jtoken.Value<decimal>("totalPingTaiChengDanYouHuiQuan"),
TotalPlus95 = jtoken.Value<decimal>("totalPlus95"),
TotalPromotionDiscount = jtoken.Value<decimal>("totalPromotionDiscount"),
TotalRemoteFee = jtoken.Value<decimal>("totalRemoteFee"),
TotalShouldPay = jtoken.Value<decimal>("totalShouldPay"),
TotalSuperRedEnvelope = jtoken.Value<decimal>("totalSuperRedEnvelope"),
TotalTaxFee = jtoken.Value<decimal>("totalTaxFee"),
TotalTuiHuanHuoWuYou = jtoken.Value<decimal>("totalTuiHuanHuoWuYou"),
TotalVenderFee = jtoken.Value<decimal>("totalVenderFee"),
TotalXianPinLeiDongQuan = jtoken.Value<decimal>("totalXianPinLeiDongQuan"),
TotalXianPinLeiJingQuan = jtoken.Value<decimal>("totalXianPinLeiJingQuan"),
TotalZhiFuYingXiaoYouHui = jtoken.Value<decimal>("totalZhiFuYingXiaoYouHui")
};
insertOrderTotalInfoList.Add(orderTotal);
#endregion
#region 订单优惠券信息
var couponJArray = jtoken["couponList"] as JArray;
if (couponJArray != null && couponJArray.Count() > 0)
{
insertOrderCouponNewList.AddRange(couponJArray.Select(j => new OrderCoupon_New()
{
Id = idGenerator.NewLong(),
CouponId = j.Value<int>("couponId"),
CouponName = j.Value<string>("couponName"),
CouponNum = j.Value<int>("couponNum"),
CouponPrice = j.Value<decimal>("couponPrice"),
CouponTypeDesc = j.Value<string>("couponTypeDesc"),
CreateTime = DateTime.Now,
JdCouponId = j.Value<string>("jdCouponId"),
JdDivideMoney = j.Value<decimal>("jdDivideMoney"),
OrderId = orderId,
PriceDivide = j.Value<bool>("priceDivide"),
VenderDivideMoney = j.Value<decimal>("venderDivideMoney")
}));
}
#endregion
#region 订单活动信息
var promotionJArray = jtoken["promotionList"] as JArray;
if (promotionJArray != null && promotionJArray.Count() > 0)
{
insertOrderPromotionList.AddRange(promotionJArray.Select(j => new OrderPromotion()
{
Id = idGenerator.NewLong(),
BeginTime = j.Value<DateTime>("beginTime"),
EndTime = j.Value<DateTime>("endTime"),
CreateTime = DateTime.Now,
OrderId = orderId,
PromotionId = j.Value<int>("promotionId"),
PromotionName = j.Value<string>("promotionName"),
SalePrice = j.Value<decimal>("salePrice"),
SaleTypeDesc = j.Value<string>("saleTypeDesc")
}));
}
#endregion
#region 订单sku金额明细
var skuJArray = jtoken["skuList"] as JArray;
if (isNewOrder)
{
var currentOrderSkuList = insertOrderSkuList.Where(osku => osku.OrderId == orderId).ToList();
foreach (var oskuJtoken in skuJArray)
{
var osku = currentOrderSkuList.FirstOrDefault(x => x.SkuId == oskuJtoken.Value<string>("skuCode"));
if (osku != null)
{
osku.Balance = oskuJtoken.Value<decimal>("balance");
osku.BaseDiscount = oskuJtoken.Value<decimal>("baseDiscount");
osku.BaseFee = oskuJtoken.Value<decimal>("baseFee");
osku.Coupon = oskuJtoken.Value<decimal>("coupon");
osku.DongQuan = oskuJtoken.Value<decimal>("dongQuan");
osku.ExpiryGiftDiscount = oskuJtoken.Value<decimal>("expiryGiftDiscount");
osku.GlobalGeneralIncludeTax = oskuJtoken.Value<decimal>("globalGeneralIncludeTax");
osku.GlobalGeneralTax = oskuJtoken.Value<decimal>("globalGeneralTax");
osku.JdZhiFuYouHui = oskuJtoken.Value<decimal>("jdZhiFuYouHui");
osku.JingDou = oskuJtoken.Value<decimal>("jingDou");
osku.JingQuan = oskuJtoken.Value<decimal>("jingQuan");
osku.JingXiangLiJin = oskuJtoken.Value<decimal>("jingXiangLiJin");
osku.LiJinYouHui = oskuJtoken.Value<decimal>("liJinYouHui");
osku.LuoDiPeiService = oskuJtoken.Value<decimal>("luoDiPeiService");
osku.ManJian = oskuJtoken.Value<decimal>("manJian");
osku.PingTaiChengDanYouHuiQuan = oskuJtoken.Value<decimal>("pingTaiChengDanYouHuiQuan");
osku.Plus95 = oskuJtoken.Value<decimal>("plus95");
osku.PromotionDiscount = oskuJtoken.Value<decimal>("promotionDiscount");
osku.RemoteFee = oskuJtoken.Value<decimal>("remoteFee");
osku.ShouldPay = oskuJtoken.Value<decimal>("shouldPay");
osku.SuperRedEnvelope = oskuJtoken.Value<decimal>("superRedEnvelope");
osku.TaxFee = oskuJtoken.Value<decimal>("taxFee");
osku.TuiHuanHuoWuYou = oskuJtoken.Value<decimal>("tuiHuanHuoWuYou");
osku.VenderFee = oskuJtoken.Value<decimal>("venderFee");
osku.XianPinLeiDongQuan = oskuJtoken.Value<decimal>("xianPinLeiDongQuan");
osku.XianPinLeiJingQuan = oskuJtoken.Value<decimal>("xianPinLeiJingQuan");
osku.ZhiFuYingXiaoYouHui = oskuJtoken.Value<decimal>("zhiFuYingXiaoYouHui");
}
}
}
else
{
foreach (var oskuJtoken in skuJArray)
{
var skuId = oskuJtoken.Value<string>("skuCode");
var skuUpdateKey = $"{orderId}_{skuId}";
if (!updateOrderSkuDictionary.TryGetValue(skuUpdateKey, out var update))
{
var currentOrderSku = dbOrderSkuList.FirstOrDefault(x => x.OrderId == orderId && x.SkuId == skuId);
if (currentOrderSku != null)
{
update = fsql.Update<OrderSku>(currentOrderSku.Id);
updateOrderSkuDictionary.Add(skuUpdateKey, update);
}
}
if (update == null)
continue;
update = update.Set(osku => osku.Balance, oskuJtoken.Value<decimal>("balance"))
.Set(osku => osku.BaseDiscount, oskuJtoken.Value<decimal>("baseDiscount"))
.Set(osku => osku.BaseFee, oskuJtoken.Value<decimal>("baseFee"))
.Set(osku => osku.Coupon, oskuJtoken.Value<decimal>("coupon"))
.Set(osku => osku.DongQuan, oskuJtoken.Value<decimal>("dongQuan"))
.Set(osku => osku.ExpiryGiftDiscount, oskuJtoken.Value<decimal>("expiryGiftDiscount"))
.Set(osku => osku.GlobalGeneralIncludeTax, oskuJtoken.Value<decimal>("globalGeneralIncludeTax"))
.Set(osku => osku.GlobalGeneralTax, oskuJtoken.Value<decimal>("globalGeneralTax"))
.Set(osku => osku.JdZhiFuYouHui, oskuJtoken.Value<decimal>("jdZhiFuYouHui"))
.Set(osku => osku.JingDou, oskuJtoken.Value<decimal>("jingDou"))
.Set(osku => osku.JingQuan, oskuJtoken.Value<decimal>("jingQuan"))
.Set(osku => osku.JingXiangLiJin, oskuJtoken.Value<decimal>("jingXiangLiJin"))
.Set(osku => osku.LiJinYouHui, oskuJtoken.Value<decimal>("liJinYouHui"))
.Set(osku => osku.LuoDiPeiService, oskuJtoken.Value<decimal>("luoDiPeiService"))
.Set(osku => osku.ManJian, oskuJtoken.Value<decimal>("manJian"))
.Set(osku => osku.PingTaiChengDanYouHuiQuan, oskuJtoken.Value<decimal>("pingTaiChengDanYouHuiQuan"))
.Set(osku => osku.Plus95, oskuJtoken.Value<decimal>("plus95"))
.Set(osku => osku.PromotionDiscount, oskuJtoken.Value<decimal>("promotionDiscount"))
.Set(osku => osku.RemoteFee, oskuJtoken.Value<decimal>("remoteFee"))
.Set(osku => osku.ShouldPay, oskuJtoken.Value<decimal>("shouldPay"))
.Set(osku => osku.SuperRedEnvelope, oskuJtoken.Value<decimal>("superRedEnvelope"))
.Set(osku => osku.TaxFee, oskuJtoken.Value<decimal>("taxFee"))
.Set(osku => osku.TuiHuanHuoWuYou, oskuJtoken.Value<decimal>("tuiHuanHuoWuYou"))
.Set(osku => osku.VenderFee, oskuJtoken.Value<decimal>("venderFee"))
.Set(osku => osku.XianPinLeiDongQuan, oskuJtoken.Value<decimal>("xianPinLeiDongQuan"))
.Set(osku => osku.XianPinLeiJingQuan, oskuJtoken.Value<decimal>("xianPinLeiJingQuan"))
.Set(osku => osku.ZhiFuYingXiaoYouHui, oskuJtoken.Value<decimal>("zhiFuYingXiaoYouHui"));
}
}
#endregion
}
}
}
#endregion
}
@ -696,8 +879,25 @@ namespace BBWY.Server.Business
}
#endregion
#region 需要清理的数据
var orderCouponDetailOrderIdList = insertOrderTotalInfoList.Select(x => x.Id).ToList();
#endregion
fsql.Transaction(() =>
{
if (orderCouponDetailOrderIdList.Count() > 0)
{
fsql.Delete<OrderTotalInfo>(orderCouponDetailOrderIdList).ExecuteAffrows();
fsql.Delete<OrderCoupon_New>().Where(on => orderCouponDetailOrderIdList.Contains(on.OrderId)).ExecuteAffrows();
fsql.Delete<OrderPromotion>().Where(op => orderCouponDetailOrderIdList.Contains(op.OrderId)).ExecuteAffrows();
}
if (insertOrderTotalInfoList.Count() > 0)
fsql.Insert(insertOrderTotalInfoList).ExecuteAffrows();
if (insertOrderCouponNewList.Count() > 0)
fsql.Insert(insertOrderCouponNewList).ExecuteAffrows();
if (insertOrderPromotionList.Count() > 0)
fsql.Insert(insertOrderPromotionList).ExecuteAffrows();
if (insertOrderList.Count() > 0)
fsql.Insert(insertOrderList).ExecuteAffrows();
if (insertOrderSkuList.Count() > 0)

2
BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs

@ -64,7 +64,7 @@ namespace BBWY.Server.Model.Dto
{
get
{
return ActualAmount == 0 ? 0 : Math.Round(Profit / ActualAmount * 100, 2);
return ActualAmount == 0 ? 0 : Math.Round(Profit / ActualAmount, 2); //*100
}
}

Loading…
Cancel
Save