fix(提现): 修复路径参数未回填导致的参数校验恒失败并给出字段级提示
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m37s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m37s
提现资料资格提交对任何请求都返回 1001。根因是 ShopID 为 json:"-" 的路径字段, Handler 在 c.Params 解析前就执行 validator.Struct,required 校验恒失败; 提现重提与提现驳回存在同一缺陷。 - 路径参数在解析后、校验前回填 DTO(资格提交 shop_id、资格作废 id、重提 shop_id/id、驳回 id) - 校验失败改用 validationMessage 输出首个失败字段与规则,字段名取 DTO 中文 description,不拼接底层错误文本、不回显字段值 - 工程约束新增 ENG-ERR-002 固化上述规则 验证:驱动真实 Handler 与全局 ErrorHandler,原始请求体已通过校验; 缺附件、非法主体类型、超长身份证号、缺作废原因等均返回可定位提示。
This commit is contained in:
@@ -66,8 +66,10 @@ func (h *CommissionWithdrawalHandler) RejectWithdrawal(c *fiber.Ctx) error {
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return errors.New(errors.CodeInvalidParam, "请求参数解析失败")
|
||||
}
|
||||
// id 只来自路径,必须在校验前回填,否则 ID 的 required 恒失败。
|
||||
req.ID = uint(id)
|
||||
if err := h.validator.Struct(&req); err != nil {
|
||||
return errors.New(errors.CodeInvalidParam)
|
||||
return errors.New(errors.CodeInvalidParam, validationMessage("提现驳回参数不合法", &req, err))
|
||||
}
|
||||
|
||||
result, err := h.service.Reject(c.UserContext(), uint(id), &req)
|
||||
|
||||
Reference in New Issue
Block a user