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); }