tongbu
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
package com.yunhai.bschclassmanage.service;
|
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.NodeType;
|
||||||
import com.yunhai.bschclassmanage.model.dto.SchStudentDTO;
|
import com.yunhai.bschclassmanage.model.dto.SchStudentDTO;
|
||||||
import com.yunhai.bschclassmanage.model.dto.SchTeacherDTO;
|
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);
|
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);
|
BoaUser addStudent(SchStudent student, String pwd);
|
||||||
|
|
||||||
void deleteTeachers(List<Integer> teaIds,Integer groupId);
|
|
||||||
|
|
||||||
|
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() {
|
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.dto.SchStudentDTO;
|
||||||
import com.yunhai.bschclassmanage.model.entityField.EntityFieldNames;
|
import com.yunhai.bschclassmanage.model.entityField.EntityFieldNames;
|
||||||
import com.yunhai.bschclassmanage.model.vo.SchStudentVO;
|
import com.yunhai.bschclassmanage.model.vo.SchStudentVO;
|
||||||
|
import com.yunhai.bschclassmanage.service.ISyncUserBaseService;
|
||||||
import com.yunhai.bschclassmanage.utils.LogContextHolder;
|
import com.yunhai.bschclassmanage.utils.LogContextHolder;
|
||||||
import com.yunhai.bschclassmanage.utils.ModelMapperUtil;
|
import com.yunhai.bschclassmanage.utils.ModelMapperUtil;
|
||||||
import com.yunhai.bschclassmanage.utils.OtherUtil;
|
import com.yunhai.bschclassmanage.utils.OtherUtil;
|
||||||
import com.yunhai.bschclassmanage.utils.UserContext;
|
import com.yunhai.bschclassmanage.utils.UserContext;
|
||||||
import com.yunhai.platform.utils.exception.DException;
|
import com.yunhai.platform.utils.exception.DException;
|
||||||
|
import com.yunhai.platform.utils.model.BoaUser;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
@@ -36,6 +38,10 @@ public class SchStudentInfoService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private SchStudentCacheService cacheService;
|
private SchStudentCacheService cacheService;
|
||||||
|
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISyncUserBaseService syncUserBaseService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SchStudentLogService logService;
|
private SchStudentLogService logService;
|
||||||
|
|
||||||
@@ -91,7 +97,6 @@ public class SchStudentInfoService {
|
|||||||
throw new DException("学生名称已存在:" + name);
|
throw new DException("学生名称已存在:" + name);
|
||||||
}
|
}
|
||||||
entity.setGroupId(entity.getClassId());
|
entity.setGroupId(entity.getClassId());
|
||||||
entity.setStuId(0);
|
|
||||||
|
|
||||||
// 3. 执行保存
|
// 3. 执行保存
|
||||||
SchStudent savedEntity;
|
SchStudent savedEntity;
|
||||||
@@ -100,7 +105,11 @@ public class SchStudentInfoService {
|
|||||||
entity.setAbnormalStatus(StuAbnormalStatus.NORMAL.getId());
|
entity.setAbnormalStatus(StuAbnormalStatus.NORMAL.getId());
|
||||||
entity.setStatus(UserStatus.NORMAL.getId());
|
entity.setStatus(UserStatus.NORMAL.getId());
|
||||||
OtherUtil.setBaseEntityValue(user, entity);
|
OtherUtil.setBaseEntityValue(user, entity);
|
||||||
|
|
||||||
|
BoaUser boaStudent= syncUserBaseService.addStudent(entity,entityDTO.getPwd());
|
||||||
|
entity.setGroupId( boaStudent.getId());
|
||||||
savedEntity = schStudentRepository.save(entity);
|
savedEntity = schStudentRepository.save(entity);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// 复制允许修改的字段
|
// 复制允许修改的字段
|
||||||
oldStudent = OtherUtil.deepCopy(existingForUpdate, SchStudent.class);
|
oldStudent = OtherUtil.deepCopy(existingForUpdate, SchStudent.class);
|
||||||
@@ -113,6 +122,8 @@ public class SchStudentInfoService {
|
|||||||
EntityFieldNames.transferStatus,
|
EntityFieldNames.transferStatus,
|
||||||
EntityFieldNames.createDate,
|
EntityFieldNames.createDate,
|
||||||
EntityFieldNames.createUserId);
|
EntityFieldNames.createUserId);
|
||||||
|
|
||||||
|
syncUserBaseService.editStudent(existingForUpdate,entityDTO.getPwd());
|
||||||
savedEntity = schStudentRepository.save(existingForUpdate);
|
savedEntity = schStudentRepository.save(existingForUpdate);
|
||||||
// 将保存后的ID回传给entity(用于返回)
|
// 将保存后的ID回传给entity(用于返回)
|
||||||
entity.setId(savedEntity.getId());
|
entity.setId(savedEntity.getId());
|
||||||
@@ -169,5 +180,12 @@ public class SchStudentInfoService {
|
|||||||
|
|
||||||
// 6. 清除每个班级的学生缓存
|
// 6. 清除每个班级的学生缓存
|
||||||
cacheService.clearClassStudentCaches(user.getSchId(), classIds);
|
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;
|
package com.yunhai.bschclassmanage.service.impl.sync;
|
||||||
|
|
||||||
|
import com.yunhai.bschclassmanage.entity.SchStudent;
|
||||||
import com.yunhai.bschclassmanage.entity.SchTeacher;
|
import com.yunhai.bschclassmanage.entity.SchTeacher;
|
||||||
import com.yunhai.bschclassmanage.enums.NodeType;
|
import com.yunhai.bschclassmanage.enums.NodeType;
|
||||||
import com.yunhai.bschclassmanage.enums.UserRole;
|
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();
|
SysUserRequest user=new SysUserRequest();
|
||||||
user.setAccount(teacher.getAccount());
|
user.setAccount(teacher.getAccount());
|
||||||
user.setRealName(teacher.getName());
|
user.setRealName(teacher.getName());
|
||||||
user.setGender(teacher.getGender());
|
user.setGender(teacher.getGender());
|
||||||
user.setIdcard(teacher.getIdCard());
|
user.setIdcard(teacher.getIdCard());
|
||||||
user.setPhone(teacher.getTel());
|
user.setPhone(teacher.getTel());
|
||||||
user.setGroupId(teacher.getGroupId());
|
user.setGroupId(groupId);
|
||||||
|
|
||||||
user.setRoles(Arrays.asList(UserRole.TEACHER_USER.getValue()));
|
user.setRoles(Arrays.asList(UserRole.TEACHER_USER.getValue()));
|
||||||
if (StringUtils.isNotBlank(teacher.getPwd())) {
|
if (StringUtils.isNotBlank(pwd)) {
|
||||||
user.setPassword(teacher.getPwd());
|
user.setPassword(pwd);
|
||||||
}
|
}
|
||||||
return YschBaseOpenApi.addUser(user);
|
return YschBaseOpenApi.addUser(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BoaUser addStudent(SchStudentDTO student){
|
public BoaUser addStudent(SchStudent student,String pwd){
|
||||||
SysUserRequest user=new SysUserRequest();
|
SysUserRequest user=new SysUserRequest();
|
||||||
user.setAccount(student.getAccount());
|
user.setAccount(student.getAccount());
|
||||||
user.setRealName(student.getName());
|
user.setRealName(student.getName());
|
||||||
@@ -74,13 +75,13 @@ public class SyncUserBaseService implements ISyncUserBaseService {
|
|||||||
user.setIdcard(student.getIdCard());
|
user.setIdcard(student.getIdCard());
|
||||||
user.setGroupId(student.getGroupId());
|
user.setGroupId(student.getGroupId());
|
||||||
user.setRoles(Arrays.asList(UserRole.STU_USER.getValue()));
|
user.setRoles(Arrays.asList(UserRole.STU_USER.getValue()));
|
||||||
if (StringUtils.isNotBlank(student.getPwd())) {
|
if (StringUtils.isNotBlank(pwd)) {
|
||||||
user.setPassword(student.getPwd());
|
user.setPassword(pwd);
|
||||||
}
|
}
|
||||||
return YschBaseOpenApi.addUser(user);
|
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){
|
if (teacher.getTeaId()==null||teacher.getTeaId()<=0){
|
||||||
throw new DException("教师Id不允许为null");
|
throw new DException("教师Id不允许为null");
|
||||||
}
|
}
|
||||||
@@ -90,17 +91,35 @@ public class SyncUserBaseService implements ISyncUserBaseService {
|
|||||||
user.setGender(teacher.getGender());
|
user.setGender(teacher.getGender());
|
||||||
user.setIdcard(teacher.getIdCard());
|
user.setIdcard(teacher.getIdCard());
|
||||||
user.setPhone(teacher.getTel());
|
user.setPhone(teacher.getTel());
|
||||||
user.setGroupId(teacher.getGroupId());
|
user.setGroupId(groupId);
|
||||||
user.setRoles(Arrays.asList(UserRole.TEACHER_USER.getValue()));
|
user.setRoles(Arrays.asList(UserRole.TEACHER_USER.getValue()));
|
||||||
if (StringUtils.isNotBlank(teacher.getPwd())) {
|
if (StringUtils.isNotBlank(pwd)) {
|
||||||
user.setPassword(teacher.getPwd());
|
user.setPassword(pwd);
|
||||||
}
|
}
|
||||||
return YschBaseOpenApi.editUser(teacher.getTeaId(),user);
|
return YschBaseOpenApi.editUser(teacher.getTeaId(),user);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteTeachers(List<Integer> teaIds,Integer groupId){
|
public BoaUser editStudent(SchStudent student,String pwd){
|
||||||
for (Integer teaId :teaIds) {
|
if (student.getStuId()==null||student.getStuId()<=0){
|
||||||
YschBaseOpenApi.deleteUser(teaId,groupId);
|
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);
|
BeanUtils.copyProperties(dto, teacher);
|
||||||
savedTeacher = schTeacherRepository.save(teacher);
|
savedTeacher = schTeacherRepository.save(teacher);
|
||||||
|
|
||||||
BoaUser syncTeacher= syncUserBaseService.addTeacher(dto);
|
BoaUser syncTeacher= syncUserBaseService.addTeacher(teacher,dto.getPwd(),dto.getGroupId());
|
||||||
Integer generatedId = syncTeacher.getId();
|
Integer generatedId = syncTeacher.getId();
|
||||||
savedTeacher.setTeaId(generatedId);
|
savedTeacher.setTeaId(generatedId);
|
||||||
savedTeacher = schTeacherRepository.save(savedTeacher);
|
savedTeacher = schTeacherRepository.save(savedTeacher);
|
||||||
@@ -142,7 +142,7 @@ public class SchTeacherInfoService {
|
|||||||
EntityFieldNames.createUserId,
|
EntityFieldNames.createUserId,
|
||||||
EntityFieldNames.status
|
EntityFieldNames.status
|
||||||
);
|
);
|
||||||
syncUserBaseService.editTeacher(dto);
|
syncUserBaseService.editTeacher(existing,dto.getPwd(),dto.getGroupId());
|
||||||
schTeacherRepository.save(existing);
|
schTeacherRepository.save(existing);
|
||||||
savedTeacher = existing;
|
savedTeacher = existing;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user