打榜活动礼物处理

This commit is contained in:
tianfeng 2025-11-17 19:39:10 +08:00
parent 45f7d6199d
commit b1e66d134c
3 changed files with 45 additions and 8 deletions

View File

@ -396,21 +396,37 @@ public class RankCountStrategy implements GiftStrategy {
return;
}
// 先查询上架且进行中的活动
List<ActivityConfig> ongoingActivities = activityConfigService.listOngoingActivities(runningWater.getSysOrigin());
if (CollectionUtils.isEmpty(ongoingActivities)) {
log.debug("没有进行中的活动,跳过排行榜累计");
return;
}
// 生成本周周一的cycleKey格式yyyyMMdd
String cycleKey = generateWeeklyCycleKey();
// 计算实际金额
Long actualAmount = getActualAmount(isLuckyGift, runningWater.getGiftValue().getActualAmount(), luckyGiftRatio);
String giftType = runningWater.getGiftValue().getGiftType();
// 遍历所有排行榜活动类型
for (RankingActivityType activityType : RankingActivityType.values()) {
if (giftType.contains(activityType.name())) {
// 累计对应活动类型的数据
getDataUpdateCmd(runningWater, senderProfile.getUserSex(), cycleKey, actualAmount, activityType);
}
// 遍历活动找到对应的type再累计对应活动类型的数据
for (ActivityConfig activity : ongoingActivities) {
if (Objects.isNull(activity.getActivityType())) {
continue;
}
if (!activity.getGiftIds().contains(String.valueOf(runningWater.getGiftId()))) {
continue;
}
// 将活动类型转换为RankingActivityType枚举
try {
RankingActivityType activityType = RankingActivityType.valueOf(activity.getActivityType());
// 累计对应活动类型的数据
getDataUpdateCmd(runningWater, senderProfile.getUserSex(), cycleKey, actualAmount, activityType);
} catch (IllegalArgumentException e) {
log.warn("未识别的活动类型: {}, activityId={}", activity.getActivityType(), activity.getId());
}
}
} catch (Exception e) {
log.error("累计新排行榜数据异常, runningWaterId={}", runningWater.getId(), e);

View File

@ -72,4 +72,11 @@ public interface ActivityConfigService {
ActivityConfig getShowcaseActivityConf(Long templateId, String activityType);
List<ActivityConfig> listRecentlyEndedActivities(String sysOrigin, Integer limit);
/**
* 查询上架且进行中的活动
* @param sysOrigin 系统来源
* @return 活动配置列表
*/
List<ActivityConfig> listOngoingActivities(String sysOrigin);
}

View File

@ -266,4 +266,18 @@ public class ActivityConfigServiceImpl implements ActivityConfigService {
);
}
@Override
public List<ActivityConfig> listOngoingActivities(String sysOrigin) {
if (StringUtils.isBlank(sysOrigin)) {
return Lists.newArrayList();
}
Date now = TimestampUtils.now();
return mongoTemplate.find(
Query.query(Criteria.where("sysOrigin").is(sysOrigin)
.and("showcase").is(Boolean.TRUE)
.and("startTime").lte(now)
.and("endTime").gte(now)),
ActivityConfig.class);
}
}