命名空间:ZhonTai.Admin.Core.Dto
统一响应包装(ResultOutput)
所有 DynamicApi 接口的返回值自动包装为统一格式。
响应结构
1 2 3 4 5 6
| { "success": true, "code": null, "msg": null, "data": {} }
|
| 字段 |
类型 |
说明 |
| Success |
bool |
是否成功 |
| Code |
string |
业务编码 |
| Msg |
string |
提示消息 |
| Data |
T |
返回数据 |
使用方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| return ResultOutput.Ok(entity);
return ResultOutput.Ok(entity, "操作成功");
return ResultOutput.Ok();
return ResultOutput.NotOk("操作失败");
return ResultOutput.Result(rows > 0);
throw ResultOutput.Exception("用户不存在");
throw ResultOutput.Exception("参数错误", "PARAM_ERROR", 400);
|
业务异常(AppException)
手动抛出的 AppException 会被全局异常过滤器捕获并转换为 ResultOutput 格式。
1 2 3
| throw new AppException("用户不存在"); throw new AppException("参数错误", "PARAM_ERROR"); throw new AppException("参数错误", "PARAM_ERROR", 400);
|
分页模型
分页输入(PageInput)
用于列表查询接口的入参。
| 属性 |
类型 |
说明 |
| CurrentPage |
int |
当前页(默认 1) |
| PageSize |
int |
每页条数(默认 20) |
| DynamicFilter |
DynamicFilterInfo |
高级查询条件 |
| SortList |
List<SortInput> |
排序列表 |
带过滤器的分页查询
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class ArticlePageInput : PageInput<ArticleFilterInput> { }
public class ArticleFilterInput { public string Title { get; set; } public int? Status { get; set; } }
public async Task<PageOutput<ArticleListOutput>> GetPageAsync(ArticlePageInput input) { var list = await _repository.Select .WhereIf(input.Filter.Title.NotNull(), a => a.Title.Contains(input.Filter.Title)) .WhereIf(input.Filter.Status.HasValue, a => a.Status == input.Filter.Status) .OrderByDescending(a => a.Id) .ToPageOutputAsync(input);
return list; }
|
无过滤器的分页查询
1 2 3 4
| public class MyQueryInput : PageInput { public string Keyword { get; set; } }
|
分页输出(PageOutput)
1 2 3 4 5
| public class PageOutput<T> { public long Total { get; set; } public IList<T> List { get; set; } }
|
查询与排序
非分页查询的基类,提供排序和高级过滤能力。
1 2 3 4 5
| public abstract class QueryInput { public DynamicFilterInfo DynamicFilter { get; set; } public List<SortInput> SortList { get; set; } }
|
1 2 3 4 5
| public class SortInput { public string PropName { get; set; } public SortOrder? Order { get; set; } }
|
导入导出
1 2 3 4 5 6 7 8 9
| public class ExportInput { public string FileName { get; set; } }
public class ExportInput<T> : ExportInput { public T Filter { get; set; } }
|
导入输出(ImportOutput)
1 2 3 4 5 6
| public class ImportOutput { public long Total { get; set; } public long InsertCount { get; set; } public long UpdateCount { get; set; } }
|
状态码枚举
| 枚举值 |
值 |
说明 |
| Status0NotOk |
0 |
操作失败 |
| Status1Ok |
1 |
操作成功 |
| Status401Unauthorized |
401 |
未授权 |
| Status403Forbidden |
403 |
无权限 |
| Status404NotFound |
404 |
未找到 |
| Status500InternalServerError |
500 |
服务器错误 |
#中台 #中台/新建接口项目 #中台/数据库配置 #编程/C#