# 用户注册(移动端 / 小程序) ## 1. 概述 | 项 | 说明 | | --- | --- | | Base Path | `/app/auth` | | 鉴权 | **匿名访问**(无需 Token);类上 `@Anonymous`,由 Spring Security 放行 | | 用途 | 登录页「注册」:校验用户名是否可用、提交注册 | | 用户表 | `sys_user`;角色关联 `sys_user_role` | | 默认角色 | `sys_role.role_id = **2**`(普通角色,`role_key=common`) | | 默认部门 | `dept_id = 100`(与若依初始化根部门一致) | 注册成功后,使用既有接口 `POST /login`(用户名 + 密码,及验证码若开启)登录。 --- ## 2. 校验用户名是否可用 `GET /app/auth/usernameAvailable` ### 2.1 请求 | 参数 | 位置 | 必填 | 说明 | | --- | --- | --- | --- | | `userName` | Query | **是** | 拟注册的登录名(2~20 字符,与若依账户规则一致) | **示例** ```http GET /app/auth/usernameAvailable?userName=herder01 ``` ### 2.2 响应 统一 `AjaxResult`:`code`、`msg`、`data`。 | 字段 | 类型 | 说明 | | --- | --- | --- | | `data.userName` | string | 回显(trim 后) | | `data.available` | boolean | `true` 可用;`false` 已被占用 | **成功示例** ```json { "code": 200, "msg": "操作成功", "data": { "userName": "herder01", "available": true } } ``` **业务失败**(如用户名为空、长度不符):`code` 非 200,`msg` 为错误说明。 --- ## 3. 用户注册 `POST /app/auth/register` ### 3.1 请求 `Content-Type: application/json` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `nickName` | string | **是** | 用户昵称,1~30 字符 | | `userName` | string | **是** | 登录用户名,2~20 字符 | | `password` | string | **是** | 登录密码,5~20 字符(入库前 BCrypt 加密) | **示例** ```json { "nickName": "牧民甲", "userName": "herder01", "password": "abc12345" } ``` ### 3.2 响应 | 字段 | 类型 | 说明 | | --- | --- | --- | | `data.userId` | long | 新用户主键 | | `data.userName` | string | 登录名 | **成功示例** ```json { "code": 200, "msg": "注册成功", "data": { "userId": 100, "userName": "herder01" } } ``` **常见失败 `msg`** | 场景 | 说明 | | --- | --- | | 用户名已存在 | 与 `usernameAvailable` 为 `false` 时注册结果一致 | | 参数校验失败 | 昵称/用户名/密码长度不符 | | 默认角色不存在 | 库中无 `role_id=2` 时需运维补数据 | --- ## 4. 前端(小程序)对接要点 1. **注册页流程建议** - 输入用户名 → 失焦或点击「检查」调用 **§2**;`available=false` 时提示「用户名已被占用」。 - 填写昵称、密码、确认密码 → 调用 **§3**;成功后再跳转登录页或自动调 `POST /login`。 2. **请求基址** - 与现有 `ruoyi-ui-app` 一致:`config.js` 中 `baseUrl` + 上表路径(注意网关 `context-path`)。 3. **请求头** - 注册与校验接口**不要**带 `Authorization`。 4. **与 PC 端 `/register` 区别** - PC 注册依赖系统参数 `sys.account.registerUser` 及图形验证码; - 小程序走 `/app/auth/**`,固定绑定角色 2,**无验证码**(按产品要求)。 5. **登录** - 仍使用 `@/api/login.js` 中 `POST /login`。 ### 4.1 调用示例(uni.request) ```javascript // 校验用户名 uni.request({ url: baseUrl + '/app/auth/usernameAvailable', method: 'GET', data: { userName: 'herder01' }, success(res) { const ok = res.data && res.data.code === 200 && res.data.data.available } }) // 注册 uni.request({ url: baseUrl + '/app/auth/register', method: 'POST', header: { 'Content-Type': 'application/json' }, data: { nickName: '牧民甲', userName: 'herder01', password: 'abc12345' }, success(res) { if (res.data && res.data.code === 200) { // 跳转登录 } } }) ``` --- ## 5. 后端实现索引 | 类 | 说明 | | --- | --- | | `AppAuthController` | `/app/auth` 接口 | | `IAppUserRegisterService` | 注册与校验 | | `AppUserRegisterRules` | `DEFAULT_ROLE_ID=2`、`DEFAULT_DEPT_ID=100` | --- ## 6. 修订记录 | 版本 | 日期 | 说明 | | --- | --- | --- | | 1.0 | 2026-05-25 | 初版:匿名注册、用户名可用性校验、默认角色 2 |