diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 3541a56..4860ce8 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -1,4 +1,5 @@ -using BBWYB.Common.Log; +using BBWYB.Common.Http; +using BBWYB.Common.Log; using BBWYB.Common.Models; using BBWYB.Server.Model; using BBWYB.Server.Model.Db; @@ -24,6 +25,7 @@ namespace BBWYB.Server.Business private OrderBusiness orderBusiness; private VenderBusiness venderBusiness; private ExpressCompanyNameConverter expressCompanyNameConverter; + private RestApiService restApiService; public PurchaseOrderBusiness(IFreeSql fsql, NLogManager nLogManager, @@ -33,7 +35,8 @@ namespace BBWYB.Server.Business FreeSqlMultiDBManager fsqlManager, OrderBusiness orderBusiness, VenderBusiness venderBusiness, - ExpressCompanyNameConverter expressCompanyNameConverter) : base(fsql, nLogManager, idGenerator) + ExpressCompanyNameConverter expressCompanyNameConverter, + RestApiService restApiService) : base(fsql, nLogManager, idGenerator) { this.ppPlatformClientFactory = ppPlatformClientFactory; this.taskSchedulerManager = taskSchedulerManager; @@ -41,6 +44,7 @@ namespace BBWYB.Server.Business this.orderBusiness = orderBusiness; this.venderBusiness = venderBusiness; this.expressCompanyNameConverter = expressCompanyNameConverter; + this.restApiService = restApiService; } /// @@ -359,6 +363,9 @@ namespace BBWYB.Server.Business case "ORDER_BUYER_VIEW_ORDER_PRICE_MODIFY": OrderPriceModificationCallbackFrom1688(jObject); //订单改价 break; + case "LOGISTICS_BUYER_VIEW_TRACE": + LogisticsUpdateCallbackFrom1688(jObject);//1688物流信息变更 + break; default: break; } @@ -492,6 +499,28 @@ namespace BBWYB.Server.Business WayBillNo = wayBillNoResponse.WayBillNo }); #endregion + + #region 通知C端出库 + //通知C端 + try + { + restApiService.SendRequest("https://bbwy.qiyue666.com", + "/Api/PurchaseOrder/OutStock", + new + { + OrderId = orderPurchaseInfo.OrderId, + SourceExpressId = wayBillNoResponse.ExpressId, + SourceExpressName = wayBillNoResponse.ExpressName, + wayBillNoResponse.WayBillNo + }, + null, + HttpMethod.Post); + } + catch (Exception ex) + { + + } + #endregion } #endregion @@ -503,6 +532,85 @@ namespace BBWYB.Server.Business } } + /// + /// 1688物流信息变更回调 + /// + /// + private void LogisticsUpdateCallbackFrom1688(JObject jObject) + { + Task.Factory.StartNew(() => + { + IList> updateOrderPurchaseSkuInfoList = new List>(); + + var statusChanged = jObject["data"]["OrderLogisticsTracingModel"].Value("statusChanged").ToUpper(); + var orderLogsItems = jObject["data"]["OrderLogisticsTracingModel"]["orderLogsItems"].Children(); + + var purchaseOrderIds = orderLogsItems.Select(x => x.Value("orderId")).Distinct().ToList(); + var orderEntryIds = orderLogsItems.Select(x => x.Value("orderEntryId")).Distinct().ToList(); + + var dbOrderPurchaseSkuInfoList = fsql.Select() + .WhereIf(purchaseOrderIds.Count() > 1, ops => purchaseOrderIds.Contains(ops.PurchaseOrderId)) + .WhereIf(purchaseOrderIds.Count() == 1, ops => ops.PurchaseOrderId == purchaseOrderIds[0]) + .ToList(); + + foreach (var orderEntryId in orderEntryIds) + { + var dbOrderPurchaseSkuInfo = dbOrderPurchaseSkuInfoList.FirstOrDefault(x => x.Id == orderEntryId); + if (dbOrderPurchaseSkuInfo.ExpressState != statusChanged) + { + var update = fsql.Update(orderEntryId).Set(x => x.ExpressState, statusChanged) + .Set(x => x.ExpressChangeTime, DateTime.Now); + updateOrderPurchaseSkuInfoList.Add(update); + dbOrderPurchaseSkuInfo.ExpressState = statusChanged; + } + } + + if (statusChanged == "SIGN") + { + var groupsByPoIds = dbOrderPurchaseSkuInfoList.GroupBy(x => x.PurchaseOrderId); + foreach (var group in groupsByPoIds) + { + var isSignAll = group.Count() == group.Where(x => x.ExpressState == "SIGN").Count(); + + //通知齐库 + } + + var groupsByOrderIds = dbOrderPurchaseSkuInfoList.GroupBy(x => x.OrderId); + foreach (var group in groupsByOrderIds) + { + var isSignAll = group.Count() == group.Where(x => x.ExpressState == "SIGN").Count(); + + if (isSignAll) + { + //通知C端 + try + { + restApiService.SendRequest("https://bbwy.qiyue666.com", + "/Api/PurchaseOrder/SignPurchaseOrder", + new { orderId = group.Key }, + null, + HttpMethod.Post); + } + catch (Exception ex) + { + + } + } + } + } + + if (updateOrderPurchaseSkuInfoList.Count() > 0) + { + fsql.Transaction(() => + { + foreach (var update in updateOrderPurchaseSkuInfoList) + update.ExecuteAffrows(); + }); + } + + + }, CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + } ///// ///// 采购平台改价回调 diff --git a/BBWYB.Server.Model/Orderpurchaseskuinfo.cs b/BBWYB.Server.Model/Orderpurchaseskuinfo.cs deleted file mode 100644 index 1a0361d..0000000 --- a/BBWYB.Server.Model/Orderpurchaseskuinfo.cs +++ /dev/null @@ -1,74 +0,0 @@ -using FreeSql.DatabaseModel;using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Threading.Tasks; -using Newtonsoft.Json; -using FreeSql.DataAnnotations; - -namespace BBWYB.Server.Model.Db { - - /// - /// 采购单Sku表 - /// - [JsonObject(MemberSerialization.OptIn), Table(Name = "orderpurchaseskuinfo", DisableSyncStructure = true)] - public partial class Orderpurchaseskuinfo { - - [JsonProperty, Column(IsPrimary = true)] - public long Id { get; set; } - - [JsonProperty, Column(DbType = "datetime")] - public DateTime? CreateTime { get; set; } - - /// - /// 物流变更时间 - /// - [JsonProperty, Column(DbType = "datetime")] - public DateTime? ExpressChangeTime { get; set; } - - /// - /// 物流状态 - /// - [JsonProperty, Column(StringLength = 100)] - public string ExpressState { get; set; } - - /// - /// 店铺订单Id - /// - [JsonProperty, Column(StringLength = 100)] - public string OrderId { get; set; } - - /// - /// 采购订单Id - /// - [JsonProperty, Column(StringLength = 100)] - public string PurchaseOrderId { get; set; } - - /// - /// 采购商品Id(spu) - /// - [JsonProperty, Column(StringLength = 100)] - public string PurchaseProductId { get; set; } - - /// - /// 采购Sku - /// - [JsonProperty, Column(StringLength = 100)] - public string PurchaseSkuId { get; set; } - - /// - /// 采购Sku订单Id;1688 OrderEntryId - /// - [JsonProperty, Column(StringLength = 100)] - public string PurchaseSkuOrderId { get; set; } - - /// - /// 店铺Id - /// - [JsonProperty] - public long? ShopId { get; set; } - - } - -}