refactor(ff-game): 重构游戏余额转移功能
- 移除冗余的平台和货币信息查询逻辑 - 使用 GameExchangeDTO封装余额转移数据 -引入 StepProcessorFactory 处理余额转移步骤 - 实现异步执行余额转移操作 -优化错误处理和日志记录main-pgt
parent
3236b4ab55
commit
88bdfc9c16
|
@ -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<GameExchangeMoney> 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<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());
|
||||
|
||||
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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue