using System; using System.Collections.Generic; using System.Linq; 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; namespace WIDESEAWCS_BasicInfoService { public class ApiInfoService : ServiceBase>, IApiInfoService { private readonly IInterfaceLogService _interfaceLogService; public ApiInfoService(IRepository BaseDal, IInterfaceLogService interfaceLogService) : base(BaseDal) { _interfaceLogService = interfaceLogService; } public IRepository Repository => BaseDal; /// /// Post接口请求 /// /// 接口编号 /// 请求内容 /// 备注 /// 是否添加日志 /// public WebResponseContent PostInterfaceRequest(string apiCode, string requestParameters, string remark, bool isAdd = true) { WebResponseContent content = new WebResponseContent(); string response = 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("四向车")) { FOURBOTReturn fOURBOTReturn = response.DeserializeObject(); 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) { Dt_InterfaceLog interfaceLog = new Dt_InterfaceLog() { 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); } } return content; } } }