|
@@ -20,6 +20,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.ActivityPlanStandardDao;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -102,26 +103,47 @@ public class ActivityPlanStandardServiceImpl extends ServiceImpl<ActivityPlanSta
|
|
|
if (CollectionUtils.isEmpty(userFirstTimes)) {
|
|
|
return true;
|
|
|
}
|
|
|
+ Map<Long, Date> userIdSortMap = new LinkedHashMap<>();
|
|
|
+ if (ConditionMethodEnum.OR.equals(planStandard.getCalculationMethod())) {
|
|
|
+ for (int i = 0; i < userFirstTimes.size(); i++) {
|
|
|
+ UserFirstTime userFirstTime = userFirstTimes.get(i);
|
|
|
+ if (null == userIdSortMap.get(userFirstTime.getUserId())) {
|
|
|
+ userIdSortMap.put(userFirstTime.getUserId(), userFirstTime.getTime());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for (int i = (userFirstTimes.size() - 1); i >= 0; i--) {
|
|
|
+ UserFirstTime userFirstTime = userFirstTimes.get(i);
|
|
|
+ if (null == userIdSortMap.get(userFirstTime.getUserId())) {
|
|
|
+ userIdSortMap.put(userFirstTime.getUserId(), userFirstTime.getTime());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
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()) {
|
|
|
+ for (Long userId : userIdSortMap.keySet()) {
|
|
|
+ Date createTime = userIdSortMap.get(userId);
|
|
|
//给用户发奖
|
|
|
- sendUserReward(userId, detail.getId(), activityPlanRewardDtos);
|
|
|
+ sendUserReward(userId, detail.getId(), createTime, activityPlanRewardDtos);
|
|
|
}
|
|
|
} else {
|
|
|
- for (Long userId : userMap.keySet()) {
|
|
|
+ for (Long userId : userIdSortMap.keySet()) {
|
|
|
+ Date createTime = userIdSortMap.get(userId);
|
|
|
List<UserFirstTime> firstTimes = userMap.get(userId);
|
|
|
if (firstTimes.size() == timeTypes.size()) {
|
|
|
//给用户发奖
|
|
|
- sendUserReward(userId, detail.getId(), activityPlanRewardDtos);
|
|
|
+ sendUserReward(userId, detail.getId(), createTime, activityPlanRewardDtos);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- private void sendUserReward(Long userId, Long activityId, List<ActivityPlanRewardDto> activityPlanRewardDtos) {
|
|
|
+ private void sendUserReward(Long userId, Long activityId, Date createTime, List<ActivityPlanRewardDto> activityPlanRewardDtos) {
|
|
|
//给用户发奖
|
|
|
List<Long> successRewardIds = activityRewardService.sendReward(userId, activityId);
|
|
|
|
|
@@ -134,13 +156,14 @@ 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);
|
|
|
}
|
|
|
activityUserRewardService.saveBatch(activityUserRewardList);
|
|
|
|
|
|
//若没有报名则给用户报名
|
|
|
YesOrNoEnum yesOrNoEnum = activityRegistrationService.getRegistration(userId, activityId);
|
|
|
- if(YesOrNoEnum.NO.equals(yesOrNoEnum)){
|
|
|
+ if (YesOrNoEnum.NO.equals(yesOrNoEnum)) {
|
|
|
ActivityRegistration registration = new ActivityRegistration();
|
|
|
registration.setActivityId(activityId);
|
|
|
registration.setUserId(userId);
|