学生管理模块 - 技术方案
| 文档信息 |
内容 |
| 文档版本 |
V1.0 |
| 项目名称 |
盘古用户平台(Pangu User Platform) |
| 模块名称 |
学生管理模块 |
| 编写团队 |
pangu |
| 创建日期 |
2026-01-31 |
| 审核状态 |
待审核 |
修订记录
| 版本 |
日期 |
修订人 |
修订内容 |
| V1.0 |
2026-01-31 |
pangu |
初稿 |
目录
- 模块概述
- 功能清单
- 业务流程
- 业务规则
- 数据模型
- 接口设计概览
- 技术架构
- 开发计划
- 风险分析
- 验收标准
1. 模块概述
1.1 模块定位
学生管理模块是盘古用户平台的核心业务模块之一,负责管理学生基本信息、学生与会员的绑定关系、以及支持批量导入功能。该模块为其他业务系统(如AI智慧平台)提供学生数据查询服务。
1.2 模块边界
┌────────────────────────────────────────────────────────────────┐
│ 学生管理模块 │
├────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌────────────────┐ │
│ │ 学生列表查询 │ │ 学生信息维护 │ │ 批量导入 │ │
│ │ - 多条件筛选 │ │ - 新增学生 │ │ - 模板下载 │ │
│ │ - 学校树筛选 │ │ - 编辑学生 │ │ - Excel导入 │ │
│ │ - 分页查询 │ │ - 删除学生 │ │ - 数据校验 │ │
│ └─────────────────┘ └─────────────────┘ └────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 数据关联 │ │
│ │ - 学生 → 会员(归属关系) │ │
│ │ - 学生 → 学校/年级/班级(组织关系) │ │
│ │ - 学生 → 学科(教学关系) │ │
│ └──────────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────┘
│
┌─────────────────┼─────────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 会员模块 │ │ 学校模块 │ │ 开放API │
└──────────┘ └──────────┘ └──────────┘
1.3 用户角色
| 角色 |
权限范围 |
| 超级管理员 |
查看/管理所有学生数据 |
| 分公司用户 |
查看/管理所属区域的学生数据 |
| 学校用户 |
查看/管理本校学生数据 |
1.4 相关文档
2. 功能清单
2.1 功能列表
| 功能编号 |
功能名称 |
功能描述 |
优先级 |
复杂度 |
| STU-001 |
学生列表查询 |
按姓名、学号、性别、手机号、学科等筛选 |
P0 |
中 |
| STU-002 |
学校树筛选 |
通过左侧学校树快速定位学生 |
P0 |
中 |
| STU-003 |
新增学生 |
手动创建学生信息 |
P0 |
低 |
| STU-004 |
编辑学生 |
修改学生基本信息 |
P0 |
低 |
| STU-005 |
删除学生 |
软删除学生信息 |
P1 |
低 |
| STU-006 |
批量导入 |
通过Excel模板批量导入学生 |
P0 |
高 |
| STU-007 |
下载导入模板 |
下载标准Excel导入模板 |
P0 |
低 |
2.2 功能依赖
┌─────────────────────────────────────────────────────────┐
│ 功能依赖关系 │
├─────────────────────────────────────────────────────────┤
│ │
│ STU-001 学生列表查询 │
│ ├── 依赖:区域树数据(区域模块) │
│ ├── 依赖:学校树数据(学校模块) │
│ └── 依赖:学科列表(学科模块) │
│ │
│ STU-002 学校树筛选 │
│ └── 依赖:学校-年级-班级树形结构(学校模块) │
│ │
│ STU-003/004 新增/编辑学生 │
│ ├── 依赖:区域级联选择器 │
│ ├── 依赖:学校-年级-班级级联选择器 │
│ ├── 依赖:学科下拉列表 │
│ └── 依赖:会员选择器(会员模块) │
│ │
│ STU-006 批量导入 │
│ ├── 依赖:区域数据校验 │
│ ├── 依赖:学校数据校验 │
│ └── 依赖:会员自动创建(会员模块) │
│ │
└─────────────────────────────────────────────────────────┘
3. 业务流程
3.1 学生信息维护流程
┌─────────────────────────────────────────────────────────────────┐
│ 学生信息维护流程 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 用户 ──► 选择学校树节点 ──► 查看学生列表 │
│ │ │
│ ┌───────────────────────┼───────────────────────┐ │
│ ▼ ▼ ▼ │
│ 新增学生 编辑学生 删除学生 │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ 填写学生信息 修改学生信息 确认删除 │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ 选择归属会员 保存修改 软删除处理 │
│ │ │ │ │
│ ▼ │ │ │
│ 保存学生信息 │ │ │
│ │ │ │ │
│ └───────────────────────┴───────────────────────┘ │
│ │ │
│ ▼ │
│ 刷新列表数据 │
│ │
└─────────────────────────────────────────────────────────────────┘
3.2 批量导入流程
┌─────────────────────────────────────────────────────────────────┐
│ 批量导入流程 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────────┐ ┌─────────────────────┐ │
│ │ 下载模板 │───▶│ 填写学生数据 │───▶│ 上传Excel文件 │ │
│ └──────────┘ └──────────────┘ └──────────┬──────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ 解析Excel文件 │ │
│ └──────────┬──────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ 数据格式校验 │ │
│ │ - 必填字段检查 │ │
│ │ - 数据格式检查 │ │
│ └──────────┬──────────┘ │
│ │ │
│ ┌──────────────┴──────────┐ │
│ ▼ ▼ │
│ ┌─────────────┐ ┌──────────┐│
│ │ 格式错误 │ │ 格式正确 ││
│ │ 返回错误信息│ │ 继续处理 ││
│ └─────────────┘ └────┬─────┘│
│ │ │
│ ▼ │
│ ┌─────────────────┐│
│ │ 业务数据校验 ││
│ │ - 区域/学校匹配 ││
│ │ - 学号唯一性 ││
│ └───────┬─────────┘│
│ │ │
│ ▼ │
│ ┌─────────────────┐│
│ │ 处理会员关联 ││
│ │ - 手机号已存在: ││
│ │ 挂载到已有会员 ││
│ │ - 手机号不存在: ││
│ │ 创建新会员 ││
│ └───────┬─────────┘│
│ │ │
│ ▼ │
│ ┌─────────────────┐│
│ │ 批量保存学生 ││
│ └───────┬─────────┘│
│ │ │
│ ▼ │
│ ┌─────────────────┐│
│ │ 返回导入结果 ││
│ │ - 成功数量 ││
│ │ - 失败数量及原因 ││
│ └─────────────────┘│
│ │
└─────────────────────────────────────────────────────────────────┘
3.3 数据权限控制流程
┌─────────────────────────────────────────────────────────────────┐
│ 数据权限控制流程 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 请求进入 ──► 获取当前用户角色 │
│ │ │
│ ┌───────────┼───────────┬───────────┐ │
│ ▼ ▼ ▼ ▼ │
│ 超级管理员 分公司用户 学校用户 其他用户 │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ 无限制 按区域过滤 按学校过滤 拒绝访问 │
│ 查询所有 查询所属区域 查询本校 返回403 │
│ 学生数据 学生数据 学生数据 │
│ │ │ │ │
│ └───────────┴───────────┘ │
│ │ │
│ ▼ │
│ 返回过滤后的数据 │
│ │
└─────────────────────────────────────────────────────────────────┘
4. 业务规则
4.1 基础规则
| 规则编号 |
规则描述 |
验证时机 |
| STU-R01 |
学号在系统内不允许重复,可为空 |
新增/编辑/导入时校验 |
| STU-R02 |
姓名为必填项,最大长度50字符 |
新增/编辑/导入时校验 |
| STU-R03 |
学校信息(区域/学校/年级/班级)为必填项 |
新增/编辑/导入时校验 |
| STU-R04 |
出生日期和性别为选填项 |
- |
| STU-R05 |
学生需归属于某个会员(家长/教师) |
新增/编辑/导入时校验 |
| STU-R06 |
所有删除操作均为软删除,保留历史数据 |
删除时执行 |
4.2 批量导入规则
| 规则编号 |
规则描述 |
验证时机 |
| IMP-R01 |
批量导入时需校验必填字段完整性 |
解析Excel后校验 |
| IMP-R02 |
批量导入时需校验区域/学校/年级/班级数据一致性 |
解析Excel后校验 |
| IMP-R03 |
批量导入时,若用户手机号已存在,则挂载到已有用户 |
保存数据时处理 |
| IMP-R04 |
批量导入时,若用户手机号不存在,自动创建家长用户(初始密码:123456) |
保存数据时处理 |
| IMP-R05 |
单次导入数据量限制:≤1000条 |
上传文件时校验 |
| IMP-R06 |
Excel文件大小限制:≤5MB |
上传文件时校验 |
4.3 导入模板规范
| 序号 |
字段名称 |
必填 |
格式说明 |
示例 |
| 1 |
姓名 |
✓ |
最大50字符 |
张小明 |
| 2 |
学号 |
✓ |
最大32字符,系统内唯一 |
STU20260001 |
| 3 |
用户手机号 |
✓ |
11位手机号 |
13812345678 |
| 4 |
区域 |
✓ |
格式:省-市-区 |
湖北省-武汉市-武昌区 |
| 5 |
学校 |
✓ |
学校名称,需与系统数据匹配 |
武汉市第一中学 |
| 6 |
年级 |
✓ |
年级名称,需与系统数据匹配 |
七年级 |
| 7 |
班级 |
✓ |
班级名称,需与系统数据匹配 |
1班 |
| 8 |
性别 |
- |
男/女/空 |
男 |
| 9 |
出生年月 |
- |
格式:YYYY-MM |
2015-03 |
4.4 数据权限规则
| 规则编号 |
角色 |
查询范围 |
操作权限 |
| AUTH-R01 |
超级管理员 |
所有学生数据 |
增删改查 |
| AUTH-R02 |
分公司用户 |
所属区域学生数据 |
增删改查 |
| AUTH-R03 |
学校用户 |
本校学生数据 |
增删改查 |
5. 数据模型
5.1 核心实体关系
┌─────────────────────────────────────────────────────────────────┐
│ 学生数据模型 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ pg_region │ 1 n │ pg_school │ 1 n │pg_school_ │ │
│ │ 区域 │────▶│ 学校 │────▶│ grade │ │
│ └───────────┘ └───────────┘ │ 学校年级 │ │
│ └─────┬─────┘ │
│ │ 1 │
│ │ │
│ ▼ n │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ pg_member │ 1 n │pg_student │ n 1 │pg_school_ │ │
│ │ 会员 │────▶│ 学生 │◀────│ class │ │
│ └───────────┘ └─────┬─────┘ │ 学校班级 │ │
│ │ └───────────┘ │
│ │ n │
│ │ │
│ ▼ 1 │
│ ┌───────────┐ │
│ │pg_subject │ │
│ │ 学科 │ │
│ └───────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
5.2 学生表结构(pg_student)
| 字段名 |
类型 |
必填 |
说明 |
| student_id |
bigint |
✓ |
学生ID,主键自增 |
| student_name |
varchar(50) |
✓ |
学生姓名 |
| student_no |
varchar(32) |
- |
学号,唯一索引 |
| gender |
char(1) |
- |
性别(0未知 1男 2女) |
| birthday |
date |
- |
出生年月 |
| region_id |
bigint |
✓ |
所属区域ID |
| region_path |
varchar(200) |
- |
区域路径(冗余存储) |
| school_id |
bigint |
✓ |
所属学校ID |
| school_grade_id |
bigint |
✓ |
所属学校年级ID |
| school_class_id |
bigint |
✓ |
所属学校班级ID |
| subject_id |
bigint |
- |
学科ID |
| member_id |
bigint |
✓ |
归属会员ID |
| status |
char(1) |
✓ |
状态(0正常 1停用) |
| create_by |
varchar(64) |
- |
创建者 |
| create_time |
datetime |
- |
创建时间 |
| update_by |
varchar(64) |
- |
更新者 |
| update_time |
datetime |
- |
更新时间 |
| del_flag |
char(1) |
✓ |
删除标志(0存在 1删除) |
| remark |
varchar(500) |
- |
备注 |
5.3 索引设计
| 索引名 |
索引字段 |
索引类型 |
说明 |
| PRIMARY |
student_id |
主键 |
主键索引 |
| uk_student_no |
student_no |
唯一 |
学号唯一性保证 |
| idx_member_id |
member_id |
普通 |
按会员查询学生 |
| idx_school_id |
school_id |
普通 |
按学校查询学生 |
| idx_school_class_id |
school_class_id |
普通 |
按班级查询学生 |
| idx_student_name |
student_name |
普通 |
按姓名模糊查询 |
6. 接口设计概览
6.1 接口清单
| 接口编号 |
请求方式 |
接口路径 |
功能描述 |
| API-001 |
GET |
/api/student/list |
查询学生列表(分页) |
| API-002 |
GET |
/api/student/{studentId} |
获取学生详情 |
| API-003 |
POST |
/api/student |
新增学生 |
| API-004 |
PUT |
/api/student |
修改学生 |
| API-005 |
DELETE |
/api/student/{studentId} |
删除学生 |
| API-006 |
POST |
/api/student/import |
批量导入学生 |
| API-007 |
GET |
/api/student/template |
下载导入模板 |
6.2 接口与功能映射
| 功能编号 |
功能名称 |
前端操作 |
调用接口 |
| STU-001 |
学生列表查询 |
查询表单+分页 |
API-001 |
| STU-002 |
学校树筛选 |
点击树节点 |
API-001 |
| STU-003 |
新增学生 |
弹窗表单提交 |
API-003 |
| STU-004 |
编辑学生 |
弹窗表单提交 |
API-002, API-004 |
| STU-005 |
删除学生 |
确认弹窗删除 |
API-005 |
| STU-006 |
批量导入 |
上传Excel |
API-006 |
| STU-007 |
下载导入模板 |
点击下载 |
API-007 |
7. 技术架构
7.1 前端技术栈
| 技术 |
版本 |
用途 |
| Vue |
3.5.x |
前端框架 |
| Element Plus |
2.x |
UI组件库 |
| Axios |
1.x |
HTTP请求 |
| Pinia |
3.x |
状态管理 |
| Vue Router |
4.x |
路由管理 |
| XLSX |
0.18.x |
Excel解析 |
7.2 后端技术栈
| 技术 |
版本 |
用途 |
| Spring Boot |
3.3.x |
应用框架 |
| Spring Security |
6.x |
安全框架 |
| MyBatis Plus |
3.5.x |
ORM框架 |
| EasyExcel |
4.x |
Excel处理 |
| Hutool |
5.x |
工具库 |
| JDK |
17+ |
运行环境 |
7.3 组件划分
前端组件:
src/views/student/
├── index.vue # 学生管理主页面
├── components/
│ ├── StudentDialog.vue # 新增/编辑学生弹窗
│ ├── ImportDialog.vue # 批量导入弹窗
│ └── SchoolTree.vue # 学校树组件(可复用)
src/api/
└── student.js # 学生管理API
src/mock/
└── student.js # Mock数据
后端组件:
pangu-admin/
└── controller/
└── StudentController.java # 学生管理控制器
pangu-system/
├── domain/
│ ├── Student.java # 学生实体
│ ├── dto/
│ │ ├── StudentDTO.java # 学生DTO
│ │ └── StudentImportDTO.java # 导入DTO
│ └── vo/
│ └── StudentVO.java # 学生VO
├── mapper/
│ └── StudentMapper.java # 学生Mapper
├── service/
│ ├── IStudentService.java # 学生服务接口
│ └── impl/
│ └── StudentServiceImpl.java# 学生服务实现
└── listener/
└── StudentImportListener.java # Excel导入监听器
8. 开发计划
8.1 里程碑
| 阶段 |
任务 |
交付物 |
| 第一阶段 |
基础功能开发 |
列表查询、新增、编辑、删除 |
| 第二阶段 |
批量导入开发 |
模板下载、Excel导入、数据校验 |
| 第三阶段 |
联调测试 |
前后端联调、功能测试 |
| 第四阶段 |
验收交付 |
文档完善、验收评审 |
8.2 任务分解
第一阶段:基础功能开发
| 序号 |
任务 |
负责端 |
依赖 |
| 1.1 |
创建学生表、初始化数据 |
后端 |
无 |
| 1.2 |
学生服务层开发(CRUD) |
后端 |
1.1 |
| 1.3 |
学生Controller开发 |
后端 |
1.2 |
| 1.4 |
学生列表页面开发 |
前端 |
Mock数据 |
| 1.5 |
学校树组件开发 |
前端 |
Mock数据 |
| 1.6 |
新增/编辑弹窗开发 |
前端 |
Mock数据 |
第二阶段:批量导入开发
| 序号 |
任务 |
负责端 |
依赖 |
| 2.1 |
导入模板生成 |
后端 |
无 |
| 2.2 |
Excel解析与校验 |
后端 |
2.1 |
| 2.3 |
会员自动创建逻辑 |
后端 |
2.2 |
| 2.4 |
批量保存与事务处理 |
后端 |
2.3 |
| 2.5 |
导入弹窗开发 |
前端 |
Mock数据 |
| 2.6 |
导入结果展示 |
前端 |
2.5 |
第三阶段:联调测试
| 序号 |
任务 |
负责人 |
依赖 |
| 3.1 |
前后端接口联调 |
前端+后端 |
1.x, 2.x |
| 3.2 |
功能测试 |
测试 |
3.1 |
| 3.3 |
Bug修复 |
前端+后端 |
3.2 |
| 3.4 |
回归测试 |
测试 |
3.3 |
9. 风险分析
9.1 技术风险
| 风险项 |
风险等级 |
影响 |
应对措施 |
| Excel大文件导入性能 |
中 |
导入超时 |
使用EasyExcel流式读取,分批处理 |
| 批量导入数据校验复杂 |
中 |
校验不完整 |
设计完善的校验规则,编写单元测试 |
| 学校树数据量大 |
低 |
页面加载慢 |
使用懒加载,按需加载子节点 |
| 并发导入冲突 |
低 |
数据重复 |
使用乐观锁,学号唯一索引 |
9.2 业务风险
| 风险项 |
风险等级 |
影响 |
应对措施 |
| 导入模板格式变更 |
中 |
用户导入失败 |
模板版本控制,兼容处理 |
| 会员自动创建失败 |
中 |
学生无法关联 |
事务回滚,返回详细错误 |
| 数据权限配置错误 |
高 |
数据泄露 |
完善权限测试用例 |
10. 验收标准
10.1 功能验收
| 验收项 |
验收标准 |
| 学生列表查询 |
支持多条件筛选,分页正确,学校树筛选有效 |
| 新增学生 |
必填校验正确,学号唯一性校验,关联数据正确 |
| 编辑学生 |
数据回显正确,修改保存成功 |
| 删除学生 |
确认提示,软删除,列表刷新 |
| 批量导入 |
模板下载正确,Excel解析正确,校验完整,会员自动创建 |
| 数据权限 |
三种角色权限控制正确 |
10.2 性能验收
| 验收项 |
验收标准 |
| 列表查询 |
响应时间 ≤ 500ms |
| 学校树加载 |
首次加载 ≤ 1s |
| 批量导入 |
1000条数据 ≤ 30s |
| 单条保存 |
响应时间 ≤ 200ms |
10.3 质量验收
| 验收项 |
验收标准 |
| 代码规范 |
符合团队编码规范 |
| 单元测试 |
核心业务覆盖率 ≥ 80% |
| 接口文档 |
Swagger文档完整 |
| 日志记录 |
关键操作有审计日志 |
审核签字
| 角色 |
姓名 |
日期 |
签字 |
| 技术负责人 |
|
|
|
| 产品负责人 |
|
|
|
| 测试负责人 |
|
|
|
| 项目经理 |
|
|
|
文档结束