|
@@ -2,29 +2,65 @@ package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.ActivityEvaluationRecord;
|
|
|
+import com.yonge.cooleshow.biz.dal.service.ActivityEvaluationRecordService;
|
|
|
import com.yonge.cooleshow.common.enums.YesOrNoEnum;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import org.slf4j.Logger;
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.ActivityRegistration;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.ActivityRegistrationVo;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.search.ActivityRegistrationSearch;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.ActivityRegistrationDao;
|
|
|
import com.yonge.cooleshow.biz.dal.service.ActivityRegistrationService;
|
|
|
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.function.Function;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
public class ActivityRegistrationServiceImpl extends ServiceImpl<ActivityRegistrationDao, ActivityRegistration> implements ActivityRegistrationService {
|
|
|
- private final static Logger log = LoggerFactory.getLogger(ActivityRegistrationServiceImpl.class);
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ActivityEvaluationRecordService activityEvaluationRecordService;
|
|
|
@Override
|
|
|
public ActivityRegistrationVo detail(Long id) {
|
|
|
return baseMapper.detail(id);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public IPage<ActivityRegistrationVo> selectPage(IPage<ActivityRegistrationVo> page, ActivityRegistrationSearch query){
|
|
|
- return page.setRecords(baseMapper.selectPage(page, query));
|
|
|
+ public IPage<ActivityRegistrationVo> selectPage(IPage<ActivityRegistrationVo> page, ActivityRegistrationSearch query) {
|
|
|
+
|
|
|
+ // 活动参与用户信息
|
|
|
+ List<ActivityRegistrationVo> activityUserInfos = baseMapper.selectPage(page, query);
|
|
|
+
|
|
|
+ List<Long> userIds = activityUserInfos.stream()
|
|
|
+ .map(ActivityRegistration::getUserId).distinct().collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 查询用户活动评测获排名最高记录
|
|
|
+ if (CollectionUtils.isNotEmpty(userIds)) {
|
|
|
+
|
|
|
+ Map<Long, ActivityEvaluationRecord> collect = activityEvaluationRecordService.queryActivityUserHighestRankingInfo(query.getActivityId(), userIds).stream()
|
|
|
+ .collect(Collectors.toMap(ActivityEvaluationRecord::getUserId, Function.identity(), (o, n) -> n));
|
|
|
+
|
|
|
+ ActivityEvaluationRecord record;
|
|
|
+ for (ActivityRegistrationVo item : activityUserInfos) {
|
|
|
+
|
|
|
+ if (collect.containsKey(item.getUserId())) {
|
|
|
+
|
|
|
+ record = collect.get(item.getUserId());
|
|
|
+ // 重置当前时间为用户最高排名时间
|
|
|
+ item.score(record.getScore())
|
|
|
+ .times(record.getTimes())
|
|
|
+ .setCreateTime(record.getCreateTime());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return page.setRecords(activityUserInfos);
|
|
|
}
|
|
|
|
|
|
@Override
|