diff --git a/src/main/java/com/yunhai/bschclassmanage/service/ISendUserBaseService.java b/src/main/java/com/yunhai/bschclassmanage/service/ISendUserBaseService.java index cf869e3..a00a9a7 100644 --- a/src/main/java/com/yunhai/bschclassmanage/service/ISendUserBaseService.java +++ b/src/main/java/com/yunhai/bschclassmanage/service/ISendUserBaseService.java @@ -3,6 +3,7 @@ package com.yunhai.bschclassmanage.service; import com.yunhai.bschclassmanage.entity.SchStudent; import com.yunhai.bschclassmanage.entity.SchTeacher; import com.yunhai.bschclassmanage.enums.NodeType; +import com.yunhai.bschclassmanage.enums.TransferStatus; import com.yunhai.bschclassmanage.model.dto.SchStudentDTO; import com.yunhai.bschclassmanage.model.dto.SchTeacherDTO; import com.yunhai.bschclassmanage.model.dto.SendMoveGroupUserDTO; @@ -53,7 +54,7 @@ public interface ISendUserBaseService { List batchAddTeacher(List teacherList); /** 学生转出:将平台用户状态置为转出(state=1) */ - void setUserGroupState(Integer userId, Integer groupId, Integer schoolId); + void setUserGroupState(Integer userId, Integer groupId, Integer schoolId, TransferStatus status); /** 学生转入:将用户转移到目标学校/班级,返回平台用户信息 */ BoaUser transferUserToSchool(Integer userId, Integer fromSchoolId, Integer schoolId, Integer groupId); diff --git a/src/main/java/com/yunhai/bschclassmanage/service/impl/com/SendUserBaseService.java b/src/main/java/com/yunhai/bschclassmanage/service/impl/com/SendUserBaseService.java index c9d1481..166e800 100644 --- a/src/main/java/com/yunhai/bschclassmanage/service/impl/com/SendUserBaseService.java +++ b/src/main/java/com/yunhai/bschclassmanage/service/impl/com/SendUserBaseService.java @@ -3,6 +3,7 @@ package com.yunhai.bschclassmanage.service.impl.com; import com.yunhai.bschclassmanage.entity.SchStudent; import com.yunhai.bschclassmanage.entity.SchTeacher; import com.yunhai.bschclassmanage.enums.NodeType; +import com.yunhai.bschclassmanage.enums.TransferStatus; import com.yunhai.bschclassmanage.enums.UserRole; import com.yunhai.bschclassmanage.annotation.SyncOpLog; import com.yunhai.bschclassmanage.enums.SyncDataType; @@ -337,14 +338,14 @@ public class SendUserBaseService implements ISendUserBaseService { @SyncOpLog(SyncDataType.SEND_TRANSFER_OUT) @Override - public void setUserGroupState(Integer userId,Integer groupId,Integer schoolId) + public void setUserGroupState(Integer userId, Integer groupId, Integer schoolId,TransferStatus status) { //状态设置成1(转出) SysUserGroupStateRequest request = new SysUserGroupStateRequest(); request.setUserId(userId); request.setGroupId(groupId); request.setSchoolId(schoolId); - request.setState(1); + request.setState(status.getId()); openApiUserClient.setUserGroupState(request); } 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 9fc6d18..011cf4a 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 @@ -167,7 +167,7 @@ public class SchStudentTransferService { for (SchStudent stu:students) { - sendUserBaseService.setUserGroupState(stu.getStuId(),stu.getGroupId(),stu.getSchId()); + sendUserBaseService.setUserGroupState(stu.getStuId(),stu.getGroupId(),stu.getSchId(),TransferStatus.OUT); } } @@ -206,21 +206,22 @@ 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); + sendUserBaseService.setUserGroupState(student.getStuId(),student.getClassId(),student.getSchId(),TransferStatus.IN); }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); } 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 6deff7c..3319172 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 @@ -124,7 +124,7 @@ public class SchTeacherRelationService { .findFirst() .orElse(null); if (groupId != null) { - sendUserBaseService.setUserGroupState(tea.getTeaId(), groupId, schId); + sendUserBaseService.setUserGroupState(tea.getTeaId(), groupId, schId,TransferStatus.OUT); } else { log.warn("教师 teaId={} 在当前学校无组关联,跳过平台转出同步", tea.getTeaId()); } @@ -168,7 +168,12 @@ public class SchTeacherRelationService { boolean alreadyInTarget = oldRelations.stream() .anyMatch(r -> targetSchId.equals(r.getSchId()) && targetGroupId.equals(r.getGroupId())); if (alreadyInTarget) { - sendUserBaseService.changeUserStatus(teaId, true); + schTeacherGroupRepository.batchUpdateTransferStatus( + Arrays.asList(teaId), + targetSchId, + TransferStatus.OUT.getId() + ); + sendUserBaseService.setUserGroupState(teaId,targetGroupId,targetSchId,TransferStatus.IN); }else { // 删除原学校旧关联 schTeacherGroupRepository.deleteAll(oldRelations);