游戏排行榜接入游戏数据
This commit is contained in:
parent
fefbaeac94
commit
dd8e57615c
@ -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) {
|
||||
|
||||
@ -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 {
|
||||
|
||||
/**
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user