Quellcode durchsuchen

总分排名活动曲目按声部分组

Eric vor 2 Jahren
Ursprung
Commit
4490f68538

+ 27 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityEvaluationServiceImpl.java

@@ -15,6 +15,7 @@ import com.yonge.cooleshow.biz.dal.entity.ActivityEvaluation;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlanReward;
 import com.yonge.cooleshow.biz.dal.entity.Subject;
+import com.yonge.cooleshow.biz.dal.enums.activity.ActivityRankingMethodEnum;
 import com.yonge.cooleshow.biz.dal.service.ActivityEvaluationRecordService;
 import com.yonge.cooleshow.biz.dal.service.ActivityEvaluationService;
 import com.yonge.cooleshow.biz.dal.service.ActivityPlanRewardService;
@@ -30,6 +31,7 @@ import com.yonge.cooleshow.common.enums.ActivityResourceEnum;
 import com.yonge.cooleshow.common.enums.ActivityTypeEnum;
 import com.yonge.cooleshow.common.enums.EStatus;
 import com.yonge.toolset.base.exception.BizException;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,6 +39,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Arrays;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -68,7 +71,28 @@ public class ActivityEvaluationServiceImpl extends ServiceImpl<ActivityEvaluatio
 
     @Override
     public IPage<ActivityEvaluationVo> selectPage(IPage<ActivityEvaluationVo> page, ActivityEvaluationSearch query) {
-        return page.setRecords(baseMapper.selectPage(page, query));
+
+        ActivityPlan activity = activityPlanService.getById(query.getActivityId());
+        if (Objects.isNull(activity)) {
+            throw new BizException("无效的活动ID");
+        }
+
+        List<ActivityEvaluationVo> evaluationInfos = baseMapper.selectPage(page, query);
+        // 排序方式
+        if (ActivityTypeEnum.EVALUATION == activity.getActivityType()
+                && ActivityRankingMethodEnum.TOTAL_SCORE == activity.getRankingMethod()) {
+
+            // 按声部聚合数据返回
+            evaluationInfos = evaluationInfos.stream()
+                    .collect(Collectors.groupingBy(x -> Long.parseLong(x.getSubjectId().split(",")[0])))
+                    .entrySet().stream()
+                    .sorted(Map.Entry.comparingByKey())
+                    .flatMap(x -> x.getValue().stream())
+                    .collect(Collectors.toList());
+
+        }
+
+        return page.setRecords(evaluationInfos);
     }
 
     @Override
@@ -146,8 +170,9 @@ public class ActivityEvaluationServiceImpl extends ServiceImpl<ActivityEvaluatio
         activityContentIds.removeAll(oldMusicSheetIds);
 
         if ((oldMusicSheetIds.size() + activityContentIds.size()) > 10
+                && activity.getRankingMethod() == ActivityRankingMethodEnum.MUSIC_RANKING
                 && activityType == ActivityTypeEnum.EVALUATION) {
-
+            // 评测活动、曲目排名需要限制曲目数量
             throw new BizException("添加的曲目不能多余10首");
         }
         if (CollectionUtils.isNotEmpty(activityContentIds)) {