diff --git a/docs/01-需求文档/需求规格说明书_v1.0.md b/docs/01-需求文档/需求规格说明书_v1.0.md index e2e3630..ed4cbd8 100644 --- a/docs/01-需求文档/需求规格说明书_v1.0.md +++ b/docs/01-需求文档/需求规格说明书_v1.0.md @@ -18,6 +18,7 @@ | 版本 | 日期 | 修订人 | 修订内容 | | ---- | ---------- | ----- | ---- | | V1.0 | 2026-01-31 | pangu | 初稿 | +| V1.1 | 2026-02-03 | pangu | 更新会员多教育身份模型、微信扫码登录流程 | --- @@ -193,6 +194,8 @@ | 家长 | 通过小程序/H5注册的家长用户 | 可绑定多个学生(不限学校) | | 教师 | 通过小程序/H5注册的教师用户 | 需绑定所属学校,只能绑定本校学生 | +> **多教育身份说明**:一个会员可以同时拥有多个教育身份(如在多个班级任教),每个教育身份独立包含学校、年级、班级、学科信息。会员首次绑定学生时,如无教育身份则默认设为"家长"身份。 + --- ## 4. 功能需求 @@ -269,17 +272,18 @@ | 规则编号 | 规则描述 | | ------- | ---------------------------- | -| MEM-R01 | 会员编号由系统自动生成,格式:JS + 时间戳 | -| MEM-R02 | 昵称未填写时,系统自动生成默认昵称 | +| MEM-R01 | 会员编号由系统自动生成,格式:M + 时间戳 | +| MEM-R02 | 昵称未填写时,系统自动生成默认昵称(user_手机号后4位)| | MEM-R03 | 手机号为必填项,需验证格式有效性和唯一性 | | MEM-R04 | 出生日期和性别为选填项 | -| MEM-R05 | 身份类型为"教师"时,必须选择所属区域/学校/年级/班级 | -| MEM-R06 | 身份类型为"教师"时,只能绑定同校学生 | -| MEM-R07 | 身份类型为"家长"时,不显示区域信息,可绑定任意学生 | +| MEM-R05 | 会员可添加多个教育身份,每个教育身份包含学校/年级/班级/学科 | +| MEM-R06 | 有教育身份的会员绑定学生时,校验学生学校与教育身份学校一致 | +| MEM-R07 | 无教育身份的会员可绑定任意学校的学生,首次绑定后默认设为"家长"身份 | | MEM-R08 | 删除会员前需检查是否绑定学生,有则不允许删除 | | MEM-R09 | 重置密码后,需弹窗显示新密码并提供复制功能 | | MEM-R10 | 禁用会员后,该用户无法登录任何端 | -| MEM-R11 | 使用RuoYi鉴权体系,区分后台用户和会员信息 | +| MEM-R11 | 使用Sa-Token鉴权体系,区分后台用户和会员信息 | +| MEM-R12 | 会员可设置一个默认教育身份,用于业务默认展示 | #### 4.2.4 登录方式支持 @@ -287,7 +291,13 @@ | --------- | ----------------- | | 手机号 + 验证码 | 发送短信验证码登录 | | 手机号 + 密码 | 使用账号密码登录 | -| 微信登录 | 通过微信授权登录,获取openId | +| 微信扫码登录 | 扫描二维码授权登录,首次需绑定手机号 | + +> **微信扫码登录流程**: +> 1. 用户点击微信登录,获取二维码 +> 2. 用户使用微信扫码确认 +> 3. 如已绑定手机号,直接登录成功 +> 4. 如未绑定手机号,需输入手机号和短信验证码完成绑定后登录 #### 4.2.5 数据项说明 @@ -298,18 +308,26 @@ | 会员编号 | 文本 | ✓ | 系统自动生成,唯一 | | 手机号 | 文本 | ✓ | 11位手机号,唯一 | | 昵称 | 文本 | - | 最大长度50字符 | +| 头像 | URL | - | 头像图片地址 | | 性别 | 枚举 | - | 男/女/未知 | | 出生日期 | 日期 | - | 格式:YYYY-MM-DD | -| 身份类型 | 枚举 | ✓ | 家长/教师 | -| 所属区域 | 树形选择 | 条件必填 | 教师身份必填 | -| 所属学校 | 下拉选择 | 条件必填 | 教师身份必填 | -| 所属年级 | 下拉选择 | 条件必填 | 教师身份必填 | -| 所属班级 | 下拉选择 | 条件必填 | 教师身份必填 | | openId | 文本 | - | 微信用户标识 | | 注册时间 | 日期时间 | - | 系统自动记录 | | 注册来源 | 枚举 | - | 小程序/H5/后台新增 | | 状态 | 开关 | ✓ | 启用/禁用 | +**教育身份信息(多条)** + +| 字段名称 | 字段类型 | 必填 | 说明 | +| ------ | ---- |:----:| ----------- | +| 教育身份ID | 数字 | ✓ | 系统自动生成 | +| 所属区域 | 树形选择 | ✓ | 省-市-区三级 | +| 所属学校 | 下拉选择 | ✓ | 依赖区域 | +| 所属年级 | 下拉选择 | ✓ | 依赖学校 | +| 所属班级 | 下拉选择 | ✓ | 依赖年级 | +| 任教学科 | 下拉选择 | ✓ | 学科列表 | +| 是否默认 | 布尔 | ✓ | 默认教育身份 | + --- ### 4.3 学生管理模块 @@ -619,8 +637,9 @@ | **参与者** | 会员(家长/教师) | | **前置条件** | 用户已注册账号 | | **后置条件** | 用户成功登录,获取访问Token | -| **基本流程** | 1. 用户打开登录页面
2. 用户选择登录方式(验证码/密码/微信)
3. 用户输入登录信息
4. 系统验证登录信息
5. 验证通过,生成Token并返回
6. 跳转到首页 | +| **基本流程** | 1. 用户打开登录页面
2. 用户选择登录方式(验证码/密码/微信扫码)
3. 用户输入登录信息或扫描二维码
4. 系统验证登录信息
5. 验证通过,生成Token并返回
6. 跳转到首页 | | **异常流程** | 3a. 手机号格式错误,提示"请输入正确的手机号"
4a. 验证码错误,提示"验证码错误"
4b. 密码错误,提示"密码错误"
4c. 密码错误5次,锁定账号10分钟
4d. 账号被禁用,提示"账号已被禁用" | +| **微信扫码流程** | 1. 用户点击微信登录
2. 系统生成二维码并展示
3. 用户使用微信扫码确认
4a. 已绑定手机号,直接登录成功
4b. 未绑定手机号,进入绑定流程
5. 用户输入手机号和短信验证码
6. 绑定成功并登录 | ### 6.2 UC-002 批量导入学生 @@ -792,8 +811,8 @@ | 7 | 昵称未填写时,自动生成 | | 8 | 会员编号自动生成 | | 9 | 出生日期和性别选填 | -| 10 | 身份信息为老师时,需要选择对应的区域/学校/年级/班级,学生信息从学生管理的数据中选择绑定,只允许选择与老师所属学校一样的学生 | -| 11 | 身份信息为家长时,不显示区域/学校/年级/班级,学生允许随便选择 | +| 10 | 会员可添加多个教育身份(教师身份),每个教育身份需选择区域/学校/年级/班级/学科,绑定学生时校验学校一致性 | +| 11 | 无教育身份的会员可绑定任意学校的学生,首次绑定后默认设为"家长"身份 | **示例数据:** - 会员编号:JS123123123 diff --git a/docs/02-技术方案/H5会员接口需求与技术方案.md b/docs/02-技术方案/H5会员接口需求与技术方案.md index 7a15634..95087a6 100644 --- a/docs/02-技术方案/H5会员接口需求与技术方案.md +++ b/docs/02-技术方案/H5会员接口需求与技术方案.md @@ -2,7 +2,8 @@ > 作者:pangu > 创建时间:2026-02-02 -> 版本:v1.1 +> 更新时间:2026-02-04 +> 版本:v1.2 --- @@ -57,6 +58,51 @@ |------|------| | **接口** | `POST /h5/auth/logout` | +#### 2.1.7 微信扫码登录 + +##### 2.1.7.1 获取微信扫码登录二维码 +| 项目 | 说明 | +|------|------| +| **接口** | `GET /h5/auth/wechat/qrcode` | +| **返回** | qrcodeUrl(二维码URL)、ticket(二维码凭证)、expireSeconds(有效期秒数) | +| **有效期** | 默认5分钟 | + +##### 2.1.7.2 查询微信扫码状态 +| 项目 | 说明 | +|------|------| +| **接口** | `GET /h5/auth/wechat/status/{ticket}` | +| **返回** | status(waiting/scanned/confirmed/expired)、tempCode(确认后返回) | +| **轮询建议** | 每2秒查询一次 | + +##### 2.1.7.3 微信扫码登录 +| 项目 | 说明 | +|------|------| +| **接口** | `POST /h5/auth/wechat/login` | +| **请求参数** | ticket(二维码凭证)、tempCode(临时登录码) | +| **返回** | needBindPhone=false时返回Token;needBindPhone=true时返回bindToken需绑定手机号 | + +##### 2.1.7.4 发送微信绑定手机号短信验证码 +| 项目 | 说明 | +|------|------| +| **接口** | `POST /h5/auth/wechat/sms/send` | +| **请求参数** | phone(手机号)、captchaCode(图形验证码)、uuid | +| **业务场景** | 微信首次登录时绑定手机号 | + +##### 2.1.7.5 微信登录绑定手机号 +| 项目 | 说明 | +|------|------| +| **接口** | `POST /h5/auth/wechat/bindPhone` | +| **请求参数** | bindToken、phone、smsCode、captchaCode、uuid | +| **业务逻辑** | 手机号已存在则绑定到现有账号,否则创建新会员 | +| **返回** | accessToken、refreshToken | + +##### 2.1.7.6 微信回调处理 +| 项目 | 说明 | +|------|------| +| **接口** | `GET /h5/auth/wechat/callback` | +| **请求参数** | code(微信授权码)、state(即ticket) | +| **业务场景** | 前端回调页面收到微信code后调用 | + --- ### 2.2 注册模块 @@ -84,7 +130,7 @@ | 项目 | 说明 | |------|------| | **接口** | `GET /h5/member/info` | -| **返回** | memberId、phone(脱敏)、nickname、avatar、gender、birthday、registerTime、identityType、教育信息、绑定学生列表 | +| **返回** | memberId、memberCode、phone(脱敏)、nickname、avatar、gender、birthday、registerTime、educations(教育身份列表)、students(绑定学生列表) | #### 2.3.2 修改会员基本信息 | 项目 | 说明 | @@ -106,25 +152,41 @@ --- -### 2.5 教育身份管理(教师身份) +### 2.5 教育身份管理(多教育身份) -#### 2.5.1 添加/修改教育身份 +> **设计说明**:一个会员可以有多个教育身份(如同时在多个班级任教),每个教育身份独立管理。 + +#### 2.5.1 添加教育身份 | 项目 | 说明 | |------|------| -| **接口** | `POST /h5/member/education` | +| **接口** | `POST /h5/member/educations` | | **请求参数** | schoolId(学校)、schoolGradeId(年级)、schoolClassId(班级)、subjectId(学科) | -| **业务逻辑** | 设置会员身份为"教师",关联学校班级学科信息 | +| **业务逻辑** | 添加一条教育身份记录,支持多条 | -#### 2.5.2 获取教育身份信息 +#### 2.5.2 获取教育身份列表 | 项目 | 说明 | |------|------| -| **接口** | `GET /h5/member/education` | -| **返回** | 学校、年级、班级、学科名称及ID | +| **接口** | `GET /h5/member/educations` | +| **返回** | 教育身份列表(每条包含:educationId、学校、年级、班级、学科名称及ID、是否默认) | -#### 2.5.3 删除教育身份 +#### 2.5.3 修改教育身份 | 项目 | 说明 | |------|------| -| **接口** | `DELETE /h5/member/education` | +| **接口** | `PUT /h5/member/educations/{educationId}` | +| **请求参数** | schoolId(学校)、schoolGradeId(年级)、schoolClassId(班级)、subjectId(学科) | +| **业务逻辑** | 修改指定教育身份的信息 | + +#### 2.5.4 删除教育身份 +| 项目 | 说明 | +|------|------| +| **接口** | `DELETE /h5/member/educations/{educationId}` | +| **业务逻辑** | 删除指定的教育身份记录 | + +#### 2.5.5 设置默认教育身份 +| 项目 | 说明 | +|------|------| +| **接口** | `PUT /h5/member/educations/{educationId}/default` | +| **业务逻辑** | 将指定教育身份设为默认,其他教育身份自动取消默认状态 | --- @@ -168,7 +230,19 @@ --- -### 2.8 接口规范 +### 2.8 操作日志 + +#### 2.8.1 获取操作日志列表 +| 项目 | 说明 | +|------|------| +| **接口** | `GET /h5/member/logs` | +| **请求参数** | pageNum(页码,默认1)、pageSize(每页条数,默认10) | +| **返回** | 分页的操作日志列表(操作类型、操作内容、操作时间、IP地址等) | +| **业务场景** | 用户查看自己的操作记录 | + +--- + +### 2.9 接口规范 | 规范项 | 说明 | |------|------| @@ -187,18 +261,18 @@ 在 `pangu-business` 模块下新建 `h5` 包: ``` -backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/ +backend/pangu-modules/pangu-business/src/main/java/org/dromara/pangu/ ├── h5/ # H5接口模块 │ ├── config/ │ │ └── H5SmsProperties.java # 短信防刷配置类 │ ├── controller/ -│ │ ├── H5AuthController.java # 认证接口 -│ │ ├── H5MemberController.java # 会员信息接口 +│ │ ├── H5AuthController.java # 认证接口(含微信登录) +│ │ ├── H5MemberController.java # 会员信息接口(含多教育身份) │ │ └── H5BaseDataController.java # 基础数据接口 │ ├── service/ │ │ ├── H5AuthService.java # 认证服务接口 │ │ ├── impl/ -│ │ │ └── H5AuthServiceImpl.java # 认证服务实现 +│ │ │ └── H5AuthServiceImpl.java # 认证服务实现(含微信登录) │ │ ├── H5MemberService.java # 会员服务接口 │ │ └── impl/ │ │ └── H5MemberServiceImpl.java # 会员服务实现 @@ -211,13 +285,19 @@ backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/ │ │ ├── H5MemberUpdateDto.java # 会员信息修改 │ │ ├── H5PasswordUpdateDto.java # 密码修改 │ │ ├── H5EducationDto.java # 教育身份 -│ │ └── H5StudentBindDto.java # 绑定学生 +│ │ ├── H5StudentBindDto.java # 绑定学生 +│ │ ├── WechatLoginDto.java # 微信登录 +│ │ └── WechatBindPhoneDto.java # 微信绑定手机号 │ └── vo/ # 响应VO │ ├── H5LoginVo.java # 登录响应 │ ├── H5CaptchaVo.java # 验证码响应 -│ ├── H5MemberInfoVo.java # 会员信息 +│ ├── H5MemberInfoVo.java # 会员信息(含教育身份列表) │ ├── H5EducationVo.java # 教育身份 -│ └── H5StudentVo.java # 学生信息 +│ ├── H5StudentVo.java # 学生信息 +│ ├── H5MemberLogVo.java # 操作日志 +│ ├── WechatQrcodeVo.java # 微信二维码 +│ ├── WechatStatusVo.java # 微信扫码状态 +│ └── WechatLoginVo.java # 微信登录响应 ``` ### 3.2 接口路径规划 @@ -225,7 +305,11 @@ backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/ | 模块 | 路径前缀 | 认证要求 | |------|---------|---------| | 认证接口 | `/h5/auth/*` | 无需认证 | +| 微信登录 | `/h5/auth/wechat/*` | 无需认证 | | 会员接口 | `/h5/member/*` | 需要Token | +| 教育身份 | `/h5/member/educations/*` | 需要Token | +| 学生管理 | `/h5/member/student/*` | 需要Token | +| 操作日志 | `/h5/member/logs` | 需要Token | | 基础数据 | `/h5/base/*` | 无需认证 | ### 3.3 认证方案(Sa-Token) @@ -383,14 +467,15 @@ H5 Service(新建) | 序号 | 内容 | 文件 | |------|------|------| -| 1 | DTO类 | H5PasswordLoginDto, H5SmsLoginDto, H5RegisterDto, H5SmsSendDto, H5MemberUpdateDto, H5PasswordUpdateDto, H5EducationDto, H5StudentBindDto | -| 2 | VO类 | H5LoginVo, H5CaptchaVo, H5MemberInfoVo, H5EducationVo, H5StudentVo | -| 3 | 认证服务 | H5AuthService, H5AuthServiceImpl | -| 4 | 会员服务 | H5MemberService, H5MemberServiceImpl | -| 5 | Controller | H5AuthController, H5MemberController, H5BaseDataController | +| 1 | DTO类 | H5PasswordLoginDto, H5SmsLoginDto, H5RegisterDto, H5SmsSendDto, H5MemberUpdateDto, H5PasswordUpdateDto, H5EducationDto, H5StudentBindDto, WechatLoginDto, WechatBindPhoneDto | +| 2 | VO类 | H5LoginVo, H5CaptchaVo, H5MemberInfoVo, H5EducationVo, H5StudentVo, H5MemberLogVo, WechatQrcodeVo, WechatStatusVo, WechatLoginVo | +| 3 | 认证服务 | H5AuthService, H5AuthServiceImpl(含微信登录) | +| 4 | 会员服务 | H5MemberService, H5MemberServiceImpl(含多教育身份、操作日志) | +| 5 | Controller | H5AuthController(含微信登录), H5MemberController(含多教育身份), H5BaseDataController | | 6 | 安全配置 | SecurityConfig(添加放行规则) | | 7 | 短信配置 | application-dev.yml | +| 8 | 微信配置 | 微信开放平台AppID、AppSecret配置 | --- -*最后更新: 2026-02-02* +*最后更新: 2026-02-03* diff --git a/docs/接口清单.md b/docs/接口清单.md new file mode 100644 index 0000000..010b82a --- /dev/null +++ b/docs/接口清单.md @@ -0,0 +1,394 @@ +# 盘古用户认证中心 - 接口清单 + +> 本文档列出系统所有接口的地址和说明 +> 作者: pangu +> 更新日期: 2026-02-03 + +--- + +## 一、H5端接口 + +### 1.1 H5认证接口 + +| 接口说明 | 请求方式 | 接口地址 | +| -------------- | ------ | ---------------------------------- | +| 获取图形验证码 | GET | `/h5/auth/captcha` | +| 发送短信验证码 | POST | `/h5/auth/sms/send` | +| 密码登录 | POST | `/h5/auth/login/password` | +| 短信验证码登录 | POST | `/h5/auth/login/sms` | +| 会员注册 | POST | `/h5/auth/register` | +| 刷新Token | POST | `/h5/auth/refresh` | +| 退出登录 | POST | `/h5/auth/logout` | +| 获取微信扫码登录二维码 | GET | `/h5/auth/wechat/qrcode` | +| 查询微信扫码状态 | GET | `/h5/auth/wechat/status/{ticket}` | +| 微信扫码登录 | POST | `/h5/auth/wechat/login` | +| 发送微信绑定手机号短信验证码 | POST | `/h5/auth/wechat/sms/send` | +| 微信登录绑定手机号 | POST | `/h5/auth/wechat/bindPhone` | +| 微信回调处理 | GET | `/h5/auth/wechat/callback` | +| 清除短信限制(调试用) | DELETE | `/h5/auth/debug/sms-limit/{phone}` | + +### 1.2 H5会员接口 + +| 接口说明 | 请求方式 | 接口地址 | +| --------- | ------ | --------------------------------------------- | +| 获取当前会员信息 | GET | `/h5/member/info` | +| 修改会员基本信息 | PUT | `/h5/member/info` | +| 修改登录密码 | PUT | `/h5/member/password` | +| 添加教育身份 | POST | `/h5/member/educations` | +| 获取教育身份列表 | GET | `/h5/member/educations` | +| 修改教育身份 | PUT | `/h5/member/educations/{educationId}` | +| 删除教育身份 | DELETE | `/h5/member/educations/{educationId}` | +| 设置默认教育身份 | PUT | `/h5/member/educations/{educationId}/default` | +| 绑定学生 | POST | `/h5/member/student` | +| 获取绑定的学生列表 | GET | `/h5/member/students` | +| 修改学生信息 | PUT | `/h5/member/student/{studentId}` | +| 解绑学生 | DELETE | `/h5/member/student/{studentId}` | +| 获取操作日志列表 | GET | `/h5/member/logs` | + +### 1.3 H5基础数据接口 + +| 接口说明 | 请求方式 | 接口地址 | +| ---------- | ---- | ------------------- | +| 获取区域树 | GET | `/h5/base/regions` | +| 根据区域获取学校列表 | GET | `/h5/base/schools` | +| 根据学校获取年级列表 | GET | `/h5/base/grades` | +| 根据年级获取班级列表 | GET | `/h5/base/classes` | +| 获取学科列表 | GET | `/h5/base/subjects` | + +--- + +## 二、管理后台接口 + +### 2.1 认证接口 + +| 接口说明 | 请求方式 | 接口地址 | +| ------------ | ------ | ------------------------- | +| 获取图形验证码 | GET | `/auth/code` | +| 管理后台登录 | POST | `/auth/login` | +| 退出登录 | POST | `/auth/logout` | +| 用户注册 | POST | `/auth/register` | +| 获取第三方登录跳转URL | GET | `/auth/binding/{source}` | +| 前端回调绑定授权 | POST | `/auth/social/callback` | +| 取消第三方授权 | DELETE | `/auth/unlock/{socialId}` | +| 获取租户列表 | GET | `/auth/tenant/list` | + +### 2.2 验证码接口 + +| 接口说明 | 请求方式 | 接口地址 | +| ------- | ---- | ---------------------- | +| 发送短信验证码 | GET | `/resource/sms/code` | +| 发送邮箱验证码 | GET | `/resource/email/code` | + +--- + +## 三、业务管理接口 + +### 3.1 会员管理 + +| 接口说明 | 请求方式 | 接口地址 | +| ------------ | ------ | -------------------------------------------------------------- | +| 查询会员列表 | GET | `/business/member/list` | +| 获取会员详情 | GET | `/business/member/{memberId}` | +| 新增会员 | POST | `/business/member` | +| 修改会员 | PUT | `/business/member` | +| 删除会员 | DELETE | `/business/member/{memberIds}` | +| 重置会员密码 | PUT | `/business/member/resetPwd/{memberId}` | +| 修改会员状态 | PUT | `/business/member/changeStatus` | +| 检查手机号是否唯一 | GET | `/business/member/checkPhoneUnique` | +| 获取会员已绑定的学生列表 | GET | `/business/member/{memberId}/students` | +| 批量绑定学生到会员 | POST | `/business/member/{memberId}/bindStudents` | +| 解绑学生 | POST | `/business/member/{memberId}/unbindStudent/{studentId}` | +| 获取会员教育身份列表 | GET | `/business/member/{memberId}/educations` | +| 添加教育身份 | POST | `/business/member/{memberId}/educations` | +| 修改教育身份 | PUT | `/business/member/{memberId}/educations/{educationId}` | +| 删除教育身份 | DELETE | `/business/member/{memberId}/educations/{educationId}` | +| 设置默认教育身份 | PUT | `/business/member/{memberId}/educations/{educationId}/default` | + +### 3.2 学生管理 + +| 接口说明 | 请求方式 | 接口地址 | +| ------------ | ------ | --------------------------------------- | +| 查询学生列表 | GET | `/business/student/list` | +| 获取学校树结构 | GET | `/business/student/schoolTree` | +| 获取学生详情 | GET | `/business/student/{studentId}` | +| 新增学生 | POST | `/business/student` | +| 修改学生 | PUT | `/business/student` | +| 删除学生 | DELETE | `/business/student/{studentIds}` | +| 查询可绑定的学生列表 | GET | `/business/student/available` | +| 查询会员已绑定的学生列表 | GET | `/business/student/byMember/{memberId}` | +| 下载学生导入模板 | GET | `/business/student/template` | +| 批量导入学生 | POST | `/business/student/import` | + +### 3.3 学校管理 + +| 接口说明 | 请求方式 | 接口地址 | +| ---------- | ------ | ------------------------------------------------ | +| 查询学校列表(分页) | GET | `/business/school/list` | +| 查询学校列表(全部) | GET | `/business/school/listAll` | +| 获取学校树形结构 | GET | `/business/school/tree` | +| 获取学校详情 | GET | `/business/school/{schoolId}` | +| 新增学校 | POST | `/business/school` | +| 修改学校 | PUT | `/business/school` | +| 删除学校 | DELETE | `/business/school/{schoolIds}` | +| 获取学校的年级列表 | GET | `/business/school/{schoolId}/grades` | +| 获取年级下的班级列表 | GET | `/business/school/grade/{schoolGradeId}/classes` | +| 为学校添加年级 | POST | `/business/school/grade` | +| 为年级添加班级 | POST | `/business/school/class` | +| 删除学校下的年级 | DELETE | `/business/school/grade/{schoolGradeId}` | +| 删除年级下的班级 | DELETE | `/business/school/class/{schoolClassId}` | + +### 3.4 区域管理 + +| 接口说明 | 请求方式 | 接口地址 | +| ------- | ------ | -------------------------------------- | +| 查询区域列表 | GET | `/business/region/list` | +| 获取区域树 | GET | `/business/region/tree` | +| 获取子区域列表 | GET | `/business/region/children/{parentId}` | +| 获取区域详情 | GET | `/business/region/{regionId}` | +| 获取区域路径 | GET | `/business/region/{regionId}/path` | +| 新增区域 | POST | `/business/region` | +| 修改区域 | PUT | `/business/region` | +| 删除区域 | DELETE | `/business/region/{regionIds}` | + +### 3.5 年级管理 + +| 接口说明 | 请求方式 | 接口地址 | +| ---------- | ------ | ---------------------------- | +| 查询年级列表(分页) | GET | `/business/grade/list` | +| 查询年级列表(全部) | GET | `/business/grade/listAll` | +| 获取年级详情 | GET | `/business/grade/{gradeId}` | +| 新增年级 | POST | `/business/grade` | +| 修改年级 | PUT | `/business/grade` | +| 删除年级 | DELETE | `/business/grade/{gradeIds}` | + +### 3.6 班级管理 + +| 接口说明 | 请求方式 | 接口地址 | +| ---------- | ------ | ---------------------------- | +| 查询班级列表(分页) | GET | `/business/class/list` | +| 查询班级列表(全部) | GET | `/business/class/listAll` | +| 获取班级详情 | GET | `/business/class/{classId}` | +| 新增班级 | POST | `/business/class` | +| 修改班级 | PUT | `/business/class` | +| 删除班级 | DELETE | `/business/class/{classIds}` | + +### 3.7 学科管理 + +| 接口说明 | 请求方式 | 接口地址 | +| ---------- | ------ | -------------------------------- | +| 查询学科列表(分页) | GET | `/business/subject/list` | +| 查询学科列表(全部) | GET | `/business/subject/listAll` | +| 获取学科详情 | GET | `/business/subject/{subjectId}` | +| 新增学科 | POST | `/business/subject` | +| 修改学科 | PUT | `/business/subject` | +| 删除学科 | DELETE | `/business/subject/{subjectIds}` | + +### 3.8 第三方应用管理 + +| 接口说明 | 请求方式 | 接口地址 | +| --------- | ------ | ------------------------------------------- | +| 查询应用列表 | GET | `/business/application/list` | +| 获取应用详情 | GET | `/business/application/{appId}` | +| 新增应用 | POST | `/business/application` | +| 修改应用 | PUT | `/business/application` | +| 删除应用 | DELETE | `/business/application/{appIds}` | +| 重置应用密钥 | PUT | `/business/application/resetSecret/{appId}` | +| 获取API接口列表 | GET | `/business/application/apiList` | + +--- + +## 四、系统管理接口 + +### 4.1 用户管理 + +| 接口说明 | 请求方式 | 接口地址 | +| ---------- | ------ | --------------------------------- | +| 获取用户列表 | GET | `/system/user/list` | +| 导出用户列表 | POST | `/system/user/export` | +| 导入用户数据 | POST | `/system/user/importData` | +| 获取导入模板 | POST | `/system/user/importTemplate` | +| 获取当前登录用户信息 | GET | `/system/user/getInfo` | +| 获取用户详情 | GET | `/system/user/{userId}` | +| 新增用户 | POST | `/system/user` | +| 修改用户 | PUT | `/system/user` | +| 删除用户 | DELETE | `/system/user/{userIds}` | +| 批量获取用户基础信息 | GET | `/system/user/optionselect` | +| 重置用户密码 | PUT | `/system/user/resetPwd` | +| 修改用户状态 | PUT | `/system/user/changeStatus` | +| 获取用户授权角色 | GET | `/system/user/authRole/{userId}` | +| 用户授权角色 | PUT | `/system/user/authRole` | +| 获取部门树列表 | GET | `/system/user/deptTree` | +| 获取部门下的所有用户 | GET | `/system/user/list/dept/{deptId}` | + +### 4.2 角色管理 + +| 接口说明 | 请求方式 | 接口地址 | +| --------- | ------ | --------------------------------------- | +| 获取角色列表 | GET | `/system/role/list` | +| 导出角色列表 | POST | `/system/role/export` | +| 获取角色详情 | GET | `/system/role/{roleId}` | +| 新增角色 | POST | `/system/role` | +| 修改角色 | PUT | `/system/role` | +| 修改数据权限 | PUT | `/system/role/dataScope` | +| 修改角色状态 | PUT | `/system/role/changeStatus` | +| 删除角色 | DELETE | `/system/role/{roleIds}` | +| 获取角色选择框列表 | GET | `/system/role/optionselect` | +| 查询已分配用户列表 | GET | `/system/role/authUser/allocatedList` | +| 查询未分配用户列表 | GET | `/system/role/authUser/unallocatedList` | +| 取消授权用户 | PUT | `/system/role/authUser/cancel` | +| 批量取消授权用户 | PUT | `/system/role/authUser/cancelAll` | +| 批量选择用户授权 | PUT | `/system/role/authUser/selectAll` | +| 获取角色部门树列表 | GET | `/system/role/deptTree/{roleId}` | + +### 4.3 部门管理 + +| 接口说明 | 请求方式 | 接口地址 | +| ------------ | ------ | ------------------------------------ | +| 获取部门列表 | GET | `/system/dept/list` | +| 查询部门列表(排除节点) | GET | `/system/dept/list/exclude/{deptId}` | +| 获取部门详情 | GET | `/system/dept/{deptId}` | +| 新增部门 | POST | `/system/dept` | +| 修改部门 | PUT | `/system/dept` | +| 删除部门 | DELETE | `/system/dept/{deptId}` | +| 获取部门选择框列表 | GET | `/system/dept/optionselect` | + +### 4.4 菜单管理 + +| 接口说明 | 请求方式 | 接口地址 | +| ----------- | ------ | ------------------------------------------------------ | +| 获取路由信息 | GET | `/system/menu/getRouters` | +| 获取菜单列表 | GET | `/system/menu/list` | +| 获取菜单详情 | GET | `/system/menu/{menuId}` | +| 获取菜单下拉树列表 | GET | `/system/menu/treeselect` | +| 加载角色菜单列表树 | GET | `/system/menu/roleMenuTreeselect/{roleId}` | +| 加载租户套餐菜单列表树 | GET | `/system/menu/tenantPackageMenuTreeselect/{packageId}` | +| 新增菜单 | POST | `/system/menu` | +| 修改菜单 | PUT | `/system/menu` | +| 删除菜单 | DELETE | `/system/menu/{menuId}` | +| 批量级联删除菜单 | DELETE | `/system/menu/cascade/{menuIds}` | + +### 4.5 字典类型管理 + +| 接口说明 | 请求方式 | 接口地址 | +| --------- | ------ | -------------------------------- | +| 查询字典类型列表 | GET | `/system/dict/type/list` | +| 导出字典类型列表 | POST | `/system/dict/type/export` | +| 获取字典类型详情 | GET | `/system/dict/type/{dictId}` | +| 新增字典类型 | POST | `/system/dict/type` | +| 修改字典类型 | PUT | `/system/dict/type` | +| 删除字典类型 | DELETE | `/system/dict/type/{dictIds}` | +| 刷新字典缓存 | DELETE | `/system/dict/type/refreshCache` | +| 获取字典选择框列表 | GET | `/system/dict/type/optionselect` | + +### 4.6 字典数据管理 + +| 接口说明 | 请求方式 | 接口地址 | +| ------------ | ------ | ----------------------------------- | +| 查询字典数据列表 | GET | `/system/dict/data/list` | +| 导出字典数据列表 | POST | `/system/dict/data/export` | +| 获取字典数据详情 | GET | `/system/dict/data/{dictCode}` | +| 根据字典类型查询字典数据 | GET | `/system/dict/data/type/{dictType}` | +| 新增字典数据 | POST | `/system/dict/data` | +| 修改字典数据 | PUT | `/system/dict/data` | +| 删除字典数据 | DELETE | `/system/dict/data/{dictCodes}` | + +### 4.7 岗位管理 + +| 接口说明 | 请求方式 | 接口地址 | +| --------- | ------ | --------------------------- | +| 获取岗位列表 | GET | `/system/post/list` | +| 导出岗位列表 | POST | `/system/post/export` | +| 获取岗位详情 | GET | `/system/post/{postId}` | +| 新增岗位 | POST | `/system/post` | +| 修改岗位 | PUT | `/system/post` | +| 删除岗位 | DELETE | `/system/post/{postIds}` | +| 获取岗位选择框列表 | GET | `/system/post/optionselect` | +| 获取部门树列表 | GET | `/system/post/deptTree` | + +### 4.8 参数配置管理 + +| 接口说明 | 请求方式 | 接口地址 | +| ------------ | ------ | -------------------------------------- | +| 获取参数配置列表 | GET | `/system/config/list` | +| 导出参数配置列表 | POST | `/system/config/export` | +| 获取参数配置详情 | GET | `/system/config/{configId}` | +| 根据参数键名查询参数值 | GET | `/system/config/configKey/{configKey}` | +| 新增参数配置 | POST | `/system/config` | +| 修改参数配置 | PUT | `/system/config` | +| 根据参数键名修改参数配置 | PUT | `/system/config/updateByKey` | +| 删除参数配置 | DELETE | `/system/config/{configIds}` | +| 刷新参数缓存 | DELETE | `/system/config/refreshCache` | + +### 4.9 通知公告管理 + +| 接口说明 | 请求方式 | 接口地址 | +| -------- | ------ | ---------------------------- | +| 获取通知公告列表 | GET | `/system/notice/list` | +| 获取通知公告详情 | GET | `/system/notice/{noticeId}` | +| 新增通知公告 | POST | `/system/notice` | +| 修改通知公告 | PUT | `/system/notice` | +| 删除通知公告 | DELETE | `/system/notice/{noticeIds}` | + +--- + +## 五、日志监控接口 + +### 5.1 操作日志 + +| 接口说明 | 请求方式 | 接口地址 | +| -------- | ------ | ---------------------------- | +| 获取操作日志列表 | GET | `/monitor/operlog/list` | +| 导出操作日志列表 | POST | `/monitor/operlog/export` | +| 删除操作日志 | DELETE | `/monitor/operlog/{operIds}` | +| 清理操作日志 | DELETE | `/monitor/operlog/clean` | + +### 5.2 登录日志 + +| 接口说明 | 请求方式 | 接口地址 | +| -------- | ------ | --------------------------------------- | +| 获取登录日志列表 | GET | `/monitor/logininfor/list` | +| 导出登录日志列表 | POST | `/monitor/logininfor/export` | +| 删除登录日志 | DELETE | `/monitor/logininfor/{infoIds}` | +| 清理登录日志 | DELETE | `/monitor/logininfor/clean` | +| 账户解锁 | GET | `/monitor/logininfor/unlock/{userName}` | + +### 5.3 在线用户 + +| 接口说明 | 请求方式 | 接口地址 | +| ---------- | ------ | ---------------------------------- | +| 获取在线用户列表 | GET | `/monitor/online/list` | +| 强退用户 | DELETE | `/monitor/online/{tokenId}` | +| 获取当前用户登录设备 | GET | `/monitor/online` | +| 强退当前在线设备 | DELETE | `/monitor/online/myself/{tokenId}` | + +--- + +## 六、接口统计 + +| 模块 | 接口数量 | +| -------- | -------- | +| H5认证接口 | 14 | +| H5会员接口 | 13 | +| H5基础数据接口 | 5 | +| 管理后台认证接口 | 10 | +| 会员管理 | 16 | +| 学生管理 | 10 | +| 学校管理 | 13 | +| 区域管理 | 8 | +| 年级管理 | 6 | +| 班级管理 | 6 | +| 学科管理 | 6 | +| 第三方应用管理 | 7 | +| 用户管理 | 16 | +| 角色管理 | 16 | +| 部门管理 | 7 | +| 菜单管理 | 10 | +| 字典类型管理 | 8 | +| 字典数据管理 | 7 | +| 岗位管理 | 8 | +| 参数配置管理 | 9 | +| 通知公告管理 | 5 | +| 操作日志 | 4 | +| 登录日志 | 5 | +| 在线用户 | 4 | +| **总计** | **203*** |