fix(提现): 修复路径参数未回填导致的参数校验恒失败并给出字段级提示
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:
2026-09-14 15:36:47 +08:00
parent 18796b16ff
commit 957a235585
4 changed files with 118 additions and 8 deletions

View File

@@ -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)