2026-03-27 22:20:25 +08:00
|
|
|
|
## 学校管理模块
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 功能概述
|
|
|
|
|
|
|
|
|
|
|
|
学校管理模块提供完整的学校组织架构和人员管理功能,包括学校信息、年级、班级、部门、教师和学生的管理。
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 核心功能
|
|
|
|
|
|
|
|
|
|
|
|
#### 2.1 学校信息管理
|
|
|
|
|
|
|
|
|
|
|
|
**功能描述**:
|
|
|
|
|
|
|
|
|
|
|
|
- 管理学校基本信息(地址、电话、校长、建校时间等)
|
|
|
|
|
|
- 上传学校 Logo
|
|
|
|
|
|
- 设置学校网站
|
|
|
|
|
|
|
|
|
|
|
|
**用户角色**:
|
|
|
|
|
|
|
|
|
|
|
|
- 超级管理员:创建和管理所有学校
|
|
|
|
|
|
- 学校管理员:管理本学校信息
|
|
|
|
|
|
|
|
|
|
|
|
**业务规则**:
|
|
|
|
|
|
|
|
|
|
|
|
- 每个租户对应一个学校
|
|
|
|
|
|
- 学校信息与租户信息一对一关联
|
|
|
|
|
|
|
|
|
|
|
|
#### 2.2 年级管理
|
|
|
|
|
|
|
|
|
|
|
|
**功能描述**:
|
|
|
|
|
|
|
|
|
|
|
|
- 创建和管理年级(一年级、二年级等)
|
|
|
|
|
|
- 设置年级级别(用于排序)
|
|
|
|
|
|
- 年级编码唯一性校验
|
|
|
|
|
|
|
|
|
|
|
|
**用户角色**:
|
|
|
|
|
|
|
|
|
|
|
|
- 学校管理员:管理本学校年级
|
|
|
|
|
|
|
|
|
|
|
|
**业务规则**:
|
|
|
|
|
|
|
|
|
|
|
|
- 年级编码在租户内唯一
|
|
|
|
|
|
- 年级级别在租户内唯一(用于排序)
|
|
|
|
|
|
- 删除年级前需先删除所有班级
|
|
|
|
|
|
|
|
|
|
|
|
#### 2.3 班级管理
|
|
|
|
|
|
|
|
|
|
|
|
**功能描述**:
|
|
|
|
|
|
|
|
|
|
|
|
- 创建和管理班级(行政班级和兴趣班)
|
|
|
|
|
|
- 设置班级容量
|
|
|
|
|
|
- 管理班级学生
|
|
|
|
|
|
|
|
|
|
|
|
**用户角色**:
|
|
|
|
|
|
|
|
|
|
|
|
- 学校管理员:管理所有班级
|
|
|
|
|
|
- 班主任:管理本班级学生
|
|
|
|
|
|
|
|
|
|
|
|
**业务规则**:
|
|
|
|
|
|
|
|
|
|
|
|
- **行政班级(type=1)**:
|
|
|
|
|
|
- 学生必须属于一个行政班级
|
|
|
|
|
|
- 一个学生只能属于一个行政班级
|
|
|
|
|
|
- **兴趣班(type=2)**:
|
|
|
|
|
|
- 学生可以加入多个兴趣班
|
|
|
|
|
|
- 通过多对多关联表管理
|
|
|
|
|
|
|
|
|
|
|
|
#### 2.4 部门管理
|
|
|
|
|
|
|
|
|
|
|
|
**功能描述**:
|
|
|
|
|
|
|
|
|
|
|
|
- 创建和管理部门(支持树形结构)
|
|
|
|
|
|
- 设置部门层级关系
|
|
|
|
|
|
- 管理部门教师
|
|
|
|
|
|
|
|
|
|
|
|
**用户角色**:
|
|
|
|
|
|
|
|
|
|
|
|
- 学校管理员:管理所有部门
|
|
|
|
|
|
|
|
|
|
|
|
**业务规则**:
|
|
|
|
|
|
|
|
|
|
|
|
- 部门支持多级嵌套(树形结构)
|
|
|
|
|
|
- 教师必须归属于一个部门
|
|
|
|
|
|
- 删除部门前需先转移或删除该部门下的所有教师
|
|
|
|
|
|
|
|
|
|
|
|
#### 2.5 教师管理
|
|
|
|
|
|
|
|
|
|
|
|
**功能描述**:
|
|
|
|
|
|
|
|
|
|
|
|
- 创建教师账号(自动创建 User 记录)
|
|
|
|
|
|
- 管理教师信息(工号、部门、科目、职称等)
|
|
|
|
|
|
- 教师账号激活/停用
|
|
|
|
|
|
|
|
|
|
|
|
**用户角色**:
|
|
|
|
|
|
|
|
|
|
|
|
- 学校管理员:管理所有教师
|
|
|
|
|
|
- 部门负责人:查看本部门教师
|
|
|
|
|
|
|
|
|
|
|
|
**业务规则**:
|
|
|
|
|
|
|
|
|
|
|
|
- 教师账号与 User 表一对一关联
|
|
|
|
|
|
- 工号在租户内唯一
|
|
|
|
|
|
- 教师必须归属于一个部门
|
|
|
|
|
|
- 删除教师账号时,级联删除 User 记录
|
|
|
|
|
|
|
|
|
|
|
|
#### 2.6 学生管理
|
|
|
|
|
|
|
|
|
|
|
|
**功能描述**:
|
|
|
|
|
|
|
|
|
|
|
|
- 创建学生账号(自动创建 User 记录)
|
|
|
|
|
|
- 管理学生信息(学号、班级、家长信息等)
|
|
|
|
|
|
- 学生账号激活/停用
|
|
|
|
|
|
- 管理学生兴趣班
|
|
|
|
|
|
|
|
|
|
|
|
**用户角色**:
|
|
|
|
|
|
|
|
|
|
|
|
- 学校管理员:管理所有学生
|
|
|
|
|
|
- 班主任:管理本班级学生
|
|
|
|
|
|
|
|
|
|
|
|
**业务规则**:
|
|
|
|
|
|
|
|
|
|
|
|
- 学生账号与 User 表一对一关联
|
|
|
|
|
|
- 学号在租户内唯一
|
|
|
|
|
|
- 学生必须属于一个行政班级
|
|
|
|
|
|
- 学生可以加入多个兴趣班
|
|
|
|
|
|
- 删除学生账号时,级联删除 User 记录
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 数据模型
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
Tenant (租户/学校)
|
|
|
|
|
|
├── School (学校信息) [1:1]
|
|
|
|
|
|
├── Grade (年级) [1:N]
|
|
|
|
|
|
│ └── Class (班级) [1:N]
|
|
|
|
|
|
│ ├── Student (学生) [1:N, 仅行政班级]
|
|
|
|
|
|
│ └── StudentInterestClass [N:M, 仅兴趣班]
|
|
|
|
|
|
├── Department (部门) [1:N, 树形结构]
|
|
|
|
|
|
│ └── Teacher (教师) [1:N]
|
|
|
|
|
|
└── User (用户) [1:N]
|
|
|
|
|
|
├── Teacher [1:1]
|
|
|
|
|
|
└── Student [1:1]
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 技术架构
|
|
|
|
|
|
|
|
|
|
|
|
### 4. 关键业务规则
|
|
|
|
|
|
|
|
|
|
|
|
1. **数据隔离**:所有数据通过 `tenantId` 实现租户隔离
|
|
|
|
|
|
2. **用户统一**:教师和学生都基于 User 表,通过扩展表存储特定信息
|
|
|
|
|
|
3. **级联删除**:删除租户时,级联删除所有相关数据
|
|
|
|
|
|
4. **限制删除**:删除部门/班级前,需先处理关联的教师/学生
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 后端架构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
backend/
|
|
|
|
|
|
├── src/
|
|
|
|
|
|
│ ├── school/ # 学校管理模块
|
|
|
|
|
|
│ │ ├── schools/
|
|
|
|
|
|
│ │ ├── grades/
|
|
|
|
|
|
│ │ ├── classes/
|
|
|
|
|
|
│ │ ├── departments/
|
|
|
|
|
|
│ │ ├── teachers/
|
|
|
|
|
|
│ │ └── students/
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 前端架构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
frontend/
|
|
|
|
|
|
├── src/
|
|
|
|
|
|
│ ├── views/
|
|
|
|
|
|
│ │ ├── school/ # 学校管理页面
|
|
|
|
|
|
│ │ │ ├── schools/
|
|
|
|
|
|
│ │ │ ├── grades/
|
|
|
|
|
|
│ │ │ ├── classes/
|
|
|
|
|
|
│ │ │ ├── departments/
|
|
|
|
|
|
│ │ │ ├── teachers/
|
|
|
|
|
|
│ │ │ └── students/
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 权限设计
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 角色规划
|
|
|
|
|
|
|
|
|
|
|
|
**学校管理员(school_admin)**:
|
|
|
|
|
|
|
|
|
|
|
|
- 学校管理:school:\*
|
|
|
|
|
|
- 年级管理:grade:\*
|
|
|
|
|
|
- 班级管理:class:\*
|
|
|
|
|
|
- 部门管理:department:\*
|
|
|
|
|
|
- 教师管理:teacher:\*
|
|
|
|
|
|
- 学生管理:student:\*
|
|
|
|
|
|
|
|
|
|
|
|
**教师(teacher)**:
|
|
|
|
|
|
|
|
|
|
|
|
- 比赛查看:contest:read
|
|
|
|
|
|
- 比赛报名:contest:register
|
|
|
|
|
|
- 作品提交:work:submit
|
|
|
|
|
|
- 作品查看:work:read
|
|
|
|
|
|
- 学生管理:student:read(本班级)
|
|
|
|
|
|
|
|
|
|
|
|
**学生(student)**:
|
|
|
|
|
|
|
|
|
|
|
|
- 比赛查看:contest:read
|
|
|
|
|
|
- 比赛报名:contest:register
|
|
|
|
|
|
- 作品提交:work:submit
|
|
|
|
|
|
- 作品查看:work:read(自己的作品)
|
|
|
|
|
|
- 结果查看:result:read
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 权限编码
|
|
|
|
|
|
|
|
|
|
|
|
#### 2.1 学校管理权限
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
school:create # 创建学校
|
|
|
|
|
|
school:read # 查看学校
|
|
|
|
|
|
school:update # 更新学校
|
|
|
|
|
|
school:delete # 删除学校
|
|
|
|
|
|
|
|
|
|
|
|
grade:create # 创建年级
|
|
|
|
|
|
grade:read # 查看年级
|
|
|
|
|
|
grade:update # 更新年级
|
|
|
|
|
|
grade:delete # 删除年级
|
|
|
|
|
|
|
|
|
|
|
|
class:create # 创建班级
|
|
|
|
|
|
class:read # 查看班级
|
|
|
|
|
|
class:update # 更新班级
|
|
|
|
|
|
class:delete # 删除班级
|
|
|
|
|
|
|
|
|
|
|
|
department:create # 创建部门
|
|
|
|
|
|
department:read # 查看部门
|
|
|
|
|
|
department:update # 更新部门
|
|
|
|
|
|
department:delete # 删除部门
|
|
|
|
|
|
|
|
|
|
|
|
teacher:create # 创建教师
|
|
|
|
|
|
teacher:read # 查看教师
|
|
|
|
|
|
teacher:update # 更新教师
|
|
|
|
|
|
teacher:delete # 删除教师
|
|
|
|
|
|
|
|
|
|
|
|
student:create # 创建学生
|
|
|
|
|
|
student:read # 查看学生
|
|
|
|
|
|
student:update # 更新学生
|
|
|
|
|
|
student:delete # 删除学生
|
|
|
|
|
|
```
|