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.PgSchoolMapper;
import org.dromara.pangu.school.service.IPgSchoolService;
import org.dromara.common.core.service.UserService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -42,6 +43,7 @@ public class PgSchoolServiceImpl implements IPgSchoolService {
private final PgGradeMapper gradeMapper;
private final PgClassMapper classMapper;
private final PgRegionMapper regionMapper;
private final UserService userService;
@Override
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));
}
// 批量查询创建人昵称
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");
List<SchoolTreeNode> result = new ArrayList<>();
Map<Long, String> finalUserNicknameMap = userNicknameMap;
for (PgSchool s : schools) {
SchoolTreeNode schoolNode = new SchoolTreeNode();
@ -296,7 +309,8 @@ public class PgSchoolServiceImpl implements IPgSchoolService {
schoolNode.setRegionId(s.getRegionId());
schoolNode.setStatus(s.getStatus());
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());
// 查找该学校的年级