refactor(ff-game): 重构 FB 和 SV388 平台的转账逻辑

- 移除 FBSports 和 SV388 平台的重复代码
- 优化交易 ID 生成逻辑,支持不同平台的格式
-调整 CreateOrderServiceImpl 中的平台判断逻辑
- 重构 FBSportsServiceImpl 和 SV388GamesServiceImpl 中的转账方法
main-pgt
shi 2025-04-11 11:03:24 +08:00
parent 9fa259268e
commit 537b23a420
3 changed files with 10 additions and 54 deletions

View File

@ -103,6 +103,10 @@ public class CreateOrderServiceImpl extends AbstractStepProcessor {
return GamePlatforms.KM.getInfo() + IdUtils.simpleUUID(); return GamePlatforms.KM.getInfo() + IdUtils.simpleUUID();
case PGT: case PGT:
return gameExchangeMoneyService.getTransactionId(GamePlatforms.PGT.getInfo(), 17); return gameExchangeMoneyService.getTransactionId(GamePlatforms.PGT.getInfo(), 17);
case FBSports:
return GamePlatforms.FBSports.getCode() + IdUtils.simpleUUID();
case SV388:
return GamePlatforms.SV388.getCode() + IdUtils.simpleUUID();
} }
throw new ApiException(ErrorCode.PLATFORM_NOT_EXIST.getCode()); throw new ApiException(ErrorCode.PLATFORM_NOT_EXIST.getCode());
} }

View File

@ -229,34 +229,8 @@ public class SV388GamesServiceImpl implements IGamesService {
@Transactional @Transactional
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); GameExchangeMoney exchangeMoney = gameExchangeMoneyService.selectGameExchangeMoneyById(exchangeTransferMoneyRequestDTO.getGameExchangeId());
String transactionId = GamePlatforms.SV388.getCode() + IdUtils.simpleUUID();
List<GameExchangeMoney> gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList(
GameExchangeMoney.builder()
.tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey())
.orderId(exchangeTransferMoneyRequestDTO.getOrderId())
.build()
);
Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复");
//获取下一个自增id
GameExchangeMoney exchangeMoney = GameExchangeMoney
.builder()
.tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey())
.orderId(exchangeTransferMoneyRequestDTO.getOrderId())
.quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.memberId(member.getId())
.transactionId(transactionId)
.platformCode(GamePlatforms.SV388.getCode())
.build();
exchangeMoney.setCreateBy(Constants.SYSTEM);
exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue());
exchangeMoney.setStep(GameExchangeStep.CREATE_ORDER.getCode());
exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode());
gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney);
Map<String, Object> params = this.getKey(exchangeTransferMoneyRequestDTO); Map<String, Object> params = this.getKey(exchangeTransferMoneyRequestDTO);
@ -265,13 +239,13 @@ public class SV388GamesServiceImpl implements IGamesService {
if (TransferType.GAMES.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) { if (TransferType.GAMES.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) {
params.put("userId", exchangeTransferMoneyRequestDTO.getAccount()); params.put("userId", exchangeTransferMoneyRequestDTO.getAccount());
params.put("txCode", transactionId); params.put("txCode", exchangeTransferMoneyRequestDTO.getTransactionId());
params.put("transferAmount", exchangeTransferMoneyRequestDTO.getAmount()); params.put("transferAmount", exchangeTransferMoneyRequestDTO.getAmount());
deposit = sv388Client.deposit(params); deposit = sv388Client.deposit(params);
} else { } else {
params.put("userId", exchangeTransferMoneyRequestDTO.getAccount()); params.put("userId", exchangeTransferMoneyRequestDTO.getAccount());
params.put("txCode", transactionId); params.put("txCode", exchangeTransferMoneyRequestDTO.getTransactionId());
params.put("withdrawType", 1); params.put("withdrawType", 1);
deposit = sv388Client.withdraw(params); deposit = sv388Client.withdraw(params);
} }

View File

@ -130,31 +130,9 @@ public class FBSportsServiceImpl implements IGamesService {
@Transactional @Transactional
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO requestDTO) { public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO requestDTO) {
Member member = memberService.selectMemberByGameAccount(requestDTO.getAccount());
String transactionId = GamePlatforms.FBSports.getCode() + IdUtils.simpleUUID(); GameExchangeMoney exchangeMoney = gameExchangeMoneyService.selectGameExchangeMoneyById(requestDTO.getGameExchangeId());
List<GameExchangeMoney> gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList(
GameExchangeMoney.builder()
.tenantKey(requestDTO.getTenantKey())
.orderId(requestDTO.getOrderId())
.build()
);
Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复");
//获取下一个自增id
GameExchangeMoney exchangeMoney = GameExchangeMoney
.builder()
.orderId(requestDTO.getOrderId())
.tenantKey(requestDTO.getTenantKey())
.quota(requestDTO.getQuota())
.balance(requestDTO.getAmount())
.exchangeType(requestDTO.getTransferType())
.currencyCode(requestDTO.getSystemCurrency())
.memberId(member.getId())
.transactionId(transactionId)
.platformCode(GamePlatforms.FBSports.getCode())
.build();
exchangeMoney.setCreateBy(Constants.SYSTEM);
//接口限制限制50字符
exchangeMoney.setTransactionId(transactionId);
// 转入 // 转入
if (requestDTO.getTransferType().equals(TransferType.GAMES.getCode())) { if (requestDTO.getTransferType().equals(TransferType.GAMES.getCode())) {
TransferInRequest request = new TransferInRequest(); TransferInRequest request = new TransferInRequest();