fix: 学校列表创建人显示昵称而不是ID

注入 UserService,批量查询创建人昵称并映射到树形节点
This commit is contained in:
神码-方晓辉 2026-02-02 17:56:44 +08:00
parent 10469f6517
commit ee33a26e57
1 changed files with 15 additions and 1 deletions

View File

@ -20,6 +20,7 @@ import org.dromara.pangu.school.mapper.PgSchoolClassMapper;
import org.dromara.pangu.school.mapper.PgSchoolGradeMapper; import org.dromara.pangu.school.mapper.PgSchoolGradeMapper;
import org.dromara.pangu.school.mapper.PgSchoolMapper; import org.dromara.pangu.school.mapper.PgSchoolMapper;
import org.dromara.pangu.school.service.IPgSchoolService; import org.dromara.pangu.school.service.IPgSchoolService;
import org.dromara.common.core.service.UserService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -42,6 +43,7 @@ public class PgSchoolServiceImpl implements IPgSchoolService {
private final PgGradeMapper gradeMapper; private final PgGradeMapper gradeMapper;
private final PgClassMapper classMapper; private final PgClassMapper classMapper;
private final PgRegionMapper regionMapper; private final PgRegionMapper regionMapper;
private final UserService userService;
@Override @Override
public TableDataInfo<PgSchool> selectPageList(PgSchool school, PageQuery pageQuery) { public TableDataInfo<PgSchool> selectPageList(PgSchool school, PageQuery pageQuery) {
@ -281,9 +283,20 @@ public class PgSchoolServiceImpl implements IPgSchoolService {
classNameMap = classes.stream().collect(java.util.stream.Collectors.toMap(PgClass::getClassId, PgClass::getClassName)); classNameMap = classes.stream().collect(java.util.stream.Collectors.toMap(PgClass::getClassId, PgClass::getClassName));
} }
// 批量查询创建人昵称
Set<Long> createByIds = schools.stream()
.map(PgSchool::getCreateBy)
.filter(id -> id != null)
.collect(Collectors.toSet());
Map<Long, String> userNicknameMap = new HashMap<>();
if (!createByIds.isEmpty()) {
userNicknameMap = userService.selectUserNamesByIds(new ArrayList<>(createByIds));
}
// 构建树形结构 // 构建树形结构
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<SchoolTreeNode> result = new ArrayList<>(); List<SchoolTreeNode> result = new ArrayList<>();
Map<Long, String> finalUserNicknameMap = userNicknameMap;
for (PgSchool s : schools) { for (PgSchool s : schools) {
SchoolTreeNode schoolNode = new SchoolTreeNode(); SchoolTreeNode schoolNode = new SchoolTreeNode();
@ -296,7 +309,8 @@ public class PgSchoolServiceImpl implements IPgSchoolService {
schoolNode.setRegionId(s.getRegionId()); schoolNode.setRegionId(s.getRegionId());
schoolNode.setStatus(s.getStatus()); schoolNode.setStatus(s.getStatus());
schoolNode.setCreateTime(s.getCreateTime() != null ? sdf.format(s.getCreateTime()) : null); schoolNode.setCreateTime(s.getCreateTime() != null ? sdf.format(s.getCreateTime()) : null);
schoolNode.setCreateBy(s.getCreateBy() != null ? s.getCreateBy().toString() : null); // 使用昵称而不是ID
schoolNode.setCreateBy(s.getCreateBy() != null ? finalUserNicknameMap.getOrDefault(s.getCreateBy(), s.getCreateBy().toString()) : null);
schoolNode.setSchoolId(s.getSchoolId()); schoolNode.setSchoolId(s.getSchoolId());
// 查找该学校的年级 // 查找该学校的年级