From 2d4ab35dd52c747ca0c68f00f88f4e4a5ec59d58 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 6 Mar 2022 05:45:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E4=BB=B7=E6=97=B6=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OnlinePurchase/OrderTradeTypeResponse.cs | 9 ++++ .../OnlinePurchase/PreviewOrderResponse.cs | 5 +++ .../Purchase/1688PreviewPurchaseViewModel.cs | 4 ++ .../BBWY.Server.Business.csproj | 4 ++ .../PlatformSDK/_1688Business.cs | 42 +++++++++++++++++-- .../OnlinePurchase/OrderTradeTypeResponse.cs | 9 ++++ .../OnlinePurchase/PreviewOrderResponse.cs | 5 +++ 7 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 BBWY.Client/Models/APIModel/Response/PurchaseOrder/OnlinePurchase/OrderTradeTypeResponse.cs create mode 100644 BBWY.Server.Model/Dto/Response/PurchaseOrder/OnlinePurchase/OrderTradeTypeResponse.cs diff --git a/BBWY.Client/Models/APIModel/Response/PurchaseOrder/OnlinePurchase/OrderTradeTypeResponse.cs b/BBWY.Client/Models/APIModel/Response/PurchaseOrder/OnlinePurchase/OrderTradeTypeResponse.cs new file mode 100644 index 00000000..258076d7 --- /dev/null +++ b/BBWY.Client/Models/APIModel/Response/PurchaseOrder/OnlinePurchase/OrderTradeTypeResponse.cs @@ -0,0 +1,9 @@ +namespace BBWY.Client.Models +{ + public class OrderTradeTypeResponse + { + public string Code { get; set; } + + public string Name { get; set; } + } +} diff --git a/BBWY.Client/Models/APIModel/Response/PurchaseOrder/OnlinePurchase/PreviewOrderResponse.cs b/BBWY.Client/Models/APIModel/Response/PurchaseOrder/OnlinePurchase/PreviewOrderResponse.cs index cc15aa01..845a2611 100644 --- a/BBWY.Client/Models/APIModel/Response/PurchaseOrder/OnlinePurchase/PreviewOrderResponse.cs +++ b/BBWY.Client/Models/APIModel/Response/PurchaseOrder/OnlinePurchase/PreviewOrderResponse.cs @@ -16,5 +16,10 @@ /// 运费 /// public decimal FreightAmount { get; set; } + + /// + /// 交易方式 + /// + public OrderTradeTypeResponse OrderTradeType { get; set; } } } diff --git a/BBWY.Client/ViewModels/Purchase/1688PreviewPurchaseViewModel.cs b/BBWY.Client/ViewModels/Purchase/1688PreviewPurchaseViewModel.cs index 5b5d486b..44845f06 100644 --- a/BBWY.Client/ViewModels/Purchase/1688PreviewPurchaseViewModel.cs +++ b/BBWY.Client/ViewModels/Purchase/1688PreviewPurchaseViewModel.cs @@ -51,6 +51,8 @@ namespace BBWY.Client.ViewModels private string town; private string prucahseRemark; + private string tradeMode; + public _1688PreviewPurchaseViewModel(OneBoundAPIService oneBoundAPIService, PurchaseOrderService purchaseOrderService) { this.oneBoundAPIService = oneBoundAPIService; @@ -209,12 +211,14 @@ namespace BBWY.Client.ViewModels if (!r.Success) { ProductAmount = FreightAmount = TotalAmount = 0; + tradeMode = string.Empty; App.Current.Dispatcher.Invoke(() => MessageBox.Show(r.Msg, "预览订单报价")); return; } ProductAmount = r.Data.ProductAmount; FreightAmount = r.Data.FreightAmount; TotalAmount = r.Data.TotalAmount; + tradeMode = r.Data.OrderTradeType?.Code; }); } } diff --git a/BBWY.Server.Business/BBWY.Server.Business.csproj b/BBWY.Server.Business/BBWY.Server.Business.csproj index c9937f02..9c1f3f0e 100644 --- a/BBWY.Server.Business/BBWY.Server.Business.csproj +++ b/BBWY.Server.Business/BBWY.Server.Business.csproj @@ -21,4 +21,8 @@ + + + + diff --git a/BBWY.Server.Business/PlatformSDK/_1688Business.cs b/BBWY.Server.Business/PlatformSDK/_1688Business.cs index 642009d2..3e049cb5 100644 --- a/BBWY.Server.Business/PlatformSDK/_1688Business.cs +++ b/BBWY.Server.Business/PlatformSDK/_1688Business.cs @@ -17,10 +17,12 @@ namespace BBWY.Server.Business { public override Enums.Platform Platform => Enums.Platform.阿里巴巴; private RestApiService restApiService; + private _1688TradeTypeCompare _1688TradeTypeCompare; public _1688Business(IMemoryCache memoryCache, ILogger logger, RestApiService restApiService) : base(memoryCache, logger) { this.restApiService = restApiService; + _1688TradeTypeCompare = new _1688TradeTypeCompare(); } private SyncAPIClient GetSyncAPIClient(string appKey, string appSecret) @@ -82,17 +84,51 @@ namespace BBWY.Server.Business request.AccessToken = previewOrderReuqest.AppToken; var result = client.NewRequest(request, reqPolicy); if (result.Value("success") != true) - { throw new BusinessException(result.Value("errorMsg")) { Code = 0 }; - } var orderPreviewResuslt = (JArray)result["orderPreviewResuslt"]; + List intersectTradeModeList = new List(); + + foreach (var orderPreviewJToken in orderPreviewResuslt) + { + if (orderPreviewJToken["tradeModelList"] == null) + throw new BusinessException("当前交易不可通过API下单,请使用1688网页交易 [交易模式列表为空]"); + var tradeModeJArray = ((JArray)orderPreviewJToken["tradeModelList"]).Where(tradeJToken => tradeJToken.Value("opSupport")); + if (tradeModeJArray.Count() == 0) + throw new BusinessException("当前交易不可通过API下单,请使用1688网页交易 [没有支持开放平台下单的交易模式]"); + + if (intersectTradeModeList.Count() == 0) + intersectTradeModeList.AddRange(tradeModeJArray); + else + intersectTradeModeList = intersectTradeModeList.Intersect(tradeModeJArray, _1688TradeTypeCompare).ToList(); + } + + if (intersectTradeModeList.Count() == 0) + throw new BusinessException("当前交易不可通过API下单,请使用1688网页交易 [多个拆单之间没有相同的交易模式]"); return new PreviewOrderResponse() { FreightAmount = orderPreviewResuslt.Sum(jt => jt.Value("sumCarriage")) / 100M, ProductAmount = orderPreviewResuslt.Sum(jt => jt.Value("sumPaymentNoCarriage")) / 100M, - TotalAmount = orderPreviewResuslt.Sum(jt => jt.Value("sumPayment")) / 100M + TotalAmount = orderPreviewResuslt.Sum(jt => jt.Value("sumPayment")) / 100M, + OrderTradeType = new OrderTradeTypeResponse() + { + Code = intersectTradeModeList.First().Value("tradeType"), + Name = intersectTradeModeList.First().Value("name"), + } }; } } + + public class _1688TradeTypeCompare : IEqualityComparer + { + public bool Equals(JToken x, JToken y) + { + return x.Value("tradeType").Equals(y.Value("tradeType")); + } + + public int GetHashCode(JToken obj) + { + return obj.GetHashCode(); + } + } } diff --git a/BBWY.Server.Model/Dto/Response/PurchaseOrder/OnlinePurchase/OrderTradeTypeResponse.cs b/BBWY.Server.Model/Dto/Response/PurchaseOrder/OnlinePurchase/OrderTradeTypeResponse.cs new file mode 100644 index 00000000..1ad9b62b --- /dev/null +++ b/BBWY.Server.Model/Dto/Response/PurchaseOrder/OnlinePurchase/OrderTradeTypeResponse.cs @@ -0,0 +1,9 @@ +namespace BBWY.Server.Model.Dto +{ + public class OrderTradeTypeResponse + { + public string Code { get; set; } + + public string Name { get; set; } + } +} diff --git a/BBWY.Server.Model/Dto/Response/PurchaseOrder/OnlinePurchase/PreviewOrderResponse.cs b/BBWY.Server.Model/Dto/Response/PurchaseOrder/OnlinePurchase/PreviewOrderResponse.cs index 5fff9c2a..e69eeead 100644 --- a/BBWY.Server.Model/Dto/Response/PurchaseOrder/OnlinePurchase/PreviewOrderResponse.cs +++ b/BBWY.Server.Model/Dto/Response/PurchaseOrder/OnlinePurchase/PreviewOrderResponse.cs @@ -16,5 +16,10 @@ /// 运费 /// public decimal FreightAmount { get; set; } + + /// + /// 支持的交易方式 + /// + public OrderTradeTypeResponse OrderTradeType { get; set; } } }