3.7 KiB
3.7 KiB
学生信息管理用户验证逻辑修复记录
修复时间: 2025-01-01 14:30:00
修复人员: AI Assistant
影响模块: 学工管理 - 学生信息管理
修复类型: 代码错误修复
问题描述
XgStudentMsgController中的add方法存在多个代码错误:
- 变量名错误: 使用了未定义的
user变量,应该使用参数bo - 导入缺失: 缺少
StringUtils和SysUserBo的导入 - 服务未注入: 引用了
tenantService但未正确注入ISysTenantService - 方法调用错误: 用户验证方法需要
SysUserBo对象参数,而不是String
错误代码片段
// 错误的代码
if (!userService.checkUserNameUnique(user)) {
return R.fail("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
}
修复方案
1. 添加必要的导入
import org.dromara.common.core.utils.StringUtils;
import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.service.ISysTenantService;
2. 注入租户服务
private final ISysTenantService tenantService;
3. 修正用户验证逻辑
// 验证学号作为用户名的唯一性
if (StringUtils.isNotBlank(bo.getStudentNo())) {
SysUserBo tempUser = new SysUserBo();
tempUser.setUserName(bo.getStudentNo());
if (!userService.checkUserNameUnique(tempUser)) {
return R.fail("新增学生'" + bo.getName() + "'失败,学号'" + bo.getStudentNo() + "'已被使用作为登录账号");
}
}
// 验证手机号唯一性(如果提供了手机号)
if (StringUtils.isNotBlank(bo.getPhone())) {
SysUserBo tempUser = new SysUserBo();
tempUser.setPhonenumber(bo.getPhone());
if (!userService.checkPhoneUnique(tempUser)) {
return R.fail("新增学生'" + bo.getName() + "'失败,手机号码'" + bo.getPhone() + "'已存在");
}
}
// 验证邮箱唯一性(如果提供了邮箱)
if (StringUtils.isNotBlank(bo.getEmail())) {
SysUserBo tempUser = new SysUserBo();
tempUser.setEmail(bo.getEmail());
if (!userService.checkEmailUnique(tempUser)) {
return R.fail("新增学生'" + bo.getName() + "'失败,邮箱账号'" + bo.getEmail() + "'已存在");
}
}
修复文件列表
backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgController.java
修复效果
- ✅ 编译错误解决: 消除了所有编译错误
- ✅ 逻辑正确: 用户验证逻辑适配学生信息的字段(学号、手机号、邮箱)
- ✅ 错误消息优化: 错误提示信息更加清晰和用户友好
- ✅ 服务注入完整: 租户服务正确注入,支持多租户用户额度检查
业务逻辑说明
此修复确保了学生信息创建时的用户验证机制正常工作:
- 学号唯一性: 学号将作为系统用户名,必须保证唯一性
- 联系方式唯一性: 手机号和邮箱在系统中必须唯一(如果提供)
- 租户额度检查: 在多租户环境下检查用户创建额度
- 自动用户创建: 通过验证后,Service层会自动为学生创建对应的系统用户账号
关联说明
该验证逻辑与XgStudentMsgServiceImpl.insertByBo方法中的用户创建逻辑配套使用,确保数据一致性和业务完整性。
测试建议
- 测试学号重复时的错误提示
- 测试手机号重复时的错误提示
- 测试邮箱重复时的错误提示
- 测试多租户环境下的用户额度限制
- 测试正常学生信息创建和用户账号自动生成
备注: 此次修复遵循了项目的编码规范和错误处理标准,确保了学生信息管理模块的稳定性和可靠性。