|  | @@ -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
 |