diff --git a/src/main/java/com/yunhai/bschclassmanage/service/impl/student/SchStudentTransferService.java b/src/main/java/com/yunhai/bschclassmanage/service/impl/student/SchStudentTransferService.java index b1655f1..9fc6d18 100644 --- a/src/main/java/com/yunhai/bschclassmanage/service/impl/student/SchStudentTransferService.java +++ b/src/main/java/com/yunhai/bschclassmanage/service/impl/student/SchStudentTransferService.java @@ -206,31 +206,32 @@ public class SchStudentTransferService { cacheKeysToDelete.add(RedisConstants.SCHOOL_CLASS_STUDENT + "_" + targetSchId + "_" + targetClassId); - // 执行批量更新(更新学校和班级,transferStatus 置为转入 0) - int updated = schStudentRepository.batchUpdateSchIdAndClassId( - Collections.singletonList(student.getId()), - targetSchId, - targetClassId, - now, - user.getUserId() - ); - if (updated != 1) { - throw new DException("更新失败,可能学生已被删除或修改,请刷新后重试"); + // 已在目标学校且已在目标班级的学生 转入 + if (student.getSchId().equals(targetSchId) && targetClassId.equals(student.getClassId())) { + sendUserBaseService.changeUserStatus(student.getStuId(),true); + }else { + // 执行批量更新(更新学校和班级,transferStatus 置为转入 0) + int updated = schStudentRepository.batchUpdateSchIdAndClassId( + Collections.singletonList(student.getId()), + targetSchId, + targetClassId, + now, + user.getUserId() + ); + if (updated != 1) { + throw new DException("更新失败,可能学生已被删除或修改,请刷新后重试"); + } + // 平台同步:转入目标学校/班级(fromSchoolId 取转入前的原学校) + sendUserBaseService.transferUserToSchool(student.getStuId(), student.getSchId(), targetSchId, targetClassId); } + + // 清除缓存(直接按Key删除) for (String cacheKey : cacheKeysToDelete) { redisUtil.del(cacheKey); } - // 已在目标学校且已在目标班级的学生 转入 - if (student.getSchId().equals(targetSchId) && targetClassId.equals(student.getClassId())) { - sendUserBaseService.changeUserStatus(student.getStuId(),true); - }else { - // 平台同步:转入目标学校/班级(fromSchoolId 取转入前的原学校) - sendUserBaseService.transferUserToSchool(student.getStuId(), student.getSchId(), targetSchId, targetClassId); - } - // 异步记录操作日志 logService.setTransferInLog(user, Collections.singletonList(student), targetSchId, targetClassId); } diff --git a/src/main/java/com/yunhai/bschclassmanage/service/impl/teacher/SchTeacherRelationService.java b/src/main/java/com/yunhai/bschclassmanage/service/impl/teacher/SchTeacherRelationService.java index 8f56bcf..6deff7c 100644 --- a/src/main/java/com/yunhai/bschclassmanage/service/impl/teacher/SchTeacherRelationService.java +++ b/src/main/java/com/yunhai/bschclassmanage/service/impl/teacher/SchTeacherRelationService.java @@ -168,23 +168,23 @@ public class SchTeacherRelationService { boolean alreadyInTarget = oldRelations.stream() .anyMatch(r -> targetSchId.equals(r.getSchId()) && targetGroupId.equals(r.getGroupId())); if (alreadyInTarget) { - return; + sendUserBaseService.changeUserStatus(teaId, true); + }else { + // 删除原学校旧关联 + schTeacherGroupRepository.deleteAll(oldRelations); + + // 插入目标学校/目标组新关联(transferStatus 置为转入 0) + SchTeacherGroup newRel = new SchTeacherGroup(); + newRel.setTeaId(teaId); + newRel.setGroupId(targetGroupId); + newRel.setSchId(targetSchId); + newRel.setTransferStatus(TransferStatus.IN.getId()); + schTeacherGroupRepository.save(newRel); + + // 平台同步:转入目标学校/目标组 + sendUserBaseService.transferUserToSchool(teaId, fromSchId, targetSchId, targetGroupId); } - // 删除原学校旧关联 - schTeacherGroupRepository.deleteAll(oldRelations); - - // 插入目标学校/目标组新关联(transferStatus 置为转入 0) - SchTeacherGroup newRel = new SchTeacherGroup(); - newRel.setTeaId(teaId); - newRel.setGroupId(targetGroupId); - newRel.setSchId(targetSchId); - newRel.setTransferStatus(TransferStatus.IN.getId()); - schTeacherGroupRepository.save(newRel); - - // 平台同步:转入目标学校/目标组 - sendUserBaseService.transferUserToSchool(teaId, fromSchId, targetSchId, targetGroupId); - // 异步记录操作日志 schTeacherRepository.findByTeaId(teaId).ifPresent(teacher -> logService.setTransferInLogs(user, Collections.singletonList(teacher), targetGroupId));