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; }
}
}