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