| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Security.Cryptography; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.BaseRepository; |
| | | using WIDESEAWCS_Core.BaseServices; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_DTO; |
| | | using WIDESEAWCS_DTO.RGV.FOURBOT; |
| | | using WIDESEAWCS_IBasicInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | |
| | |
| | | { |
| | | public class ApiInfoService : ServiceBase<Dt_ApiInfo, IRepository<Dt_ApiInfo>>, IApiInfoService |
| | | { |
| | | public ApiInfoService(IRepository<Dt_ApiInfo> BaseDal) : base(BaseDal) |
| | | private readonly IInterfaceLogService _interfaceLogService; |
| | | public ApiInfoService(IRepository<Dt_ApiInfo> BaseDal, IInterfaceLogService interfaceLogService) : base(BaseDal) |
| | | { |
| | | _interfaceLogService = interfaceLogService; |
| | | } |
| | | |
| | | public IRepository<Dt_ApiInfo> Repository => BaseDal; |
| | | |
| | | /// <summary> |
| | | /// Postæ¥å£è¯·æ± |
| | | /// </summary> |
| | | /// <param name="apiCode">æ¥å£ç¼å·</param> |
| | | /// <param name="requestParameters">请æ±å
容</param> |
| | | /// <param name="remark">夿³¨</param> |
| | | /// <param name="isAdd">æ¯å¦æ·»å æ¥å¿</param> |
| | | /// <returns></returns> |
| | | public WebResponseContent PostInterfaceRequest(string apiCode, string requestParameters, string remark, bool isAdd = true) |
| | | { |
| | | 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); |
| | | requestHash = ComputeHash(requestParameters); |
| | | responseHash = ComputeHash(response); |
| | | if (apiInfo.Remark.Contains("ååç©¿æ¢è½¦")) |
| | | { |
| | | FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); |
| | | if (fOURBOTReturn == null) throw new Exception($"{apiInfo.Remark}ååºå
容转æ¢å®ä½å¤±è´¥ï¼"); |
| | | if (fOURBOTReturn.returnCode != 0) throw new Exception(fOURBOTReturn.returnUserMsg); |
| | | content.Data = fOURBOTReturn; |
| | | } |
| | | else if (apiInfo.Remark.Contains("å¯ä¹å£«")) |
| | | { |
| | | |
| | | } |
| | | else if (apiInfo.Remark.Contains("海康")) |
| | | { |
| | | |
| | | } |
| | | else if (apiInfo.Remark.Contains("WMS")) |
| | | { |
| | | |
| | | } |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | if (isAdd && !string.IsNullOrEmpty(response) && apiInfo != null) |
| | | { |
| | | #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) |
| | | { |
| | | 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(); |
| | | } |
| | | } |
| | | } |
| | | } |