dengjunjie
12 小时以前 a8367fa42d18c40407408c79e8a5fd32cd09f05c
´úÂë¹ÜÀí/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;
@@ -9,6 +10,7 @@
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO;
using WIDESEAWCS_DTO.RGV.FOURBOT;
using WIDESEAWCS_DTO.WMS;
using WIDESEAWCS_IBasicInfoService;
using WIDESEAWCS_Model.Models;
@@ -36,12 +38,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}响应内容转换实体失败!");
@@ -50,15 +56,24 @@
                }
                else if (apiInfo.Remark.Contains("凯乐士"))
                {
                    GALAXISReturn gALAXISReturn = response.DeserializeObject<GALAXISReturn>();
                    if (gALAXISReturn == null) throw new Exception($"{apiInfo.Remark}响应内容转换实体失败");
                    if (gALAXISReturn.data.returnStatus != 0) throw new Exception(gALAXISReturn.data.returnInfo);
                    content.Data = gALAXISReturn;
                }
                else if (apiInfo.Remark.Contains("海康"))
                {
                    HIKROBOTReturn hIKROBOTReturn = response.DeserializeObject<HIKROBOTReturn>();
                    if (hIKROBOTReturn == null) throw new Exception($"{apiInfo.Remark}响应内容转换实体失败");
                    if (hIKROBOTReturn.code != "SUCCESS") throw new Exception(hIKROBOTReturn.message);
                    content.Data = hIKROBOTReturn;
                }
                else if (apiInfo.Remark.Contains("WMS"))
                {
                    WMSReturn wMSReturn = response.DeserializeObject<WMSReturn>();
                    if (wMSReturn == null) throw new Exception($"{apiInfo.Remark}响应内容转换实体失败");
                    if (wMSReturn.code != 200) throw new Exception(wMSReturn.message);
                    content.Data = wMSReturn;
                }
                content.OK();
            }
@@ -70,24 +85,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();
            }
        }
    }
}