diff --git a/BBWY.Server.API/Controllers/OrderSyncController.cs b/BBWY.Server.API/Controllers/OrderSyncController.cs index 7185a235..0661e0c0 100644 --- a/BBWY.Server.API/Controllers/OrderSyncController.cs +++ b/BBWY.Server.API/Controllers/OrderSyncController.cs @@ -59,7 +59,7 @@ namespace BBWY.Server.API.Controllers } /// - /// 订单推送 + /// 接收订单推送 /// /// [HttpPost] @@ -67,5 +67,23 @@ namespace BBWY.Server.API.Controllers { orderSyncBusiness.OrderPublish(request); } + + /// + /// 检查全店暂停订单 + /// + [HttpPost] + public void CheckJDPauseOrder() + { + orderSyncBusiness.CheckJDPauseOrder(null); + } + + /// + /// 检查全店暂停订单 + /// + [HttpPost("{shopId}")] + public void CheckJDPauseOrder(long shopId) + { + orderSyncBusiness.CheckJDPauseOrder(shopId); + } } } diff --git a/BBWY.Server.API/Controllers/ServiceOrderSyncController.cs b/BBWY.Server.API/Controllers/ServiceOrderSyncController.cs index 305609f0..acc96cd0 100644 --- a/BBWY.Server.API/Controllers/ServiceOrderSyncController.cs +++ b/BBWY.Server.API/Controllers/ServiceOrderSyncController.cs @@ -1,12 +1,11 @@ -using BBWY.Server.Business.Sync; -using Microsoft.AspNetCore.Authorization; +using BBWY.Server.API.Filters; +using BBWY.Server.Business.Sync; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; -using Newtonsoft.Json.Linq; +using System.Linq; namespace BBWY.Server.API.Controllers { - public class ServiceOrderSyncController : BaseApiController { private JDServiceOrderSyncBusiness jdServiceOrderSyncBusiness; @@ -16,12 +15,24 @@ namespace BBWY.Server.API.Controllers this.jdServiceOrderSyncBusiness = jdServiceOrderSyncBusiness; } - + [Consumes("application/x-www-form-urlencoded")] [HttpPost] - public void ReceiveKuaiDi100Push([FromForm] string sign, [FromForm] string param) + public IActionResult ReceiveKuaiDi100Push([FromForm] string sign, [FromForm] string param) { + var filters = ControllerContext.ActionDescriptor.FilterDescriptors; + var filterToRemove = filters.FirstOrDefault(f => f.Filter.GetType() == typeof(ResultFilter)); + if (filterToRemove != null) + { + filters.Remove(filterToRemove); + } jdServiceOrderSyncBusiness.ReceiveKuaiDi100Push(param); + return new JsonResult(new + { + result = true, + returnCode = "200", + message = "成功" + }); } /// diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index c3b19cc4..e487ff39 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -809,86 +809,65 @@ namespace BBWY.Server.Business return orderState; } + /// + /// 接收订单推送 + /// + /// public void OrderPublish(OrderPublishRequest request) { - /* - if (erpOrderStatus.equals(("1"))){ - status="新订单"; -}else if (erpOrderStatus.equals(("2"))){ - status="等待付款"; -}else if (erpOrderStatus.equals(("3"))){ - status="等待付款确认"; -}else if (erpOrderStatus.equals(("4"))){ - status="延迟付款确认"; -}else if (erpOrderStatus.equals(("5"))){ - status="暂停"; -}else if (erpOrderStatus.equals(("6"))){ - status="店长最终审核"; -}else if (erpOrderStatus.equals(("7"))){ - status="等待打印"; -}else if (erpOrderStatus.equals(("8"))){ - status="等待出库"; -}else if (erpOrderStatus.equals(("9"))){ - status="等待打包"; -}else if (erpOrderStatus.equals(("10"))){ - status="等待发货"; -}else if (erpOrderStatus.equals(("11"))){ - status="自提途中"; -}else if (erpOrderStatus.equals(("12"))){ - status="上门提货"; -}else if (erpOrderStatus.equals(("13"))){ - status="自提退货"; -}else if (erpOrderStatus.equals(("14"))){ - status="确认自提"; -}else if (erpOrderStatus.equals(("15"))){ - status="等待回执"; -}else if (erpOrderStatus.equals(("16"))){ - status="等待确认收货"; -}else if (erpOrderStatus.equals(("17"))){ - status="配送退货"; -}else if (erpOrderStatus.equals(("18"))){ - status="货到付款确认"; -}else if (erpOrderStatus.equals(("19"))){ - status="完成"; -}else if (erpOrderStatus.equals(("20"))){ - status="等待分期付款"; -}else if (erpOrderStatus.equals(("21"))){ - status="收款确认"; -}else if (erpOrderStatus.equals(("22"))){ - status="锁定"; -}else if (erpOrderStatus.equals(("23"))){ - status="等待退款"; -}else if (erpOrderStatus.equals(("24"))){ - status="等待客户回复"; -}else if (erpOrderStatus.equals(("25"))){ - status="厂商确认完成"; -}else if (erpOrderStatus.equals(("29"))){ - status="等待三方出库"; -}else if (erpOrderStatus.equals(("30"))){ - status="等待三方发货"; -}else if (erpOrderStatus.equals(("31"))){ - status="等待三方发货完成"; -}else if (erpOrderStatus.equals(("26"))){ - status="等待再审核"; -}else if (erpOrderStatus.equals(("27"))){ - status="对账中"; -}else if (erpOrderStatus.equals(("28"))){ - status="退款中"; -}else if (erpOrderStatus.equals(("-1"))){ - status="未知"; -}else if (erpOrderStatus.equals(("NOT_PAY"))){ - status="新订单"; -}else if (erpOrderStatus.equals( - */ nLogManager.Default().Info($"订单推送-{JsonConvert.SerializeObject(request)}"); - if (request.orderStatus != "5") + if (request.orderStatus != "TRADE_CREATED") return; var shop = venderBusiness.GetShopByVenderId(request.venderId); if (shop == null) return; - Task.Factory.StartNew(() => SyncOrder(shop, request.orderId, null, null, isAuto: false, Enums.SortTimeType.StartTime), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SyncOrderTaskScheduler); + var isExists = fsql.Select(request.orderId).Any(); + if (!isExists) + { + fsql.Insert(new WaitPayOrder() + { + CreateTime = DateTime.Now, + Id = request.orderId, + ShopId = long.Parse(shop.ShopId) + }).ExecuteAffrows(); + } + } + + #region 同步暂停订单 + public void CheckJDPauseOrder(long? shopId) + { + var shopList = venderBusiness.GetShopList(shopId); + var shopIds = shopList.Select(s => long.Parse(s.ShopId)).ToList(); + + fsql.Delete().Where(wo => shopIds.Contains(wo.ShopId.Value)) + .Where(wo => fsql.Select().Where(o => o.Id == wo.Id).Any()) + .ExecuteAffrows(); + + + var waitPayOrderList = fsql.Select().Where(wo => shopIds.Contains(wo.ShopId.Value)).ToList(); + if (waitPayOrderList.Count() == 0) + return; + + foreach (var shop in shopList) + { + var currentWaitPayOrderList = waitPayOrderList.Where(wo => wo.ShopId == long.Parse(shop.ShopId)).ToList(); + if (currentWaitPayOrderList.Count() > 0) + { + Task.Factory.StartNew(() => CheckJDPauseOrder(shop, currentWaitPayOrderList), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SyncOrderTaskScheduler); + } + } + } + + private void CheckJDPauseOrder(ShopResponse shop, IList waitPayOrderList) + { + foreach (var w in waitPayOrderList) + { + SyncOrder(shop, w.Id); + } } + + #endregion } } diff --git a/BBWY.Server.Business/TaskSchedulerManager.cs b/BBWY.Server.Business/TaskSchedulerManager.cs index 8ee4567a..93a26df1 100644 --- a/BBWY.Server.Business/TaskSchedulerManager.cs +++ b/BBWY.Server.Business/TaskSchedulerManager.cs @@ -14,6 +14,8 @@ namespace BBWY.Server.Business public LimitedConcurrencyLevelTaskScheduler SyncServiceOrderTaskScheduler { get; private set; } + public LimitedConcurrencyLevelTaskScheduler SyncPauseOrderTaskScheduler { get; private set; } + public LimitedConcurrencyLevelTaskScheduler PurchaseOrderCallbackTaskScheduler { get; private set; } public LimitedConcurrencyLevelTaskScheduler JDPopularizeTaskScheduler { get; private set; } @@ -48,6 +50,8 @@ namespace BBWY.Server.Business JDPromotionDelayTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10); JDPromotionMonitorTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10); JDPromotionAutoStartTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10); + + SyncPauseOrderTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10); } } } diff --git a/BBWY.Server.Model/Db/Order/WaitPayOrder.cs b/BBWY.Server.Model/Db/Order/WaitPayOrder.cs new file mode 100644 index 00000000..adca5525 --- /dev/null +++ b/BBWY.Server.Model/Db/Order/WaitPayOrder.cs @@ -0,0 +1,21 @@ +using FreeSql.DataAnnotations; +using System; + +namespace BBWY.Server.Model.Db +{ + + [ Table(Name = "waitpayorder", DisableSyncStructure = true)] + public partial class WaitPayOrder + { + + [Column(StringLength = 100, IsPrimary = true, IsNullable = false)] + public string Id { get; set; } + + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + public long? ShopId { get; set; } + + } + +}