using System.Diagnostics; using JNPF.Common.Core.Manager; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.Extras.CollectiveOAuth.Utils; using JNPF.Systems.Interfaces.Permission; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using SqlSugar; using Tnb.BasicData.Entities; namespace Tnb.BasicData { /// /// 第三方接口发送记录 /// [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] public class ThirdApiRecordService : IDynamicApiController, ITransient { private readonly ISqlSugarRepository _repository; private readonly IUserManager _userManager; public ThirdApiRecordService( ISqlSugarRepository repository, IUserManager userManager ) { _repository = repository; _userManager = userManager; } [HttpGet] public async Task Send(string id) { var db = _repository.AsSugarClient(); string response = ""; ThirdWebapiRecord record = await _repository.GetSingleAsync(x=>x.id==id); DateTime now = DateTime.Now; Stopwatch stopwatch = Stopwatch.StartNew(); switch (record.method.ToUpper()) { case "GET": response = HttpUtils.RequestGet(record.url); break; case "POST": response = HttpUtils.RequestPost(record.url, record.request_data); break; } stopwatch.Stop(); var elapsedMilliseconds = stopwatch.ElapsedMilliseconds; ThirdResult thirdResult = new ThirdResult(); try { thirdResult = JsonConvert.DeserializeObject(response); } catch (Exception e) { thirdResult.Code = 500; thirdResult.msgResult = response; } if (thirdResult.Code == 200) { await db.Updateable() .SetColumns(x => x.response_data == response) .SetColumns(x => x.response_code == thirdResult.Code) .SetColumns(x => x.last_send_time == now) .SetColumns(x => x.response_time == elapsedMilliseconds) .SetColumns(x => x.send_type == "手动") .SetColumns(x => x.status == 1) .Where(x=>x.id==record.id) .ExecuteCommandAsync(); } else { await db.Updateable() .SetColumns(x => x.response_data == response) .SetColumns(x => x.response_code == thirdResult.Code) .SetColumns(x => x.last_send_time == now) .SetColumns(x => x.response_time == elapsedMilliseconds) .Where(x=>x.id==record.id) .ExecuteCommandAsync(); } return thirdResult.Code == 200 ? "成功" : "失败"; } } }