From 88bdfc9c16113ec6d181c62c11b1cd4807e5cd30 Mon Sep 17 00:00:00 2001 From: shi Date: Fri, 11 Apr 2025 15:20:58 +0800 Subject: [PATCH] =?UTF-8?q?refactor(ff-game):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E4=BD=99=E9=A2=9D=E8=BD=AC=E7=A7=BB=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除冗余的平台和货币信息查询逻辑 - 使用 GameExchangeDTO封装余额转移数据 -引入 StepProcessorFactory 处理余额转移步骤 - 实现异步执行余额转移操作 -优化错误处理和日志记录 --- .../java/com/ff/quartz/task/GameTask.java | 63 ++++++++----------- 1 file changed, 27 insertions(+), 36 deletions(-) diff --git a/ff-game/src/main/java/com/ff/quartz/task/GameTask.java b/ff-game/src/main/java/com/ff/quartz/task/GameTask.java index 882bbf0..e229e60 100644 --- a/ff-game/src/main/java/com/ff/quartz/task/GameTask.java +++ b/ff-game/src/main/java/com/ff/quartz/task/GameTask.java @@ -1,11 +1,16 @@ package com.ff.quartz.task; +import com.ff.api.response.GameExchangeBalanceResponse; import com.ff.base.constant.Constants; -import com.ff.base.enums.GamePlatforms; -import com.ff.base.enums.StatusType; +import com.ff.base.core.domain.AjaxResult; +import com.ff.base.enums.*; +import com.ff.base.manager.AsyncManager; import com.ff.base.utils.DateUtils; import com.ff.base.utils.StringUtils; +import com.ff.base.utils.bean.BeanUtils; import com.ff.game.api.IGamesService; +import com.ff.game.api.exchange.StepProcessorFactory; +import com.ff.game.api.exchange.dto.GameExchangeDTO; import com.ff.game.api.ng.client.NGClient; import com.ff.game.api.request.BetRecordByTimeDTO; import com.ff.game.api.request.ExchangeTransferStatusRequestDTO; @@ -52,6 +57,9 @@ public class GameTask { @Resource private IPlatformService platformService; + + @Resource + private StepProcessorFactory stepProcessorFactory; /** * 同步游戏列表 */ @@ -207,42 +215,25 @@ public class GameTask { List gameExchangeMoneyList = gameExchangeMoneyService.selectGameExchangeMoneyList(GameExchangeMoney.builder().status(StatusType.IN_PROGRESS.getValue()).build()); for (GameExchangeMoney exchangeMoney : gameExchangeMoneyList) { try { - Platform platform = platformService.get(exchangeMoney.getPlatformCode()); - if (null == platform) { - log.error("平台不存在platformCode:{}", exchangeMoney.getPlatformCode()); - continue; - } - - List keyInfos = platform.getKeyInfo(); - KeyInfo keyInfo = null; - for (KeyInfo keyData : keyInfos) { - if (keyData.getCurrency().equalsIgnoreCase(exchangeMoney.getCurrencyCode())) { - keyInfo = keyData; - break; - } - } - if (null == keyInfo) { - log.error("平台不存在currencyCode:{}", exchangeMoney.getCurrencyCode()); - continue; - } - String targetCurrency = platform.getCurrencyInfo().get(exchangeMoney.getCurrencyCode()); - if (StringUtils.isEmpty(targetCurrency)) { - log.error("平台不存在currencyCode:{}", exchangeMoney.getCurrencyCode()); - continue; - } Member member = memberService.selectMemberById(exchangeMoney.getMemberId()); - ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO(); - exchangeTransferStatusRequestDTO.setAccount(member.getGameAccount()); - exchangeTransferStatusRequestDTO.setCurrency(targetCurrency); - exchangeTransferStatusRequestDTO.setOrderId(exchangeMoney.getTransactionId()); - exchangeTransferStatusRequestDTO.setAgentId(keyInfo.getCode()); - exchangeTransferStatusRequestDTO.setAgentKey(keyInfo.getKey()); - exchangeTransferStatusRequestDTO.setGameExchangeMoneyId(exchangeMoney.getId()); - exchangeTransferStatusRequestDTO.setVendor(platform); - exchangeTransferStatusRequestDTO.setKeyInfo(keyInfo); - exchangeTransferStatusRequestDTO.setSystemCurrency(exchangeMoney.getCurrencyCode()); - gamesService.get(exchangeMoney.getPlatformCode() + Constants.SERVICE).exchangeTransferStatus(exchangeTransferStatusRequestDTO); + GameExchangeDTO gameExchangeDTO=new GameExchangeDTO(); + BeanUtils.copyProperties(exchangeMoney,gameExchangeDTO); + gameExchangeDTO.setTriggerType(TriggerType.TIMER.getCode()); + gameExchangeDTO.setGameAccount(member.getGameAccount()); + gameExchangeDTO.setMemberAccount(member.getMemberAccount()); + AsyncManager.me().executeOrdered( + exchangeMoney.getOrderId(), + () -> { + try { + stepProcessorFactory.getStepProcessor(GameExchangeStep.CREATE_ORDER).process(gameExchangeDTO); + } catch (Exception e) { + log.error("GameTask [updateGameExchangeMoney] 余额转移失败 gameExchangeMoneyId {}", gameExchangeDTO.getId(),e); + stepProcessorFactory.getStepProcessor(GameExchangeStep.getByCode(exchangeMoney.getStep())).rollBack(gameExchangeDTO); + } + + } + ); } catch (Exception e) { log.error("查询 更新交易记录失败,错误信息 {}", e); }