|
@@ -2,12 +2,16 @@ 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.google.common.collect.Lists;
|
|
|
+import com.google.common.collect.Maps;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
|
|
|
import com.yonge.cooleshow.biz.dal.service.ActivityPlanService;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.UserRewardVo;
|
|
|
import com.yonge.cooleshow.common.enums.ActivityTypeEnum;
|
|
|
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;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.ActivityUserReward;
|
|
@@ -16,7 +20,9 @@ import com.yonge.cooleshow.biz.dal.dto.search.ActivityUserRewardSearch;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.ActivityUserRewardDao;
|
|
|
import com.yonge.cooleshow.biz.dal.service.ActivityUserRewardService;
|
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -41,17 +47,50 @@ public class ActivityUserRewardServiceImpl extends ServiceImpl<ActivityUserRewar
|
|
|
throw new BizException("无效的活动ID");
|
|
|
}
|
|
|
|
|
|
+ // 活动获奖用户信息
|
|
|
List<UserRewardVo> userRewards = baseMapper.selectPage(page, query);
|
|
|
|
|
|
- // 分享活动查询关联老师信息
|
|
|
+ // 分享活动关联老师信息
|
|
|
if (ActivityTypeEnum.SHARE == activityPlan.getActivityType()) {
|
|
|
|
|
|
+ Map<Long, String> teacherNameMap = Maps.newConcurrentMap();
|
|
|
List<Long> userIds = userRewards.stream().map(UserRewardVo::getUserId).distinct().collect(Collectors.toList());
|
|
|
|
|
|
+ Lists.partition(userIds, 30).parallelStream().forEach(item -> {
|
|
|
|
|
|
+ // 同一个活动,用户关联多个老师信息
|
|
|
+ Map<Long, String> collect = getBaseMapper().selectActivityShareTeacher(activityPlan.getId(), item).stream()
|
|
|
+ .collect(Collectors.groupingBy(UserRewardVo::getUserId, Collectors.mapping(x -> {
|
|
|
+
|
|
|
+ if (StringUtils.isNotEmpty(x.getRealName())) {
|
|
|
+ return x.getRealName();
|
|
|
+ }
|
|
|
+ return x.getUsername();
|
|
|
+ }, Collectors.joining("、"))));
|
|
|
+
|
|
|
+ teacherNameMap.putAll(collect);
|
|
|
+ });
|
|
|
+
|
|
|
+ // 填充老师信息
|
|
|
+ for (UserRewardVo item : userRewards) {
|
|
|
+
|
|
|
+ item.setTeacherName(teacherNameMap.getOrDefault(item.getUserId(), ""));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return page.setRecords(userRewards);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void saveRewardRecord(Long activityId, Long rewardId, Long userId) {
|
|
|
+ ActivityUserReward activityUserReward = new ActivityUserReward();
|
|
|
+ activityUserReward.setActivityId(activityId);
|
|
|
+ activityUserReward.setRewardId(rewardId);
|
|
|
+ activityUserReward.setUserId(userId);
|
|
|
+ activityUserReward.setCreateTime(new Date());
|
|
|
+ activityUserReward.setUpdateTime(new Date());
|
|
|
+ activityUserReward.setGrantFlag(1);
|
|
|
+ activityUserReward.setReceiveFlag(1);
|
|
|
+ this.save(activityUserReward);
|
|
|
+ }
|
|
|
}
|