查询语句查询缓存
This commit is contained in:
parent
0f7ea5d377
commit
9802a2c3d0
@ -1,11 +1,19 @@
|
||||
package com.red.circle.other.app.scheduler.activity;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.red.circle.common.business.core.enums.SysOriginPlatformEnum;
|
||||
import com.red.circle.component.redis.annotation.TaskCacheLock;
|
||||
import com.red.circle.component.redis.service.RedisService;
|
||||
import com.red.circle.framework.core.dto.ReqSysOrigin;
|
||||
import com.red.circle.mq.business.model.event.GameKingRewardEvent;
|
||||
import com.red.circle.mq.rocket.business.producer.UserMqMessageService;
|
||||
import com.red.circle.other.app.command.activity.query.RankingListQryExe;
|
||||
import com.red.circle.other.app.dto.clientobject.activity.RankingListCO;
|
||||
import com.red.circle.other.app.dto.cmd.activity.RankingListQueryCmd;
|
||||
import com.red.circle.other.app.service.activity.RankingActivityService;
|
||||
import com.red.circle.other.domain.ranking.RankingActivityType;
|
||||
import com.red.circle.other.domain.ranking.RankingCycleType;
|
||||
import com.red.circle.tool.core.collection.CollectionUtils;
|
||||
import com.red.circle.tool.core.date.ZonedDateTimeAsiaRiyadhUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -13,6 +21,9 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 游戏王排名奖励兜底任务.
|
||||
*/
|
||||
@ -23,6 +34,11 @@ import org.springframework.stereotype.Component;
|
||||
public class GameKingRewardTask {
|
||||
|
||||
private final RankingActivityService rankingActivityService;
|
||||
private final RankingListQryExe rankingListQryExe;
|
||||
private final RedisService redisService;
|
||||
private static final String RANKING_LIST_CACHE_KEY_PREFIX = "ranking_list:";
|
||||
private static final int CACHE_EXPIRE_MINUTES = 10;
|
||||
private final UserMqMessageService userMqMessageService;
|
||||
|
||||
/**
|
||||
* 每5分钟执行一次,兜底发送游戏王排名奖励.
|
||||
@ -39,11 +55,59 @@ public class GameKingRewardTask {
|
||||
cmd.setTemplateId("2001207026499137537");
|
||||
cmd.setReqSysOrigin(ReqSysOrigin.of("LIKEI"));
|
||||
|
||||
rankingActivityService.getTopFourRankingWithReward(cmd);
|
||||
RankingListQueryCmd top4Cmd = new RankingListQueryCmd();
|
||||
top4Cmd.setActivityType(cmd.getActivityType());
|
||||
top4Cmd.setCycleKey(cmd.getCycleKey());
|
||||
top4Cmd.setCycleType(RankingCycleType.WEEKLY.getCode());
|
||||
top4Cmd.setReqUserId(cmd.getReqUserId());
|
||||
top4Cmd.setReqSysOrigin(cmd.getReqSysOrigin());
|
||||
top4Cmd.setTopN(100);
|
||||
top4Cmd.setTemplateId(cmd.getTemplateId());
|
||||
|
||||
RankingListCO result = rankingListQryExe.execute(top4Cmd);
|
||||
|
||||
String cacheKey = buildRankingListCacheKey(cmd);
|
||||
if (result != null && CollectionUtils.isNotEmpty(result.getRankingList())) {
|
||||
redisService.setString(cacheKey, JSON.toJSONString(result), CACHE_EXPIRE_MINUTES, TimeUnit.MINUTES);
|
||||
|
||||
result.setRankingList(result.getRankingList().stream().limit(10).toList());
|
||||
sendGameKingRewardEvent(cmd, result);
|
||||
}
|
||||
|
||||
log.info("游戏王排名奖励兜底任务执行完成");
|
||||
} catch (Exception e) {
|
||||
log.error("游戏王排名奖励兜底任务执行失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建排行榜缓存Key.
|
||||
*/
|
||||
private String buildRankingListCacheKey(RankingListQueryCmd cmd) {
|
||||
return RANKING_LIST_CACHE_KEY_PREFIX + RankingActivityType.getByCode(cmd.getActivityType()).name() + ":" + cmd.getCycleKey();
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送游戏王奖励消息.
|
||||
*/
|
||||
private void sendGameKingRewardEvent(RankingListQueryCmd cmd, RankingListCO result) {
|
||||
if (CollectionUtils.isEmpty(result.getRankingList())) {
|
||||
return;
|
||||
}
|
||||
|
||||
GameKingRewardEvent event = new GameKingRewardEvent()
|
||||
.setActivityType(RankingActivityType.getByCode(cmd.getActivityType()).name())
|
||||
.setOrigin(cmd.getReqSysOrigin().getOrigin())
|
||||
.setCycleKey(cmd.getCycleKey())
|
||||
.setTemplateId(cmd.getTemplateId())
|
||||
.setRankingUsers(result.getRankingList().stream()
|
||||
.map(user -> new GameKingRewardEvent.RankingUser()
|
||||
.setUserId(user.getUserId())
|
||||
.setRank(user.getRank()))
|
||||
.collect(Collectors.toList()));
|
||||
|
||||
userMqMessageService.sendGameKingRewardEvent(event);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -47,8 +47,7 @@ public class RankingActivityServiceImpl implements RankingActivityService {
|
||||
private final UserProfileGateway userProfileGateway;
|
||||
|
||||
private static final String RANKING_LIST_CACHE_KEY_PREFIX = "ranking_list:";
|
||||
private static final int CACHE_EXPIRE_MINUTES = 5;
|
||||
private static final String GAME_KING_TEMPLATE_ID = "2001207026499137537";
|
||||
private static final int CACHE_EXPIRE_MINUTES = 10;
|
||||
|
||||
@Override
|
||||
public Boolean accumulateRankingData(RankingDataUpdateCmd cmd) {
|
||||
@ -68,8 +67,8 @@ public class RankingActivityServiceImpl implements RankingActivityService {
|
||||
fillCurrentUserRank(cachedResult, cmd.getReqUserId());
|
||||
return cachedResult;
|
||||
}
|
||||
|
||||
RankingListCO result = rankingListQryExe.execute(cmd);
|
||||
|
||||
/*RankingListCO result = rankingListQryExe.execute(cmd);
|
||||
|
||||
if (result != null && CollectionUtils.isNotEmpty(result.getRankingList())) {
|
||||
redisService.setString(cacheKey, JSON.toJSONString(result), CACHE_EXPIRE_MINUTES, TimeUnit.MINUTES);
|
||||
@ -79,7 +78,8 @@ public class RankingActivityServiceImpl implements RankingActivityService {
|
||||
sendGameKingRewardEvent(cmd, top10Result);
|
||||
}
|
||||
|
||||
return result;
|
||||
return result;*/
|
||||
return new RankingListCO();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -110,7 +110,7 @@ public class RankingActivityServiceImpl implements RankingActivityService {
|
||||
top4Cmd.setTopN(100);
|
||||
top4Cmd.setTemplateId(cmd.getTemplateId());
|
||||
|
||||
RankingListCO result = rankingListQryExe.execute(top4Cmd);
|
||||
/*RankingListCO result = rankingListQryExe.execute(top4Cmd);
|
||||
|
||||
if (result != null && CollectionUtils.isNotEmpty(result.getRankingList())) {
|
||||
redisService.setString(cacheKey, JSON.toJSONString(result), CACHE_EXPIRE_MINUTES, TimeUnit.MINUTES);
|
||||
@ -118,9 +118,9 @@ public class RankingActivityServiceImpl implements RankingActivityService {
|
||||
result.setRankingList(result.getRankingList().stream().limit(10).toList());
|
||||
sendGameKingRewardEvent(cmd, result);
|
||||
return convertToRankingUserVOList(result);
|
||||
}
|
||||
|
||||
return null;
|
||||
}*/
|
||||
|
||||
return List.of();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -5,6 +5,7 @@ import com.red.circle.other.app.scheduler.CleanExpiredDismissingCpTask;
|
||||
import com.red.circle.other.app.scheduler.DailyTask;
|
||||
import com.red.circle.other.app.scheduler.RankingActivityRewardTask;
|
||||
import com.red.circle.other.app.scheduler.RocketStatusSyncTask;
|
||||
import com.red.circle.other.app.scheduler.activity.GameKingRewardTask;
|
||||
import com.red.circle.other.app.service.room.RocketStatusCacheService;
|
||||
import com.red.circle.other.inner.endpoint.activity.PropsActivityClient;
|
||||
import com.red.circle.other.inner.model.cmd.activity.SendActivityRewardCmd;
|
||||
@ -28,6 +29,13 @@ public class DailTaskTest {
|
||||
private PropsActivityClient propsActivityClient;
|
||||
@Autowired
|
||||
private CleanExpiredDismissingCpTask cleanExpiredDismissingCpTask;
|
||||
@Autowired
|
||||
private GameKingRewardTask gameKingRewardTask;
|
||||
|
||||
@Test
|
||||
public void testGameKing() {
|
||||
gameKingRewardTask.executeGameKingReward();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void DailTaskTest() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user