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