Browse Source

处理B端1688物流变更信息

updatebug
shanji 2 years ago
parent
commit
9986e59145
  1. 112
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  2. 74
      BBWYB.Server.Model/Orderpurchaseskuinfo.cs

112
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;
}
/// <summary>
@ -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
}
}
/// <summary>
/// 1688物流信息变更回调
/// </summary>
/// <param name="jObject"></param>
private void LogisticsUpdateCallbackFrom1688(JObject jObject)
{
Task.Factory.StartNew(() =>
{
IList<IUpdate<OrderPurchaseSkuInfo>> updateOrderPurchaseSkuInfoList = new List<IUpdate<OrderPurchaseSkuInfo>>();
var statusChanged = jObject["data"]["OrderLogisticsTracingModel"].Value<string>("statusChanged").ToUpper();
var orderLogsItems = jObject["data"]["OrderLogisticsTracingModel"]["orderLogsItems"].Children();
var purchaseOrderIds = orderLogsItems.Select(x => x.Value<string>("orderId")).Distinct().ToList();
var orderEntryIds = orderLogsItems.Select(x => x.Value<string>("orderEntryId")).Distinct().ToList();
var dbOrderPurchaseSkuInfoList = fsql.Select<OrderPurchaseSkuInfo>()
.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<OrderPurchaseSkuInfo>(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);
}
///// <summary>
///// 采购平台改价回调

74
BBWYB.Server.Model/Orderpurchaseskuinfo.cs

@ -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 {
/// <summary>
/// 采购单Sku表
/// </summary>
[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; }
/// <summary>
/// 物流变更时间
/// </summary>
[JsonProperty, Column(DbType = "datetime")]
public DateTime? ExpressChangeTime { get; set; }
/// <summary>
/// 物流状态
/// </summary>
[JsonProperty, Column(StringLength = 100)]
public string ExpressState { get; set; }
/// <summary>
/// 店铺订单Id
/// </summary>
[JsonProperty, Column(StringLength = 100)]
public string OrderId { get; set; }
/// <summary>
/// 采购订单Id
/// </summary>
[JsonProperty, Column(StringLength = 100)]
public string PurchaseOrderId { get; set; }
/// <summary>
/// 采购商品Id(spu)
/// </summary>
[JsonProperty, Column(StringLength = 100)]
public string PurchaseProductId { get; set; }
/// <summary>
/// 采购Sku
/// </summary>
[JsonProperty, Column(StringLength = 100)]
public string PurchaseSkuId { get; set; }
/// <summary>
/// 采购Sku订单Id;1688 OrderEntryId
/// </summary>
[JsonProperty, Column(StringLength = 100)]
public string PurchaseSkuOrderId { get; set; }
/// <summary>
/// 店铺Id
/// </summary>
[JsonProperty]
public long? ShopId { get; set; }
}
}
Loading…
Cancel
Save