diff --git a/BBWY.Server.Business/Order/OrderBusiness.cs b/BBWY.Server.Business/Order/OrderBusiness.cs index fa81b874..dbd53fee 100644 --- a/BBWY.Server.Business/Order/OrderBusiness.cs +++ b/BBWY.Server.Business/Order/OrderBusiness.cs @@ -1541,23 +1541,53 @@ namespace BBWY.Server.Business private void SyncJDRefundOrder(JArray refundOrderTokenJArray, ShopResponse shopResponse) { + var shopId = long.Parse(shopResponse.ShopId); var validRefundOrderTokenJArray = refundOrderTokenJArray.Where(j => j.Value("status") == 13 && j.Value("refoundAmount") != 0M).ToList(); var orderIds = validRefundOrderTokenJArray.Select(j => j["sameOrderServiceBill"]["orderId"].ToString()).Distinct().ToList(); var orderSkuIds = validRefundOrderTokenJArray.Select(j => j["sameOrderServiceBill"]["wareId"].ToString()).Distinct().ToList(); - var dbOrders = fsql.Select().Where(o => orderIds.Contains(o.Id) && o.IsAfterSaleOrder == false).ToList(); - var dbOrderSkus = fsql.Select().Where(osku => orderIds.Contains(osku.OrderId) && - orderSkuIds.Contains(osku.SkuId) && - osku.IsRefund == false).ToList(); + var updateOrders = fsql.Select().Where(o => orderIds.Contains(o.Id) && o.IsAfterSaleOrder == false).ToList(); + var updateOrderSkus = fsql.Select().Where(osku => orderIds.Contains(osku.OrderId) && + orderSkuIds.Contains(osku.SkuId) && + osku.IsRefund == false).ToList(); + + List afterSaleOrders = new List(); + + foreach (var refundOrderJToken in refundOrderTokenJArray) + { + var skuId = refundOrderJToken["sameOrderServiceBill"]["wareId"].ToString(); + var orderId = refundOrderJToken["sameOrderServiceBill"]["orderId"].ToString(); + var updateSku = updateOrderSkus.FirstOrDefault(osku => osku.OrderId == orderId && osku.SkuId == skuId); + if (updateSku == null) + continue; + + var refundAmount = refundOrderJToken.Value("refoundAmount"); + var refundCompleteTime = refundOrderJToken.Value("completeTime").StampToDateTime(); + + + afterSaleOrders.Add(new AfterSaleOrder() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + OrderId = updateSku.OrderId, + ProductId = updateSku.ProductId, + RefundAmount = refundAmount, + RefundTime = refundCompleteTime, + SkuId = skuId, + ShopId = shopId + }); + } fsql.Transaction(() => { - if (dbOrders.Count() > 0) - foreach (var dbOrder in dbOrders) - fsql.Update(dbOrder.Id).Set(o => o.IsAfterSaleOrder, true).ExecuteAffrows(); - if (dbOrderSkus.Count() > 0) - foreach (var dbOrderSku in dbOrderSkus) - fsql.Update(dbOrderSku.Id).Set(osku => osku.IsRefund, true).ExecuteAffrows(); + if (updateOrders.Count() > 0) + foreach (var updateOrder in updateOrders) + fsql.Update(updateOrder.Id).Set(o => o.IsAfterSaleOrder, true).ExecuteAffrows(); + if (updateOrderSkus.Count() > 0) + foreach (var updateOrderSku in updateOrderSkus) + fsql.Update(updateOrderSku.Id).Set(osku => osku.IsRefund, true).ExecuteAffrows(); + if (afterSaleOrders.Count() > 0) + fsql.Insert(afterSaleOrders).ExecuteAffrows(); }); } @@ -1605,10 +1635,11 @@ namespace BBWY.Server.Business public void SyncAllShopRefundOrder() { var shopList = venderBusiness.GetShopList(); - foreach (var shop in shopList) - { - Task.Factory.StartNew(() => SyncRefundOrder(shop, string.Empty, isAuto: true), System.Threading.CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SyncRefundOrderTaskScheduler); - } + SyncRefundOrder(shopList.FirstOrDefault(s => s.ShopName == "布莱特玩具专营店"), string.Empty, isAuto: true); + //foreach (var shop in shopList) + //{ + // Task.Factory.StartNew(() => SyncRefundOrder(shop, string.Empty, isAuto: true), System.Threading.CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SyncRefundOrderTaskScheduler); + //} } } } diff --git a/BBWY.Server.Model/Db/Order/AfterSaleOrder.cs b/BBWY.Server.Model/Db/Order/AfterSaleOrder.cs index b72b794f..9849f25c 100644 --- a/BBWY.Server.Model/Db/Order/AfterSaleOrder.cs +++ b/BBWY.Server.Model/Db/Order/AfterSaleOrder.cs @@ -5,7 +5,7 @@ namespace BBWY.Server.Model.Db { [Table(Name = "aftersaleorder", DisableSyncStructure = true)] - public partial class Aftersaleorder { + public partial class AfterSaleOrder { [Column(IsPrimary = true)] public long Id { get; set; }