From bcbddb95b46178373b037bb203b0da6995d75ec5 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Mon, 8 Apr 2024 15:46:42 +0800 Subject: [PATCH] fix IgnoreDataCase --- .../Controllers/GainfosController.cs | 1 + .../Filters/IgnoreDataCaseAttribute.cs | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 Src/Dlhis.Basic/Organization/Filters/IgnoreDataCaseAttribute.cs diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs index 76c5bafe..7c1eed49 100644 --- a/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs @@ -120,6 +120,7 @@ public class GainfosController : ControllerBase /// /// /// + [IgnoreDataCase] [HttpPost("faces")] public async Task> GetFaceByUserCodesAsync(GetFaceByUserCodesRequest request) { diff --git a/Src/Dlhis.Basic/Organization/Filters/IgnoreDataCaseAttribute.cs b/Src/Dlhis.Basic/Organization/Filters/IgnoreDataCaseAttribute.cs new file mode 100644 index 00000000..7af59c1e --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Filters/IgnoreDataCaseAttribute.cs @@ -0,0 +1,40 @@ +using System.Text; +using Kurisu.Core.Result; +using Kurisu.Core.Result.Abstractions; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Filters; +using Newtonsoft.Json; + +namespace Dlhis.Basic.Organization.Filters; + +[AttributeUsage(AttributeTargets.Method)] +public class IgnoreDataCaseAttribute : Attribute, IAsyncResultFilter +{ + public async Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next) + { + if (context.Result is ObjectResult result) + { + var type = result.Value?.GetType(); + if (type.IsGenericType && type.IsAssignableTo(typeof(IApiResult))) + { + var apiResult = result.Value as DefaultApiResult; + + var body = new + { + code = 200, + msg = "操作成功", + data = apiResult.Data + }; + + var json = JsonConvert.SerializeObject(body); + var bytes = Encoding.UTF8.GetBytes(json); + + context.HttpContext.Response.ContentType = "application/json"; + context.HttpContext.Response.ContentLength = bytes.Length; + await context.HttpContext.Response.BodyWriter.WriteAsync(bytes); + } + } + + await next(); + } +}