All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m13s
3.7 KiB
3.7 KiB
Response DTO 规范规范
MODIFIED Requirements
Requirement: Response DTO 必须包含状态文字字段
项目所有 Response DTO 中,若包含 int 类型状态字段,必须同时包含对应的 _name 或 _text 文字字段,用于显示该状态的中文描述。
Scenario: 账号列表 Response DTO
- WHEN API 返回账号列表(
GET /api/admin/accounts) - THEN 响应中每个账号对象包含
status字段(int,值:0=禁用,1=启用) - THEN 响应中同时包含
status_name字段(string,值:"禁用"或"启用") - THEN 前端可直接使用
status_name显示在 UI 上,无需维护单独的状态枚举映射表
Scenario: 资产详情 Response DTO
- WHEN API 返回单个资产信息(
GET /api/admin/assets/:id) - THEN 响应包含
status(int)和status_name(string) - WHEN 资产包含多个状态字段(如
network_status、activation_status、online_status) - THEN 每个状态字段对应一个文字字段:
network_status_name、activation_status_name、online_status_name
Scenario: 订单详情中的多重状态
- WHEN API 返回订单详情(
GET /api/admin/orders/:id) - THEN 订单对象包含
payment_status(int)和payment_status_name(string) - THEN 订单对象包含
commission_status(int)和commission_status_name(string) - THEN 若订单还有其他 int 类型状态字段,均配有对应的
_name字段
Requirement: DTO 文字字段命名规则
状态文字字段的命名应遵循统一规则:{状态字段名}_name 或 {状态字段名}_text。
Scenario: 标准命名
- WHEN 定义 DTO 时,状态字段为
Status - THEN 文字字段命名为
StatusName(推荐)或StatusText - WHEN 状态字段为
PaymentStatus - THEN 文字字段命名为
PaymentStatusName或PaymentStatusText
Scenario: JSON 序列化一致性
- WHEN DTO 序列化为 JSON 返回给客户端
- THEN 字段名使用 snake_case(符合项目 API 规范)
- Go 字段
Status→ JSONstatus - Go 字段
StatusName→ JSONstatus_name
- Go 字段
Requirement: Service 层自动赋值 _name 字段
Service 层在构建 Response DTO 时,应自动赋值 _name/_text 字段,映射状态常量到中文描述。
Scenario: 获取账号详情自动赋值
- WHEN
AccountService.GetAccount(ctx, accountID)被调用 - THEN Service 查询数据库获取账号信息
- THEN Service 构建 Response DTO,自动设置
StatusName = constants.GetAccountStatusName(account.Status) - THEN 返回完整的 DTO 给 Handler,Handler 直接序列化响应
Scenario: 列表查询批量赋值
- WHEN
AccountService.ListAccounts(ctx, query)被调用 - THEN Service 查询数据库获取账号列表
- THEN Service 遍历每个账号,批量赋值
StatusName字段 - THEN 返回完整列表
Requirement: 常量映射函数
在 pkg/constants/ 中为每个业务模块定义 Get{Module}StatusName(status int) string 函数,用于映射状态值到中文描述。
Scenario: 账号状态映射函数
- WHEN Service 层需要获取账号状态的中文描述
- THEN 调用
constants.GetAccountStatusName(status) - THEN 函数返回:
- 若
status == 0,返回"禁用" - 若
status == 1,返回"启用" - 若状态值未知,返回
"未知"(不返回空字符串)
- 若
Scenario: 订单支付状态映射函数
- WHEN Service 层需要获取订单支付状态描述
- THEN 调用
constants.GetOrderPaymentStatusName(status) - THEN 函数返回对应的中文(如 "待支付"、"已支付"、"已完成" 等)