From bcff61aee57c9e586e73b26fbb8815a3db59fb61 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 9 May 2023 00:23:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9ESQL=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=99=A8=EF=BC=8C=E5=8E=BB=E6=8E=89=E9=87=87=E8=B4=AD=E5=8D=95?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E6=8E=A5=E5=8F=A3=E5=86=97=E4=BD=99=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../APIServices/BatchPurchaseService.cs | 13 ++- .../BatchPurchaseOrderListViewModel.cs | 2 +- BBWY.Common/Extensions/EncryptionExtension.cs | 85 +++++++++++++++++++ BBWY.Server.API/Controllers/SqlController.cs | 32 +++++++ .../PlatformSDK/QuanTanBusiness.cs | 10 +-- .../BatchPurchase/BatchPurchaseBusiness.cs | 10 +-- BBWY.Server.Business/SQL/SqlBusiness.cs | 33 +++++++ .../CancelPurchaseOrderRequest.cs | 14 +-- 8 files changed, 164 insertions(+), 35 deletions(-) create mode 100644 BBWY.Common/Extensions/EncryptionExtension.cs create mode 100644 BBWY.Server.API/Controllers/SqlController.cs create mode 100644 BBWY.Server.Business/SQL/SqlBusiness.cs diff --git a/BBWY.Client/APIServices/BatchPurchaseService.cs b/BBWY.Client/APIServices/BatchPurchaseService.cs index b9c0b993..b1978a7c 100644 --- a/BBWY.Client/APIServices/BatchPurchaseService.cs +++ b/BBWY.Client/APIServices/BatchPurchaseService.cs @@ -154,20 +154,17 @@ namespace BBWY.Client.APIServices }, null, HttpMethod.Post); } - public ApiResponse CancelOrder(string orderId,Platform PurchasePlatform, PurchaseAccount purchaseAccount, string remark="") + public ApiResponse CancelOrder(string orderId, PurchaseAccount purchaseAccount, string remark="") { return SendRequest(globalContext.BBYWApiHost, "api/BatchPurchase/CancelPurchaseOrder", new { orderId, - PurchasePlatform, - purchaseAccount, + Platform = purchaseAccount.PurchasePlatformId, + purchaseAccount.AppKey, + purchaseAccount.AppSecret, + purchaseAccount.AppToken, remark, - globalContext.User.Shop.ShopId, - globalContext.User.Shop.ShopName, - globalContext.User.Shop.AppKey, - globalContext.User.Shop.AppSecret, - globalContext.User.Shop.AppToken }, null, HttpMethod.Post); } diff --git a/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseOrderListViewModel.cs b/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseOrderListViewModel.cs index 463d9ea4..44f707a2 100644 --- a/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseOrderListViewModel.cs +++ b/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseOrderListViewModel.cs @@ -96,7 +96,7 @@ namespace BBWY.Client.ViewModels var purchaseAccount = globalContext.User.Shop.PurchaseAccountList.FirstOrDefault(p => p.PurchasePlatformId == PurchasePlatform); - var res = batchPurchaseService.CancelOrder(parameters[1].ToString(), PurchasePlatform, purchaseAccount, ""); + var res = batchPurchaseService.CancelOrder(parameters[1].ToString(), purchaseAccount, ""); if (res.Success) { Task.Factory.StartNew(() => QueryPurchaseOrder(PageIndex)); diff --git a/BBWY.Common/Extensions/EncryptionExtension.cs b/BBWY.Common/Extensions/EncryptionExtension.cs new file mode 100644 index 00000000..a2f8be59 --- /dev/null +++ b/BBWY.Common/Extensions/EncryptionExtension.cs @@ -0,0 +1,85 @@ +using System; +using System.IO; +using System.Linq; +using System.Security.Cryptography; +using System.Text; + +namespace BBWY.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/BBWY.Server.API/Controllers/SqlController.cs b/BBWY.Server.API/Controllers/SqlController.cs new file mode 100644 index 00000000..1389ba15 --- /dev/null +++ b/BBWY.Server.API/Controllers/SqlController.cs @@ -0,0 +1,32 @@ +using BBWY.Server.Business; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using System.Data; + +namespace BBWY.Server.API.Controllers +{ + [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] + public class SqlController : BaseApiController + { + private SqlBusiness sqlBusiness; + + public SqlController(IHttpContextAccessor httpContextAccessor, SqlBusiness sqlBusiness) : base(httpContextAccessor) + { + this.sqlBusiness = sqlBusiness; + } + + [HttpPost] + public int ExecuteNonQuery([FromBody]BaseSqlData baseSqlData) + { + return sqlBusiness.ExecuteNonQuery(baseSqlData); + } + + [HttpPost] + public DataTable ExecuteDataTable([FromBody] BaseSqlData baseSqlData) + { + return sqlBusiness.ExecuteDataTable(baseSqlData); + } + } +} diff --git a/BBWY.Server.Business/PlatformSDK/QuanTanBusiness.cs b/BBWY.Server.Business/PlatformSDK/QuanTanBusiness.cs index c2b4b48a..091e6a23 100644 --- a/BBWY.Server.Business/PlatformSDK/QuanTanBusiness.cs +++ b/BBWY.Server.Business/PlatformSDK/QuanTanBusiness.cs @@ -78,20 +78,14 @@ namespace BBWY.Server.Business } public override CancelPurchaseOrderResponse CancelPurchaseOrder(CancelPurchaseOrderRequest request) { - - var data = request.PurchaseAccount; - var qtResponse = quanTanOrderClient.CancelOrder(new QuanTanCancelOrderRequest { orderId = request.OrderId, - userAccount = data.AccountName, + userAccount = request.AppToken, remark = request.Remark, - }, request.PurchaseAccount.AppKey, request.PurchaseAccount.AppSecret); + }, request.AppKey, request.AppSecret); if (qtResponse.Status == 200) return new CancelPurchaseOrderResponse { Success = true }; - - - if (qtResponse.Message != null&&qtResponse.Message.Contains("已删除")) { return new CancelPurchaseOrderResponse { Success = true }; diff --git a/BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs b/BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs index df803f71..813721fa 100644 --- a/BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs +++ b/BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs @@ -454,15 +454,15 @@ namespace BBWY.Server.Business public CancelPurchaseOrderResponse CancelPurchaseOrder(CancelPurchaseOrderRequest request) { - var platformSDKBusiness = platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.PurchasePlatform); + var platformSDKBusiness = platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.Platform); var payOrderResponse = platformSDKBusiness.CancelPurchaseOrder(request); if (payOrderResponse.Success) { - var order = fsql.Select().Where(p => p.Id == request.OrderId).ToOne(); - fsql.Update(order) - .Set(a => a.OrderState, Enums.PurchaseOrderState.已取消) - .ExecuteAffrows(); + //var order = fsql.Select().Where(p => p.Id == request.OrderId).ToOne(); + fsql.Update(request.OrderId) + .Set(po => po.OrderState, Enums.PurchaseOrderState.已取消) + .ExecuteAffrows(); } diff --git a/BBWY.Server.Business/SQL/SqlBusiness.cs b/BBWY.Server.Business/SQL/SqlBusiness.cs new file mode 100644 index 00000000..55b9079a --- /dev/null +++ b/BBWY.Server.Business/SQL/SqlBusiness.cs @@ -0,0 +1,33 @@ +using BBWY.Common.Extensions; +using BBWY.Common.Models; +using System.Data; +using Yitter.IdGenerator; + +namespace BBWY.Server.Business +{ + /// + /// SQL业务类,仅适用内部系统之间调用 + /// + public class SqlBusiness : BaseBusiness, IDenpendency + { + public SqlBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) + { + + } + + public int ExecuteNonQuery(BaseSqlData baseSqlData) + { + return fsql.Ado.ExecuteNonQuery(baseSqlData.Sql.AESDecrypt()); + } + + public DataTable ExecuteDataTable(BaseSqlData baseSqlData) + { + return fsql.Ado.ExecuteDataTable(baseSqlData.Sql.AESDecrypt()); + } + } + + public class BaseSqlData + { + public string Sql { get; set; } + } +} diff --git a/BBWY.Server.Model/Dto/Request/PurchaseOrderV2/BatchPurchase/CancelPurchaseOrderRequest.cs b/BBWY.Server.Model/Dto/Request/PurchaseOrderV2/BatchPurchase/CancelPurchaseOrderRequest.cs index 6bf72d6e..e2c04047 100644 --- a/BBWY.Server.Model/Dto/Request/PurchaseOrderV2/BatchPurchase/CancelPurchaseOrderRequest.cs +++ b/BBWY.Server.Model/Dto/Request/PurchaseOrderV2/BatchPurchase/CancelPurchaseOrderRequest.cs @@ -1,9 +1,4 @@ -using BBWY.Server.Model.Db; -using System; -using System.Collections.Generic; -using System.Text; - -namespace BBWY.Server.Model.Dto +namespace BBWY.Server.Model.Dto { public class CancelPurchaseOrderRequest: PlatformRequest { @@ -11,12 +6,5 @@ namespace BBWY.Server.Model.Dto public string Remark { get; set; } - - public PurchaseAccount PurchaseAccount { get; set; } - - /// - /// 采购平台 - /// - public Enums.Platform PurchasePlatform { get; set; } } }