游戏排行榜接入游戏数据

This commit is contained in:
tianfeng 2025-12-02 19:42:54 +08:00
parent fefbaeac94
commit dd8e57615c
4 changed files with 87 additions and 48 deletions

View File

@ -187,39 +187,16 @@ public class GameBaishunServiceImpl implements GameBaishunService {
.gameId(Long.parseLong(request.getGameId()))
.build());
BigDecimal cost = enumConfigCacheService
.getValueBigDecimal(EnumConfigKey.GAME_BROADCAST_AMOUNT, sysOrigin) ;
if (cost == null || cost.compareTo(BigDecimal.ZERO) <= 0) {
cost = BigDecimal.valueOf(5000L);
}
if (request.getCurrencyDiff() >= cost.longValue()) {
UserProfileDTO userProfile = userProfileAppConvertor.toUserProfileDTO(
userProfileGateway.getByUserId(DataTypeUtils.toLong(request.getUserId())));
GameListConfig gameListConfig = gameListConfigService.getByGameId(request.getGameId(), GameOriginEnum.BAISHUN.name(), sysOrigin);
if (Objects.nonNull(gameListConfig)) {
Map<Object, Object> build = OfficialNoticeUtils.buildUserProfile(userProfile);
build.put("gameUrl", gameListConfig.getCover());
build.put("currencyDiff", request.getCurrencyDiff());
sendBroadcast(request, gameListConfig);
imGroupClient.sendMessageBroadcast(
BroadcastGroupMsgBodyCmd.builder()
.toPlatform(SysOriginPlatformEnum.LIKEI)
.type(GroupMessageTypeEnum.GAME_BAISHUN_WIN)
.data(build)
.build()
);
//游戏是否参与打榜活动
incGameRankingActivity(request);
//累计游戏排行榜
incGameRankingRecord(request, gameListConfig);
}
}
//游戏是否参与打榜活动
if (gameId != null && gameId.equals(request.getGameId()) && request.getCurrencyDiff() > 0) {
incGameRankingActivity(DataTypeUtils.toLong(request.getUserId()), 1, request.getCurrencyDiff(),
request.getGameRoundId());
}
log.warn("{} 发送游戏获奖通知--金币数量{}", GoldOrigin.BAISHUN_GAME.name(), request.getCurrencyDiff());
return BaishunResponse.success(new BaishunChangeCurrencyResponse()
@ -239,18 +216,66 @@ public class GameBaishunServiceImpl implements GameBaishunService {
return BaishunResponse.fail(BaishunErrorCode.SERVER_ERROR);
}
private void incGameRankingActivity(Long userId, Integer userSex, Long amount, String gameRoundId) {
RankingDataUpdateCmd receiverCmd = new RankingDataUpdateCmd();
receiverCmd.setUserId(userId);
receiverCmd.setUserSex(userSex);
receiverCmd.setActivityType(RankingActivityType.GREEDY_GAME.getCode());
receiverCmd.setCycleType(RankingCycleType.MONTHLY.getCode());
receiverCmd.setCycleKey("202511");
receiverCmd.setDimension(RankingDimension.GAME_WIN.getCode());
receiverCmd.setIncrementQuantity(amount);
receiverCmd.setBizNo(gameRoundId);
receiverCmd.setReqSysOrigin(ReqSysOrigin.of("LIKEI"));
rankingActivityService.accumulateRankingData(receiverCmd);
private void sendBroadcast(BaishunChangeCurrencyRequest request, GameListConfig gameListConfig) {
if (gameListConfig == null) {
return;
}
BigDecimal cost = enumConfigCacheService
.getValueBigDecimal(EnumConfigKey.GAME_BROADCAST_AMOUNT, gameListConfig.getSysOrigin()) ;
if (cost == null || cost.compareTo(BigDecimal.ZERO) <= 0) {
cost = BigDecimal.valueOf(5000L);
}
if (request.getCurrencyDiff() >= cost.longValue()) {
UserProfileDTO userProfile = userProfileAppConvertor.toUserProfileDTO(
userProfileGateway.getByUserId(DataTypeUtils.toLong(request.getUserId())));
Map<Object, Object> build = OfficialNoticeUtils.buildUserProfile(userProfile);
build.put("gameUrl", gameListConfig.getCover());
build.put("currencyDiff", request.getCurrencyDiff());
imGroupClient.sendMessageBroadcast(
BroadcastGroupMsgBodyCmd.builder()
.toPlatform(SysOriginPlatformEnum.LIKEI)
.type(GroupMessageTypeEnum.GAME_BAISHUN_WIN)
.data(build)
.build()
);
}
}
private void incGameRankingRecord(BaishunChangeCurrencyRequest request, GameListConfig gameListConfig) {
if (gameListConfig == null || request.getCurrencyDiff() <= 0) {
return;
}
GameRankingIncrementCmd build = GameRankingIncrementCmd.builder()
.gameOrigin(GameOriginEnum.BAISHUN.name())
.gameId(gameListConfig.getGameId())
.gameName(gameListConfig.getName())
.gameCover(gameListConfig.getCover())
.sysOrigin(gameListConfig.getSysOrigin())
.amount(request.getCurrencyDiff())
.periodType("ALL")
.build();
gameRankingGateway.incrementPrizeAmount(build);
}
private void incGameRankingActivity(BaishunChangeCurrencyRequest request) {
if (gameId != null && gameId.equals(request.getGameId()) && request.getCurrencyDiff() > 0) {
RankingDataUpdateCmd receiverCmd = new RankingDataUpdateCmd();
receiverCmd.setUserId(DataTypeUtils.toLong(request.getUserId()));
receiverCmd.setUserSex(1);
receiverCmd.setActivityType(RankingActivityType.GREEDY_GAME.getCode());
receiverCmd.setCycleType(RankingCycleType.MONTHLY.getCode());
receiverCmd.setCycleKey("202511");
receiverCmd.setDimension(RankingDimension.GAME_WIN.getCode());
receiverCmd.setIncrementQuantity(request.getCurrencyDiff());
receiverCmd.setBizNo(request.getGameRoundId());
receiverCmd.setReqSysOrigin(ReqSysOrigin.of("LIKEI"));
rankingActivityService.accumulateRankingData(receiverCmd);
}
}
private GoldReceiptCmd createReceipt(BaishunChangeCurrencyRequest param) {

View File

@ -1,6 +1,9 @@
package com.red.circle.other.domain.game;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
@ -9,7 +12,9 @@ import lombok.experimental.Accessors;
* @author system
*/
@Data
@Accessors(chain=true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GameRankingIncrementCmd {
/**

View File

@ -81,6 +81,8 @@ public class GameRankingGatewayImpl implements GameRankingGateway {
update.setOnInsert("gameOrigin", cmd.getGameOrigin());
update.setOnInsert("gameId", cmd.getGameId());
update.setOnInsert("periodType", cmd.getPeriodType());
update.setOnInsert("gameCover", cmd.getGameCover());
update.setOnInsert("gameName", cmd.getGameName());
mongoTemplate.upsert(query, update, GameRanking.class);
}

View File

@ -69,13 +69,20 @@ public class SpringTest {
@Test
public void testGameRanking() {
String sysOrigin = "LIKEI"; // 例如: "LIKEI"
String gameOrigin = "BAISHUN"; // 例如: "THIRD_PARTY" "APP"
String gameId = "1053"; // 例如: "1001"
Long prizeAmount = 500L; // 中奖金额单位
String gameId = "1083";
// 同时更新三个维度的排行榜
gameRankingGateway.incrementPrizeAmount(new GameRankingIncrementCmd());
GameListConfig gameListConfig = gameListConfigService.getByGameId(gameId, GameOriginEnum.BAISHUN.name(), "LIKEI");
GameRankingIncrementCmd build = GameRankingIncrementCmd.builder()
.gameOrigin(GameOriginEnum.BAISHUN.name())
.gameId(gameListConfig.getGameId())
.gameName(gameListConfig.getName())
.gameCover(gameListConfig.getCover())
.sysOrigin(gameListConfig.getSysOrigin())
.amount(100L)
.periodType("ALL")
.build();
gameRankingGateway.incrementPrizeAmount(build);
}
@Test