1
dengjunjie
14 小时以前 1e51362930c77f4c4693039a8f68101025fea7e5
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/ApiInfoService.cs
@@ -1,6 +1,7 @@
using 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}接口配置信息!请检查接口配置");
                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();
            }
        }
    }
}