|  | @@ -6,8 +6,10 @@ import com.google.common.collect.Lists;
 | 
	
		
			
				|  |  |  import com.google.common.collect.Maps;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.dao.ActivityUserRewardDao;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.dto.search.ActivityUserRewardSearch;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.entity.ActivityEvaluationRecord;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.entity.ActivityReward;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.ActivityEvaluationRecordService;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.service.ActivityPlanService;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.service.ActivityRewardService;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.entity.ActivityUserReward;
 | 
	
	
		
			
				|  | @@ -20,6 +22,7 @@ import com.yonge.cooleshow.common.enums.EStatus;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.common.enums.RewardTypeEnum;
 | 
	
		
			
				|  |  |  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;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
	
		
			
				|  | @@ -28,6 +31,7 @@ import java.util.Date;
 | 
	
		
			
				|  |  |  import java.util.List;
 | 
	
		
			
				|  |  |  import java.util.Map;
 | 
	
		
			
				|  |  |  import java.util.Objects;
 | 
	
		
			
				|  |  | +import java.util.function.Function;
 | 
	
		
			
				|  |  |  import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Slf4j
 | 
	
	
		
			
				|  | @@ -36,7 +40,8 @@ public class ActivityUserRewardServiceImpl extends ServiceImpl<ActivityUserRewar
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private ActivityPlanService activityPlanService;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private ActivityEvaluationRecordService activityEvaluationRecordService;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private ActivityRewardService activityRewardService;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -61,6 +66,33 @@ public class ActivityUserRewardServiceImpl extends ServiceImpl<ActivityUserRewar
 | 
	
		
			
				|  |  |          // 活动获奖用户信息
 | 
	
		
			
				|  |  |          List<UserRewardVo> userRewards = baseMapper.selectPage(page, query);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isEmpty(userRewards)) {
 | 
	
		
			
				|  |  | +            // 直接返回数据,忽略后续流程
 | 
	
		
			
				|  |  | +            return page.setRecords(userRewards);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        List<Long> userIds = userRewards.stream().map(UserRewardVo::getUserId).distinct().collect(Collectors.toList());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 评测活动,获奖记录时间
 | 
	
		
			
				|  |  | +        if (ActivityTypeEnum.EVALUATION == activityPlan.getActivityType()) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            Map<Long, ActivityEvaluationRecord> collect = activityEvaluationRecordService.queryActivityUserHighestRankingInfo(query.getActivityId(), userIds).stream()
 | 
	
		
			
				|  |  | +                    .collect(Collectors.toMap(ActivityEvaluationRecord::getUserId, Function.identity(), (o, n) -> n));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            ActivityEvaluationRecord record;
 | 
	
		
			
				|  |  | +            for (UserRewardVo item : userRewards) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (collect.containsKey(item.getUserId())) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    record = collect.get(item.getUserId());
 | 
	
		
			
				|  |  | +                    // 重置当前获奖用户分数,评测次数,评测时间
 | 
	
		
			
				|  |  | +                    item.score(record.getScore())
 | 
	
		
			
				|  |  | +                            .times(record.getTimes())
 | 
	
		
			
				|  |  | +                            .setEvaluationTime(record.getCreateTime());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          // 分享活动关联老师信息
 | 
	
		
			
				|  |  |          if (ActivityTypeEnum.SHARE == activityPlan.getActivityType()) {
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -69,8 +101,6 @@ public class ActivityUserRewardServiceImpl extends ServiceImpl<ActivityUserRewar
 | 
	
		
			
				|  |  |              // 关联老师ID
 | 
	
		
			
				|  |  |              Map<Long, String> teacherIdMap = Maps.newConcurrentMap();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            List<Long> userIds = userRewards.stream().map(UserRewardVo::getUserId).distinct().collect(Collectors.toList());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              Lists.partition(userIds, 30).parallelStream().forEach(item -> {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  List<UserRewardVo> retlist = getBaseMapper().selectActivityShareTeacher(activityPlan.getId(), item);
 |