From d15c7b633d46c36e6501da7617627fb07318622e Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 9 May 2023 01:14:14 +0800 Subject: [PATCH] =?UTF-8?q?B=E7=AB=AF=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extensions/EncryptionExtension.cs | 82 +++++++++++++++++++ .../Controllers/OrderController.cs | 22 ++++- .../Controllers/PurchaseOrderController.cs | 2 + .../Controllers/VenderController.cs | 4 +- BBWYB.Server.Business/Order/OrderBusiness.cs | 29 ++++++- .../Dto/Request/Order/CancelOrderRequest.cs | 9 ++ .../Supplier/QuanTan_Supplier_OrderClient.cs | 5 ++ .../QuanTan_Supplier_CancelOrderRequest.cs | 11 +++ .../Client/Base/OP_PlatformClient.cs | 5 ++ .../Client/Impl/OP_QuanTanClient.cs | 7 ++ .../Request/Order/OP_CancelOrderRequest.cs | 10 +++ 11 files changed, 180 insertions(+), 6 deletions(-) create mode 100644 BBWYB.Common/Extensions/EncryptionExtension.cs create mode 100644 BBWYB.Server.Model/Dto/Request/Order/CancelOrderRequest.cs create mode 100644 QuanTan.SDK/Models/Supplier/Request/Order/QuanTan_Supplier_CancelOrderRequest.cs create mode 100644 SDKAdapter/OperationPlatform/Models/Request/Order/OP_CancelOrderRequest.cs diff --git a/BBWYB.Common/Extensions/EncryptionExtension.cs b/BBWYB.Common/Extensions/EncryptionExtension.cs new file mode 100644 index 0000000..5a5b9c0 --- /dev/null +++ b/BBWYB.Common/Extensions/EncryptionExtension.cs @@ -0,0 +1,82 @@ +using System.Security.Cryptography; +using System.Text; + +namespace BBWYB.Common.Extensions +{ + public static class EncryptionExtension + { + + public static string Md5Encrypt(this string originStr) + { + using (var md5 = MD5.Create()) + { + return string.Join(string.Empty, md5.ComputeHash(Encoding.UTF8.GetBytes(originStr)).Select(x => x.ToString("x2"))); + } + } + + //AES加密 传入,要加密的串和, 解密key + public static string AESEncrypt(this string input) + { + var key = "dataplatform2019"; + var ivStr = "1012132405963708"; + + var encryptKey = Encoding.UTF8.GetBytes(key); + var iv = Encoding.UTF8.GetBytes(ivStr); //偏移量,最小为16 + using (var aesAlg = Aes.Create()) + { + using (var encryptor = aesAlg.CreateEncryptor(encryptKey, iv)) + { + using (var msEncrypt = new MemoryStream()) + { + using (var csEncrypt = new CryptoStream(msEncrypt, encryptor, + CryptoStreamMode.Write)) + + using (var swEncrypt = new StreamWriter(csEncrypt)) + { + swEncrypt.Write(input); + } + var decryptedContent = msEncrypt.ToArray(); + + return Convert.ToBase64String(decryptedContent); + } + } + } + } + + public static string AESDecrypt(this string cipherText) + { + var fullCipher = Convert.FromBase64String(cipherText); + + var ivStr = "1012132405963708"; + var key = "dataplatform2019"; + + var iv = Encoding.UTF8.GetBytes(ivStr); + var decryptKey = Encoding.UTF8.GetBytes(key); + + using (var aesAlg = Aes.Create()) + { + using (var decryptor = aesAlg.CreateDecryptor(decryptKey, iv)) + { + string result; + using (var msDecrypt = new MemoryStream(fullCipher)) + { + using (var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) + { + using (var srDecrypt = new StreamReader(csDecrypt)) + { + result = srDecrypt.ReadToEnd(); + } + } + } + + return result; + } + } + } + + public static string Base64Encrypt(this string originStr) + { + return Convert.ToBase64String(Encoding.UTF8.GetBytes(originStr)); + } + } +} diff --git a/BBWYB.Server.API/Controllers/OrderController.cs b/BBWYB.Server.API/Controllers/OrderController.cs index 3cde242..f27f6d1 100644 --- a/BBWYB.Server.API/Controllers/OrderController.cs +++ b/BBWYB.Server.API/Controllers/OrderController.cs @@ -1,10 +1,13 @@ using BBWYB.Server.Business; using BBWYB.Server.Model.Dto; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Primitives; namespace BBWYB.Server.API.Controllers { - + [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] public class OrderController : BaseApiController { private OrderBusiness orderBusiness; @@ -29,9 +32,22 @@ namespace BBWYB.Server.API.Controllers /// /// [HttpPost] - public void OutStock([FromBody]OutStockRequest request) - { + public void OutStock([FromBody] OutStockRequest request) + { orderBusiness.OutStock(request); } + + /// + /// 取消订单 + /// + /// + [HttpPost] + public void CancelOrder([FromBody] CancelOrderRequest request) + { + if (!httpContextAccessor.HttpContext.Request.Headers.TryGetValue("Authorization", out StringValues token)) + throw new Exception("未获取到token"); + + orderBusiness.CancelOrder(request, token.ToString()); + } } } diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs index e4b4f06..98e3bfe 100644 --- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs @@ -1,10 +1,12 @@ using BBWYB.Server.Business; using BBWYB.Server.Model.Dto; +using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace BBWYB.Server.API.Controllers { + [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] public class PurchaseOrderController : BaseApiController { private PurchaseOrderBusiness purchaseOrderBusiness; diff --git a/BBWYB.Server.API/Controllers/VenderController.cs b/BBWYB.Server.API/Controllers/VenderController.cs index cba0fc7..6b101ca 100644 --- a/BBWYB.Server.API/Controllers/VenderController.cs +++ b/BBWYB.Server.API/Controllers/VenderController.cs @@ -1,10 +1,12 @@ using BBWYB.Server.Business; using BBWYB.Server.Model.Dto; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace BBWYB.Server.API.Controllers { - + [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] public class VenderController : BaseApiController { private VenderBusiness venderBusiness; diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 5f379fd..91b1805 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -1,4 +1,5 @@ using BBWYB.Common.Extensions; +using BBWYB.Common.Http; using BBWYB.Common.Log; using BBWYB.Common.Models; using BBWYB.Server.Model; @@ -18,10 +19,11 @@ namespace BBWYB.Server.Business public class OrderBusiness : BaseBusiness, IDenpendency { private OP_PlatformClientFactory opPlatformClientFactory; - - public OrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, OP_PlatformClientFactory opPlatformClientFactory) : base(fsql, nLogManager, idGenerator) + private RestApiService restApiService; + public OrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, OP_PlatformClientFactory opPlatformClientFactory, RestApiService restApiService) : base(fsql, nLogManager, idGenerator) { this.opPlatformClientFactory = opPlatformClientFactory; + this.restApiService = restApiService; } private ISelect GetOrderListQueryConditions(QueryOrderRequest request) @@ -207,5 +209,28 @@ namespace BBWYB.Server.Business // .Set(o => o.ExpressName, request.ExpressName) // .ExecuteAffrows(); } + + public void CancelOrder(CancelOrderRequest request, string mdsToken) + { + opPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.Platform).CancelOrder(new OP_CancelOrderRequest() + { + AppKey = request.AppKey, + AppSecret = request.AppSecret, + AppToken = request.AppToken, + OrderId = request.OrderId, + Platform = (AdapterEnums.PlatformType)request.Platform, + Remark = request.Remark + }); + + fsql.Update(request.OrderId).Set(o => o.OrderState, Enums.OrderState.已取消).ExecuteAffrows(); + + var sql = $"update purchaseorderv2 set OrderState=7 where Id='{request.OrderId}'"; + //取消C端采购单 + restApiService.SendRequest("https://bbwy.qiyue666.com", + "/Api/Sql/ExecuteNonQuery", + new { sql = sql.AESEncrypt() }, + new Dictionary() { { "Authorization", $"{mdsToken}" } }, + HttpMethod.Post); + } } } diff --git a/BBWYB.Server.Model/Dto/Request/Order/CancelOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/CancelOrderRequest.cs new file mode 100644 index 0000000..56c6b0b --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/Order/CancelOrderRequest.cs @@ -0,0 +1,9 @@ +namespace BBWYB.Server.Model.Dto +{ + public class CancelOrderRequest: PlatformRequest + { + public string OrderId { get; set; } + + public string Remark { get; set; } + } +} diff --git a/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_OrderClient.cs b/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_OrderClient.cs index 59bde3a..96baf96 100644 --- a/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_OrderClient.cs +++ b/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_OrderClient.cs @@ -19,5 +19,10 @@ namespace QuanTan.SDK.Client.Supplier { return SendRequest("api/platform/supply/order/delivery", request, appId, appSecret); } + + public QuanTanResponse CancelOrder(QuanTan_Supplier_CancelOrderRequest request, string appId, string appSecret) + { + return SendRequest("api/platform/supply/order/cancel", request, appId, appSecret); + } } } diff --git a/QuanTan.SDK/Models/Supplier/Request/Order/QuanTan_Supplier_CancelOrderRequest.cs b/QuanTan.SDK/Models/Supplier/Request/Order/QuanTan_Supplier_CancelOrderRequest.cs new file mode 100644 index 0000000..ee48d14 --- /dev/null +++ b/QuanTan.SDK/Models/Supplier/Request/Order/QuanTan_Supplier_CancelOrderRequest.cs @@ -0,0 +1,11 @@ +namespace QuanTan.SDK.Models.Supplier +{ + public class QuanTan_Supplier_CancelOrderRequest + { + public string editAdmin { get; set; } + + public string orderId { get; set; } + + public string remark { get; set; } + } +} diff --git a/SDKAdapter/OperationPlatform/Client/Base/OP_PlatformClient.cs b/SDKAdapter/OperationPlatform/Client/Base/OP_PlatformClient.cs index 6ff418c..e0c59ac 100644 --- a/SDKAdapter/OperationPlatform/Client/Base/OP_PlatformClient.cs +++ b/SDKAdapter/OperationPlatform/Client/Base/OP_PlatformClient.cs @@ -41,5 +41,10 @@ namespace SDKAdapter.OperationPlatform.Client { throw new NotImplementedException(); } + + public virtual void CancelOrder(OP_CancelOrderRequest request) + { + throw new NotImplementedException(); + } } } diff --git a/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs b/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs index 03fc02c..c22b763 100644 --- a/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs +++ b/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs @@ -187,5 +187,12 @@ namespace SDKAdapter.OperationPlatform.Client ExpressName = p.ExpressName, }).ToList(); } + + public override void CancelOrder(OP_CancelOrderRequest request) + { + var qtResponse = supplier_OrderClient.CancelOrder(new QuanTan_Supplier_CancelOrderRequest(), request.AppKey, request.AppSecret); + if (qtResponse.Status != 200) + throw new Exception(qtResponse.Message); + } } } diff --git a/SDKAdapter/OperationPlatform/Models/Request/Order/OP_CancelOrderRequest.cs b/SDKAdapter/OperationPlatform/Models/Request/Order/OP_CancelOrderRequest.cs new file mode 100644 index 0000000..65114e1 --- /dev/null +++ b/SDKAdapter/OperationPlatform/Models/Request/Order/OP_CancelOrderRequest.cs @@ -0,0 +1,10 @@ +namespace SDKAdapter.OperationPlatform.Models +{ + public class OP_CancelOrderRequest: BasePlatformRequest + { + public string OrderId { get; set; } + + public string Remark { get; set; } + + } +}