From 57c0156fe021f9c690993e91da5dd280187f4fad Mon Sep 17 00:00:00 2001 From: liaoxujun@qq.com <liaoxujun@qq.com> Date: 星期二, 01 八月 2023 17:15:03 +0800 Subject: [PATCH] Merge branch 'master' of http://47.108.235.38:8080/r/DocumentService --- DocumentServiceAPI.Web.Core/Handlers/DSRESTfulResultProvider.cs | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 110 insertions(+), 0 deletions(-) diff --git a/DocumentServiceAPI.Web.Core/Handlers/DSRESTfulResultProvider.cs b/DocumentServiceAPI.Web.Core/Handlers/DSRESTfulResultProvider.cs new file mode 100644 index 0000000..988f3aa --- /dev/null +++ b/DocumentServiceAPI.Web.Core/Handlers/DSRESTfulResultProvider.cs @@ -0,0 +1,110 @@ +锘縰sing DocumentServiceAPI.Model; +using Furion; +using Furion.DataValidation; +using Furion.FriendlyException; +using Furion.UnifyResult; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Filters; +using System; +using System.Threading.Tasks; + +namespace DocumentServiceAPI.Web.Core +{ + /// <summary> + /// 缁熶竴杩斿洖 + /// </summary> + [UnifyModel(typeof(DSFulResult<>))] + public class DSRESTFulResultProvider : IUnifyResultProvider + { + /// <summary> + /// 寮傚父杩斿洖鍊� + /// </summary> + /// <param name="context"></param> + /// <param name="metadata"></param> + /// <returns></returns> + public IActionResult OnException(ExceptionContext context, ExceptionMetadata metadata) + { + + return new JsonResult(DsFulResult(metadata.StatusCode, Code:0, data: metadata.Data, errors: metadata.Errors) + , UnifyContext.GetSerializerSettings(context)); // 褰撳墠琛屼粎闄� Furion 4.6.6+ 浣跨敤 + } + + /// <summary> + /// 鎴愬姛杩斿洖鍊� + /// </summary> + /// <param name="context"></param> + /// <param name="data"></param> + /// <returns></returns> + public IActionResult OnSucceeded(ActionExecutedContext context, object data) + { + return new JsonResult(DsFulResult(StatusCodes.Status200OK, 1, data) + , UnifyContext.GetSerializerSettings(context)); // 褰撳墠琛屼粎闄� Furion 4.6.6+ 浣跨敤 + } + + /// <summary> + /// 楠岃瘉澶辫触杩斿洖鍊� + /// </summary> + /// <param name="context"></param> + /// <param name="metadata"></param> + /// <returns></returns> + public IActionResult OnValidateFailed(ActionExecutingContext context, ValidationMetadata metadata) + { + //璁剧疆杩斿洖鐘舵�佺爜 + + return new JsonResult(DsFulResult(metadata.StatusCode ?? StatusCodes.Status400BadRequest, Code: 0, data: metadata.Data, errors: metadata.ValidationResult) + , UnifyContext.GetSerializerSettings(context)); // 褰撳墠琛屼粎闄� Furion 4.6.6+ 浣跨敤 + } + + /// <summary> + /// 鐗瑰畾鐘舵�佺爜杩斿洖鍊� + /// </summary> + /// <param name="context"></param> + /// <param name="statusCode"></param> + /// <param name="unifyResultSettings"></param> + /// <returns></returns> + public async Task OnResponseStatusCodes(HttpContext context, int statusCode, UnifyResultSettingsOptions unifyResultSettings) + { + // 璁剧疆鍝嶅簲鐘舵�佺爜 + UnifyContext.SetResponseStatusCodes(context, statusCode, unifyResultSettings); + + switch (statusCode) + { + // 澶勭悊 401 鐘舵�佺爜 + case StatusCodes.Status401Unauthorized: + await context.Response.WriteAsJsonAsync(DsFulResult(statusCode,Code:0, errors: "401 Unauthorized") + , App.GetOptions<JsonOptions>()?.JsonSerializerOptions); + break; + // 澶勭悊 403 鐘舵�佺爜 + case StatusCodes.Status403Forbidden: + await context.Response.WriteAsJsonAsync(DsFulResult(statusCode, Code: 0, errors: "403 Forbidden") + , App.GetOptions<JsonOptions>()?.JsonSerializerOptions); + break; + + default: break; + } + } + + /// <summary> + /// 杩斿洖 RESTful 椋庢牸缁撴灉闆� + /// </summary> + /// <param name="statusCode"></param> + /// <param name="Code">鎴愬姛鐘舵�佺爜</param> + /// <param name="data"></param> + /// <param name="errors"></param> + /// <returns></returns> + private static DSFulResult<object> DsFulResult(int statusCode, int Code = 1, object data = default, object errors = default) + { + return new DSFulResult<object> + { + Code = Code, + StatusCode= statusCode, + Data = data, + Error = errors, + Extras = UnifyContext.Take(), + Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() + }; + } + } +} + -- Gitblit v1.9.1