From 600b36ffb3d21675f7b39afd7ea4235fd411f943 Mon Sep 17 00:00:00 2001
From: shanj <18996038927@163.com>
Date: Wed, 19 Apr 2023 02:27:02 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=861688=E5=8F=91=E8=B4=A7?=
=?UTF-8?q?=E5=9B=9E=E8=B0=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/PurchaseOrderController.cs | 13 +
BBWYB.Server.API/Program.cs | 2 +
BBWYB.Server.Business/Order/OrderBusiness.cs | 37 +-
.../PurchaseOrder/PurchaseOrderBusiness.cs | 324 +++++++++++++++++-
.../Vender/VenderBusiness.cs | 87 ++---
.../Db/Order/OrderPurchaseInfo.cs | 1 +
.../Db/PurchaseAccount/PurchaseAccount.cs | 64 ----
.../Dto/Request/Order/OutStockRequest.cs | 13 +
.../PurchaseOrder/CreateOrderRequest.cs | 2 +
.../Response/Logistics/LogisticsResponse.cs | 18 +
.../QuanTan_Supplier_ExpressClient.cs | 40 +++
.../Supplier/QuanTan_Supplier_OrderClient.cs | 5 +
.../Order/QuanTan_Supplier_OutStockRequest.cs | 9 +
...QuanTan_Supplier_ExpressCompanyResponse.cs | 9 +
QuanTan.SDK/QuanTan.SDK.csproj | 4 +
SDKAdapter/ExpressCompanyNameConverter.cs | 144 ++++++++
.../Client/Base/OP_PlatformClient.cs | 10 +
.../Client/Impl/OP_QuanTanClient.cs | 23 ++
.../OP_QueryExpressCompanyRequest.cs | 6 +
.../Request/Order/OP_OutStockRequest.cs | 13 +
.../OP_QueryExpressCompanyResponse.cs | 9 +
.../Client/Base/PP_PlatformClient.cs | 11 +
.../Client/Impl/PP_1688Client.cs | 40 ++-
.../Order/PP_QueryOrderLogisticsRequest.cs | 6 +
.../Order/PP_QueryOrderLogisticsResponse.cs | 11 +
25 files changed, 771 insertions(+), 130 deletions(-)
delete mode 100644 BBWYB.Server.Model/Db/PurchaseAccount/PurchaseAccount.cs
create mode 100644 BBWYB.Server.Model/Dto/Request/Order/OutStockRequest.cs
create mode 100644 BBWYB.Server.Model/Dto/Response/Logistics/LogisticsResponse.cs
create mode 100644 QuanTan.SDK/Client/Supplier/QuanTan_Supplier_ExpressClient.cs
create mode 100644 QuanTan.SDK/Models/Supplier/Request/Order/QuanTan_Supplier_OutStockRequest.cs
create mode 100644 QuanTan.SDK/Models/Supplier/Response/Logistics/QuanTan_Supplier_ExpressCompanyResponse.cs
create mode 100644 SDKAdapter/ExpressCompanyNameConverter.cs
create mode 100644 SDKAdapter/OperationPlatform/Models/Request/Logistics/OP_QueryExpressCompanyRequest.cs
create mode 100644 SDKAdapter/OperationPlatform/Models/Request/Order/OP_OutStockRequest.cs
create mode 100644 SDKAdapter/OperationPlatform/Models/Response/Logistics/OP_QueryExpressCompanyResponse.cs
create mode 100644 SDKAdapter/PurchasePlatform/Models/Request/Order/PP_QueryOrderLogisticsRequest.cs
create mode 100644 SDKAdapter/PurchasePlatform/Models/Response/Order/PP_QueryOrderLogisticsResponse.cs
diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs
index f038aa2..e4b4f06 100644
--- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs
+++ b/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);
}
+
+ ///
+ /// 1688回调
+ ///
+ ///
+ ///
+ [HttpPost]
+ [AllowAnonymous]
+ public void CallbackFrom1688([FromForm] string message, [FromForm] string _aop_signature)
+ {
+ purchaseOrderBusiness.CallbackFrom1688(message);
+ }
}
}
diff --git a/BBWYB.Server.API/Program.cs b/BBWYB.Server.API/Program.cs
index d0da2b1..f2f2e90 100644
--- a/BBWYB.Server.API/Program.cs
+++ b/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();
services.AddSingleton();
+services.AddSingleton();
services.AddMapper(new MappingProfiles());
services.AddControllers(c =>
diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs
index 1031dc8..46ef520 100644
--- a/BBWYB.Server.Business/Order/OrderBusiness.cs
+++ b/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 GetOrderListQueryConditions(QueryOrderRequest request)
@@ -141,5 +147,32 @@ namespace BBWYB.Server.Business
Items = orderList
};
}
+
+ public void OutStock(OutStockRequest request)
+ {
+ var dbOrder = fsql.Select(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(request.OrderId).Set(o => o.OrderState, Enums.OrderState.待收货)
+ .Set(o => o.WaybillNo, request.WayBillNo)
+ .Set(o => o.ExpressName, request.ExpressName)
+ .ExecuteAffrows();
+ }
}
}
diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
index 911d480..816bc89 100644
--- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
+++ b/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("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;
+ }
+ }
+
+ ///
+ /// 1688发货回调
+ ///
+ ///
+ private void DeliveryCallbackFrom1688(JObject jObject)
+ {
+ var purchaseOrderId = jObject["data"].Value("orderId");
+ Task.Factory.StartNew(() => DeliveryCallback(purchaseOrderId, null, Enums.Platform.阿里巴巴), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
+ }
+
+ ///
+ /// 1688订单改价回调
+ ///
+ ///
+ private void OrderPriceModificationCallbackFrom1688(JObject jObject)
+ {
+ //var purchaseOrderId = jObject["data"].Value("orderId");
+ //Task.Factory.StartNew(() => OrderPriceModificationCallback(purchaseOrderId, Enums.Platform.阿里巴巴), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
+ }
+ #endregion
+
+ ///
+ /// 采购平台发货回调
+ ///
+ ///
+ ///
+ ///
+ 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().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().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}");
+ }
+ }
+
+
+ /////
+ ///// 采购平台改价回调
+ /////
+ /////
+ /////
+ //private void OrderPriceModificationCallback(string purchaseOrderId, Enums.Platform callbackPlatform)
+ //{
+ // string currentProgress = string.Empty;
+
+ // try
+ // {
+ // #region 查询代发信息
+ // currentProgress = "查询代发信息";
+ // var orderDropshipping = fsql.Select().Where(o => o.PurchaseOrderId == purchaseOrderId).ToOne();
+ // if (orderDropshipping == null)
+ // throw new Exception("未查询到代发信息");
+ // #endregion
+
+ // #region 查询订单Sku
+ // currentProgress = "查询订单Sku";
+ // var orderSkuList = fsql.Select().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().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(orderDropshipping.OrderId).ToOne();
+ // if (orderCost == null)
+ // throw new BusinessException("订单成本不存在");
+ // #endregion
+
+ // #region 查询成本明细
+ // currentProgress = "查询成本明细";
+ // var orderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == orderDropshipping.OrderId).ToList();
+ // if (orderCostDetailList == null || orderCostDetailList.Count() == 0)
+ // throw new BusinessException("订单成本明细不存在");
+ // #endregion
+
+ // #region 查询采购账号
+ // currentProgress = "查询采购账号";
+ // var purchaseAccount = fsql.Select().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().Where(p => p.OrderId == orderDropshipping.OrderId);
+ // #endregion
+
+ // #region 查询订单
+ // currentProgress = "查询订单";
+ // var dbOrder = fsql.Select(orderDropshipping.OrderId).ToOne();
+ // if (dbOrder == null)
+ // throw new BusinessException("订单不存在");
+ // #endregion
+
+ // IList> updatePurchaseOrders = new List>();
+ // IList> updateOrderCostDetails = new List>();
+
+ // 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().SetSource(purchaseOrder));
+ // updateOrderCostDetails.Add(fsql.Update().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().SetSource(orderCost).ExecuteAffrows();
+ // fsql.Update().SetSource(orderDropshipping).ExecuteAffrows();
+ // });
+ // }
+ // catch (Exception ex)
+ // {
+ // nLogManager.Default().Error(ex, $"OrderPriceModificationCallback 回调平台{callbackPlatform},采购单号{purchaseOrderId},执行进度[{currentProgress}]");
+ // }
+ //}
}
}
diff --git a/BBWYB.Server.Business/Vender/VenderBusiness.cs b/BBWYB.Server.Business/Vender/VenderBusiness.cs
index e35eb70..3cc46b7 100644
--- a/BBWYB.Server.Business/Vender/VenderBusiness.cs
+++ b/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 GetShopList(long? shopId = null, Enums.Platform? platform = null, bool filterTurnoverDays = false, bool filterSiNan = false)
+ public IList GetShopList(long? shopId = null, Enums.Platform? platform = null)
{
return fsqlManager.MDSfsql.Select().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();
}
@@ -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(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(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(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(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(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 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
+ });
+ }
}
}
diff --git a/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs b/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs
index bad26a4..acec0c1 100644
--- a/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs
+++ b/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; }
}
}
diff --git a/BBWYB.Server.Model/Db/PurchaseAccount/PurchaseAccount.cs b/BBWYB.Server.Model/Db/PurchaseAccount/PurchaseAccount.cs
deleted file mode 100644
index 2bff6e8..0000000
--- a/BBWYB.Server.Model/Db/PurchaseAccount/PurchaseAccount.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-using FreeSql.DataAnnotations;
-
-namespace BBWYB.Server.Model.Db
-{
-
- ///
- /// 采购账号表
- ///
- [Table(Name = "purchaseaccount", DisableSyncStructure = true)]
- public partial class PurchaseAccount
- {
-
- ///
- /// 主键
- ///
- [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; }
-
- ///
- /// 创建时间
- ///
- [Column(DbType = "datetime")]
- public DateTime CreateTime { get; set; }
-
- ///
- /// 创建人Id
- ///
- [Column(StringLength = 50)]
- public string CreatorId { get; set; }
-
- ///
- /// 否已删除
- ///
- [Column(DbType = "tinyint(4)")]
- public sbyte Deleted { get; set; }
-
- [Column(DbType = "int(1)", MapType = typeof(int?))]
- public Enums.Platform? PurchasePlatformId { get; set; }
-
- ///
- /// 采购账号归属店铺ID
- ///
- [Column(DbType = "bigint(1)")]
- public long? ShopId { get; set; }
-
- }
-
-
-
-
-
-}
diff --git a/BBWYB.Server.Model/Dto/Request/Order/OutStockRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/OutStockRequest.cs
new file mode 100644
index 0000000..89e2c27
--- /dev/null
+++ b/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; }
+ }
+}
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CreateOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CreateOrderRequest.cs
index cfee326..39bd5bc 100644
--- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CreateOrderRequest.cs
+++ b/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; }
}
}
diff --git a/BBWYB.Server.Model/Dto/Response/Logistics/LogisticsResponse.cs b/BBWYB.Server.Model/Dto/Response/Logistics/LogisticsResponse.cs
new file mode 100644
index 0000000..23bf2bf
--- /dev/null
+++ b/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; }
+ }
+}
diff --git a/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_ExpressClient.cs b/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_ExpressClient.cs
new file mode 100644
index 0000000..25d7f93
--- /dev/null
+++ b/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 expressCompanyList;
+
+ public QuanTan_Supplier_ExpressClient(RestApiService restApiService) : base(restApiService)
+ {
+ expressCompanyList = new List()
+ {
+ 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 GetExpressCompanyList()
+ {
+ return expressCompanyList;
+ }
+ }
+}
diff --git a/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_OrderClient.cs b/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_OrderClient.cs
index 1a19457..59bde3a 100644
--- a/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_OrderClient.cs
+++ b/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_OrderClient.cs
@@ -14,5 +14,10 @@ namespace QuanTan.SDK.Client.Supplier
{
return SendRequest("api/platform/supply/order/list", request, appId, appSecret);
}
+
+ public QuanTanResponse