### Requirement: 超级管理员可设置和修改全局操作密码 系统 SHALL 提供 `POST /api/admin/super-admin/operation-password` 接口,仅允许 `user_type=1`(超级管理员)调用,用于设置或修改全局操作密码。密码以 bcrypt 哈希值存储于 Redis。 #### Scenario: 超级管理员首次设置操作密码 - **WHEN** 超级管理员调用 `POST /api/admin/super-admin/operation-password`,传入合法的 `password` 和 `confirm_password`(两者一致) - **THEN** 系统将 bcrypt 哈希后的密码写入 Redis,返回 200 成功 #### Scenario: 超级管理员修改已有操作密码 - **WHEN** 操作密码已存在,超级管理员重新调用设置接口传入新密码 - **THEN** 系统覆盖 Redis 中的旧哈希值,返回 200 成功 #### Scenario: 非超级管理员调用被拒绝 - **WHEN** `user_type != 1` 的账号调用 `POST /api/admin/super-admin/operation-password` - **THEN** 系统返回 403,错误消息"仅超级管理员可设置操作密码" #### Scenario: 两次密码不一致 - **WHEN** 超级管理员传入的 `password` 与 `confirm_password` 不一致 - **THEN** 系统返回 400,错误消息"两次输入的密码不一致" ### Requirement: 可查询操作密码设置状态 系统 SHALL 提供 `GET /api/admin/super-admin/operation-password/status` 接口,返回操作密码是否已设置(布尔值),不返回密码本身,仅超级管理员可调用。 #### Scenario: 查询已设置状态 - **WHEN** 操作密码已设置,超级管理员调用状态查询接口 - **THEN** 返回 `{"is_set": true}` #### Scenario: 查询未设置状态 - **WHEN** 操作密码未设置(Redis 中无对应 key),超级管理员调用状态查询接口 - **THEN** 返回 `{"is_set": false}` ### Requirement: 操作密码验证使用全局操作密码 系统 SHALL 将所有需要操作密码验证的接口(目前为 `agent-recharges` 线下充值确认)改为验证全局操作密码,而非当前登录用户的登录密码。 #### Scenario: 操作密码正确时通过验证 - **WHEN** 调用需要操作密码的接口,传入正确的全局操作密码 - **THEN** 验证通过,接口正常执行后续业务逻辑 #### Scenario: 操作密码错误时拒绝 - **WHEN** 调用需要操作密码的接口,传入错误的密码 - **THEN** 系统返回 400,错误消息"操作密码错误" #### Scenario: 操作密码未设置时拒绝 - **WHEN** Redis 中无操作密码,调用需要操作密码的接口 - **THEN** 系统返回 400,错误消息"操作密码未设置,请联系超级管理员"