diff --git a/src/main/java/cn/teammodel/controller/admin/service/impl/AdminAppraiseServiceImpl.java b/src/main/java/cn/teammodel/controller/admin/service/impl/AdminAppraiseServiceImpl.java index e8f043d..39aac0c 100644 --- a/src/main/java/cn/teammodel/controller/admin/service/impl/AdminAppraiseServiceImpl.java +++ b/src/main/java/cn/teammodel/controller/admin/service/impl/AdminAppraiseServiceImpl.java @@ -1,6 +1,5 @@ package cn.teammodel.controller.admin.service.impl; -import cn.hutool.core.lang.Pair; import cn.teammodel.common.ErrorCode; import cn.teammodel.common.PK; import cn.teammodel.config.exception.ServiceException; @@ -302,12 +301,20 @@ public class AdminAppraiseServiceImpl implements AdminAppraiseService { if (ObjectUtils.isEmpty(res)) return null; Set studentIdSet = res.stream().map(StudentRankVo::getId).collect(Collectors.toSet()); if (ObjectUtils.isEmpty(studentIdSet)) return res; + List students = studentRepository.findAllByCodeAndIdIn(String.format(PK.STUDENT, schoolId), studentIdSet); - // 提取 Student 中的 name 和 classId - Map> idNameMap = students.stream().collect(Collectors.toMap(Student::getId, item -> new Pair<>(item.getName(), item.getClassId()))); + // 利用数组作为三元组,提取 Student 中的 name 和 classId, picture + Map idNameMap = students.stream().collect(Collectors.toMap(Student::getId, item -> { + String[] studentInfo = new String[3]; + studentInfo[0] = item.getName(); + studentInfo[1]= item.getClassId(); + studentInfo[2] = item.getPicture(); + return studentInfo; + })); res.forEach(rankVo -> { - rankVo.setName(idNameMap.get(rankVo.getId()).getKey()); - rankVo.setClassName(idNameMap.get(rankVo.getId()).getValue()); + rankVo.setName(idNameMap.get(rankVo.getId())[0]); + rankVo.setClassName(idNameMap.get(rankVo.getId())[1]); + rankVo.setPicture(idNameMap.get(rankVo.getId())[2]); }); // 设置 class name diff --git a/src/main/java/cn/teammodel/model/vo/admin/StudentRankVo.java b/src/main/java/cn/teammodel/model/vo/admin/StudentRankVo.java index 04d1216..a3cd62b 100644 --- a/src/main/java/cn/teammodel/model/vo/admin/StudentRankVo.java +++ b/src/main/java/cn/teammodel/model/vo/admin/StudentRankVo.java @@ -11,4 +11,5 @@ import lombok.EqualsAndHashCode; @Data public class StudentRankVo extends RankVo{ private String className; + private String picture; } diff --git a/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java b/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java index e7b851f..6ff7531 100644 --- a/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java +++ b/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java @@ -496,9 +496,14 @@ public class EvaluationServiceImpl implements EvaluationService { int n = 1; for (int i = 0; i <= ruleSize - 1; i++) { - // 直接从第二个开始算 + // 头尾的情况要特判(理清逻辑就很简单) AchievementRule curRule = rules.get(i); int flag = praiseCount / curRule.getPromotionCount(); + // 只有一个节点也特殊处理 + if (ruleSize == 1) { + n = praiseCount / curRule.getLevelCount() + 1; + break; + } if (flag >= 1) { if (i == 0) { curAchievement = curRule;