Skip to content

8.2 错误码对照表 ​

概述

业务错误码定义在 internal/consts/biz_err.go(gcode.Register 语义值)。注意 Fail 映射规则:除 401 外全部降级为 code=1 返回前端——细分码主要用于日志与语义区分。

基础错误码 ​

码常量含义触发场景
1CodeFailed通用操作失败未归类错误的默认出口
400CodeParamError参数校验失败gvalid 标签校验不过(文案取 # 后缀)
401CodeUnauthorized登录已过期,请重新登录令牌缺失/过期/黑名单(唯一保留原码返回)
403CodeForbidden没有该操作权限HasPerm 权限判定不过
429CodeTooManyRequests请求过于频繁RateLimit 超限
500CodeServerError服务器内部错误panic 兜底 / 未预期错误

业务错误码(1000+) ​

码含义触发模块/场景
1001用户不存在auth.Login findUser 未命中
1002账号禁用auth.Login status!=1
1003密码错误auth.Login bcrypt 比对失败
1004验证码错误captcha.Verify 失败/过期
1005租户已过期Tenant 中间件 / mustLoadTenant expire_time 已过
1006租户已禁用Tenant 中间件 / mustLoadTenant status!=1
1007租户用户数上限user.Add checkTenantUserMax 超 max_user_num
1008Token 无效oauth2 Refresh:typ 非 refresh / 已在黑名单(防重放)
1009记录已存在唯一预检(UniqueFields/CheckUnique)命中
1010记录不存在详情/更新/删除目标缺失
1011存在下级或关联删除守卫(dept 子级 / menu 子菜单等)
1012原密码错误index.UpdatePassword 旧密码校验失败
1013租户不存在租户定位失败
1014记录已被引用删除守卫(role 被用户引用等)
1015演示环境禁止操作Demo 中间件拦截写操作(app.demo=true)

使用规约 ​

text
后端上抛:gerror.NewCodef(consts.CodeUserNotExist, "用户不存在")
  → Bind 包装层 response.Fail → 除 401 外降级 code=1(msg 保留)

前端识别:
  code=0  成功
  code=1  失败(弹 msg——"用户不存在"等细分语义在 msg 里)
  code=401 未认证(跳登录)
  code=403 无权限(可定制提示)
  code=429 限流(可定制"请稍后再试")

为什么细分码降级为 1

前端只需三条分流规则(0/1/401)即可覆盖全部场景;细分码留在服务端日志与 msg 中,避免前端维护 20+ 分支。需要按细分码做 UI 差异化时,读 msg 或扩展信封(不建议破坏现有约定)。

排障对照 ​

用户看到码深层原因排查
"登录已过期"401令牌过期/被拉黑(登出/轮换/强退)
"没有该操作权限"403gmeta permission ↔ 菜单节点 ↔ 角色勾选 ↔ 身份缓存
"请求过于频繁"429限流阈值(认证入口 10/分钟更严)
"演示环境,禁止操作!"1→1015 msgapp.demo=true
其他业务提示1msg 即细分语义;服务端日志有细分码

小蚂蚁云团队 · 提供技术支持