教师转入

This commit is contained in:
2026-08-27 18:03:39 +08:00
parent 511c4319ca
commit ed056b73d4
2 changed files with 15 additions and 13 deletions
@@ -7,26 +7,26 @@ import lombok.NoArgsConstructor;
import javax.validation.constraints.Min; import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
/** /**
* @Author wanghu * @Author wanghu
* @Date 2026-6-10 15:09 (可以根据需要修改) * @Date 2026-6-10 15:09 (可以根据需要修改)
* @Description: * @Description:教师转入DTO(单教师:原学校 schId + 教师 teaId + 目标组 transferGroupId)
*/ */
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class TeaTransferInGroupDTO { public class TeaTransferInGroupDTO {
@NotNull(message = "教师ID列表不能为空")
@Size(min = 1, message = "至少选择一个教师") @NotNull(message = "教师ID不能为空")
@Min(value = 1, message = "教师ID必须大于0")
private Integer teaId; private Integer teaId;
/** 原学校ID(转入前的学校) */
private Integer schId; private Integer schId;
@NotNull(message = "目标组ID不能为空") @NotNull(message = "目标组ID不能为空")
@Min(value=0, message = "至少选择一个组") @Min(value = 1, message = "目标组ID必须大于0")
private Integer transferGroupId; private Integer transferGroupId;
} }
@@ -194,10 +194,7 @@ public class SchStudentTransferService {
SchStudent student = schStudentRepository.findById(model.getStuId()) SchStudent student = schStudentRepository.findById(model.getStuId())
.orElseThrow(() -> new DException("学生不存在!")); .orElseThrow(() -> new DException("学生不存在!"));
// 已在目标学校且已在目标班级的学生无需操作
if (student.getSchId().equals(targetSchId) && targetClassId.equals(student.getClassId())) {
throw new DException("已在目标学校且已在目标班级的学生无需操作!");
}
// 收集受影响的缓存Key(旧班级 + 新班级) // 收集受影响的缓存Key(旧班级 + 新班级)
Set<String> cacheKeysToDelete = new HashSet<>(); Set<String> cacheKeysToDelete = new HashSet<>();
@@ -218,7 +215,7 @@ public class SchStudentTransferService {
user.getUserId() user.getUserId()
); );
if (updated != 1) { if (updated != 1) {
throw new DException("批量更新失败,可能学生已被删除或修改,请刷新后重试"); throw new DException("更新失败,可能学生已被删除或修改,请刷新后重试");
} }
// 清除缓存(直接按Key删除) // 清除缓存(直接按Key删除)
@@ -226,8 +223,13 @@ public class SchStudentTransferService {
redisUtil.del(cacheKey); redisUtil.del(cacheKey);
} }
// 平台同步:转入目标学校/班级(fromSchoolId 取转入前的原学校) // 已在目标学校且已在目标班级的学生 转入
sendUserBaseService.transferUserToSchool(student.getStuId(), student.getSchId(), targetSchId, targetClassId); 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); logService.setTransferInLog(user, Collections.singletonList(student), targetSchId, targetClassId);