liweifan пре 2 година
родитељ
комит
a04d197974

+ 13 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanStandardServiceImpl.java

@@ -123,7 +123,6 @@ public class ActivityPlanStandardServiceImpl extends ServiceImpl<ActivityPlanSta
         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 : userIdSortMap.keySet()) {
                 Date createTime = userIdSortMap.get(userId);
@@ -131,7 +130,11 @@ public class ActivityPlanStandardServiceImpl extends ServiceImpl<ActivityPlanSta
                 sendUserReward(userId, detail.getId(), createTime, activityPlanRewardDtos);
             }
         } else {
-            for (Long userId : userIdSortMap.keySet()) {
+            List<Long> mainList = new ArrayList<>();
+            mainList.addAll(userIdSortMap.keySet());
+            Collections.reverse(mainList);
+
+            for (Long userId : mainList) {
                 Date createTime = userIdSortMap.get(userId);
                 List<UserFirstTime> firstTimes = userMap.get(userId);
                 if (firstTimes.size() == timeTypes.size()) {
@@ -147,7 +150,6 @@ public class ActivityPlanStandardServiceImpl extends ServiceImpl<ActivityPlanSta
         //给用户发奖
         List<Long> successRewardIds = activityRewardService.sendReward(userId, activityId);
 
-        List<ActivityUserReward> activityUserRewardList = new ArrayList<>();
         for (ActivityPlanRewardDto dto : activityPlanRewardDtos) {
             ActivityUserReward userReward = new ActivityUserReward();
             userReward.setActivityId(activityId);
@@ -157,9 +159,15 @@ public class ActivityPlanStandardServiceImpl extends ServiceImpl<ActivityPlanSta
             Optional<Long> first = successRewardIds.stream().filter(o -> o.equals(dto.getRewardId())).findFirst();
             userReward.setGrantFlag(first.isPresent() ? 1 : 0);
             userReward.setCreateTime(createTime);
-            activityUserRewardList.add(userReward);
+
+            ActivityUserReward one = activityUserRewardService.getOne(Wrappers.<ActivityUserReward>lambdaQuery()
+                    .eq(ActivityUserReward::getUserId, userId)
+                    .eq(ActivityUserReward::getActivityId, activityId)
+                    .eq(ActivityUserReward::getRewardId, dto.getRewardId()));
+            if(null == one){
+                activityUserRewardService.save(userReward);
+            }
         }
-        activityUserRewardService.saveBatch(activityUserRewardList);
 
         //若没有报名则给用户报名
         YesOrNoEnum yesOrNoEnum = activityRegistrationService.getRegistration(userId, activityId);