Skip to content

Commit 477a2c4

Browse files
committed
🎨 refactor(AspNetCore): 重构 ApiResult 类并优化相关代码
- 将 ApiResult 类中的 dynamic 类型改为 object,提高类型安全性 - 添加 Success 和 Fail 方法,简化成功和失败结果的创建 - 更新 BingControllerBase 中的相关方法,使用新的 CreateResult 方法 - 修改 StatusCode 枚举,将 NotLogin 改为 Unauthorized,更符合 HTTP 状态码的语义
1 parent a425ac9 commit 477a2c4

File tree

3 files changed

+39
-17
lines changed

3 files changed

+39
-17
lines changed

framework/src/Bing.AspNetCore/Bing/AspNetCore/Mvc/ApiResult.cs

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ public class ApiResult : JsonResult
1414
/// <param name="message">消息</param>
1515
/// <param name="data">数据</param>
1616
/// <param name="httpStatusCode">Http状态码</param>
17-
public ApiResult(int code, string message, dynamic data = null, int? httpStatusCode = null) : base(null)
17+
public ApiResult(int code, string message, object data = null, int? httpStatusCode = null)
18+
: base(null)
1819
{
1920
Code = code;
2021
Message = message;
@@ -30,13 +31,9 @@ public ApiResult(int code, string message, dynamic data = null, int? httpStatusC
3031
/// <param name="message">消息</param>
3132
/// <param name="data">数据</param>
3233
/// <param name="httpStatusCode">Http状态码</param>
33-
public ApiResult(StatusCode code, string message, dynamic data = null, int? httpStatusCode = null) : base(null)
34+
public ApiResult(StatusCode code, string message, object data = null, int? httpStatusCode = null)
35+
: this((int)code, message, data, httpStatusCode)
3436
{
35-
Code = (int)code;
36-
Message = message;
37-
Data = data;
38-
OperationTime = DateTime.Now;
39-
StatusCode = httpStatusCode;
4037
}
4138

4239
/// <summary>
@@ -52,7 +49,7 @@ public ApiResult(StatusCode code, string message, dynamic data = null, int? http
5249
/// <summary>
5350
/// 数据
5451
/// </summary>
55-
public dynamic Data { get; }
52+
public object Data { get; }
5653

5754
/// <summary>
5855
/// 操作时间
@@ -62,11 +59,35 @@ public ApiResult(StatusCode code, string message, dynamic data = null, int? http
6259
/// <summary>
6360
/// 执行结果
6461
/// </summary>
62+
/// <param name="context">操作上下文</param>
63+
/// <exception cref="ArgumentNullException">当<paramref name="context"/>为null时抛出</exception>
6564
public override Task ExecuteResultAsync(ActionContext context)
6665
{
6766
if (context == null)
6867
throw new ArgumentNullException(nameof(context));
6968
Value = new { Code = Code, Message = Message, OperationTime = OperationTime, Data = Data };
7069
return base.ExecuteResultAsync(context);
7170
}
71+
72+
/// <summary>
73+
/// 创建成功结果
74+
/// </summary>
75+
/// <param name="message">消息</param>
76+
/// <param name="data">数据</param>
77+
/// <returns>API结果</returns>
78+
public static ApiResult Success(string message = "操作成功", object data = null)
79+
{
80+
return new ApiResult(Bing.AspNetCore.Mvc.StatusCode.Ok, message, data);
81+
}
82+
83+
/// <summary>
84+
/// 创建失败结果
85+
/// </summary>
86+
/// <param name="message">消息</param>
87+
/// <param name="data">数据</param>
88+
/// <returns>API结果</returns>
89+
public static ApiResult Fail(string message = "操作失败", object data = null)
90+
{
91+
return new ApiResult(Bing.AspNetCore.Mvc.StatusCode.Fail, message, data);
92+
}
7293
}

framework/src/Bing.AspNetCore/Bing/AspNetCore/Mvc/BingControllerBase.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@ public abstract class BingControllerBase : ControllerBase
4040
/// <param name="data">数据</param>
4141
/// <param name="message">消息</param>
4242
/// <param name="statusCode">Http状态码</param>
43-
protected virtual IActionResult Success(dynamic data = null, string message = null, int? statusCode = 200)
43+
protected virtual IActionResult Success(object data = null, string message = null, int? statusCode = 200)
4444
{
4545
message ??= Bing.Properties.R.Success;
46-
return GetResult(Mvc.StatusCode.Ok.ToString("d"), message, data, statusCode);
46+
return CreateResult(Mvc.StatusCode.Ok.ToString("d"), message, data, statusCode);
4747
}
4848

4949
/// <summary>
@@ -53,17 +53,18 @@ protected virtual IActionResult Success(dynamic data = null, string message = nu
5353
/// <param name="statusCode">Http状态码</param>
5454
protected virtual IActionResult Fail(string message, int? statusCode = 200)
5555
{
56-
return GetResult(Bing.AspNetCore.Mvc.StatusCode.Fail.ToString("d"), message, null, statusCode);
56+
return CreateResult(Bing.AspNetCore.Mvc.StatusCode.Fail.ToString("d"), message, null, statusCode);
5757
}
5858

5959
/// <summary>
60-
/// 获取结果
60+
/// 创建结果
6161
/// </summary>
6262
/// <param name="code">业务状态码</param>
6363
/// <param name="message">消息</param>
6464
/// <param name="data">数据</param>
6565
/// <param name="httpStatusCode">Http状态码</param>
66-
private IActionResult GetResult(string code, string message, dynamic data, int? httpStatusCode)
66+
/// <returns>操作结果</returns>
67+
private IActionResult CreateResult(string code, string message, object data, int? httpStatusCode)
6768
{
6869
var factory = HttpContext.RequestServices.GetService<IResultFactory>();
6970
if (factory == null)

framework/src/Bing.AspNetCore/Bing/AspNetCore/Mvc/StatusCode.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ public enum StatusCode
2020
Fail = 2,
2121

2222
/// <summary>
23-
/// 尚未登录
23+
/// 未授权的请求
2424
/// </summary>
25-
[Description("尚未登录")]
26-
NotLogin = 401
27-
}
25+
[Description("未授权的请求")]
26+
Unauthorized = 401
27+
}

0 commit comments

Comments
 (0)