Browse Source

处理1688发货回调

updatebug
shanji 2 years ago
parent
commit
600b36ffb3
  1. 13
      BBWYB.Server.API/Controllers/PurchaseOrderController.cs
  2. 2
      BBWYB.Server.API/Program.cs
  3. 37
      BBWYB.Server.Business/Order/OrderBusiness.cs
  4. 324
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  5. 87
      BBWYB.Server.Business/Vender/VenderBusiness.cs
  6. 1
      BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs
  7. 64
      BBWYB.Server.Model/Db/PurchaseAccount/PurchaseAccount.cs
  8. 13
      BBWYB.Server.Model/Dto/Request/Order/OutStockRequest.cs
  9. 2
      BBWYB.Server.Model/Dto/Request/PurchaseOrder/CreateOrderRequest.cs
  10. 18
      BBWYB.Server.Model/Dto/Response/Logistics/LogisticsResponse.cs
  11. 40
      QuanTan.SDK/Client/Supplier/QuanTan_Supplier_ExpressClient.cs
  12. 5
      QuanTan.SDK/Client/Supplier/QuanTan_Supplier_OrderClient.cs
  13. 9
      QuanTan.SDK/Models/Supplier/Request/Order/QuanTan_Supplier_OutStockRequest.cs
  14. 9
      QuanTan.SDK/Models/Supplier/Response/Logistics/QuanTan_Supplier_ExpressCompanyResponse.cs
  15. 4
      QuanTan.SDK/QuanTan.SDK.csproj
  16. 144
      SDKAdapter/ExpressCompanyNameConverter.cs
  17. 10
      SDKAdapter/OperationPlatform/Client/Base/OP_PlatformClient.cs
  18. 23
      SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs
  19. 6
      SDKAdapter/OperationPlatform/Models/Request/Logistics/OP_QueryExpressCompanyRequest.cs
  20. 13
      SDKAdapter/OperationPlatform/Models/Request/Order/OP_OutStockRequest.cs
  21. 9
      SDKAdapter/OperationPlatform/Models/Response/Logistics/OP_QueryExpressCompanyResponse.cs
  22. 11
      SDKAdapter/PurchasePlatform/Client/Base/PP_PlatformClient.cs
  23. 40
      SDKAdapter/PurchasePlatform/Client/Impl/PP_1688Client.cs
  24. 6
      SDKAdapter/PurchasePlatform/Models/Request/Order/PP_QueryOrderLogisticsRequest.cs
  25. 11
      SDKAdapter/PurchasePlatform/Models/Response/Order/PP_QueryOrderLogisticsResponse.cs

13
BBWYB.Server.API/Controllers/PurchaseOrderController.cs

@ -1,5 +1,6 @@
using BBWYB.Server.Business;
using BBWYB.Server.Model.Dto;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace BBWYB.Server.API.Controllers
@ -33,5 +34,17 @@ namespace BBWYB.Server.API.Controllers
{
purchaseOrderBusiness.CreatePurchaseOrder(request);
}
/// <summary>
/// 1688回调
/// </summary>
/// <param name="message"></param>
/// <param name="_aop_signature"></param>
[HttpPost]
[AllowAnonymous]
public void CallbackFrom1688([FromForm] string message, [FromForm] string _aop_signature)
{
purchaseOrderBusiness.CallbackFrom1688(message);
}
}
}

2
BBWYB.Server.API/Program.cs

@ -10,6 +10,7 @@ using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
using Microsoft.OpenApi.Models;
using Newtonsoft.Json.Serialization;
using SDKAdapter;
using SDKAdapter.OperationPlatform.Client;
using SDKAdapter.PurchasePlatform.Client;
using System.Reflection;
@ -56,6 +57,7 @@ services.AddCors(options =>
services.BatchRegisterServices(new Assembly[] { Assembly.Load("BBWYB.Server.Business") }, typeof(IDenpendency));
services.AddSingleton<OP_PlatformClientFactory>();
services.AddSingleton<PP_PlatformClientFactory>();
services.AddSingleton<ExpressCompanyNameConverter>();
services.AddMapper(new MappingProfiles());
services.AddControllers(c =>

37
BBWYB.Server.Business/Order/OrderBusiness.cs

@ -1,9 +1,13 @@
using BBWYB.Common.Extensions;
using BBWYB.Common.Log;
using BBWYB.Common.Models;
using BBWYB.Server.Model;
using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Dto;
using FreeSql;
using SDKAdapter;
using SDKAdapter.OperationPlatform.Client;
using SDKAdapter.OperationPlatform.Models;
using System.Linq.Expressions;
using Yitter.IdGenerator;
@ -11,9 +15,11 @@ namespace BBWYB.Server.Business
{
public class OrderBusiness : BaseBusiness, IDenpendency
{
public OrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator)
{
private OP_PlatformClientFactory opPlatformClientFactory;
public OrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, OP_PlatformClientFactory opPlatformClientFactory) : base(fsql, nLogManager, idGenerator)
{
this.opPlatformClientFactory = opPlatformClientFactory;
}
private ISelect<Order, OrderConsignee, OrderCost, OrderPurchaseInfo> GetOrderListQueryConditions(QueryOrderRequest request)
@ -141,5 +147,32 @@ namespace BBWYB.Server.Business
Items = orderList
};
}
public void OutStock(OutStockRequest request)
{
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne();
if (dbOrder == null)
throw new BusinessException($"订单{request.OrderId}不存在");
if (dbOrder.OrderState != Enums.OrderState.)
throw new BusinessException($"订单{request.OrderId} 只有在待出库时才允许出库");
opPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.Platform)
.OutStock(new OP_OutStockRequest()
{
AppKey = request.AppKey,
AppSecret = request.AppSecret,
AppToken = request.AppToken,
ExpressId = request.ExpressId,
ExpressName = request.ExpressName,
OrderId = request.OrderId,
Platform = (AdapterEnums.PlatformType)request.Platform,
WayBillNo = request.WayBillNo
});
fsql.Update<Order>(request.OrderId).Set(o => o.OrderState, Enums.OrderState.)
.Set(o => o.WaybillNo, request.WayBillNo)
.Set(o => o.ExpressName, request.ExpressName)
.ExecuteAffrows();
}
}
}

324
BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -2,9 +2,11 @@
using BBWYB.Common.Models;
using BBWYB.Server.Model;
using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Db.MDS;
using BBWYB.Server.Model.Dto;
using FreeSql;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SDKAdapter;
using SDKAdapter.PurchasePlatform.Client;
using SDKAdapter.PurchasePlatform.Models;
@ -15,9 +17,28 @@ namespace BBWYB.Server.Business
public class PurchaseOrderBusiness : BaseBusiness, IDenpendency
{
private PP_PlatformClientFactory ppPlatformClientFactory;
public PurchaseOrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, PP_PlatformClientFactory ppPlatformClientFactory) : base(fsql, nLogManager, idGenerator)
private TaskSchedulerManager taskSchedulerManager;
private FreeSqlMultiDBManager fsqlManager;
private OrderBusiness orderBusiness;
private VenderBusiness venderBusiness;
private ExpressCompanyNameConverter expressCompanyNameConverter;
public PurchaseOrderBusiness(IFreeSql fsql,
NLogManager nLogManager,
IIdGenerator idGenerator,
PP_PlatformClientFactory ppPlatformClientFactory,
TaskSchedulerManager taskSchedulerManager,
FreeSqlMultiDBManager fsqlManager,
OrderBusiness orderBusiness,
VenderBusiness venderBusiness,
ExpressCompanyNameConverter expressCompanyNameConverter) : base(fsql, nLogManager, idGenerator)
{
this.ppPlatformClientFactory = ppPlatformClientFactory;
this.taskSchedulerManager = taskSchedulerManager;
this.fsqlManager = fsqlManager;
this.orderBusiness = orderBusiness;
this.venderBusiness = venderBusiness;
this.expressCompanyNameConverter = expressCompanyNameConverter;
}
public PreviewOrderResponse PreviewPurchaseOrder(PreviewOrderRequest request)
@ -218,7 +239,8 @@ namespace BBWYB.Server.Business
PurchaseMethod = Enums.PurchaseMethod.线,
PurchaseOrderId = createOrderResponse.OrderId,
PurchasePlatform = request.Platform,
PurchaserName = request.PurchaserName
PurchaserName = request.PurchaserName,
ShopId = request.ShopId
};
if (!isRepurchase)
@ -244,5 +266,303 @@ namespace BBWYB.Server.Business
.ExecuteAffrows();
});
}
#region 1688CallBack
public void CallbackFrom1688(string jsonStr)
{
nLogManager.Default().Info(jsonStr);
var jObject = JObject.Parse(jsonStr);
var type = jObject.Value<string>("type").ToUpper();
switch (type)
{
case "ORDER_BUYER_VIEW_PART_PART_SENDGOODS": //部分发货
case "ORDER_BUYER_VIEW_ANNOUNCE_SENDGOODS": //发货
DeliveryCallbackFrom1688(jObject);
break;
case "ORDER_BUYER_VIEW_ORDER_PRICE_MODIFY":
OrderPriceModificationCallbackFrom1688(jObject); //订单改价
break;
default:
break;
}
}
/// <summary>
/// 1688发货回调
/// </summary>
/// <param name="jObject"></param>
private void DeliveryCallbackFrom1688(JObject jObject)
{
var purchaseOrderId = jObject["data"].Value<string>("orderId");
Task.Factory.StartNew(() => DeliveryCallback(purchaseOrderId, null, Enums.Platform.), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
}
/// <summary>
/// 1688订单改价回调
/// </summary>
/// <param name="jObject"></param>
private void OrderPriceModificationCallbackFrom1688(JObject jObject)
{
//var purchaseOrderId = jObject["data"].Value<string>("orderId");
//Task.Factory.StartNew(() => OrderPriceModificationCallback(purchaseOrderId, Enums.Platform.阿里巴巴), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
}
#endregion
/// <summary>
/// 采购平台发货回调
/// </summary>
/// <param name="purchaseOrderId"></param>
/// <param name="wayBillNoResponse"></param>
/// <param name="callbackPlatform"></param>
private void DeliveryCallback(string purchaseOrderId, PP_QueryOrderLogisticsResponse wayBillNoResponse, Enums.Platform callbackPlatform)
{
string currentProgress = string.Empty;
string wayBillNoResponseInfo = string.Empty;
string expressCompanyListInfo = string.Empty;
string expressCompanyInfo = string.Empty;
string orderId = string.Empty;
long? shopId = null;
try
{
#region 查询代发信息
currentProgress = "查询代发信息";
var orderPurchaseInfo = fsql.Select<OrderPurchaseInfo>().Where(o => o.PurchaseOrderId == purchaseOrderId).ToOne();
if (orderPurchaseInfo == null)
throw new Exception("未查询到代发信息");
orderId = orderPurchaseInfo.OrderId;
shopId = orderPurchaseInfo.ShopId;
#endregion
#region 查询采购账号的归属店铺
currentProgress = "查询采购账号归属店铺";
var shop = venderBusiness.GetShopList(shopId: shopId)?.FirstOrDefault();
if (shop == null)
throw new Exception("未查询到店铺信息");
#endregion
#region 查询采购账号
currentProgress = "查询采购账号";
var purchaseAccount = fsqlManager.MDSfsql.Select<Purchaseaccount>().Where(pa => pa.Id == orderPurchaseInfo.PurchaseAccountId).ToOne();
if (purchaseAccount == null)
throw new Exception($"未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}");
#endregion
#region 获取采购单的物流信息
currentProgress = "获取采购单的物流信息";
if (wayBillNoResponse == null)
{
var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)callbackPlatform);
var ppQueryOrderLogisticsRequest = new PP_QueryOrderLogisticsRequest()
{
AppKey = purchaseAccount.AppKey,
AppSecret = purchaseAccount.AppSecret,
AppToken = purchaseAccount.AppToken,
OrderId = purchaseOrderId,
Platform = (AdapterEnums.PlatformType)callbackPlatform
};
wayBillNoResponse = client.QueryOrderLogistics(ppQueryOrderLogisticsRequest);
wayBillNoResponseInfo = JsonConvert.SerializeObject(new { Request = ppQueryOrderLogisticsRequest, Result = wayBillNoResponse });
}
#endregion
#region 获取目标平台的物流公司列表
currentProgress = "获取店铺平台物流公司列表";
var expressCompanyList = venderBusiness.GetExpressCompanyList(new PlatformRequest()
{
AppKey = shop.AppKey,
AppSecret = shop.AppSecret,
AppToken = shop.AppToken,
Platform = shop.PlatformId
});
if (expressCompanyList != null)
expressCompanyListInfo = JsonConvert.SerializeObject(expressCompanyList);
#endregion
#region 物流公司翻译
currentProgress = "物流公司翻译";
//logisticsCompanyId = ConvertLogisticsCompanyId(wayBillNoResponse.LogisticsCompanyName, logisticsCompanyList, shop.Platform);
var convertExpressCompany = expressCompanyNameConverter.Converter(wayBillNoResponse.ExpressName,
(AdapterEnums.PlatformType)callbackPlatform,
(AdapterEnums.PlatformType)shop.PlatformId,
expressCompanyList);
expressCompanyInfo = JsonConvert.SerializeObject(convertExpressCompany);
#endregion
#region 店铺平台订单出库
currentProgress = "店铺平台订单出库";
//outStockRequest = new OutStockRequest()
//{
// AppKey = shop.AppKey,
// AppSecret = shop.AppSecret,
// AppToken = shop.AppToken,
// OrderId = orderPurchaseInfo.OrderId,
// Platform = shop.PlatformId,
// WayBillNo = wayBillNoResponse.WayBillNo,
// LogisticsId = logisticsCompanyId, //物流公司Id
// SaveResponseLog = true
//};
//orderBusiness.OutStock(outStockRequest);
orderBusiness.OutStock(new OutStockRequest()
{
AppKey = shop.AppKey,
AppSecret = shop.AppSecret,
AppToken = shop.AppToken,
OrderId = orderId,
ExpressId = convertExpressCompany.ExpressId, //物流公司Id
ExpressName = convertExpressCompany.ExpressName, //物流公司名称
Platform = shop.PlatformId,
WayBillNo = wayBillNoResponse.WayBillNo
});
#endregion
nLogManager.Default().Info($"DeliveryCallback 回调平台{callbackPlatform},订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo},店铺平台物流公司列表:{expressCompanyListInfo},翻译后的物流公司:{expressCompanyInfo}");
}
catch (Exception ex)
{
nLogManager.Default().Error(ex, $"DeliveryCallback 回调平台{callbackPlatform},订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo},店铺平台物流公司列表:{expressCompanyListInfo},翻译后的物流公司:{expressCompanyInfo}");
}
}
///// <summary>
///// 采购平台改价回调
///// </summary>
///// <param name="purchaseOrderId"></param>
///// <param name="callbackPlatform"></param>
//private void OrderPriceModificationCallback(string purchaseOrderId, Enums.Platform callbackPlatform)
//{
// string currentProgress = string.Empty;
// try
// {
// #region 查询代发信息
// currentProgress = "查询代发信息";
// var orderDropshipping = fsql.Select<OrderDropShipping>().Where(o => o.PurchaseOrderId == purchaseOrderId).ToOne();
// if (orderDropshipping == null)
// throw new Exception("未查询到代发信息");
// #endregion
// #region 查询订单Sku
// currentProgress = "查询订单Sku";
// var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.Price != 0 && osku.OrderId == orderDropshipping.OrderId).ToList();
// if (orderSkuList == null || orderSkuList.Count() == 0)
// throw new BusinessException("订单Sku不存在");
// #endregion
// #region 查询采购单
// currentProgress = "查询采购单";
// var purchaseOrderList = fsql.Select<PurchaseOrder>().Where(po => po.PurchaseOrderId == purchaseOrderId).ToList();
// if (purchaseOrderList == null || purchaseOrderList.Count() == 0)
// throw new BusinessException("采购单不存在");
// if (orderSkuList.Count() > 1 && purchaseOrderList.Any(p => p.PurchaseMethod == Enums.PurchaseMethod.线下采购))
// throw new Exception("多sku订单关联采购单不支持改价");
// #endregion
// #region 查询成本
// currentProgress = "查询成本";
// var orderCost = fsql.Select<OrderCost>(orderDropshipping.OrderId).ToOne();
// if (orderCost == null)
// throw new BusinessException("订单成本不存在");
// #endregion
// #region 查询成本明细
// currentProgress = "查询成本明细";
// var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == orderDropshipping.OrderId).ToList();
// if (orderCostDetailList == null || orderCostDetailList.Count() == 0)
// throw new BusinessException("订单成本明细不存在");
// #endregion
// #region 查询采购账号
// currentProgress = "查询采购账号";
// var purchaseAccount = fsql.Select<PurchaseAccount>().WhereIf(orderDropshipping.PurchaseAccountId != 0, pa => pa.Id == orderDropshipping.PurchaseAccountId)
// .WhereIf(orderDropshipping.PurchaseAccountId == 0, pa => pa.AccountName == orderDropshipping.BuyerAccount)
// .Where(pa => pa.PurchasePlatformId == callbackPlatform).ToOne();
// if (purchaseAccount == null)
// throw new Exception($"未查询到采购账号{orderDropshipping.BuyerAccount}");
// #endregion
// #region 查询改价后的订单金额
// currentProgress = "查询改价后的订单金额";
// var purchaseOrderSimpleInfo = platformSDKBusinessList.FirstOrDefault(p => p.Platform == callbackPlatform).GetOrderSimpleInfo(new GetOrderInfoRequest()
// {
// AppKey = purchaseAccount.AppKey,
// AppSecret = purchaseAccount.AppSecret,
// AppToken = purchaseAccount.AppToken,
// OrderId = purchaseOrderId,
// Platform = callbackPlatform
// });
// #endregion
// #region 查询采购单明细
// currentProgress = "查询采购单明细";
// var purchaseOrderDetails = fsql.Select<PurchaseOrderDetail>().Where(p => p.OrderId == orderDropshipping.OrderId);
// #endregion
// #region 查询订单
// currentProgress = "查询订单";
// var dbOrder = fsql.Select<Order>(orderDropshipping.OrderId).ToOne();
// if (dbOrder == null)
// throw new BusinessException("订单不存在");
// #endregion
// IList<IUpdate<PurchaseOrder>> updatePurchaseOrders = new List<IUpdate<PurchaseOrder>>();
// IList<IUpdate<OrderCostDetail>> updateOrderCostDetails = new List<IUpdate<OrderCostDetail>>();
// foreach (var orderSku in orderSkuList)
// {
// var currentOrderSkuProductAmount = 0M; //采购成本
// if (orderSkuList.Count() != 1)
// {
// var currentOrderSkuPurchaseOrderDetails = purchaseOrderDetails.Where(p => p.SkuId == orderSku.SkuId); //找当前skuId的采购skuId
// currentOrderSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => currentOrderSkuPurchaseOrderDetails.Any(p1 => p1.PurchaseSkuId == p.SkuId))
// ?.Sum(p => p.ProductAmount) ?? 0M;
// }
// else
// {
// currentOrderSkuProductAmount = purchaseOrderSimpleInfo.ProductAmount;
// }
// var currentOrderSkuFreightAmount = purchaseOrderSimpleInfo.FreightAmount / orderSkuList.Count(); //采购运费(按sku数均分)
// var purchaseOrder = purchaseOrderList.FirstOrDefault(po => po.SkuId == orderSku.SkuId);
// var orderCostDetail = orderCostDetailList.FirstOrDefault(oc => oc.PurchaseOrderPKId == purchaseOrder.Id);
// purchaseOrder.SingleSkuAmount = currentOrderSkuProductAmount / orderSku.ItemTotal.Value;
// purchaseOrder.SingleFreight = currentOrderSkuFreightAmount / orderSku.ItemTotal.Value;
// orderCostDetail.SkuAmount = currentOrderSkuProductAmount;
// orderCostDetail.PurchaseFreight = currentOrderSkuFreightAmount;
// //orderCostDetail.UnitCost = purchaseOrder.UnitCost;
// //orderCostDetail.TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount;
// updatePurchaseOrders.Add(fsql.Update<PurchaseOrder>().SetSource(purchaseOrder));
// updateOrderCostDetails.Add(fsql.Update<OrderCostDetail>().SetSource(orderCostDetail));
// }
// orderCost.PurchaseAmount = purchaseOrderSimpleInfo.TotalAmount;
// orderCost.Profit = dbOrder.OrderSellerPrice +
// dbOrder.FreightPrice -
// orderCost.PurchaseAmount -
// orderCost.DeliveryExpressFreight -
// orderCost.PlatformCommissionAmount;
// orderDropshipping.PurchaseAmount = purchaseOrderSimpleInfo.TotalAmount;
// orderDropshipping.SkuAmount = purchaseOrderSimpleInfo.ProductAmount;
// orderDropshipping.PurchaseFreight = purchaseOrderSimpleInfo.FreightAmount;
// fsql.Transaction(() =>
// {
// foreach (var update in updatePurchaseOrders)
// update.ExecuteAffrows();
// foreach (var update in updateOrderCostDetails)
// update.ExecuteAffrows();
// fsql.Update<OrderCost>().SetSource(orderCost).ExecuteAffrows();
// fsql.Update<OrderDropShipping>().SetSource(orderDropshipping).ExecuteAffrows();
// });
// }
// catch (Exception ex)
// {
// nLogManager.Default().Error(ex, $"OrderPriceModificationCallback 回调平台{callbackPlatform},采购单号{purchaseOrderId},执行进度[{currentProgress}]");
// }
//}
}
}

87
BBWYB.Server.Business/Vender/VenderBusiness.cs

@ -5,25 +5,27 @@ using BBWYB.Server.Model;
using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Db.MDS;
using BBWYB.Server.Model.Dto;
using SDKAdapter.OperationPlatform.Client;
using SDKAdapter.OperationPlatform.Models;
using Yitter.IdGenerator;
namespace BBWYB.Server.Business
{
public class VenderBusiness : BaseBusiness, IDenpendency
{
private OP_PlatformClientFactory opPlatformClientFactory;
private FreeSqlMultiDBManager fsqlManager;
public VenderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, FreeSqlMultiDBManager fsqlManager) : base(fsql, nLogManager, idGenerator)
public VenderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, FreeSqlMultiDBManager fsqlManager, OP_PlatformClientFactory opPlatformClientFactory) : base(fsql, nLogManager, idGenerator)
{
this.fsqlManager = fsqlManager;
this.opPlatformClientFactory = opPlatformClientFactory;
}
public IList<ShopResponse> GetShopList(long? shopId = null, Enums.Platform? platform = null, bool filterTurnoverDays = false, bool filterSiNan = false)
public IList<ShopResponse> GetShopList(long? shopId = null, Enums.Platform? platform = null)
{
return fsqlManager.MDSfsql.Select<Shops>().Where(s => !string.IsNullOrEmpty(s.ShopId))
.WhereIf(shopId != null, s => s.ShopId == shopId.ToString())
.WhereIf(platform != null, s => s.PlatformId == (int)platform)
.WhereIf(filterTurnoverDays, s => s.SkuSafeTurnoverDays != 0)
.WhereIf(filterSiNan, s => !string.IsNullOrEmpty(s.SiNanDingDingWebHook))
.ToList<ShopResponse>();
}
@ -39,19 +41,6 @@ namespace BBWYB.Server.Business
if (shopSettingRequest.PurchaseAccountId == 0)
{
shopSettingRequest.PurchaseAccountId = idGenerator.NewLong();
var pa = new PurchaseAccount()
{
Id = shopSettingRequest.PurchaseAccountId,
AccountName = shopSettingRequest.AccountName,
AppKey = shopSettingRequest.AppKey,
AppSecret = shopSettingRequest.AppSecret,
AppToken = shopSettingRequest.AppToken,
CreateTime = DateTime.Now,
CreatorId = "",
Deleted = 0,
PurchasePlatformId = shopSettingRequest.PurchasePlatformId,
ShopId = shopSettingRequest.ShopId
};
var mdspa = new Purchaseaccount()
{
@ -67,55 +56,31 @@ namespace BBWYB.Server.Business
ShopId = mdsShop.Id
};
fsqlManager.BBWYfsql.Insert(pa).ExecuteAffrows();
fsqlManager.MDSfsql.Transaction(() =>
{
fsqlManager.MDSfsql.Insert(mdspa).ExecuteAffrows();
//修改扣点和管理密码
//fsqlManager.MDSfsql.Update<Shops>(mdsShop.Id).Set(s => s.ManagePwd, shopSettingRequest.ManagerPwd)
// .Set(s => s.PlatformCommissionRatio, shopSettingRequest.PlatformCommissionRatio)
// .Set(s => s.DingDingKey, shopSettingRequest.DingDingKey)
// .Set(s => s.DingDingWebHook, shopSettingRequest.DingDingWebHook)
// .Set(s => s.SkuSafeTurnoverDays, shopSettingRequest.SkuSafeTurnoverDays)
// .Set(s => s.SiNanDingDingKey, shopSettingRequest.SiNanDingDingKey)
// .Set(s => s.SiNanDingDingWebHook, shopSettingRequest.SiNanDingDingWebHook)
// .Set(s => s.SiNanPolicyLevel, shopSettingRequest.SiNanPolicyLevel)
// .ExecuteAffrows();
});
fsqlManager.MDSfsql.Insert(mdspa).ExecuteAffrows();
}
else
{
fsqlManager.BBWYfsql.Update<PurchaseAccount>(shopSettingRequest.PurchaseAccountId)
.Set(pa => pa.AppKey, shopSettingRequest.AppKey)
.Set(pa => pa.AppSecret, shopSettingRequest.AppSecret)
.Set(pa => pa.AppToken, shopSettingRequest.AppToken)
.Set(pa => pa.AccountName, shopSettingRequest.AccountName)
.Set(pa => pa.PurchasePlatformId, shopSettingRequest.PurchasePlatformId)
.ExecuteAffrows();
fsqlManager.MDSfsql.Transaction(() =>
{
fsqlManager.MDSfsql.Update<Purchaseaccount>(shopSettingRequest.PurchaseAccountId.ToString())
.Set(pa => pa.AppKey, shopSettingRequest.AppKey)
.Set(pa => pa.AppSecret, shopSettingRequest.AppSecret)
.Set(pa => pa.AppToken, shopSettingRequest.AppToken)
.Set(pa => pa.AccountName, shopSettingRequest.AccountName)
.Set(pa => pa.PurchasePlatformId, ((int)shopSettingRequest.PurchasePlatformId).ToString())
.ExecuteAffrows();
//修改扣点和管理密码
//fsqlManager.MDSfsql.Update<Shops>(mdsShop.Id).Set(s => s.ManagePwd, shopSettingRequest.ManagerPwd)
// .Set(s => s.PlatformCommissionRatio, shopSettingRequest.PlatformCommissionRatio)
// .Set(s => s.DingDingKey, shopSettingRequest.DingDingKey)
// .Set(s => s.DingDingWebHook, shopSettingRequest.DingDingWebHook)
// .Set(s => s.SkuSafeTurnoverDays, shopSettingRequest.SkuSafeTurnoverDays)
// .Set(s => s.SiNanDingDingKey, shopSettingRequest.SiNanDingDingKey)
// .Set(s => s.SiNanDingDingWebHook, shopSettingRequest.SiNanDingDingWebHook)
// .Set(s => s.SiNanPolicyLevel, shopSettingRequest.SiNanPolicyLevel)
// .ExecuteAffrows();
});
fsqlManager.MDSfsql.Update<Purchaseaccount>(shopSettingRequest.PurchaseAccountId.ToString())
.Set(pa => pa.AppKey, shopSettingRequest.AppKey)
.Set(pa => pa.AppSecret, shopSettingRequest.AppSecret)
.Set(pa => pa.AppToken, shopSettingRequest.AppToken)
.Set(pa => pa.AccountName, shopSettingRequest.AccountName)
.Set(pa => pa.PurchasePlatformId, ((int)shopSettingRequest.PurchasePlatformId).ToString())
.ExecuteAffrows();
}
return shopSettingRequest.PurchaseAccountId;
}
public IList<OP_QueryExpressCompanyResponse> GetExpressCompanyList(PlatformRequest request)
{
return opPlatformClientFactory.GetClient((SDKAdapter.AdapterEnums.PlatformType)request.Platform)
.GetExpressCompanyList(new OP_QueryExpressCompanyRequest()
{
AppKey = request.AppKey,
AppSecret = request.AppSecret,
AppToken = request.AppToken,
Platform = (SDKAdapter.AdapterEnums.PlatformType)request.Platform
});
}
}
}

1
BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs

@ -31,6 +31,7 @@ namespace BBWYB.Server.Model.Db
[Column(StringLength = 100)]
public string PurchaserName { get; set; }
public long? ShopId { get; set; }
}
}

64
BBWYB.Server.Model/Db/PurchaseAccount/PurchaseAccount.cs

@ -1,64 +0,0 @@
using FreeSql.DataAnnotations;
namespace BBWYB.Server.Model.Db
{
/// <summary>
/// 采购账号表
/// </summary>
[Table(Name = "purchaseaccount", DisableSyncStructure = true)]
public partial class PurchaseAccount
{
/// <summary>
/// 主键
/// </summary>
[Column(StringLength = 50, IsPrimary = true, IsNullable = false)]
public long Id { get; set; }
public string AccountName { get; set; }
public string AppKey { get; set; }
public string AppSecret { get; set; }
public string AppToken { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(DbType = "datetime")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 创建人Id
/// </summary>
[Column(StringLength = 50)]
public string CreatorId { get; set; }
/// <summary>
/// 否已删除
/// </summary>
[Column(DbType = "tinyint(4)")]
public sbyte Deleted { get; set; }
[Column(DbType = "int(1)", MapType = typeof(int?))]
public Enums.Platform? PurchasePlatformId { get; set; }
/// <summary>
/// 采购账号归属店铺ID
/// </summary>
[Column(DbType = "bigint(1)")]
public long? ShopId { get; set; }
}
}

13
BBWYB.Server.Model/Dto/Request/Order/OutStockRequest.cs

@ -0,0 +1,13 @@
namespace BBWYB.Server.Model.Dto
{
public class OutStockRequest : PlatformRequest
{
public string OrderId { get; set; }
public string WayBillNo { get; set; }
public string ExpressId { get; set; }
public string ExpressName { get; set; }
}
}

2
BBWYB.Server.Model/Dto/Request/PurchaseOrder/CreateOrderRequest.cs

@ -16,5 +16,7 @@
public string PurchaseAccountName { get; set; }
public string PurchaserName { get; set; }
public long ShopId { get; set; }
}
}

18
BBWYB.Server.Model/Dto/Response/Logistics/LogisticsResponse.cs

@ -0,0 +1,18 @@
namespace BBWYB.Server.Model.Dto
{
public class LogisticsResponse
{
public string Id { get; set; }
public string Name { get; set; }
}
public class WayBillNoResponse
{
public string LogisticsCompanyId { get; set; }
public string LogisticsCompanyName { get; set; }
public string WayBillNo { get; set; }
}
}

40
QuanTan.SDK/Client/Supplier/QuanTan_Supplier_ExpressClient.cs

@ -0,0 +1,40 @@
using BBWYB.Common.Http;
using QuanTan.SDK.Models.Supplier;
namespace QuanTan.SDK.Client.Supplier
{
public class QuanTan_Supplier_ExpressClient : BaseClient
{
private IList<QuanTan_Supplier_ExpressCompanyResponse> expressCompanyList;
public QuanTan_Supplier_ExpressClient(RestApiService restApiService) : base(restApiService)
{
expressCompanyList = new List<QuanTan_Supplier_ExpressCompanyResponse>()
{
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "1", ExpressName = "韵达快递" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "2", ExpressName = "顺丰速运" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "3", ExpressName = "圆通速递" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "4", ExpressName = "中通快递" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "5", ExpressName = "申通快递" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "6", ExpressName = "百世快递" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "8", ExpressName = "极兔速递" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "9", ExpressName = "邮政快递包裹" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "10", ExpressName = "天天快递" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "11", ExpressName = "EMS" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "12", ExpressName = "邮政标准快递" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "13", ExpressName = "德邦" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "14", ExpressName = "德邦快递" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "15", ExpressName = "众邮快递" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "17", ExpressName = "优速快递" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "18", ExpressName = "中通快运" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "19", ExpressName = "宅急送" },
new QuanTan_Supplier_ExpressCompanyResponse() { ExpressId = "20", ExpressName = "苏宁物流" }
};
}
public IList<QuanTan_Supplier_ExpressCompanyResponse> GetExpressCompanyList()
{
return expressCompanyList;
}
}
}

5
QuanTan.SDK/Client/Supplier/QuanTan_Supplier_OrderClient.cs

@ -14,5 +14,10 @@ namespace QuanTan.SDK.Client.Supplier
{
return SendRequest<QuanTan_Supplier_QueryOrderListResponse>("api/platform/supply/order/list", request, appId, appSecret);
}
public QuanTanResponse<object> OutStock(QuanTan_Supplier_OutStockRequest request, string appId, string appSecret)
{
return SendRequest<object>("api/platform/supply/order/delivery", request, appId, appSecret);
}
}
}

9
QuanTan.SDK/Models/Supplier/Request/Order/QuanTan_Supplier_OutStockRequest.cs

@ -0,0 +1,9 @@
namespace QuanTan.SDK.Models.Supplier
{
public class QuanTan_Supplier_OutStockRequest
{
public string orderId { get; set; }
public string expressId { get; set; }
public string waybillNo { get; set; }
}
}

9
QuanTan.SDK/Models/Supplier/Response/Logistics/QuanTan_Supplier_ExpressCompanyResponse.cs

@ -0,0 +1,9 @@
namespace QuanTan.SDK.Models.Supplier
{
public class QuanTan_Supplier_ExpressCompanyResponse
{
public string ExpressId { get; set; }
public string ExpressName { get; set; }
}
}

4
QuanTan.SDK/QuanTan.SDK.csproj

@ -10,4 +10,8 @@
<ProjectReference Include="..\BBWYB.Common\BBWYB.Common.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Models\Supplier\Request\Logistics\" />
</ItemGroup>
</Project>

144
SDKAdapter/ExpressCompanyNameConverter.cs

@ -0,0 +1,144 @@
using SDKAdapter.OperationPlatform.Models;
namespace SDKAdapter
{
public class ExpressCompanyNameConverter
{
private IDictionary<string, IList<LogisticsCompanyRelationship>> converterDictionary;
public ExpressCompanyNameConverter()
{
converterDictionary = new Dictionary<string, IList<LogisticsCompanyRelationship>>();
converterDictionary.Add($"{AdapterEnums.PlatformType.阿里巴巴}_{AdapterEnums.PlatformType.京东}", new List<LogisticsCompanyRelationship>()
{
new LogisticsCompanyRelationship(){SourceName="中通快递(ZTO)",TargetName="中通速递"},
new LogisticsCompanyRelationship(){SourceName="圆通速递(YTO)",TargetName="圆通快递"},
new LogisticsCompanyRelationship(){SourceName="邮政国内小包",TargetName="邮政快递包裹"},
new LogisticsCompanyRelationship(){SourceName="韵达快递",TargetName="韵达快递"},
new LogisticsCompanyRelationship(){SourceName="申通快递(STO)",TargetName="申通快递",SecondTargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="顺丰速运",TargetName="顺丰快递"},
new LogisticsCompanyRelationship(){SourceName="百世快递",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="其他",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="德邦",TargetName="德邦物流",SecondTargetName="德邦快递"},
new LogisticsCompanyRelationship(){SourceName="EMS",TargetName="邮政快递包裹"},
new LogisticsCompanyRelationship(){SourceName="德邦快递",TargetName="德邦快递",SecondTargetName="德邦快运"},
new LogisticsCompanyRelationship(){SourceName="其它",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="极兔速递",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="中通快运",TargetName="中通快运"},
new LogisticsCompanyRelationship(){SourceName="龙邦速递",TargetName="龙邦快递"},
new LogisticsCompanyRelationship(){SourceName="安能物流",TargetName="安能物流"},
new LogisticsCompanyRelationship(){SourceName="德坤物流",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="顺丰快运",TargetName="顺丰快递"},
new LogisticsCompanyRelationship(){SourceName="壹米滴答",TargetName="壹米滴答"},
new LogisticsCompanyRelationship(){SourceName="优速快递",TargetName="优速快递"},
new LogisticsCompanyRelationship(){SourceName="京广速递",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="丰网速运",TargetName="丰网速运"},
new LogisticsCompanyRelationship(){SourceName="顺心捷达",TargetName="顺心捷达"},
new LogisticsCompanyRelationship(){SourceName="快捷快递",TargetName="快捷速递"},
new LogisticsCompanyRelationship(){SourceName="极兔快递(原百世快递)",TargetName="京旗联盟-极兔",SecondTargetName ="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="极兔速递-原百世快递",TargetName="京旗联盟-极兔",SecondTargetName ="厂家自送"}
});
converterDictionary.Add($"{AdapterEnums.PlatformType.拳探}_{AdapterEnums.PlatformType.京东}", new List<LogisticsCompanyRelationship>()
{
new LogisticsCompanyRelationship(){SourceName="韵达快递",TargetName="韵达快递"},
new LogisticsCompanyRelationship(){SourceName="顺丰速运",TargetName="顺丰快递"},
new LogisticsCompanyRelationship(){SourceName="圆通速递",TargetName="圆通快递"},
new LogisticsCompanyRelationship(){SourceName="中通快递",TargetName="中通速递"},
new LogisticsCompanyRelationship(){SourceName="申通快递",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="百世快递",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="德邦快递",TargetName="德邦快递"},
new LogisticsCompanyRelationship(){SourceName="极兔速递",TargetName="京旗联盟-极兔"},
new LogisticsCompanyRelationship(){SourceName="邮政快递包裹",TargetName="邮政快递包裹"},
new LogisticsCompanyRelationship(){SourceName="天天快递",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="EMS",TargetName="邮政快递包裹"},
new LogisticsCompanyRelationship(){SourceName="邮政标准快递",TargetName="邮政快递包裹"},
new LogisticsCompanyRelationship(){SourceName="德邦",TargetName="德邦物流"},
new LogisticsCompanyRelationship(){SourceName="众邮快递",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="优速快递",TargetName="优速快递"},
new LogisticsCompanyRelationship(){SourceName="中通快运",TargetName="中通快运"},
new LogisticsCompanyRelationship(){SourceName="宅急送",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="苏宁物流",TargetName="厂家自送"}
});
converterDictionary.Add($"{AdapterEnums.PlatformType.阿里巴巴}_{AdapterEnums.PlatformType.拳探}", new List<LogisticsCompanyRelationship>()
{
new LogisticsCompanyRelationship(){SourceName="中通快递(ZTO)",TargetName="中通快递"},
new LogisticsCompanyRelationship(){SourceName="圆通速递(YTO)",TargetName="圆通速递"},
new LogisticsCompanyRelationship(){SourceName="邮政国内小包",TargetName="邮政快递包裹"},
new LogisticsCompanyRelationship(){SourceName="韵达快递",TargetName="韵达快递"},
new LogisticsCompanyRelationship(){SourceName="申通快递(STO)",TargetName="申通快递"},
new LogisticsCompanyRelationship(){SourceName="顺丰速运",TargetName="顺丰速运"},
new LogisticsCompanyRelationship(){SourceName="百世快递",TargetName="百世快递"},
new LogisticsCompanyRelationship(){SourceName="德邦",TargetName="德邦"},
new LogisticsCompanyRelationship(){SourceName="德邦快递",TargetName="德邦快递"},
new LogisticsCompanyRelationship(){SourceName="EMS",TargetName="EMS"},
new LogisticsCompanyRelationship(){SourceName="极兔速递",TargetName="极兔速递"},
new LogisticsCompanyRelationship(){SourceName="中通快运",TargetName="中通快运"},
//new LogisticsCompanyRelationship(){SourceName="龙邦速递",TargetName="龙邦快递"},
//new LogisticsCompanyRelationship(){SourceName="安能物流",TargetName="安能物流"},
//new LogisticsCompanyRelationship(){SourceName="德坤物流",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="顺丰快运",TargetName="顺丰速运"},
//new LogisticsCompanyRelationship(){SourceName="壹米滴答",TargetName="壹米滴答"},
new LogisticsCompanyRelationship(){SourceName="优速快递",TargetName="优速快递"},
//new LogisticsCompanyRelationship(){SourceName="京广速递",TargetName="厂家自送"},
//new LogisticsCompanyRelationship(){SourceName="丰网速运",TargetName="丰网速运"},
//new LogisticsCompanyRelationship(){SourceName="顺心捷达",TargetName="顺心捷达"},
//new LogisticsCompanyRelationship(){SourceName="快捷快递",TargetName="快捷速递"},
new LogisticsCompanyRelationship(){SourceName="极兔快递(原百世快递)",TargetName="极兔速递"},
new LogisticsCompanyRelationship(){SourceName="极兔速递-原百世快递",TargetName="极兔速递"}
});
}
/// <summary>
/// 翻译各平台之间的物流公司
/// </summary>00
/// <param name="sourceName"></param>
/// <param name="sourcePlatform"></param>
/// <param name="targetPlatform"></param>
/// <param name="opExpressCompanyList">运营平台物流公司</param>
/// <returns>目标平台的物流公司Id</returns>
public OP_QueryExpressCompanyResponse Converter(string sourceName,
AdapterEnums.PlatformType sourcePlatform,
AdapterEnums.PlatformType targetPlatform,
IList<OP_QueryExpressCompanyResponse> opExpressCompanyList)
{
var key = $"{sourcePlatform}_{targetPlatform}";
if (!converterDictionary.TryGetValue(key, out IList<LogisticsCompanyRelationship> companyRelationShips))
throw new Exception($"不支持{sourcePlatform}与{targetPlatform}的物流公司翻译");
var targetShip = companyRelationShips.FirstOrDefault(l => l.SourceName == sourceName);
if (targetShip == null)
throw new Exception($"sourcePlatform:{sourcePlatform},targetPlatform:{targetPlatform},未找到{sourcePlatform}的物流公司{sourceName}");
var expressCompany = opExpressCompanyList.FirstOrDefault(c => c.ExpressName.Equals(targetShip.TargetName));
if (expressCompany == null)
{
if (!string.IsNullOrEmpty(targetShip.SecondTargetName))
{
expressCompany = opExpressCompanyList.FirstOrDefault(c => c.ExpressName.Equals(targetShip.SecondTargetName));
if (expressCompany == null)
{
throw new Exception($"sourcePlatform:{sourcePlatform},targetPlatform:{targetPlatform},targetShip:{targetShip.SecondTargetName},在用户支持的物流公司中不存在");
}
}
else
{
throw new Exception($"sourcePlatform:{sourcePlatform},targetPlatform:{targetPlatform},targetShip:{targetShip.TargetName},在用户支持的物流公司中不存在");
}
}
return expressCompany;
}
}
public class LogisticsCompanyRelationship
{
public string SourceName { get; set; }
public string TargetName { get; set; }
public string TargetCode { get; set; }
public string SecondTargetName { get; set; }
public string SecondTargetCode { get; set; }
}
}

10
SDKAdapter/OperationPlatform/Client/Base/OP_PlatformClient.cs

@ -31,5 +31,15 @@ namespace SDKAdapter.OperationPlatform.Client
{
throw new NotImplementedException();
}
public virtual void OutStock(OP_OutStockRequest request)
{
throw new NotImplementedException();
}
public virtual IList<OP_QueryExpressCompanyResponse> GetExpressCompanyList(OP_QueryExpressCompanyRequest request)
{
throw new NotImplementedException();
}
}
}

23
SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs

@ -9,11 +9,13 @@ namespace SDKAdapter.OperationPlatform.Client
{
private QuanTan_Supplier_ProductClient supplier_ProductClient;
private QuanTan_Supplier_OrderClient supplier_OrderClient;
private QuanTan_Supplier_ExpressClient supplier_ExpressClient;
public OP_QuanTanClient(RestApiService restApiService) : base(restApiService)
{
this.supplier_ProductClient = new QuanTan_Supplier_ProductClient(restApiService);
this.supplier_OrderClient = new QuanTan_Supplier_OrderClient(restApiService);
this.supplier_ExpressClient = new QuanTan_Supplier_ExpressClient(restApiService);
}
public override AdapterEnums.PlatformType Platform => AdapterEnums.PlatformType.;
@ -163,5 +165,26 @@ namespace SDKAdapter.OperationPlatform.Client
}).ToList()
};
}
public override void OutStock(OP_OutStockRequest request)
{
var qtResponse = supplier_OrderClient.OutStock(new QuanTan_Supplier_OutStockRequest()
{
expressId = request.ExpressId,
orderId = request.OrderId,
waybillNo = request.WayBillNo
}, request.AppKey, request.AppSecret);
if (qtResponse.Status != 200)
throw new Exception(qtResponse.Message);
}
public override IList<OP_QueryExpressCompanyResponse> GetExpressCompanyList(OP_QueryExpressCompanyRequest request)
{
return supplier_ExpressClient.GetExpressCompanyList().Select(p => new OP_QueryExpressCompanyResponse()
{
ExpressId = p.ExpressId,
ExpressName = p.ExpressName,
}).ToList();
}
}
}

6
SDKAdapter/OperationPlatform/Models/Request/Logistics/OP_QueryExpressCompanyRequest.cs

@ -0,0 +1,6 @@
namespace SDKAdapter.OperationPlatform.Models
{
public class OP_QueryExpressCompanyRequest : BasePlatformRequest
{
}
}

13
SDKAdapter/OperationPlatform/Models/Request/Order/OP_OutStockRequest.cs

@ -0,0 +1,13 @@
namespace SDKAdapter.OperationPlatform.Models
{
public class OP_OutStockRequest: BasePlatformRequest
{
public string OrderId { get; set; }
public string WayBillNo { get; set; }
public string ExpressId { get; set; }
public string ExpressName { get; set; }
}
}

9
SDKAdapter/OperationPlatform/Models/Response/Logistics/OP_QueryExpressCompanyResponse.cs

@ -0,0 +1,9 @@
namespace SDKAdapter.OperationPlatform.Models
{
public class OP_QueryExpressCompanyResponse
{
public string ExpressId { get; set; }
public string ExpressName { get; set; }
}
}

11
SDKAdapter/PurchasePlatform/Client/Base/PP_PlatformClient.cs

@ -46,5 +46,16 @@ namespace SDKAdapter.PurchasePlatform.Client
{
throw new NotImplementedException();
}
/// <summary>
/// 查询订单物流信息
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public virtual PP_QueryOrderLogisticsResponse QueryOrderLogistics(PP_QueryOrderLogisticsRequest request)
{
throw new NotImplementedException();
}
}
}

40
SDKAdapter/PurchasePlatform/Client/Impl/PP_1688Client.cs

@ -4,12 +4,13 @@ using com.alibaba.openapi.client.entity;
using com.alibaba.openapi.client.policy;
using Newtonsoft.Json.Linq;
using SDKAdapter.PurchasePlatform.Models;
using System.Text;
namespace SDKAdapter.PurchasePlatform.Client
{
public class PP_1688Client : PP_PlatformClient
{
public override AdapterEnums.PlatformType Platform => AdapterEnums.PlatformType.;
private _1688TradeTypeCompare _1688TradeTypeCompare;
public PP_1688Client(RestApiService restApiService) : base(restApiService)
{
@ -243,6 +244,43 @@ namespace SDKAdapter.PurchasePlatform.Client
}).ToList()
};
}
public override PP_QueryOrderLogisticsResponse QueryOrderLogistics(PP_QueryOrderLogisticsRequest request)
{
var client = GetSyncAPIClient(request.AppKey, request.AppSecret);
RequestPolicy reqPolicy = new RequestPolicy();
reqPolicy.HttpMethod = "POST";
reqPolicy.NeedAuthorization = false;
reqPolicy.RequestSendTimestamp = false;
reqPolicy.UseHttps = false;
reqPolicy.UseSignture = true;
reqPolicy.AccessPrivateApi = false;
Request _request = new Request();
APIId apiId = new APIId();
apiId.Name = "alibaba.trade.getLogisticsInfos.buyerView";
apiId.NamespaceValue = "com.alibaba.logistics";
apiId.Version = 1;
_request.ApiId = apiId;
var param = new { orderId = request.OrderId, webSite = "1688", fields = "logisticsCompanyId,logisticsCompanyName,logisticsBillNo" };
_request.RequestEntity = param;
if (!string.IsNullOrEmpty(request.AppToken))
_request.AccessToken = request.AppToken;
var result = client.NewRequest(_request, reqPolicy);
if (result.Value<bool>("success") != true)
throw new Exception(result.Value<string>("errorMessage"));
//nLogManager.Default().Info($"GetWayBillNoByOrderId QueryOrderWayBillNoRequest {JsonConvert.SerializeObject(queryOrderWayBillNoRequest)} Result {result}");
var firstJToken = result["result"].FirstOrDefault();
return new PP_QueryOrderLogisticsResponse()
{
ExpressId = firstJToken.Value<string>("logisticsCompanyId"),
ExpressName = firstJToken.Value<string>("logisticsCompanyName"),
WayBillNo = firstJToken.Value<string>("logisticsBillNo")
};
}
}
public class _1688TradeTypeCompare : IEqualityComparer<JToken>

6
SDKAdapter/PurchasePlatform/Models/Request/Order/PP_QueryOrderLogisticsRequest.cs

@ -0,0 +1,6 @@
namespace SDKAdapter.PurchasePlatform.Models
{
public class PP_QueryOrderLogisticsRequest : PP_QueryOrderDetailRequest
{
}
}

11
SDKAdapter/PurchasePlatform/Models/Response/Order/PP_QueryOrderLogisticsResponse.cs

@ -0,0 +1,11 @@
namespace SDKAdapter.PurchasePlatform.Models
{
public class PP_QueryOrderLogisticsResponse
{
public string WayBillNo { get; set; }
public string ExpressId { get; set; }
public string ExpressName { get; set; }
}
}
Loading…
Cancel
Save