diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 4f6f9513..8f586873 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -211,6 +211,8 @@ namespace BBWY.Server.Business List insertOrderSkuList = new List(); List insertOrderCouponList = new List(); List insertOrderTotalInfoList = new List(); + List insertOrderCouponNewList = new List(); + List insertOrderPromotionList = new List(); IList> updateOrderList = new List>(); Dictionary> updateOrderSkuDictionary = new Dictionary>(); @@ -391,7 +393,7 @@ namespace BBWY.Server.Business var wareId = orderSkuJToken.Value("wareId"); var skuId = orderSkuJToken.Value("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(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>(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("totalBalance"), + TotalBaseDiscount = jtoken.Value("TotalBaseDiscount"), + TotalBaseFee = jtoken.Value("totalBaseFee"), + TotalCoupon = jtoken.Value("totalCoupon"), + TotalDongQuan = jtoken.Value("totalDongQuan"), + TotalExpiryGiftDiscount = jtoken.Value("totalExpiryGiftDiscount"), + TotalGlobalGeneralIncludeTax = jtoken.Value("totalGlobalGeneralIncludeTax"), + TotalGlobalGeneralTax = jtoken.Value("totalGlobalGeneralTax"), + TotalItemPrice = jtoken.Value("totalItemPrice"), + TotalJdZhiFuYouHui = jtoken.Value("totalJdZhiFuYouHui"), + TotalJingDou = jtoken.Value("totalJingDou"), + TotalJingQuan = jtoken.Value("totalJingQuan"), + TotalJingXiangLiJin = jtoken.Value("totalJingXiangLiJin"), + TotalLiJinYouHui = jtoken.Value("totalLiJinYouHui"), + TotalLuoDiPeiService = jtoken.Value("totalLuoDiPeiService"), + TotalManJian = jtoken.Value("totalManJian"), + TotalPingTaiChengDanYouHuiQuan = jtoken.Value("totalPingTaiChengDanYouHuiQuan"), + TotalPlus95 = jtoken.Value("totalPlus95"), + TotalPromotionDiscount = jtoken.Value("totalPromotionDiscount"), + TotalRemoteFee = jtoken.Value("totalRemoteFee"), + TotalShouldPay = jtoken.Value("totalShouldPay"), + TotalSuperRedEnvelope = jtoken.Value("totalSuperRedEnvelope"), + TotalTaxFee = jtoken.Value("totalTaxFee"), + TotalTuiHuanHuoWuYou = jtoken.Value("totalTuiHuanHuoWuYou"), + TotalVenderFee = jtoken.Value("totalVenderFee"), + TotalXianPinLeiDongQuan = jtoken.Value("totalXianPinLeiDongQuan"), + TotalXianPinLeiJingQuan = jtoken.Value("totalXianPinLeiJingQuan"), + TotalZhiFuYingXiaoYouHui = jtoken.Value("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("couponId"), + CouponName = j.Value("couponName"), + CouponNum = j.Value("couponNum"), + CouponPrice = j.Value("couponPrice"), + CouponTypeDesc = j.Value("couponTypeDesc"), + CreateTime = DateTime.Now, + JdCouponId = j.Value("jdCouponId"), + JdDivideMoney = j.Value("jdDivideMoney"), + OrderId = orderId, + PriceDivide = j.Value("priceDivide"), + VenderDivideMoney = j.Value("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("beginTime"), + EndTime = j.Value("endTime"), + CreateTime = DateTime.Now, + OrderId = orderId, + PromotionId = j.Value("promotionId"), + PromotionName = j.Value("promotionName"), + SalePrice = j.Value("salePrice"), + SaleTypeDesc = j.Value("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("skuCode")); + if (osku != null) + { + osku.Balance = oskuJtoken.Value("balance"); + osku.BaseDiscount = oskuJtoken.Value("baseDiscount"); + osku.BaseFee = oskuJtoken.Value("baseFee"); + osku.Coupon = oskuJtoken.Value("coupon"); + osku.DongQuan = oskuJtoken.Value("dongQuan"); + osku.ExpiryGiftDiscount = oskuJtoken.Value("expiryGiftDiscount"); + osku.GlobalGeneralIncludeTax = oskuJtoken.Value("globalGeneralIncludeTax"); + osku.GlobalGeneralTax = oskuJtoken.Value("globalGeneralTax"); + osku.JdZhiFuYouHui = oskuJtoken.Value("jdZhiFuYouHui"); + osku.JingDou = oskuJtoken.Value("jingDou"); + osku.JingQuan = oskuJtoken.Value("jingQuan"); + osku.JingXiangLiJin = oskuJtoken.Value("jingXiangLiJin"); + osku.LiJinYouHui = oskuJtoken.Value("liJinYouHui"); + osku.LuoDiPeiService = oskuJtoken.Value("luoDiPeiService"); + osku.ManJian = oskuJtoken.Value("manJian"); + osku.PingTaiChengDanYouHuiQuan = oskuJtoken.Value("pingTaiChengDanYouHuiQuan"); + osku.Plus95 = oskuJtoken.Value("plus95"); + osku.PromotionDiscount = oskuJtoken.Value("promotionDiscount"); + osku.RemoteFee = oskuJtoken.Value("remoteFee"); + osku.ShouldPay = oskuJtoken.Value("shouldPay"); + osku.SuperRedEnvelope = oskuJtoken.Value("superRedEnvelope"); + osku.TaxFee = oskuJtoken.Value("taxFee"); + osku.TuiHuanHuoWuYou = oskuJtoken.Value("tuiHuanHuoWuYou"); + osku.VenderFee = oskuJtoken.Value("venderFee"); + osku.XianPinLeiDongQuan = oskuJtoken.Value("xianPinLeiDongQuan"); + osku.XianPinLeiJingQuan = oskuJtoken.Value("xianPinLeiJingQuan"); + osku.ZhiFuYingXiaoYouHui = oskuJtoken.Value("zhiFuYingXiaoYouHui"); + } + } + } + else + { + foreach (var oskuJtoken in skuJArray) + { + var skuId = oskuJtoken.Value("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(currentOrderSku.Id); + updateOrderSkuDictionary.Add(skuUpdateKey, update); + } + } + if (update == null) + continue; + update = update.Set(osku => osku.Balance, oskuJtoken.Value("balance")) + .Set(osku => osku.BaseDiscount, oskuJtoken.Value("baseDiscount")) + .Set(osku => osku.BaseFee, oskuJtoken.Value("baseFee")) + .Set(osku => osku.Coupon, oskuJtoken.Value("coupon")) + .Set(osku => osku.DongQuan, oskuJtoken.Value("dongQuan")) + .Set(osku => osku.ExpiryGiftDiscount, oskuJtoken.Value("expiryGiftDiscount")) + .Set(osku => osku.GlobalGeneralIncludeTax, oskuJtoken.Value("globalGeneralIncludeTax")) + .Set(osku => osku.GlobalGeneralTax, oskuJtoken.Value("globalGeneralTax")) + .Set(osku => osku.JdZhiFuYouHui, oskuJtoken.Value("jdZhiFuYouHui")) + .Set(osku => osku.JingDou, oskuJtoken.Value("jingDou")) + .Set(osku => osku.JingQuan, oskuJtoken.Value("jingQuan")) + .Set(osku => osku.JingXiangLiJin, oskuJtoken.Value("jingXiangLiJin")) + .Set(osku => osku.LiJinYouHui, oskuJtoken.Value("liJinYouHui")) + .Set(osku => osku.LuoDiPeiService, oskuJtoken.Value("luoDiPeiService")) + .Set(osku => osku.ManJian, oskuJtoken.Value("manJian")) + .Set(osku => osku.PingTaiChengDanYouHuiQuan, oskuJtoken.Value("pingTaiChengDanYouHuiQuan")) + .Set(osku => osku.Plus95, oskuJtoken.Value("plus95")) + .Set(osku => osku.PromotionDiscount, oskuJtoken.Value("promotionDiscount")) + .Set(osku => osku.RemoteFee, oskuJtoken.Value("remoteFee")) + .Set(osku => osku.ShouldPay, oskuJtoken.Value("shouldPay")) + .Set(osku => osku.SuperRedEnvelope, oskuJtoken.Value("superRedEnvelope")) + .Set(osku => osku.TaxFee, oskuJtoken.Value("taxFee")) + .Set(osku => osku.TuiHuanHuoWuYou, oskuJtoken.Value("tuiHuanHuoWuYou")) + .Set(osku => osku.VenderFee, oskuJtoken.Value("venderFee")) + .Set(osku => osku.XianPinLeiDongQuan, oskuJtoken.Value("xianPinLeiDongQuan")) + .Set(osku => osku.XianPinLeiJingQuan, oskuJtoken.Value("xianPinLeiJingQuan")) + .Set(osku => osku.ZhiFuYingXiaoYouHui, oskuJtoken.Value("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(orderCouponDetailOrderIdList).ExecuteAffrows(); + fsql.Delete().Where(on => orderCouponDetailOrderIdList.Contains(on.OrderId)).ExecuteAffrows(); + fsql.Delete().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) diff --git a/BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs b/BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs index fb790e6f..071513ef 100644 --- a/BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs +++ b/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 } }