From 52ba6b195a4126df405ef453d52ba6eaab6521da Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期五, 17 四月 2026 17:37:32 +0800
Subject: [PATCH] 优化3-4楼提升机以及添加报错接口

---
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ApiInfoService.cs |   74 +++++++++++++++++++++++++++++-------
 1 files changed, 59 insertions(+), 15 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ApiInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ApiInfoService.cs"
index 99a8888..8582483 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ApiInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ApiInfoService.cs"
@@ -1,6 +1,7 @@
 锘縰sing System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Security.Cryptography;
 using System.Text;
 using System.Threading.Tasks;
 using WIDESEAWCS_Core;
@@ -36,12 +37,16 @@
         {
             WebResponseContent content = new WebResponseContent();
             string response = string.Empty;
+            string requestHash = string.Empty;
+            string responseHash = string.Empty;
             Dt_ApiInfo? apiInfo = null;
             try
             {
                 apiInfo = BaseDal.QueryFirst(x => x.ApiCode == apiCode) ?? throw new Exception($"鏈壘鍒皗remark}鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
                 response = HttpHelper.Post(apiInfo.ApiAddress, requestParameters);
-                if (apiInfo.Remark.Contains("鍥涘悜杞�"))
+                requestHash = ComputeHash(requestParameters);
+                responseHash = ComputeHash(response);
+                if (apiInfo.Remark.Contains("鍥涘悜绌挎杞�"))
                 {
                     FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                     if (fOURBOTReturn == null) throw new Exception($"{apiInfo.Remark}鍝嶅簲鍐呭杞崲瀹炰綋澶辫触锛�");
@@ -70,24 +75,63 @@
             {
                 if (isAdd && !string.IsNullOrEmpty(response) && apiInfo != null)
                 {
-                    Dt_InterfaceLog interfaceLog = new Dt_InterfaceLog()
+                    #region 鏌ヨ褰撳ぉ鏄惁瀛樺湪鐩稿悓璁板綍
+                    var today = DateTime.Now.Date;
+                    var existingLog = _interfaceLogService.Repository.QueryFirst(x =>
+                        x.ApiCode == apiCode &&
+                        x.RequestParametersHash == requestHash &&
+                        x.ResponseParametersHash == responseHash &&
+                        x.CreateDate.Date == today);
+                    if (existingLog != null)
                     {
-                        ApiCode = apiCode,
-                        RequestParameters = requestParameters,
-                        ApiAddress = apiInfo.ApiAddress,
-                        ApiName = apiInfo.ApiName,
-                        PushFrequency = 1,
-                        PushState = content.Status ? 1 : 2,
-                        Requestor = "WCS",
-                        Recipient = apiInfo.Remark,
-                        ResponseParameters = response,
-                        Creater = "System",
-                        Remark = content.Status ? remark : content.Message,
-                    };
-                    _interfaceLogService.Repository.AddData(interfaceLog);
+                        existingLog.PushFrequency = existingLog.PushFrequency + 1;
+                        existingLog.PushState = content.Status ? 1 : 2;
+                        existingLog.ResponseParameters = response;
+                        existingLog.Remark = content.Status ? remark : content.Message;
+                        existingLog.Modifier = App.User?.UserName ?? "System";
+                        existingLog.ModifyDate = DateTime.Now;
+                        _interfaceLogService.Repository.UpdateData(existingLog);
+                    }
+                    #endregion
+                    else
+                    {
+                        Dt_InterfaceLog interfaceLog = new Dt_InterfaceLog()
+                        {
+                            ApiCode = apiCode,
+                            RequestParameters = requestParameters,
+                            ApiAddress = apiInfo.ApiAddress,
+                            ApiName = apiInfo.ApiName,
+                            RequestParametersHash = requestHash,
+                            ResponseParametersHash = responseHash,
+                            PushFrequency = 1,
+                            PushState = content.Status ? 1 : 2,
+                            Requestor = "WCS",
+                            Recipient = apiInfo.Remark,
+                            ResponseParameters = response,
+                            Creater = "System",
+                            Remark = content.Status ? remark : content.Message,
+                        };
+                        _interfaceLogService.Repository.AddData(interfaceLog);
+                    }
                 }
             }
             return content;
         }
+
+        /// <summary>
+        /// 璁$畻瀛楃涓茬殑SHA256鍝堝笇鍊�
+        /// </summary>
+        private static string ComputeHash(string input)
+        {
+            if (string.IsNullOrEmpty(input))
+                return string.Empty;
+
+            using (SHA256 sha256 = SHA256.Create())
+            {
+                byte[] bytes = Encoding.UTF8.GetBytes(input);
+                byte[] hashBytes = sha256.ComputeHash(bytes);
+                return BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
+            }
+        }
     }
 }

--
Gitblit v1.9.3