tongbu
This commit is contained in:
@@ -1,5 +1,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.model.dto.SchStudentDTO;
|
||||
import com.yunhai.bschclassmanage.model.dto.SchTeacherDTO;
|
||||
@@ -18,13 +20,13 @@ public interface ISyncUserBaseService {
|
||||
|
||||
void editGroup(Integer id,String name,Integer parentId,Integer sort, NodeType type);
|
||||
|
||||
BoaUser addTeacher(SchTeacherDTO teacher);
|
||||
BoaUser addTeacher(SchTeacher teacher, String pwd, Integer groupId);
|
||||
|
||||
BoaUser addStudent(SchStudentDTO student);
|
||||
BoaUser editTeacher(SchTeacher teacher,String pwd, Integer groupId);
|
||||
|
||||
BoaUser editTeacher(SchTeacherDTO teacher);
|
||||
|
||||
void deleteTeachers(List<Integer> teaIds,Integer groupId);
|
||||
BoaUser addStudent(SchStudent student, String pwd);
|
||||
|
||||
BoaUser editStudent(SchStudent student, String pwd);
|
||||
|
||||
void deleteUsers(List<Integer> userIds,Integer groupId);
|
||||
}
|
||||
|
||||
@@ -213,6 +213,34 @@ public class ComSchTreeService implements IComSchTreeService {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public List<BoaGroup> getCacheSchGroupTree(Integer schId) {
|
||||
String cacheKey= RedisConstants.SYSTEM_GROUP_TREE+"_"+schId;
|
||||
List<BoaGroup> cached = redisUtil.getList(cacheKey, BoaGroup.class);
|
||||
if (cached != null && !cached.isEmpty()) {
|
||||
return cached;
|
||||
}
|
||||
|
||||
// 2. 加锁防止缓存击穿 + 双重检查
|
||||
synchronized (this) {
|
||||
cached = redisUtil.getList(cacheKey, BoaGroup.class);
|
||||
if (cached != null && !cached.isEmpty()) {
|
||||
return cached;
|
||||
}
|
||||
|
||||
// 3. 从数据库查询
|
||||
BoaGroup schGroup = YschBaseOpenApi.getGroupById(schId,true);
|
||||
List<BoaGroup> list=Collections.singletonList(schGroup);
|
||||
|
||||
// 4. 仅缓存非空结果;空结果不缓存,防止空缓存污染(穿透风险可忽略)
|
||||
if (!list.isEmpty()) {
|
||||
redisUtil.set(cacheKey,list, RedisConstants.CACHE_EXPIRE_1M);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public List<SelectIntVO> getSchoolList() {
|
||||
|
||||
+19
-1
@@ -8,11 +8,13 @@ import com.yunhai.bschclassmanage.enums.UserStatus;
|
||||
import com.yunhai.bschclassmanage.model.dto.SchStudentDTO;
|
||||
import com.yunhai.bschclassmanage.model.entityField.EntityFieldNames;
|
||||
import com.yunhai.bschclassmanage.model.vo.SchStudentVO;
|
||||
import com.yunhai.bschclassmanage.service.ISyncUserBaseService;
|
||||
import com.yunhai.bschclassmanage.utils.LogContextHolder;
|
||||
import com.yunhai.bschclassmanage.utils.ModelMapperUtil;
|
||||
import com.yunhai.bschclassmanage.utils.OtherUtil;
|
||||
import com.yunhai.bschclassmanage.utils.UserContext;
|
||||
import com.yunhai.platform.utils.exception.DException;
|
||||
import com.yunhai.platform.utils.model.BoaUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
@@ -36,6 +38,10 @@ public class SchStudentInfoService {
|
||||
@Autowired
|
||||
private SchStudentCacheService cacheService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private ISyncUserBaseService syncUserBaseService;
|
||||
|
||||
@Autowired
|
||||
private SchStudentLogService logService;
|
||||
|
||||
@@ -91,7 +97,6 @@ public class SchStudentInfoService {
|
||||
throw new DException("学生名称已存在:" + name);
|
||||
}
|
||||
entity.setGroupId(entity.getClassId());
|
||||
entity.setStuId(0);
|
||||
|
||||
// 3. 执行保存
|
||||
SchStudent savedEntity;
|
||||
@@ -100,7 +105,11 @@ public class SchStudentInfoService {
|
||||
entity.setAbnormalStatus(StuAbnormalStatus.NORMAL.getId());
|
||||
entity.setStatus(UserStatus.NORMAL.getId());
|
||||
OtherUtil.setBaseEntityValue(user, entity);
|
||||
|
||||
BoaUser boaStudent= syncUserBaseService.addStudent(entity,entityDTO.getPwd());
|
||||
entity.setGroupId( boaStudent.getId());
|
||||
savedEntity = schStudentRepository.save(entity);
|
||||
|
||||
} else {
|
||||
// 复制允许修改的字段
|
||||
oldStudent = OtherUtil.deepCopy(existingForUpdate, SchStudent.class);
|
||||
@@ -113,6 +122,8 @@ public class SchStudentInfoService {
|
||||
EntityFieldNames.transferStatus,
|
||||
EntityFieldNames.createDate,
|
||||
EntityFieldNames.createUserId);
|
||||
|
||||
syncUserBaseService.editStudent(existingForUpdate,entityDTO.getPwd());
|
||||
savedEntity = schStudentRepository.save(existingForUpdate);
|
||||
// 将保存后的ID回传给entity(用于返回)
|
||||
entity.setId(savedEntity.getId());
|
||||
@@ -169,5 +180,12 @@ public class SchStudentInfoService {
|
||||
|
||||
// 6. 清除每个班级的学生缓存
|
||||
cacheService.clearClassStudentCaches(user.getSchId(), classIds);
|
||||
|
||||
for (Integer classId:classIds) {
|
||||
List<Integer> stuIds=students.stream().filter(s->s.getClassId().equals(classId)).map(s->s.getStuId()).collect(Collectors.toList());
|
||||
if(stuIds.size()>0){
|
||||
syncUserBaseService.deleteUsers(stuIds, classId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+33
-14
@@ -1,5 +1,6 @@
|
||||
package com.yunhai.bschclassmanage.service.impl.sync;
|
||||
|
||||
import com.yunhai.bschclassmanage.entity.SchStudent;
|
||||
import com.yunhai.bschclassmanage.entity.SchTeacher;
|
||||
import com.yunhai.bschclassmanage.enums.NodeType;
|
||||
import com.yunhai.bschclassmanage.enums.UserRole;
|
||||
@@ -50,23 +51,23 @@ public class SyncUserBaseService implements ISyncUserBaseService {
|
||||
}
|
||||
|
||||
|
||||
public BoaUser addTeacher(SchTeacherDTO teacher){
|
||||
public BoaUser addTeacher(SchTeacher teacher,String pwd, Integer groupId){
|
||||
SysUserRequest user=new SysUserRequest();
|
||||
user.setAccount(teacher.getAccount());
|
||||
user.setRealName(teacher.getName());
|
||||
user.setGender(teacher.getGender());
|
||||
user.setIdcard(teacher.getIdCard());
|
||||
user.setPhone(teacher.getTel());
|
||||
user.setGroupId(teacher.getGroupId());
|
||||
user.setGroupId(groupId);
|
||||
|
||||
user.setRoles(Arrays.asList(UserRole.TEACHER_USER.getValue()));
|
||||
if (StringUtils.isNotBlank(teacher.getPwd())) {
|
||||
user.setPassword(teacher.getPwd());
|
||||
if (StringUtils.isNotBlank(pwd)) {
|
||||
user.setPassword(pwd);
|
||||
}
|
||||
return YschBaseOpenApi.addUser(user);
|
||||
}
|
||||
|
||||
public BoaUser addStudent(SchStudentDTO student){
|
||||
public BoaUser addStudent(SchStudent student,String pwd){
|
||||
SysUserRequest user=new SysUserRequest();
|
||||
user.setAccount(student.getAccount());
|
||||
user.setRealName(student.getName());
|
||||
@@ -74,13 +75,13 @@ public class SyncUserBaseService implements ISyncUserBaseService {
|
||||
user.setIdcard(student.getIdCard());
|
||||
user.setGroupId(student.getGroupId());
|
||||
user.setRoles(Arrays.asList(UserRole.STU_USER.getValue()));
|
||||
if (StringUtils.isNotBlank(student.getPwd())) {
|
||||
user.setPassword(student.getPwd());
|
||||
if (StringUtils.isNotBlank(pwd)) {
|
||||
user.setPassword(pwd);
|
||||
}
|
||||
return YschBaseOpenApi.addUser(user);
|
||||
}
|
||||
|
||||
public BoaUser editTeacher(SchTeacherDTO teacher){
|
||||
public BoaUser editTeacher(SchTeacher teacher,String pwd, Integer groupId){
|
||||
if (teacher.getTeaId()==null||teacher.getTeaId()<=0){
|
||||
throw new DException("教师Id不允许为null");
|
||||
}
|
||||
@@ -90,17 +91,35 @@ public class SyncUserBaseService implements ISyncUserBaseService {
|
||||
user.setGender(teacher.getGender());
|
||||
user.setIdcard(teacher.getIdCard());
|
||||
user.setPhone(teacher.getTel());
|
||||
user.setGroupId(teacher.getGroupId());
|
||||
user.setGroupId(groupId);
|
||||
user.setRoles(Arrays.asList(UserRole.TEACHER_USER.getValue()));
|
||||
if (StringUtils.isNotBlank(teacher.getPwd())) {
|
||||
user.setPassword(teacher.getPwd());
|
||||
if (StringUtils.isNotBlank(pwd)) {
|
||||
user.setPassword(pwd);
|
||||
}
|
||||
return YschBaseOpenApi.editUser(teacher.getTeaId(),user);
|
||||
}
|
||||
|
||||
public void deleteTeachers(List<Integer> teaIds,Integer groupId){
|
||||
for (Integer teaId :teaIds) {
|
||||
YschBaseOpenApi.deleteUser(teaId,groupId);
|
||||
public BoaUser editStudent(SchStudent student,String pwd){
|
||||
if (student.getStuId()==null||student.getStuId()<=0){
|
||||
throw new DException("学生Id不允许为null");
|
||||
}
|
||||
SysUserRequest user=new SysUserRequest();
|
||||
user.setAccount(student.getAccount());
|
||||
user.setRealName(student.getName());
|
||||
user.setGender(student.getGender());
|
||||
user.setIdcard(student.getIdCard());
|
||||
user.setGroupId(student.getGroupId());
|
||||
user.setRoles(Arrays.asList(UserRole.STU_USER.getValue()));
|
||||
if (StringUtils.isNotBlank(pwd)) {
|
||||
user.setPassword(pwd);
|
||||
}
|
||||
return YschBaseOpenApi.editUser(student.getStuId(),user);
|
||||
}
|
||||
|
||||
|
||||
public void deleteUsers(List<Integer> userIds,Integer groupId){
|
||||
for (Integer userId :userIds) {
|
||||
YschBaseOpenApi.deleteUser(userId,groupId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -95,7 +95,7 @@ public class SchTeacherInfoService {
|
||||
BeanUtils.copyProperties(dto, teacher);
|
||||
savedTeacher = schTeacherRepository.save(teacher);
|
||||
|
||||
BoaUser syncTeacher= syncUserBaseService.addTeacher(dto);
|
||||
BoaUser syncTeacher= syncUserBaseService.addTeacher(teacher,dto.getPwd(),dto.getGroupId());
|
||||
Integer generatedId = syncTeacher.getId();
|
||||
savedTeacher.setTeaId(generatedId);
|
||||
savedTeacher = schTeacherRepository.save(savedTeacher);
|
||||
@@ -142,7 +142,7 @@ public class SchTeacherInfoService {
|
||||
EntityFieldNames.createUserId,
|
||||
EntityFieldNames.status
|
||||
);
|
||||
syncUserBaseService.editTeacher(dto);
|
||||
syncUserBaseService.editTeacher(existing,dto.getPwd(),dto.getGroupId());
|
||||
schTeacherRepository.save(existing);
|
||||
savedTeacher = existing;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user