From 0aa54059b26e6641196e9953490dd18616e916e3 Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期三, 10 九月 2025 17:26:47 +0800 Subject: [PATCH] 精简修正代码 --- service/QC/OAJyService.cs | 234 +++++++++++++++++++++++++++++++--------------------------- 1 files changed, 126 insertions(+), 108 deletions(-) diff --git a/service/QC/OAJyService.cs b/service/QC/OAJyService.cs index c7fb134..d9fd9e3 100644 --- a/service/QC/OAJyService.cs +++ b/service/QC/OAJyService.cs @@ -1,21 +1,8 @@ -锘縰sing MES.Service.Models; -using Microsoft.IdentityModel.Tokens; -using NewPdaSqlServer.Controllers; -using NewPdaSqlServer.DB; -using NewPdaSqlServer.Dto.service; -using NewPdaSqlServer.entity; -using NewPdaSqlServer.util; -using Newtonsoft.Json; -using SqlSugar; -using System.Net; +锘縰sing System.Net; using System.Security.Cryptography; using System.Text; -using static Azure.Core.HttpHeader; -using System.Security.Cryptography; -using System.Collections.Generic; -using System.Linq; -using System.Net.Security; -using System.Security.Cryptography.X509Certificates; +using NewPdaSqlServer.DB; +using Newtonsoft.Json; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; @@ -23,65 +10,30 @@ public class OAJyService : RepositoryNoEntity { - private readonly HttpClient _client = new HttpClient(); - private const string APPID = "303233EF-AC39-40C1-8364-AC989C6258A5"; + private const string SECRET = "30b41949-bcfb-48f8-9847-feb6e043fe72"; + // private const string SPK = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApobID/gwmD9OofMG1gEcE94NCMeTYUq1cam/7ADZmxHCVpF143GaHWhqDdY0TTVbcUElsQ71DzAG2j3itWlIJBK5fVGwCo3sPpAvUDdKMh+Uivcp7yxdy/IDRA/PS4JARuEyM4cVJLhIOU2KnSlbIkheeoDkDgfaxu9kKrWnozJLiYraVTVDz9PdRX7fQdP+Zu/xB9txAGw4kvOm9HwgrzaSRdZEhisTJ5yyoNW/dLXtWKXA0cKhKOOIFu12TOrv/It6hl1ShTUuy79Pa51M9Oc2dEfVs1tluNXPWo1uFXQbBaJxdqZEJJlK7iW2uQFIao2O4XFHYThwy2+6116LtwIDAQAB"; private const string HOST = "http://192.168.1.149:8099"; - private const string SPK = @"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApobID/gwmD9OofMG1gEcE94NCMeTYUq1cam/7ADZmxHCVpF143GaHWhqDdY0TTVbcUElsQ71DzAG2j3itWlIJBK5fVGwCo3sPpAvUDdKMh+Uivcp7yxdy/IDRA/PS4JARuEyM4cVJLhIOU2KnSlbIkheeoDkDgfaxu9kKrWnozJLiYraVTVDz9PdRX7fQdP+Zu/xB9txAGw4kvOm9HwgrzaSRdZEhisTJ5yyoNW/dLXtWKXA0cKhKOOIFu12TOrv/It6hl1ShTUuy79Pa51M9Oc2dEfVs1tluNXPWo1uFXQbBaJxdqZEJJlK7iW2uQFIao2O4XFHYThwy2+6116LtwIDAQAB"; + private const string SPK = + @"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApobID/gwmD9OofMG1gEcE94NCMeTYUq1cam/7ADZmxHCVpF143GaHWhqDdY0TTVbcUElsQ71DzAG2j3itWlIJBK5fVGwCo3sPpAvUDdKMh+Uivcp7yxdy/IDRA/PS4JARuEyM4cVJLhIOU2KnSlbIkheeoDkDgfaxu9kKrWnozJLiYraVTVDz9PdRX7fQdP+Zu/xB9txAGw4kvOm9HwgrzaSRdZEhisTJ5yyoNW/dLXtWKXA0cKhKOOIFu12TOrv/It6hl1ShTUuy79Pa51M9Oc2dEfVs1tluNXPWo1uFXQbBaJxdqZEJJlK7iW2uQFIao2O4XFHYThwy2+6116LtwIDAQAB"; - - public static class RsaHelper - { - public static string Encrypt(string plainText, string publicKeyPem) - { - //// 灏哖EM鏍煎紡鐨勫叕閽ヨ浆鎹负XML鏍煎紡 - //var rsa = RSA.Create(); - //rsa.ImportFromPem(publicKeyPem); // 浣跨敤.NET 5+ 鍐呯疆PEM瑙f瀽鏂规硶 - - //var parameters = rsa.ExportParameters(false); - //string publicKeyXml = $"<RSAKeyValue><Modulus>{Convert.ToBase64String(parameters.Modulus)}</Modulus><Exponent>{Convert.ToBase64String(parameters.Exponent)}</Exponent></RSAKeyValue>"; - - //using var rsaProvider = new RSACryptoServiceProvider(); - //rsaProvider.FromXmlString(publicKeyXml); // 浣跨敤杞崲鍚庣殑XML鏍煎紡鍏挜 - - //var data = Encoding.UTF8.GetBytes(plainText); - //var encrypted = rsaProvider.Encrypt(data, false); - //return Convert.ToBase64String(encrypted); - - RsaKeyParameters publicKeyParam = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(publicKeyPem)); - string XML = string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue>", - Convert.ToBase64String(publicKeyParam.Modulus.ToByteArrayUnsigned()), - Convert.ToBase64String(publicKeyParam.Exponent.ToByteArrayUnsigned())); - string encryptedContent = string.Empty; - using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) - { - rsa.FromXmlString(XML); - byte[] encryptedData = rsa.Encrypt(Encoding.Default.GetBytes(plainText), false); - encryptedContent = Convert.ToBase64String(encryptedData); - } - return encryptedContent; - } - } + private readonly HttpClient _client = new(); public string PostDataSSL(string url, - Dictionary<string, string> parameters, - Dictionary<string, string> headers) + Dictionary<string, string> parameters, + Dictionary<string, string> headers) { var request = new HttpRequestMessage(HttpMethod.Post, url); foreach (var header in headers) - { request.Headers.Add(header.Key, header.Value); - } // 濡傛灉闇�瑕佽〃鍗曞弬鏁� if (parameters.Count > 0) - { request.Content = new FormUrlEncodedContent(parameters); - } var response = _client.SendAsync(request).Result; return response.Content.ReadAsStringAsync().Result; @@ -89,7 +41,6 @@ public string GetToken() { - var userId = "1268"; var encryptedUserId = RsaHelper.Encrypt(userId, SPK); ; @@ -108,11 +59,9 @@ if (!string.IsNullOrEmpty(response)) { var res = JsonConvert.DeserializeObject<dynamic>(response); - if (res.status == "true") - { - return res.token.ToString(); - } + if (res.status == "true") return res.token.ToString(); } + return "token涓嶅瓨鍦紒"; } catch (Exception ex) @@ -192,7 +141,8 @@ try { // 鍙傛暟鏍¢獙 - if (query == null) throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓簄ull"); + if (query == null) + throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓簄ull"); //if (query.workflowId == null) throw new ArgumentException("workflowId涓嶈兘涓虹┖"); //if (query.mainData == null) throw new ArgumentException("mainData涓嶈兘涓虹┖"); @@ -208,46 +158,47 @@ // detailDataDict = ((IEnumerable<KeyValuePair<string, object>>)query.detailData) // .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); //} - + // 鍔犲瘑澶勭悊 var userId = "1268"; var encryptedUserId = RsaHelper.Encrypt(userId, SPK); - string strToken = GetToken(); + var strToken = GetToken(); // 鏇挎崲鍘熸湁鐨勬祴mainDataDict璇曟暟鎹瀯寤� mainDataDict = BuildMainDataFromQuery(query); - + // 璋冪敤鏂规硶澧炲姞userid璇锋眰澶� var result = SubmitWorkflowRequest( - token: strToken, - workflowId: 379, - mainData: mainDataDict, + strToken, + 379, + mainDataDict, requestName: "MES->OA娴嬭瘯娴佺▼鏍囬", - otherParams:null, - remark:"Test", - requestLevel:"", - encryptedUserId: encryptedUserId // 鏂板鍙傛暟 + otherParams: null, + remark: "Test", + requestLevel: "", + encryptedUserId: encryptedUserId // 鏂板鍙傛暟 ); return result; } catch (Exception ex) { // 鏇磋缁嗙殑閿欒澶勭悊 - return new { + return new + { status = -1, - message = $"瀹屾暣閿欒淇℃伅锛歿ex.ToString()}" // 鏄剧ず瀹屾暣鍫嗘爤 + message = $"瀹屾暣閿欒淇℃伅锛歿ex}" // 鏄剧ず瀹屾暣鍫嗘爤 }; } } // 淇敼鏂规硶绛惧悕 public dynamic SubmitWorkflowRequest( - string token, + string token, int workflowId, Dictionary<string, object> mainData, - string encryptedUserId, // 鐢ㄦ埛id + string encryptedUserId, // 鐢ㄦ埛id Dictionary<string, object> detailData = null, Dictionary<string, object> otherParams = null, string remark = "", @@ -256,19 +207,22 @@ { try { - ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true; + ServicePointManager.ServerCertificateValidationCallback += + (s, cert, chain, sslPolicyErrors) => true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; var url = new Uri($"{HOST}/api/workflow/paService/doCreateRequest"); var request = WebRequest.Create(url) as HttpWebRequest; request.Method = "POST"; request.Timeout = 20000; - request.ContentType = "application/x-www-form-urlencoded"; // 淇敼涓篔SON鏍煎紡 + request.ContentType = + "application/x-www-form-urlencoded"; // 淇敼涓篔SON鏍煎紡 // 鏋勫缓璇锋眰澶� request.Headers.Set("appid", APPID); request.Headers.Set("token", token); - request.Headers.Set("Content-Type", "application/x-www-form-urlencoded"); + request.Headers.Set("Content-Type", + "application/x-www-form-urlencoded"); request.Headers.Set("userId", encryptedUserId); // 鍋囪闇�瑕佸姞瀵嗙殑userid浠庡叾浠栧湴鏂硅幏鍙栵紝杩欓噷闇�瑕佽ˉ鍏呰幏鍙栭�昏緫 @@ -277,9 +231,11 @@ { //["userId"] = "1268", ["workflowId"] = workflowId, - ["mainData"] = new List<Dictionary<string, object>> { mainData }, // 鍖呰鎴愭暟缁� + ["mainData"] = + new List<Dictionary<string, object>> { mainData }, // 鍖呰鎴愭暟缁� ["detailData"] = null, - ["otherParams"] = otherParams ?? new Dictionary<string, object>(), + ["otherParams"] = + otherParams ?? new Dictionary<string, object>(), ["remark"] = remark, ["requestLevel"] = requestLevel, ["requestName"] = requestName @@ -287,7 +243,7 @@ // 搴忓垪鍖栬姹備綋 var jsonBody = JsonConvert.SerializeObject(requestBody); - byte[] byteData = Encoding.UTF8.GetBytes(jsonBody); + var byteData = Encoding.UTF8.GetBytes(jsonBody); // 鍙戦�佽姹� using (var stream = request.GetRequestStream()) @@ -302,19 +258,19 @@ using (var reader = new StreamReader(stream, Encoding.UTF8)) { var responseJson = reader.ReadToEnd(); - var result = JsonConvert.DeserializeObject<dynamic>(responseJson); - + var result = + JsonConvert.DeserializeObject<dynamic>(responseJson); + // 娣诲姞鐘舵�佺爜妫�鏌� - if (response.StatusCode != HttpStatusCode.OK || result.code != "SUCCESS") - { + if (response.StatusCode != HttpStatusCode.OK || + result.code != "SUCCESS") throw new Exception($"娴佺▼鎻愪氦澶辫触锛歿result.errMsg}"); - } - + return new { - code = result.code, - data = result.data, - errMsg = result.errMsg + result.code, + result.data, + result.errMsg }; } } @@ -325,7 +281,8 @@ using (var reader = new StreamReader(stream)) { var errorDetails = reader.ReadToEnd(); - throw new Exception($"璇锋眰澶辫触 [Status: {response.StatusCode}]: {errorDetails}"); + throw new Exception( + $"璇锋眰澶辫触 [Status: {response.StatusCode}]: {errorDetails}"); } } catch (Exception ex) @@ -342,32 +299,93 @@ { // 琛ㄧ粨鏋勫畾涔� ["tableDBName"] = "formtable_main_33", - ["workflowRequestTableRecords"] = new List<Dictionary<string, object>> - { - new Dictionary<string, object> + ["workflowRequestTableRecords"] = + new List<Dictionary<string, object>> { - ["recordOrder"] = 0, - ["workflowRequestTableFields"] = new List<Dictionary<string, object>> + new() { - new Dictionary<string, object> { ["fieldName"] = "wlbm", ["fieldValue"] = "1.01.01.001" }, - new Dictionary<string, object> { ["fieldName"] = "khgys", ["fieldValue"] = "闄堥洩骞�" }, - new Dictionary<string, object> { ["fieldName"] = "jzmcwlmc", ["fieldValue"] = "椤剁洊" }, - new Dictionary<string, object> { ["fieldName"] = "bhgpqxms", ["fieldValue"] = "澶栬涓嶅悎鏍硷紝灏哄涓嶅悎鏍硷紝棰滆壊涓嶇鍚�" }, - new Dictionary<string, object> { ["fieldName"] = "dhdhmes", ["fieldValue"] = "MES001" } + ["recordOrder"] = 0, + ["workflowRequestTableFields"] = + new List<Dictionary<string, object>> + { + new() + { + ["fieldName"] = "wlbm", + ["fieldValue"] = "1.01.01.001" + }, + new() + { + ["fieldName"] = "khgys", + ["fieldValue"] = "闄堥洩骞�" + }, + new() + { + ["fieldName"] = "jzmcwlmc", + ["fieldValue"] = "椤剁洊" + }, + new() + { + ["fieldName"] = "bhgpqxms", + ["fieldValue"] = "澶栬涓嶅悎鏍硷紝灏哄涓嶅悎鏍硷紝棰滆壊涓嶇鍚�" + }, + new() + { + ["fieldName"] = "dhdhmes", + ["fieldValue"] = "MES001" + } + } } } - } }; return mainData; } // 杈呭姪鏂规硶鐢ㄤ簬瀹夊叏娣诲姞灞炴�� - private void TryAddProperty(Dictionary<string, object> dict, string key, object value) + private void TryAddProperty(Dictionary<string, object> dict, string key, + object value) { - if (value != null) + if (value != null) dict[key] = value; + } + + + public static class RsaHelper + { + public static string Encrypt(string plainText, string publicKeyPem) { - dict[key] = value; + //// 灏哖EM鏍煎紡鐨勫叕閽ヨ浆鎹负XML鏍煎紡 + //var rsa = RSA.Create(); + //rsa.ImportFromPem(publicKeyPem); // 浣跨敤.NET 5+ 鍐呯疆PEM瑙f瀽鏂规硶 + + //var parameters = rsa.ExportParameters(false); + //string publicKeyXml = $"<RSAKeyValue><Modulus>{Convert.ToBase64String(parameters.Modulus)}</Modulus><Exponent>{Convert.ToBase64String(parameters.Exponent)}</Exponent></RSAKeyValue>"; + + //using var rsaProvider = new RSACryptoServiceProvider(); + //rsaProvider.FromXmlString(publicKeyXml); // 浣跨敤杞崲鍚庣殑XML鏍煎紡鍏挜 + + //var data = Encoding.UTF8.GetBytes(plainText); + //var encrypted = rsaProvider.Encrypt(data, false); + //return Convert.ToBase64String(encrypted); + + var publicKeyParam = + (RsaKeyParameters)PublicKeyFactory.CreateKey( + Convert.FromBase64String(publicKeyPem)); + var XML = string.Format( + "<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue>", + Convert.ToBase64String(publicKeyParam.Modulus + .ToByteArrayUnsigned()), + Convert.ToBase64String(publicKeyParam.Exponent + .ToByteArrayUnsigned())); + var encryptedContent = string.Empty; + using (var rsa = new RSACryptoServiceProvider()) + { + rsa.FromXmlString(XML); + var encryptedData = + rsa.Encrypt(Encoding.Default.GetBytes(plainText), false); + encryptedContent = Convert.ToBase64String(encryptedData); + } + + return encryptedContent; } } } \ No newline at end of file -- Gitblit v1.9.3