From 6a8815941748738055e633c7939a1b1598edc797 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Sat, 26 Jul 2025 23:22:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=AD=A6=E7=94=9F=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xg/controller/XgStudentMsgController.java | 27 +++++++ .../service/impl/XgStudentMsgServiceImpl.java | 80 ++++++++++++++++++- web/src/views/studentMsg/studentMsg/index.vue | 10 +-- 3 files changed, 110 insertions(+), 7 deletions(-) diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgController.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgController.java index 605ac117..6152aa66 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgController.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgController.java @@ -167,6 +167,33 @@ public class XgStudentMsgController extends BaseController { @RepeatSubmit() @PutMapping() public R edit(@Validated(EditGroup.class) @RequestBody XgStudentMsgBo bo) { + // 验证学号作为用户名的唯一性 + if (StringUtils.isNotBlank(bo.getStudentNo())) { + SysUserBo tempUser = new SysUserBo(); + tempUser.setUserName(bo.getStudentNo()); + tempUser.setUserId(bo.getId()); + if (!userService.checkUserNameUnique(tempUser)) { + return R.fail("编辑学生'" + bo.getName() + "'失败,学号'" + bo.getStudentNo() + "'已被使用作为登录账号"); + } + } + // 验证手机号唯一性(如果提供了手机号) + if (StringUtils.isNotBlank(bo.getPhone())) { + SysUserBo tempUser = new SysUserBo(); + tempUser.setPhonenumber(bo.getPhone()); + tempUser.setUserId(bo.getId()); + if (!userService.checkPhoneUnique(tempUser)) { + return R.fail("编辑学生'" + bo.getName() + "'失败,手机号码'" + bo.getPhone() + "'已存在"); + } + } + // 验证邮箱唯一性(如果提供了邮箱) + if (StringUtils.isNotBlank(bo.getEmail())) { + SysUserBo tempUser = new SysUserBo(); + tempUser.setEmail(bo.getEmail()); + tempUser.setUserId(bo.getId()); + if (!userService.checkEmailUnique(tempUser)) { + return R.fail("编辑学生'" + bo.getName() + "'失败,邮箱账号'" + bo.getEmail() + "'已存在"); + } + } return toAjax(xgStudentMsgService.updateByBo(bo)); } diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgServiceImpl.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgServiceImpl.java index 33b427a9..6f5e533d 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgServiceImpl.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgServiceImpl.java @@ -341,10 +341,61 @@ public class XgStudentMsgServiceImpl implements IXgStudentMsgService { * @return 是否修改成功 */ @Override + @Transactional(rollbackFor = Exception.class) public Boolean updateByBo(XgStudentMsgBo bo) { XgStudentMsg update = MapstructUtils.convert(bo, XgStudentMsg.class); validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; + boolean flag = baseMapper.updateById(update) > 0; + + if (flag) { + // 同步更新sys_user表中的用户信息 + try { + // 查询现有的sys_user记录 + var existingUser = sysUserService.selectUserById(bo.getId()); + if (existingUser != null) { + // 更新用户信息 + SysUserBo sysUserBo = new SysUserBo(); + sysUserBo.setUserId(bo.getId()); + sysUserBo.setUserName(bo.getStudentNo()); // 使用学号作为用户名 + sysUserBo.setNickName(bo.getName()); // 使用姓名作为昵称 + sysUserBo.setUserType("sys_user"); // 设置用户类型 + sysUserBo.setEmail(bo.getEmail()); // 设置邮箱 + sysUserBo.setPhonenumber(bo.getPhone()); // 设置手机号 + sysUserBo.setSex(bo.getGender()); // 设置性别 + // 设置头像,空字符串转为null + sysUserBo.setAvatar(StringUtils.isNotBlank(bo.getPhotoPath()) ? bo.getPhotoPath() : null); + sysUserBo.setAccountType("2"); // 设置账号类型 + sysUserBo.setStatus("0"); // 设置状态为正常 + sysUserBo.setRemark("学生信息系统自动更新"); // 设置备注 + // 将classId从String转换为Long类型 + if (StringUtils.isNotBlank(bo.getClassId())) { + try { + sysUserBo.setDeptId(Long.valueOf(bo.getClassId())); + } catch (NumberFormatException e) { + log.warn("班级ID格式错误,无法转换为Long类型: {}", bo.getClassId()); + sysUserBo.setDeptId(null); + } + } else { + sysUserBo.setDeptId(null); + } + + int userResult = sysUserService.updateUser(sysUserBo); + if (userResult > 0) { + log.info("成功更新学生 {} 的系统用户信息,用户ID: {}", bo.getName(), sysUserBo.getUserId()); + } else { + log.warn("更新学生 {} 的系统用户信息失败,用户ID: {}", bo.getName(), sysUserBo.getUserId()); + } + } else { + log.warn("未找到学生 {} 对应的系统用户记录,用户ID: {}", bo.getName(), bo.getId()); + } + } catch (Exception e) { + log.error("更新学生 {} 的系统用户信息失败: {}", bo.getName(), e.getMessage(), e); + // 注意: 由于使用了@Transactional,如果出现异常,整个事务会回滚 + throw new RuntimeException("更新学生系统用户信息失败: " + e.getMessage(), e); + } + } + + return flag; } /** @@ -362,10 +413,35 @@ public class XgStudentMsgServiceImpl implements IXgStudentMsgService { * @return 是否删除成功 */ @Override + @Transactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if (isValid) { // TODO 做一些业务上的校验,判断是否需要校验 } - return baseMapper.deleteByIds(ids) > 0; + + // 删除学生信息(逻辑删除) + boolean studentDeleteResult = baseMapper.deleteByIds(ids) > 0; + + if (studentDeleteResult) { + // 同时逻辑删除sys_user表中的对应数据 + try { + // 将Collection转换为Long[]数组 + Long[] userIds = ids.toArray(new Long[0]); + + // 调用系统用户服务的批量删除方法(逻辑删除) + int userDeleteResult = sysUserService.deleteUserByIds(userIds); + if (userDeleteResult > 0) { + log.info("成功逻辑删除 {} 个学生对应的系统用户", userDeleteResult); + } else { + log.warn("逻辑删除学生对应的系统用户失败,删除数量: {}", userDeleteResult); + } + } catch (Exception e) { + log.error("删除学生信息时同步删除系统用户失败: {}", e.getMessage(), e); + // 注意: 由于使用了@Transactional,如果出现异常,整个事务会回滚 + throw new RuntimeException("删除学生信息时同步删除系统用户失败: " + e.getMessage(), e); + } + } + + return studentDeleteResult; } } diff --git a/web/src/views/studentMsg/studentMsg/index.vue b/web/src/views/studentMsg/studentMsg/index.vue index 3f08ba18..41eb9c75 100644 --- a/web/src/views/studentMsg/studentMsg/index.vue +++ b/web/src/views/studentMsg/studentMsg/index.vue @@ -87,9 +87,9 @@ 修改 - + @@ -145,7 +145,7 @@ - +