3.8 KiB
3.8 KiB
代码调整记录 - 2025-07-24 - Cursor
📋 调整概览
- 调整日期: 2025-07-24 10:30:00
- 调整人员: Cursor AI
- 调整模块: 系统管理 - 用户信息管理
- 调整类型: 功能增强
🎯 本次调整
1. 用户信息更新同步学生信息功能
文件: backend/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
调整内容
-
导入新增:
- 添加
JdbcTemplate相关导入 - 添加
@Autowired注解导入
- 添加
-
依赖注入:
@Autowired private JdbcTemplate jdbcTemplate; -
方法增强:
updateUserProfile()方法- 添加
@Transactional事务控制 - 新增学生信息同步逻辑
- 当
accountType = "2"时自动更新xg_student_msg表
- 添加
实现逻辑
// 判断账号类型为学生(accountType = "2")时,同步更新学生信息表
if ("2".equals(user.getAccountType()) && result > 0) {
try {
String updateSql = "UPDATE xg_student_msg SET " +
"name = ?, email = ?, gender = ?, phone = ?, update_time = NOW() " +
"WHERE id = ? AND deleted = 0";
jdbcTemplate.update(updateSql,
user.getNickName(), // 昵称对应学生姓名
user.getEmail(), // 邮箱
user.getSex(), // 性别
user.getPhonenumber(), // 手机号
user.getUserId() // 用户ID对应学生ID
);
} catch (Exception e) {
// 异常处理和日志记录
}
}
字段映射关系
| 用户表字段 | 学生表字段 | 说明 |
|---|---|---|
nickName |
name |
用户昵称 → 学生姓名 |
email |
email |
邮箱地址 |
sex |
gender |
性别信息 |
phonenumber |
phone |
手机号码 |
userId |
id |
用户ID → 学生ID |
✅ 功能特性
🔐 安全控制
- ✅ 条件判断: 仅当
accountType = "2"时执行同步 - ✅ 事务控制: 确保数据一致性
- ✅ 异常隔离: 学生信息更新失败不影响用户信息更新
📊 数据同步
- ✅ 实时同步: 用户信息更新时自动同步学生信息
- ✅ 逻辑删除: 仅更新未删除的学生记录 (
deleted = 0) - ✅ 时间戳: 自动更新修改时间
📝 操作日志
- ✅ 成功日志: 记录同步成功信息
- ✅ 错误日志: 记录同步失败详情
- ✅ 用户ID: 便于问题排查
🧪 测试建议
测试场景
- 正常场景: 学生用户(
accountType = "2")更新个人信息 - 条件验证: 非学生用户更新信息时不触发同步
- 异常处理: 学生表不存在对应记录时的处理
- 事务验证: 确保同步失败时不影响用户信息更新
测试数据
-- 测试用户数据 (accountType = "2")
UPDATE sys_user SET account_type = '2' WHERE user_id = 123;
-- 对应学生数据
SELECT * FROM xg_student_msg WHERE id = 123;
📖 相关文档
更新的文档
- 需要更新: API文档 - 用户信息管理部分
- 需要更新: 学生信息管理相关文档
参考规范
- 数据库规范:
docs/设计文档/database/mysql-database-standard.md - 后端开发规范:
.cursor/cursorrules-backend.md
🔄 后续计划
优化建议
- 性能优化: 考虑批量更新场景的优化
- 监控告警: 添加同步失败的监控机制
- 配置化: 将同步逻辑配置化,支持开关控制
扩展功能
- 双向同步: 考虑学生信息更新时反向同步用户信息
- 字段扩展: 支持更多字段的自动同步
- 异步同步: 对于非关键更新采用异步同步机制
✅ 调整状态: 已完成
🔍 验证状态: 待测试
📝 文档状态: 已记录