游戏排行榜接入游戏数据
This commit is contained in:
parent
fefbaeac94
commit
dd8e57615c
@ -187,39 +187,16 @@ public class GameBaishunServiceImpl implements GameBaishunService {
|
|||||||
.gameId(Long.parseLong(request.getGameId()))
|
.gameId(Long.parseLong(request.getGameId()))
|
||||||
.build());
|
.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);
|
GameListConfig gameListConfig = gameListConfigService.getByGameId(request.getGameId(), GameOriginEnum.BAISHUN.name(), sysOrigin);
|
||||||
if (Objects.nonNull(gameListConfig)) {
|
if (Objects.nonNull(gameListConfig)) {
|
||||||
Map<Object, Object> build = OfficialNoticeUtils.buildUserProfile(userProfile);
|
sendBroadcast(request, gameListConfig);
|
||||||
build.put("gameUrl", gameListConfig.getCover());
|
|
||||||
build.put("currencyDiff", request.getCurrencyDiff());
|
|
||||||
|
|
||||||
imGroupClient.sendMessageBroadcast(
|
//游戏是否参与打榜活动
|
||||||
BroadcastGroupMsgBodyCmd.builder()
|
incGameRankingActivity(request);
|
||||||
.toPlatform(SysOriginPlatformEnum.LIKEI)
|
|
||||||
.type(GroupMessageTypeEnum.GAME_BAISHUN_WIN)
|
//累计游戏排行榜
|
||||||
.data(build)
|
incGameRankingRecord(request, gameListConfig);
|
||||||
.build()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
//游戏是否参与打榜活动
|
|
||||||
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());
|
log.warn("{} 发送游戏获奖通知--金币数量{}", GoldOrigin.BAISHUN_GAME.name(), request.getCurrencyDiff());
|
||||||
return BaishunResponse.success(new BaishunChangeCurrencyResponse()
|
return BaishunResponse.success(new BaishunChangeCurrencyResponse()
|
||||||
@ -239,18 +216,66 @@ public class GameBaishunServiceImpl implements GameBaishunService {
|
|||||||
return BaishunResponse.fail(BaishunErrorCode.SERVER_ERROR);
|
return BaishunResponse.fail(BaishunErrorCode.SERVER_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void incGameRankingActivity(Long userId, Integer userSex, Long amount, String gameRoundId) {
|
private void sendBroadcast(BaishunChangeCurrencyRequest request, GameListConfig gameListConfig) {
|
||||||
RankingDataUpdateCmd receiverCmd = new RankingDataUpdateCmd();
|
if (gameListConfig == null) {
|
||||||
receiverCmd.setUserId(userId);
|
return;
|
||||||
receiverCmd.setUserSex(userSex);
|
}
|
||||||
receiverCmd.setActivityType(RankingActivityType.GREEDY_GAME.getCode());
|
|
||||||
receiverCmd.setCycleType(RankingCycleType.MONTHLY.getCode());
|
BigDecimal cost = enumConfigCacheService
|
||||||
receiverCmd.setCycleKey("202511");
|
.getValueBigDecimal(EnumConfigKey.GAME_BROADCAST_AMOUNT, gameListConfig.getSysOrigin()) ;
|
||||||
receiverCmd.setDimension(RankingDimension.GAME_WIN.getCode());
|
if (cost == null || cost.compareTo(BigDecimal.ZERO) <= 0) {
|
||||||
receiverCmd.setIncrementQuantity(amount);
|
cost = BigDecimal.valueOf(5000L);
|
||||||
receiverCmd.setBizNo(gameRoundId);
|
}
|
||||||
receiverCmd.setReqSysOrigin(ReqSysOrigin.of("LIKEI"));
|
|
||||||
rankingActivityService.accumulateRankingData(receiverCmd);
|
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) {
|
private GoldReceiptCmd createReceipt(BaishunChangeCurrencyRequest param) {
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
package com.red.circle.other.domain.game;
|
package com.red.circle.other.domain.game;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -9,7 +12,9 @@ import lombok.experimental.Accessors;
|
|||||||
* @author system
|
* @author system
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@Accessors(chain=true)
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Builder
|
||||||
public class GameRankingIncrementCmd {
|
public class GameRankingIncrementCmd {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -81,6 +81,8 @@ public class GameRankingGatewayImpl implements GameRankingGateway {
|
|||||||
update.setOnInsert("gameOrigin", cmd.getGameOrigin());
|
update.setOnInsert("gameOrigin", cmd.getGameOrigin());
|
||||||
update.setOnInsert("gameId", cmd.getGameId());
|
update.setOnInsert("gameId", cmd.getGameId());
|
||||||
update.setOnInsert("periodType", cmd.getPeriodType());
|
update.setOnInsert("periodType", cmd.getPeriodType());
|
||||||
|
update.setOnInsert("gameCover", cmd.getGameCover());
|
||||||
|
update.setOnInsert("gameName", cmd.getGameName());
|
||||||
mongoTemplate.upsert(query, update, GameRanking.class);
|
mongoTemplate.upsert(query, update, GameRanking.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -69,13 +69,20 @@ public class SpringTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGameRanking() {
|
public void testGameRanking() {
|
||||||
String sysOrigin = "LIKEI"; // 例如: "LIKEI"
|
String gameId = "1083";
|
||||||
String gameOrigin = "BAISHUN"; // 例如: "THIRD_PARTY" 或 "APP"
|
|
||||||
String gameId = "1053"; // 例如: "1001"
|
|
||||||
Long prizeAmount = 500L; // 中奖金额(单位:分)
|
|
||||||
|
|
||||||
// 同时更新三个维度的排行榜
|
GameListConfig gameListConfig = gameListConfigService.getByGameId(gameId, GameOriginEnum.BAISHUN.name(), "LIKEI");
|
||||||
gameRankingGateway.incrementPrizeAmount(new GameRankingIncrementCmd());
|
|
||||||
|
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
|
@Test
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user