refactor(ff-game): 重构游戏余额转移功能
- 移除冗余的平台和货币信息查询逻辑 - 使用 GameExchangeDTO封装余额转移数据 -引入 StepProcessorFactory 处理余额转移步骤 - 实现异步执行余额转移操作 -优化错误处理和日志记录main-pgt
parent
3236b4ab55
commit
88bdfc9c16
|
@ -1,11 +1,16 @@
|
||||||
package com.ff.quartz.task;
|
package com.ff.quartz.task;
|
||||||
|
|
||||||
|
import com.ff.api.response.GameExchangeBalanceResponse;
|
||||||
import com.ff.base.constant.Constants;
|
import com.ff.base.constant.Constants;
|
||||||
import com.ff.base.enums.GamePlatforms;
|
import com.ff.base.core.domain.AjaxResult;
|
||||||
import com.ff.base.enums.StatusType;
|
import com.ff.base.enums.*;
|
||||||
|
import com.ff.base.manager.AsyncManager;
|
||||||
import com.ff.base.utils.DateUtils;
|
import com.ff.base.utils.DateUtils;
|
||||||
import com.ff.base.utils.StringUtils;
|
import com.ff.base.utils.StringUtils;
|
||||||
|
import com.ff.base.utils.bean.BeanUtils;
|
||||||
import com.ff.game.api.IGamesService;
|
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.ng.client.NGClient;
|
||||||
import com.ff.game.api.request.BetRecordByTimeDTO;
|
import com.ff.game.api.request.BetRecordByTimeDTO;
|
||||||
import com.ff.game.api.request.ExchangeTransferStatusRequestDTO;
|
import com.ff.game.api.request.ExchangeTransferStatusRequestDTO;
|
||||||
|
@ -52,6 +57,9 @@ public class GameTask {
|
||||||
@Resource
|
@Resource
|
||||||
private IPlatformService platformService;
|
private IPlatformService platformService;
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private StepProcessorFactory stepProcessorFactory;
|
||||||
/**
|
/**
|
||||||
* 同步游戏列表
|
* 同步游戏列表
|
||||||
*/
|
*/
|
||||||
|
@ -207,42 +215,25 @@ public class GameTask {
|
||||||
List<GameExchangeMoney> gameExchangeMoneyList = gameExchangeMoneyService.selectGameExchangeMoneyList(GameExchangeMoney.builder().status(StatusType.IN_PROGRESS.getValue()).build());
|
List<GameExchangeMoney> gameExchangeMoneyList = gameExchangeMoneyService.selectGameExchangeMoneyList(GameExchangeMoney.builder().status(StatusType.IN_PROGRESS.getValue()).build());
|
||||||
for (GameExchangeMoney exchangeMoney : gameExchangeMoneyList) {
|
for (GameExchangeMoney exchangeMoney : gameExchangeMoneyList) {
|
||||||
try {
|
try {
|
||||||
Platform platform = platformService.get(exchangeMoney.getPlatformCode());
|
|
||||||
if (null == platform) {
|
|
||||||
log.error("平台不存在platformCode:{}", exchangeMoney.getPlatformCode());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
List<KeyInfo> 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());
|
Member member = memberService.selectMemberById(exchangeMoney.getMemberId());
|
||||||
|
|
||||||
ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO();
|
GameExchangeDTO gameExchangeDTO=new GameExchangeDTO();
|
||||||
exchangeTransferStatusRequestDTO.setAccount(member.getGameAccount());
|
BeanUtils.copyProperties(exchangeMoney,gameExchangeDTO);
|
||||||
exchangeTransferStatusRequestDTO.setCurrency(targetCurrency);
|
gameExchangeDTO.setTriggerType(TriggerType.TIMER.getCode());
|
||||||
exchangeTransferStatusRequestDTO.setOrderId(exchangeMoney.getTransactionId());
|
gameExchangeDTO.setGameAccount(member.getGameAccount());
|
||||||
exchangeTransferStatusRequestDTO.setAgentId(keyInfo.getCode());
|
gameExchangeDTO.setMemberAccount(member.getMemberAccount());
|
||||||
exchangeTransferStatusRequestDTO.setAgentKey(keyInfo.getKey());
|
AsyncManager.me().executeOrdered(
|
||||||
exchangeTransferStatusRequestDTO.setGameExchangeMoneyId(exchangeMoney.getId());
|
exchangeMoney.getOrderId(),
|
||||||
exchangeTransferStatusRequestDTO.setVendor(platform);
|
() -> {
|
||||||
exchangeTransferStatusRequestDTO.setKeyInfo(keyInfo);
|
try {
|
||||||
exchangeTransferStatusRequestDTO.setSystemCurrency(exchangeMoney.getCurrencyCode());
|
stepProcessorFactory.getStepProcessor(GameExchangeStep.CREATE_ORDER).process(gameExchangeDTO);
|
||||||
gamesService.get(exchangeMoney.getPlatformCode() + Constants.SERVICE).exchangeTransferStatus(exchangeTransferStatusRequestDTO);
|
} catch (Exception e) {
|
||||||
|
log.error("GameTask [updateGameExchangeMoney] 余额转移失败 gameExchangeMoneyId {}", gameExchangeDTO.getId(),e);
|
||||||
|
stepProcessorFactory.getStepProcessor(GameExchangeStep.getByCode(exchangeMoney.getStep())).rollBack(gameExchangeDTO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("查询 更新交易记录失败,错误信息 {}", e);
|
log.error("查询 更新交易记录失败,错误信息 {}", e);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue