|
@@ -4,10 +4,9 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.ActivityPlanDto;
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.ActivityPlanRewardDto;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.search.UserFirstTimeSearch;
|
|
|
-import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
|
|
|
-import com.yonge.cooleshow.biz.dal.entity.ActivityReward;
|
|
|
-import com.yonge.cooleshow.biz.dal.entity.UserFirstTime;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.*;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.service.*;
|
|
|
import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
|
|
@@ -23,11 +22,9 @@ 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.ActivityPlanStandard;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.ActivityPlanStandardDao;
|
|
|
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@@ -44,6 +41,8 @@ public class ActivityPlanStandardServiceImpl extends ServiceImpl<ActivityPlanSta
|
|
|
@Autowired
|
|
|
private ActivityRewardService activityRewardService;
|
|
|
@Autowired
|
|
|
+ private ActivityUserRewardService activityUserRewardService;
|
|
|
+ @Autowired
|
|
|
private RedissonClient redissonClient;
|
|
|
|
|
|
@Override
|
|
@@ -104,24 +103,42 @@ public class ActivityPlanStandardServiceImpl extends ServiceImpl<ActivityPlanSta
|
|
|
if (CollectionUtils.isEmpty(userFirstTimes)) {
|
|
|
return true;
|
|
|
}
|
|
|
+ List<ActivityPlanRewardDto> activityPlanRewardDtos = activityPlanRewardService.queryActivityPlanReward(activityId);
|
|
|
Map<Long, List<UserFirstTime>> userMap = userFirstTimes.stream().collect(Collectors.groupingBy(UserFirstTime::getUserId));
|
|
|
if (ConditionMethodEnum.OR.equals(planStandard.getCalculationMethod())) {
|
|
|
for (Long userId : userMap.keySet()) {
|
|
|
//给用户发奖
|
|
|
- activityRewardService.sendReward(userId, detail.getId());
|
|
|
+ sendUserReward(userId, detail.getId(), activityPlanRewardDtos);
|
|
|
}
|
|
|
} else {
|
|
|
for (Long userId : userMap.keySet()) {
|
|
|
List<UserFirstTime> firstTimes = userMap.get(userId);
|
|
|
if (firstTimes.size() == timeTypes.size()) {
|
|
|
//给用户发奖
|
|
|
- activityRewardService.sendReward(userId, detail.getId());
|
|
|
+ sendUserReward(userId, detail.getId(), activityPlanRewardDtos);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ private void sendUserReward(Long userId, Long activityId, List<ActivityPlanRewardDto> activityPlanRewardDtos) {
|
|
|
+ //给用户发奖
|
|
|
+ List<Long> successRewardIds = activityRewardService.sendReward(userId, activityId);
|
|
|
+ List<ActivityUserReward> activityUserRewardList = new ArrayList<>();
|
|
|
+ for (ActivityPlanRewardDto dto : activityPlanRewardDtos) {
|
|
|
+ ActivityUserReward userReward = new ActivityUserReward();
|
|
|
+ userReward.setActivityId(activityId);
|
|
|
+ userReward.setUserId(userId);
|
|
|
+ userReward.setRewardId(dto.getRewardId());
|
|
|
+
|
|
|
+ Optional<Long> first = successRewardIds.stream().filter(o -> o.equals(dto.getRewardId())).findFirst();
|
|
|
+ userReward.setGrantFlag(first.isPresent() ? 1 : 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ activityUserRewardService.saveBatch(activityUserRewardList);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void successActivity(Long activytyId) {
|
|
|
//处理活动发奖
|