奖励优化
This commit is contained in:
parent
3c64594f3f
commit
e15d1a5b54
@ -1,7 +1,9 @@
|
|||||||
package com.red.circle.other.app.command.activity;
|
package com.red.circle.other.app.command.activity;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.red.circle.common.business.enums.SendPropsOrigin;
|
import com.red.circle.common.business.enums.SendPropsOrigin;
|
||||||
|
import com.red.circle.component.redis.service.RedisService;
|
||||||
import com.red.circle.mq.business.model.event.BadgeOperateEvent;
|
import com.red.circle.mq.business.model.event.BadgeOperateEvent;
|
||||||
import com.red.circle.mq.rocket.business.producer.UserMqMessageService;
|
import com.red.circle.mq.rocket.business.producer.UserMqMessageService;
|
||||||
import com.red.circle.other.app.common.props.SingleGroupRewardPoolCommon;
|
import com.red.circle.other.app.common.props.SingleGroupRewardPoolCommon;
|
||||||
@ -22,6 +24,7 @@ import org.springframework.stereotype.Component;
|
|||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -36,6 +39,10 @@ public class RankingRewardGrantCmdExe {
|
|||||||
private final PropsBackpackClient propsBackpackClient;
|
private final PropsBackpackClient propsBackpackClient;
|
||||||
private final UserMqMessageService userMqMessageService;
|
private final UserMqMessageService userMqMessageService;
|
||||||
private final SingleGroupRewardPoolCommon singleGroupRewardPoolCommon;
|
private final SingleGroupRewardPoolCommon singleGroupRewardPoolCommon;
|
||||||
|
private final RedisService redisService;
|
||||||
|
|
||||||
|
private static final String REWARD_CACHE_KEY_PREFIX = "game_king_reward:";
|
||||||
|
private static final int REWARD_CACHE_EXPIRE_HOURS = 24;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理排名奖励变化.
|
* 处理排名奖励变化.
|
||||||
@ -209,10 +216,8 @@ public class RankingRewardGrantCmdExe {
|
|||||||
|
|
||||||
ActivityConfigDTO config = activityConfig.getConfig();
|
ActivityConfigDTO config = activityConfig.getConfig();
|
||||||
|
|
||||||
List<ActivityRewardPropsDTO> badgeList = singleGroupRewardPoolCommon.listRewardProps(
|
List<ActivityRewardPropsDTO> badgeList = getRewardListFromCache(config.getSysOrigin(), "BADGE");
|
||||||
config.getSysOrigin(), PropsActivityTypeEnum.GAME_KING_BADGE);
|
List<ActivityRewardPropsDTO> honorList = getRewardListFromCache(config.getSysOrigin(), "HONOR");
|
||||||
List<ActivityRewardPropsDTO> honorList = singleGroupRewardPoolCommon.listRewardProps(
|
|
||||||
config.getSysOrigin(), PropsActivityTypeEnum.GAME_KING_HONOR);
|
|
||||||
|
|
||||||
if (rank < 1 || rank > 10) {
|
if (rank < 1 || rank > 10) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
@ -245,6 +250,31 @@ public class RankingRewardGrantCmdExe {
|
|||||||
return rewards;
|
return rewards;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从Redis缓存获取奖励列表.
|
||||||
|
*/
|
||||||
|
private List<ActivityRewardPropsDTO> getRewardListFromCache(String origin, String rewardType) {
|
||||||
|
String cacheKey = REWARD_CACHE_KEY_PREFIX + origin + ":" + rewardType;
|
||||||
|
|
||||||
|
String cachedJson = redisService.getString(cacheKey);
|
||||||
|
if (cachedJson != null) {
|
||||||
|
return JSON.parseArray(cachedJson, ActivityRewardPropsDTO.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
PropsActivityTypeEnum activityTypeEnum = "BADGE".equals(rewardType)
|
||||||
|
? PropsActivityTypeEnum.GAME_KING_BADGE
|
||||||
|
: PropsActivityTypeEnum.GAME_KING_HONOR;
|
||||||
|
|
||||||
|
List<ActivityRewardPropsDTO> rewardList = singleGroupRewardPoolCommon.listRewardProps(origin, activityTypeEnum);
|
||||||
|
|
||||||
|
if (CollectionUtils.isNotEmpty(rewardList)) {
|
||||||
|
redisService.setString(cacheKey, JSON.toJSONString(rewardList), REWARD_CACHE_EXPIRE_HOURS, TimeUnit.HOURS);
|
||||||
|
log.info("缓存游戏王奖励配置到Redis, origin: {}, type: {}, count: {}", origin, rewardType, rewardList.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
return rewardList;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存新快照.
|
* 保存新快照.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user