6.4 KiB
6.4 KiB
班级班主任关系管理功能实现方案
日期:2025-07-22 21:15:30 作者:admin 变更内容:班级管理中的班主任选择功能优化
需求背景
班级管理模块需要优化班主任选择功能,具体要求如下:
- 班主任需要从用户表中选取,选取的范围是角色为班主任的用户
- 新增一个班级和班主任对应关系管理的表,记录班级id和用户id的对应关系,以及这个对应关系是否生效的状态信息
- 新增或者修改班级信息的时候,如果涉及班主任发生变化,则需要向班级和班主任对应关系表新增或修改数据
实现方案
1. 数据库设计
新建班级班主任关系表 xg_class_teacher_relation:
CREATE TABLE xg_class_teacher_relation (
id bigint(20) NOT NULL COMMENT '主键ID',
class_id bigint(20) NOT NULL COMMENT '班级ID',
teacher_id bigint(20) NOT NULL COMMENT '班主任用户ID',
status char(1) NOT NULL DEFAULT '0' COMMENT '状态(0正常 1停用)',
start_date datetime DEFAULT NULL COMMENT '生效开始日期',
end_date datetime DEFAULT NULL COMMENT '生效结束日期',
remark varchar(500) DEFAULT NULL COMMENT '备注',
create_by bigint(20) DEFAULT NULL COMMENT '创建者',
create_time datetime DEFAULT NULL COMMENT '创建时间',
update_by bigint(20) DEFAULT NULL COMMENT '更新者',
update_time datetime DEFAULT NULL COMMENT '更新时间',
tenant_id bigint(20) NOT NULL DEFAULT 0 COMMENT '租户ID',
deleted char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
PRIMARY KEY (id),
KEY idx_class_id (class_id),
KEY idx_teacher_id (teacher_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班级班主任关系表';
2. 后端实现
2.1 实体类设计
创建了以下实体类:
XgClassTeacherRelation: 班级班主任关系实体类XgClassTeacherRelationBo: 班级班主任关系业务对象XgClassTeacherRelationVo: 班级班主任关系视图对象
2.2 Mapper 接口设计
创建了以下Mapper接口:
XgClassTeacherRelationMapper: 班级班主任关系Mapper接口XgSysUserMapper: 扩展的系统用户Mapper接口,用于查询班主任角色用户
2.3 Service 接口设计
创建了以下Service接口:
IXgClassTeacherRelationService: 班级班主任关系Service接口
主要功能包括:
- 查询班级班主任关系
- 新增班级班主任关系
- 修改班级班主任关系
- 删除班级班主任关系
- 创建班级班主任关系
- 更新班级班主任关系
- 获取班级当前班主任
2.4 Service 实现
修改了班级信息Service实现类 XgClassInfoServiceImpl:
- 添加了获取班主任用户列表的方法
getClassTeacherOptions() - 修改了新增班级信息方法
insertByBo(),添加创建班级班主任关系的逻辑 - 修改了修改班级信息方法
updateByBo(),添加更新班级班主任关系的逻辑
2.5 Controller 实现
修改了班级信息Controller XgClassInfoController:
- 添加了获取班主任用户列表的接口
/teacherOptions
3. 前端实现(待完成)
前端需要实现以下功能:
- 修改班级新增/编辑表单,将班主任选择改为下拉选择框
- 调用后端API获取班主任用户列表
- 保存班级信息时,自动处理班主任关系
4. 注意事项
- 班级表(xg_class_info)中仍然保留 class_teacher_id 和 class_teacher_name 字段,用于快速查询和显示
- 班级班主任关系表(xg_class_teacher_relation)用于记录历史关系和状态变更
- 班主任角色的role_key为"19",这是从数据库中查询得到的
- 目前编译遇到问题,需要解决SysUserVo类引入问题,可能需要添加相应的依赖或修改引用路径
下一步工作
- 解决编译错误,主要是SysUserVo类引入问题
- 完成前端实现,修改班级管理页面的班主任选择功能
- 添加班级班主任关系管理页面,用于查看和管理班级班主任关系历史
- 编写单元测试和集成测试
- 更新相关文档
变更记录
- 创建了班级班主任关系表 xg_class_teacher_relation
- 创建了相关实体类、Mapper、Service和Controller
- 修改了班级信息Service和Controller,添加了班主任选择相关功能
- 记录了实现方案和注意事项
编译错误修复记录
修复时间:2025-07-22 21:25:00
修复内容:
-
修复了包路径引用错误:
- 将
org.dromara.system.api.domain.SysUser改为org.dromara.system.domain.SysUser - 将
org.dromara.system.api.domain.vo.SysUserVo改为org.dromara.system.domain.vo.SysUserVo - 将
org.dromara.common.user.vo.SysUserVo改为org.dromara.system.domain.vo.SysUserVo
- 将
-
修复了
BaseMapperPlus的泛型参数错误:- 将
BaseMapperPlus<XgClassTeacherRelationMapper, XgClassTeacherRelation, XgClassTeacherRelationVo>改为BaseMapperPlus<XgClassTeacherRelation, XgClassTeacherRelationVo> - 将
BaseMapperPlus<XgSysUserMapper, SysUser, SysUserVo>改为BaseMapperPlus<SysUser, SysUserVo>
- 将
修复原因:
项目中没有 ruoyi-system-api 模块,正确的类路径应该是在 ruoyi-system 模块中。此外,BaseMapperPlus 的泛型参数应该是两个,而不是三个。
修复结果:
成功修复编译错误,项目可以正常编译。虽然还有一些关于过时 API 和未检查操作的警告,但这些不影响代码的正常运行。
后续工作:
- 考虑修复过时 API 的使用
- 考虑添加类型检查以消除未检查操作的警告
服务启动错误修复记录
修复时间:2025-07-22 21:30:00
修复内容:
- 修复了
XgSysUserMapper.xml文件中的类型路径错误:- 将
resultMap标签中的type="org.dromara.system.api.domain.vo.SysUserVo"改为type="org.dromara.system.domain.vo.SysUserVo"
- 将
修复原因:
在之前修复编译错误时,我们只修改了 Java 代码中的包路径引用,但没有修改 XML 文件中的引用。这导致服务启动时,MyBatis 无法找到 org.dromara.system.api.domain.vo.SysUserVo 类,从而导致 sqlSessionFactory Bean 创建失败。
修复结果:
成功修复了 XML 文件中的类型路径,并重新编译安装了 ruoyi-xg-xx 模块。这应该可以解决服务启动时的错误。
后续工作:
- 确认服务是否能正常启动
- 检查是否还有其他 XML 文件中的类型路径需要修改