sunpengfei
2025-08-11 bbd4b2cecc2d8b9b141ffdf45ef5db51a0a0f53e
FlexJobApi.Core/Utils/FriendlyResultUtils/FriendlyResultProvider.cs
@@ -5,6 +5,7 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.CodeAnalysis;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -31,6 +32,7 @@
                GetResult(
                    metadata.StatusCode,
                    data: metadata.Data,
                    errorCode: metadata.ErrorCode.ToString(),
                    errors: metadata.Errors),
                UnifyContext.GetSerializerSettings(context));
        }
@@ -47,6 +49,7 @@
                GetResult(
                    metadata.StatusCode,
                    data: metadata.Data,
                    errorCode: metadata.ErrorCode?.ToString() ?? "s500",
                    errors: metadata.Errors)
                , UnifyContext.GetSerializerSettings(context));
        }
@@ -75,11 +78,13 @@
        /// <returns></returns>
        public IActionResult OnValidateFailed(ActionExecutingContext context, ValidationMetadata metadata)
        {
            UnifyContext.Fill(metadata.ValidationResult);
            return new JsonResult(
                GetResult(
                    metadata.StatusCode ?? StatusCodes.Status400BadRequest,
                    data: metadata.Data,
                    errors: metadata.ValidationResult),
                    errorCode: "s400",
                    errors: "参数错误"),
                UnifyContext.GetSerializerSettings(context));
        }
@@ -104,16 +109,18 @@
                case StatusCodes.Status401Unauthorized:
                    await context.Response.WriteAsJsonAsync(
                        GetResult(
                            statusCode,
                            errors: "401 Unauthorized"),
                            statusCode,
                            errorCode: "401",
                            errors: "401 Unauthorized"),
                        App.GetOptions<JsonOptions>()?.JsonSerializerOptions);
                    break;
                // 处理 403 状态码
                case StatusCodes.Status403Forbidden:
                    await context.Response.WriteAsJsonAsync(
                        GetResult(
                            statusCode,
                            errors: "403 Forbidden"),
                            statusCode,
                            errorCode: "403",
                            errors: "403 Forbidden"),
                        App.GetOptions<JsonOptions>()?.JsonSerializerOptions);
                    break;
                default: break;
@@ -126,17 +133,19 @@
        /// <param name="statusCode"></param>
        /// <param name="succeeded"></param>
        /// <param name="data"></param>
        /// <param name="errorCode"></param>
        /// <param name="errors"></param>
        /// <returns></returns>
        private static FriendlyResult<object> GetResult(int statusCode, bool succeeded = default, object data = default, object errors = default)
        private static FriendlyResult<object> GetResult(int statusCode, bool succeeded = default, object data = default, string errorCode = null, object errors = default)
        {
            return new FriendlyResult<object>
            {
                TraceId = App.GetTraceId(),
                Code = statusCode,
                ErrorCode = errorCode,
                Success = succeeded,
                Data = data,
                Errors = errors,
                Msg = errors,
                Extras = UnifyContext.Take(),
                Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
            };