spec.md 3.7 KB

用户审核不通过原因

背景

平台目前只支持“待审核”和“审核通过”两种用户审核状态,管理员无法明确记录商家或骑手资料审核不通过的原因。后续用户端需要根据审核结果提示用户补充资料,但本次不修改 App 前端。

目标

  • 用户审核状态增加“审核不通过”。
  • 管理员审核商家或骑手资料不通过时,必须输入具体原因。
  • 原因随用户信息返回,供后续 App 展示和资料补充流程使用。

数据模型

  • info_user.audit_status 状态语义:
    • 0:待审核。
    • 1:审核通过。
    • 2:审核不通过。
  • info_user 新增 audit_reject_reason TEXT NULL,Java 属性名为 auditRejectReason
  • 不对审核不通过原因设置应用层字符数限制。
  • 当审核状态不是 2 时,保存操作必须将 audit_reject_reason 清空,避免旧原因与当前状态不一致。

平台管理端

  • 修改商家审核页 sjuser.vue 和骑手审核页 peisus.vue
  • 审核状态选项增加“审核不通过”。
  • 选择“审核不通过”时显示多行文本输入框,由管理员按实际情况自由填写。
  • 原因去除首尾空白后为空时禁止提交,并显示国际化错误提示。
  • 选择“待审核”或“审核通过”时隐藏原因输入框,提交前清空旧原因。
  • 新增用户可见文本必须补齐简体中文、繁体中文、英文和越南语。

后端行为

  • 平台新增和修改用户接口继续使用 POST /infouser/userPUT /infouser/user,两者执行同一审核原因校验。
  • auditStatus = "2" 时,auditRejectReason 去除首尾空白后必须非空;否则返回国际化业务错误,不更新用户。
  • auditStatus 不等于 "2" 时,后端主动将 auditRejectReason 设为 null,不能只依赖前端清理。
  • 用户列表、平台用户详情和 App 用户信息接口沿用现有 InfoUser 返回结构,新增返回 auditRejectReason
  • App 资料更新接口 /infouser/user/setuser 不接受客户端提交的审核状态,防止用户自行改变审核结果。
  • /infouser/user/setuser 接收非持久化标记 updateUserInfo;仅当资料保存成功、该标记为 true 且数据库当前审核状态为 2 时,将审核状态原子更新为 0 并清空 auditRejectReason
  • updateUserInfofalsenull,或用户当前并非审核不通过时,不改变审核状态。
  • Entity、MyBatis resultMap、查询、插入和更新映射全部补齐该字段。

数据库变更

  • 只将迁移 SQL 写入 updatesql/sql.md,不直接执行数据库变更。
  • SQL 为 info_user 新增 audit_reject_reason TEXT NULL
  • sys_user_audit 字典新增值 2,标签为“审核不通过”,供平台审核状态选项使用。

验收标准

  1. 商家和骑手审核页均能选择“审核不通过”。
  2. 选择“审核不通过”但未填写有效原因时,前端和后端都拒绝保存。
  3. 填写原因后可以保存,重新打开用户资料时能正确回显。
  4. 将状态改为“待审核”或“审核通过”后,数据库中的旧原因被清空。
  5. getuserinfo 等返回用户信息的现有接口包含 auditRejectReason
  6. 本次不修改商家或骑手 App 前端。
  7. 审核不通过的用户携带 updateUserInfo=true 成功补充资料后恢复为待审核并清空旧驳回原因;普通资料更新不改变审核状态。

非目标

  • 不提供固定原因或预设原因选项。
  • 不建立审核历史记录表。
  • 不记录每次审核的管理员、时间或历史原因。
  • 不实现 App 端红色提示、资料高亮或字段只读控制。