Преглед на файлове

抽奖活动,邀请有礼活动,签到活动这几种更新

liuchengsen преди 1 месец
родител
ревизия
e7ccf71b4d

+ 2 - 14
zhijiayun-activity/src/main/java/com/xuekairui/activity/scheduler/ActivityEventScheduler.java

@@ -64,11 +64,9 @@ public class ActivityEventScheduler {
         while ((event = eventRedisService.popCrawlerConsumedEvent()) != null) {
             try {
                 Long userId = toLong(event.get("userId"));
-                int count = toInt(event.get("count"));
-                String platform = (String) event.get("platform");
                 String usageDate = (String) event.get("usageDate");
-                log.info("消费比价消耗事件: userId={}, count={}, platform={}", userId, count, platform);
-                activityLotteryService.onCrawlerConsumed(userId, count, platform, usageDate);
+                log.info("消费比价消耗事件: userId={}, usageDate={}", userId, usageDate);
+                activityLotteryService.onCrawlerConsumed(userId, usageDate);
                 eventRedisService.ackCrawlerConsumedEvent(event);
             } catch (Exception e) {
                 log.error("处理比价消耗事件失败,事件将保留在备份队列待重试: event={}", event, e);
@@ -85,14 +83,4 @@ public class ActivityEventScheduler {
         }
         return Long.valueOf(value.toString());
     }
-
-    private int toInt(Object value) {
-        if (value == null) {
-            return 0;
-        }
-        if (value instanceof Number) {
-            return ((Number) value).intValue();
-        }
-        return Integer.parseInt(value.toString());
-    }
 }

+ 13 - 12
zhijiayun-activity/src/main/java/com/xuekairui/activity/service/ActivityLotteryService.java

@@ -29,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Optional;
 import java.util.concurrent.ThreadLocalRandom;
 
 /**
@@ -78,9 +79,9 @@ public class ActivityLotteryService {
         config.setEnabled(request.getEnabled());
         config.setStartTime(request.getStartTime());
         config.setEndTime(request.getEndTime());
-        if (request.getDailyMaxChance() != null) config.setDailyMaxChance(request.getDailyMaxChance());
-        if (request.getRequireMembershipLevel() != null) config.setRequireMembershipLevel(request.getRequireMembershipLevel());
-        if (request.getRemark() != null) config.setRemark(request.getRemark());
+        Optional.ofNullable(request.getDailyMaxChance()).ifPresent(config::setDailyMaxChance);
+        Optional.ofNullable(request.getRequireMembershipLevel()).ifPresent(config::setRequireMembershipLevel);
+        Optional.ofNullable(request.getRemark()).ifPresent(config::setRemark);
         if (config.getId() == null) {
             config.setId(CONFIG_ID);
             configMapper.insert(config);
@@ -101,12 +102,12 @@ public class ActivityLotteryService {
      * 幂等:t_activity_lottery_chance 的 uk_user_date_source 保证每日仅一次。
      */
     @Transactional
-    public void onCrawlerConsumed(Long userId, int count, String platform, String usageDateStr) {
+    public void onCrawlerConsumed(Long userId, String usageDateStr) {
         ActivityLotteryConfig config = getConfig();
         if (!isActive(config)) {
             return;
         }
-        if (!isEligible(userId, config)) {
+        if (isEligible(userId, config)) {
             return;
         }
 
@@ -139,7 +140,7 @@ public class ActivityLotteryService {
         if (!isActive(config)) {
             throw new BusinessException(ErrorCode.BUSINESS_ERROR, "比价抽奖活动未开启或已结束");
         }
-        if (!isEligible(userId, config)) {
+        if (isEligible(userId, config)) {
             throw new BusinessException(ErrorCode.BUSINESS_ERROR, "仅高级会员可参与比价抽奖");
         }
 
@@ -260,7 +261,7 @@ public class ActivityLotteryService {
             Long userId, int pageNum, int pageSize) {
         com.baomidou.mybatisplus.extension.plugins.pagination.Page<ActivityLotteryRecord> page =
                 new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(pageNum, pageSize);
-        LambdaQueryWrapper<ActivityLotteryRecord> wrapper = new LambdaQueryWrapper<ActivityLotteryRecord>();
+        LambdaQueryWrapper<ActivityLotteryRecord> wrapper = new LambdaQueryWrapper<>();
         if (userId != null) {
             wrapper.eq(ActivityLotteryRecord::getUserId, userId);
         }
@@ -315,12 +316,12 @@ public class ActivityLotteryService {
         }
         prize.setName(request.getName());
         prize.setRewardType(request.getRewardType());
-        if (request.getRewardAmount() != null) prize.setRewardAmount(request.getRewardAmount());
+        Optional.ofNullable(request.getRewardAmount()).ifPresent(prize::setRewardAmount);
         prize.setRewardDays(request.getRewardDays());
         prize.setRewardLevel(request.getRewardLevel());
-        if (request.getProbabilityWeight() != null) prize.setProbabilityWeight(request.getProbabilityWeight());
-        if (request.getEnabled() != null) prize.setEnabled(request.getEnabled());
-        if (request.getSort() != null) prize.setSort(request.getSort());
+        Optional.ofNullable(request.getProbabilityWeight()).ifPresent(prize::setProbabilityWeight);
+        Optional.ofNullable(request.getEnabled()).ifPresent(prize::setEnabled);
+        Optional.ofNullable(request.getSort()).ifPresent(prize::setSort);
         prizeMapper.updateById(prize);
         return prize;
     }
@@ -345,7 +346,7 @@ public class ActivityLotteryService {
 
     private boolean isEligible(Long userId, ActivityLotteryConfig config) {
         String requireLevel = config.getRequireMembershipLevel() != null ? config.getRequireMembershipLevel() : "PRO";
-        return isLevelEnough(getUserLevel(userId), requireLevel);
+        return !isLevelEnough(getUserLevel(userId), requireLevel);
     }
 
     private MembershipLevel getUserLevel(Long userId) {