打榜活动礼物处理
This commit is contained in:
parent
45f7d6199d
commit
b1e66d134c
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user