From dd8e57615c0c0034279916523dc00fc02e7c44e0 Mon Sep 17 00:00:00 2001 From: tianfeng <769204422@qq.com> Date: Tue, 2 Dec 2025 19:42:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=B8=E6=88=8F=E6=8E=92=E8=A1=8C=E6=A6=9C?= =?UTF-8?q?=E6=8E=A5=E5=85=A5=E6=B8=B8=E6=88=8F=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/game/GameBaishunServiceImpl.java | 107 +++++++++++------- .../domain/game/GameRankingIncrementCmd.java | 7 +- .../gateway/game/GameRankingGatewayImpl.java | 2 + .../other-start/src/test/java/SpringTest.java | 19 +++- 4 files changed, 87 insertions(+), 48 deletions(-) diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/game/GameBaishunServiceImpl.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/game/GameBaishunServiceImpl.java index 2128dd76..3a02dfeb 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/game/GameBaishunServiceImpl.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/game/GameBaishunServiceImpl.java @@ -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 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 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) { diff --git a/rc-service/rc-service-other/other-domain/src/main/java/com/red/circle/other/domain/game/GameRankingIncrementCmd.java b/rc-service/rc-service-other/other-domain/src/main/java/com/red/circle/other/domain/game/GameRankingIncrementCmd.java index 6625a0b0..da8a5d5c 100644 --- a/rc-service/rc-service-other/other-domain/src/main/java/com/red/circle/other/domain/game/GameRankingIncrementCmd.java +++ b/rc-service/rc-service-other/other-domain/src/main/java/com/red/circle/other/domain/game/GameRankingIncrementCmd.java @@ -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 { /** diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/gateway/game/GameRankingGatewayImpl.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/gateway/game/GameRankingGatewayImpl.java index 235e60ae..93c8cd38 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/gateway/game/GameRankingGatewayImpl.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/gateway/game/GameRankingGatewayImpl.java @@ -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); } diff --git a/rc-service/rc-service-other/other-start/src/test/java/SpringTest.java b/rc-service/rc-service-other/other-start/src/test/java/SpringTest.java index 355252f6..bc28e252 100644 --- a/rc-service/rc-service-other/other-start/src/test/java/SpringTest.java +++ b/rc-service/rc-service-other/other-start/src/test/java/SpringTest.java @@ -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