diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/client/PGTClient.java b/ff-game/src/main/java/com/ff/game/api/pgt/client/PGTClient.java index 0ab0842..6fbc837 100644 --- a/ff-game/src/main/java/com/ff/game/api/pgt/client/PGTClient.java +++ b/ff-game/src/main/java/com/ff/game/api/pgt/client/PGTClient.java @@ -56,53 +56,53 @@ public interface PGTClient { * 无重定向登录 * * @param parameters 范围 - * @return {@link PGXGameLoginResponse } + * @return {@link PGTLoginResponse } */ @Post("/logIn") - PGXGameLoginResponse loginWithoutRedirect(@JSONBody Map parameters, @Header Map headerMap); - + PGTLoginResponse loginWithoutRedirect(@JSONBody Map parameters, @Header Map headerMap); /** - * 按代理id进行交换转账 + * 押金 * - * @param parameters 参数 - * @return {@link PGXErrorResponse } + * @param parameters 范围 + * @param headerMap 标题映射 + * @return {@link PGTExchangeTransferResponse } */ - @Post(url = "/makeTransfer.aspx?{parameters}") - PGXErrorResponse exchangeTransferByAgentId(@Var("parameters") String parameters); + @Post(url = "/deposit") + PGTExchangeTransferResponse deposit(@JSONBody Map parameters, @Header Map headerMap); + /** - * 标记报告 + * 收回 * - * @return {@link DGResponse } + * @param parameters 范围 + * @param headerMap 标题映射 + * @return {@link PGTExchangeTransferResponse } */ - @Post(url = "markbyjson.aspx") - DGResponse markReport(@JSONBody Map params); - - - + @Post(url = "/withdraw") + PGTExchangeTransferResponse withdraw(@JSONBody Map parameters, @Header Map headerMap); /** * 汇兑转移状态 * * @param parameters 范围 + * @param headerMap 标题映射 * @return {@link ApiNGResponseDTO }<{@link ApiExchangeTransferStatusResponseDTO }> */ - @Post(url = "/checkTransaction.ashx?{parameters}") - PGXExchangeTransferStatusResponse exchangeTransferStatus(@Var("parameters") String parameters); - - - + @Post(url = "/verifyDepositWithdraw") + PGTTransactionResponse exchangeTransferStatus(@JSONBody Map parameters, @Header Map headerMap); /** * 按时间获取投注记录 * - * @return {@link PGXBetHistoryResponse } + * @param parameters 范围 + * @param headerMap 标题映射 + * @return {@link PGTTransactionDetailsResponse } */ - @Get(url = "/fetchbykey.aspx?{parameters}") - PGXBetHistoryResponse getBetRecordByTime(@Var("parameters") String parameters); + @Get(url = "/betTransactionsV2") + PGTTransactionDetailsResponse getBetRecordByTime(@JSONBody Map parameters, @Header Map headerMap); diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTExchangeTransferResponse.java b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTExchangeTransferResponse.java new file mode 100644 index 0000000..9bb67a7 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTExchangeTransferResponse.java @@ -0,0 +1,80 @@ +package com.ff.game.api.pgt.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * pgtexchange传输响应 + * + * @author shi + * @date 2025/04/03 + */ +@Data +public class PGTExchangeTransferResponse { + + /** + * 每个请求的唯一引用 + */ + @JsonProperty("reqId") + private String reqId; + + /** + * 响应状态,通常为 0 表示成功,其他值表示错误 + */ + @JsonProperty("code") + private int code; + + /** + * 关于响应状态的其他信息 + */ + @JsonProperty("message") + private String message; + + /** + * 包含余额相关的数据 + */ + @JsonProperty("data") + private BalanceData data; + + @Data + public static class BalanceData { + + /** + * 响应状态,成功/失败 + */ + @JsonProperty("status") + private String status; + + /** + * 存款金额(十进制 2 位数字) + */ + @JsonProperty("amount") + private BigDecimal amount; + + /** + * 存款后每个 productId 的余额(十进制 2 位数字) + */ + @JsonProperty("balance") + private BigDecimal balance; + + /** + * 交易 ID + */ + @JsonProperty("txId") + private String txId; + + /** + * 用户名 + */ + @JsonProperty("username") + private String username; + + /** + * 存款前每个 productId 的余额(十进制 2 位数字 + */ + @JsonProperty("beforeBalance") + private BigDecimal beforeBalance; + } +} diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTLoginResponse.java b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTLoginResponse.java new file mode 100644 index 0000000..57590a7 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTLoginResponse.java @@ -0,0 +1,54 @@ +package com.ff.game.api.pgt.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +/** + * pgtlogin响应 + * + * @author shi + * @date 2025/04/03 + */ +@Data +public class PGTLoginResponse { + + /** + * 每个请求的唯一引用 + */ + @JsonProperty("reqId") + private String reqId; + + /** + * 响应状态,通常为 0 表示成功,其他值表示错误 + */ + @JsonProperty("code") + private int code; + + /** + * 关于响应状态的其他信息 + */ + @JsonProperty("message") + private String message; + + /** + * 包含登录相关数据 + */ + @JsonProperty("data") + private LoginData data; + + @Data + public static class LoginData { + + /** + * 登录 URL 链接 + */ + @JsonProperty("url") + private String url; + + /** + * 用户名 + */ + @JsonProperty("username") + private String username; + } +} diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTTransactionDetailsResponse.java b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTTransactionDetailsResponse.java new file mode 100644 index 0000000..d9b5455 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTTransactionDetailsResponse.java @@ -0,0 +1,150 @@ +package com.ff.game.api.pgt.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.List; + +/** + * pgtt交易详情响应 + * + * @author shi + * @date 2025/04/07 + */ +@Data +public class PGTTransactionDetailsResponse { + + /** + * 每个请求的唯一引用 + */ + @JsonProperty("reqId") + private String reqId; + + /** + * 响应状态,通常为 0 表示成功,其他值表示错误 + */ + @JsonProperty("code") + private int code; + + /** + * 关于响应状态的其他信息 + */ + @JsonProperty("message") + private String message; + + /** + * 包含交易数据的对象 + */ + @JsonProperty("data") + private TransactionData data; + + @Data + public static class TransactionData { + + /** + * 下一批数据的 ID + */ + @JsonProperty("nextId") + private String nextId; + + /** + * 交易列表 + */ + @JsonProperty("txns") + private List txns; + } + + @Data + public static class Transaction { + + /** + * 交易 ID + */ + @JsonProperty("id") + private String id; + + /** + * 用户投注 ID + */ + @JsonProperty("betId") + private String betId; + + /** + * 用户名 + */ + @JsonProperty("username") + private String username; + + /** + * ISO 4217 货币代码 + */ + @JsonProperty("currency") + private String currency; + + /** + * 结算时间 + */ + @JsonProperty("accountingDate") + private String accountingDate; + + /** + * 最新更新时间 + */ + @JsonProperty("updatedDate") + private String updatedDate; + + /** + * 质押金额 + */ + @JsonProperty("stake") + private double stake; + + /** + * 支付金额(包括本金) + */ + @JsonProperty("payout") + private double payout; + + /** + * 产品 ID + */ + @JsonProperty("productId") + private String productId; + + /** + * 游戏代码 + */ + @JsonProperty("gameCode") + private String gameCode; + + /** + * 游戏名称 + */ + @JsonProperty("gameName") + private String gameName; + + /** + * 轮次 ID + */ + @JsonProperty("roundId") + private String roundId; + + /** + * 投注状态(未结、已结算、未结算、无效) + */ + @JsonProperty("betStatus") + private String betStatus; + + /** + * 支付状态(LOSE、WIN、DRAW、UNKNOWN) + */ + @JsonProperty("payoutStatus") + private String payoutStatus; + + /** + * 佣金 + */ + @JsonProperty("commission") + private double commission; + } +} diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTTransactionResponse.java b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTTransactionResponse.java new file mode 100644 index 0000000..d0776f9 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTTransactionResponse.java @@ -0,0 +1,90 @@ +package com.ff.game.api.pgt.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +/** + * pgtt交易响应 + * + * @author shi + * @date 2025/04/07 + */ +@Data +public class PGTTransactionResponse { + + /** + * 每个请求的唯一引用 + */ + @JsonProperty("reqId") + private String reqId; + + /** + * 响应状态,通常为 0 表示成功,其他值表示错误 + */ + @JsonProperty("code") + private int code; + + /** + * 关于响应状态的其他信息 + */ + @JsonProperty("message") + private String message; + + /** + * 包含交易相关的数据 + */ + @JsonProperty("data") + private TransactionData data; + + @Data + public static class TransactionData { + + /** + * 交易是否成功 + */ + @JsonProperty("success") + private boolean success; + + /** + * 用户名 + */ + @JsonProperty("username") + private String username; + + /** + * 产品ID,例如 "SEXY" 等 + */ + @JsonProperty("productId") + private String productId; + + /** + * 货币类型,如 "THB" + */ + @JsonProperty("currency") + private String currency; + + /** + * 交易参考号 + */ + @JsonProperty("transactionRef") + private String transactionRef; + + /** + * 当前交易的金额 + */ + @JsonProperty("amount") + private String amount; + + /** + * 交易前的余额 + */ + @JsonProperty("beforeBalance") + private String beforeBalance; + + /** + * 交易后的余额 + */ + @JsonProperty("afterBalance") + private String afterBalance; + } +} diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/impl/GamesPGTServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/pgt/impl/GamesPGTServiceImpl.java index b2d4c1c..7a0f23e 100644 --- a/ff-game/src/main/java/com/ff/game/api/pgt/impl/GamesPGTServiceImpl.java +++ b/ff-game/src/main/java/com/ff/game/api/pgt/impl/GamesPGTServiceImpl.java @@ -110,15 +110,16 @@ public class GamesPGTServiceImpl implements IGamesService { * * @return {@link String } */ - private Map getKey( GamesBaseRequestDTO gamesBaseRequestDTO) { - Map headerMap=new LinkedHashMap<>(); + private Map getKey(GamesBaseRequestDTO gamesBaseRequestDTO) { + Map headerMap = new LinkedHashMap<>(); String auth = gamesBaseRequestDTO.getAgentId() + ":" + gamesBaseRequestDTO.getAgentKey(); String encodedAuth = Base64Utils.encodeToString(auth.getBytes()); - headerMap.put("Authorization","Basic "+encodedAuth); + headerMap.put("Authorization", "Basic " + encodedAuth); return headerMap; } + String productId = "PGSOFT"; /** * 创建成员 @@ -132,7 +133,7 @@ public class GamesPGTServiceImpl implements IGamesService { Map headerMap = this.getKey(createMemberRequestDTO); Map params = new LinkedHashMap<>(); params.put("username", createMemberRequestDTO.getAccount()); - params.put("productId","PGSOFT"); + params.put("productId", productId); PGTCreateMemberResponse member = pgtClient.createMember(params, headerMap); if (this.getIsSuccess(member.getCode())) { @@ -154,9 +155,9 @@ public class GamesPGTServiceImpl implements IGamesService { log.info("GamesPGTServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO); Map params = new LinkedHashMap<>(); params.put("username", memberInfoRequestDTO.getAccounts()); - params.put("productId", "PGSOFT"); + params.put("productId", productId); Map headerMap = this.getKey(memberInfoRequestDTO); - PGTBalanceResponse memberInfo = pgtClient.getMemberInfo(JsonUtil.mapToQueryString(params),headerMap); + PGTBalanceResponse memberInfo = pgtClient.getMemberInfo(JsonUtil.mapToQueryString(params), headerMap); //判断是否获取成功 if (this.getIsSuccess(memberInfo.getCode())) { MemberInfoResponseDTO memberInfoResponseDTO = MemberInfoResponseDTO.builder() @@ -179,24 +180,19 @@ public class GamesPGTServiceImpl implements IGamesService { @Override public String loginWithoutRedirect(GamesLogin gamesLogin) { log.info("GamesPGTServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin); - GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyByCode(gamesLogin.getAgentId()); Map params = new LinkedHashMap<>(); - params.put("operatorcode", gamesLogin.getAgentId()); - params.put("password", gameSecretKey.getPassword()); - params.put("providercode", gameSecretKey.getProviderCode()); - params.put("type", gamesLogin.getGameType()); params.put("username", gamesLogin.getAccount()); + params.put("productId", productId); + params.put("gameCode", gamesLogin.getGameId()); + params.put("isMobileLogin", PlatformHomeType.APP.getValue().equals(gamesLogin.getPlatform())); + params.put("language", gamesLogin.getLang()); Map key = this.getKey(gamesLogin); - params.put("gameid", gamesLogin.getGameId()); - params.put("lang", gamesLogin.getLang()); - params.put("html5", 1); - params.put("signature", key); - PGXGameLoginResponse PGXGameLoginResponse = pgtClient.loginWithoutRedirect(params,key); + PGTLoginResponse pgtLoginResponse = pgtClient.loginWithoutRedirect(params, key); //判断是否获取成功 - if (this.getIsSuccess(PGXGameLoginResponse.getErrCode())) { - return PGXGameLoginResponse.getGameUrl(); + if (this.getIsSuccess(pgtLoginResponse.getCode())) { + return pgtLoginResponse.getData().getUrl(); } else { - throw new BaseException(PGXGameLoginResponse.getErrMsg()); + throw new BaseException(pgtLoginResponse.getMessage()); } } @@ -224,13 +220,10 @@ public class GamesPGTServiceImpl implements IGamesService { @Override @Transactional public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesPGXServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); + log.info("GamesPGTServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); + + String currency = exchangeTransferMoneyRequestDTO.getCurrency(); - GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() - .platformCode(GamePlatforms.PGX.getInfo()) - .code(exchangeTransferMoneyRequestDTO.getAgentId()) - .currency(exchangeTransferMoneyRequestDTO.getCurrency()) - .build()); Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); String transactionId = gameExchangeMoneyService.getTransactionId(GamePlatforms.PGX.getInfo(), 17); @@ -242,7 +235,6 @@ public class GamesPGTServiceImpl implements IGamesService { ); Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); - GameSecretKey gameSecretKey = gameSecretKeyService.selectGameSecretKeyByCode(exchangeTransferMoneyRequestDTO.getAgentId()); //获取下一个自增id GameExchangeMoney exchangeMoney = GameExchangeMoney @@ -252,15 +244,13 @@ public class GamesPGTServiceImpl implements IGamesService { .quota(exchangeTransferMoneyRequestDTO.getQuota()) .balance(exchangeTransferMoneyRequestDTO.getAmount()) .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) - .currencyCode(currencyDTO.getSystemCurrency()) + .currencyCode(currency) .memberId(member.getId()) .transactionId(transactionId) - .platformCode(GamePlatforms.PGX.getInfo()) + .platformCode(GamePlatforms.PGT.getInfo()) .build(); exchangeMoney.setCreateBy(Constants.SYSTEM); - //获取余额 - String type = TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType()) ? PGXTransferType.WITHDRAW.getCode() : PGXTransferType.DEPOSIT.getCode(); BigDecimal amount = exchangeTransferMoneyRequestDTO.getAmount(); BigDecimal amountBefore = BigDecimal.ZERO; @@ -272,49 +262,48 @@ public class GamesPGTServiceImpl implements IGamesService { .agentKey(exchangeTransferMoneyRequestDTO.getAgentKey()) .build(); + //判断是不是提出 if (TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) { - amountBefore = this.getMemberInfo(gamesBaseRequestDTO).getBalance(); amount = amountBefore; - } Map paramsMap = new LinkedHashMap<>(); - paramsMap.put("amount", amount); - paramsMap.put("operatorcode", exchangeTransferMoneyRequestDTO.getAgentId()); - paramsMap.put("password", gameSecretKey.getPassword()); - paramsMap.put("providercode", gameSecretKey.getProviderCode()); - paramsMap.put("referenceid", transactionId); - paramsMap.put("type", type); paramsMap.put("username", exchangeTransferMoneyRequestDTO.getAccount()); + paramsMap.put("amount", amount); + paramsMap.put("transactionRef", transactionId); + paramsMap.put("productId", productId); + Map key = this.getKey(exchangeTransferMoneyRequestDTO); + PGTExchangeTransferResponse errorResponse; + //判断是不是提出 + if (TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) { + errorResponse = pgtClient.withdraw(paramsMap, key); + } else { + errorResponse = pgtClient.deposit(paramsMap, key); + } - - PGXErrorResponse errorResponse = pgtClient.exchangeTransferByAgentId(JsonUtil.mapToQueryString(paramsMap)); - if (this.getIsSuccess(errorResponse.getErrCode())) { - + if (this.getIsSuccess(errorResponse.getCode())) { + PGTExchangeTransferResponse.BalanceData data = errorResponse.getData(); //更新数据 - exchangeMoney.setBalance(amount); - exchangeMoney.setCoinBefore(amountBefore); - //转后的余额 - BigDecimal coinAfter = this.getMemberInfo(gamesBaseRequestDTO).getBalance(); - - exchangeMoney.setCoinAfter(coinAfter); + exchangeMoney.setBalance(data.getAmount()); + exchangeMoney.setCoinBefore(data.getBeforeBalance()); + exchangeMoney.setCoinAfter(data.getBalance()); exchangeMoney.setCurrencyBefore(exchangeMoney.getCoinBefore()); exchangeMoney.setCurrencyAfter(exchangeMoney.getCoinAfter()); exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue()); - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - //确认状态 + //查询交易状态 ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO(); - exchangeTransferStatusRequestDTO.setAccount(member.getGameAccount()); - exchangeTransferStatusRequestDTO.setOrderId(exchangeMoney.getTransactionId()); - exchangeTransferStatusRequestDTO.setAgentId(gameSecretKey.getCode()); - exchangeTransferStatusRequestDTO.setAgentKey(gameSecretKey.getKey()); + exchangeTransferStatusRequestDTO.setAccount(exchangeTransferMoneyRequestDTO.getAccount()); + exchangeTransferStatusRequestDTO.setCurrency(currency); + exchangeTransferStatusRequestDTO.setOrderId(transactionId); + exchangeTransferStatusRequestDTO.setAgentId(exchangeTransferMoneyRequestDTO.getAgentId()); + exchangeTransferStatusRequestDTO.setAgentKey(exchangeTransferMoneyRequestDTO.getAgentKey()); this.exchangeTransferStatus(exchangeTransferStatusRequestDTO); } else { - log.error("GamesFCServiceImpl [exchangeTransferByAgentId] 金额转移失败,错误代码{}", errorResponse.getErrCode()); + log.error("GamesPGTServiceImpl [exchangeTransferByAgentId] 金额转移失败,错误代码{}", errorResponse.getCode()); throw new ApiException(ErrorCode.BALANCE_TRANSFER_FAILED.getCode()); } return exchangeMoney.getId(); @@ -328,29 +317,35 @@ public class GamesPGTServiceImpl implements IGamesService { */ @Override public Boolean exchangeTransferStatus(ExchangeTransferStatusRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesPGXServiceImpl [exchangeTransferStatus] 请求参数 {}", exchangeTransferMoneyRequestDTO); + log.info("GamesPGTServiceImpl [exchangeTransferStatus] 请求参数 {}", exchangeTransferMoneyRequestDTO); + GameExchangeMoney gameExchangeMoney = gameExchangeMoneyService.selectGameExchangeMoneyById(exchangeTransferMoneyRequestDTO.getGameExchangeMoneyId()); Map paramsMap = new LinkedHashMap<>(); - paramsMap.put("operatorcode", exchangeTransferMoneyRequestDTO.getAgentId()); - paramsMap.put("referenceid", exchangeTransferMoneyRequestDTO.getOrderId()); - - - PGXExchangeTransferStatusResponse exchangeTransferStatusResponse = pgtClient.exchangeTransferStatus(JsonUtil.mapToQueryString(paramsMap)); - if (this.getIsSuccess(exchangeTransferStatusResponse.getErrCode())) { + paramsMap.put("username", exchangeTransferMoneyRequestDTO.getAccount()); + paramsMap.put("transactionRef", exchangeTransferMoneyRequestDTO.getOrderId()); + paramsMap.put("productId", productId); + if (TransferType.ALL.getCode().equals(gameExchangeMoney.getExchangeType())) { + paramsMap.put("type", "WITHDRAW"); + } else { + paramsMap.put("type", "DEPOSIT"); + } + Map key = this.getKey(exchangeTransferMoneyRequestDTO); + PGTTransactionResponse transactionResponse = pgtClient.exchangeTransferStatus(paramsMap, key); + if (this.getIsSuccess(transactionResponse.getCode())) { List gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList( GameExchangeMoney.builder() - .platformCode(GamePlatforms.PGX.getInfo()) + .platformCode(GamePlatforms.PGT.getCode()) .transactionId(exchangeTransferMoneyRequestDTO.getOrderId()) .build() ); for (GameExchangeMoney exchangeMoney : gameExchangeMonies) { //更新数据 - exchangeMoney.setStatus(PGXTransactionStatus.findValueByCode(exchangeTransferStatusResponse.getStatus())); + exchangeMoney.setStatus(transactionResponse.getData().isSuccess() ? StatusType.SUCCESS.getValue() : StatusType.FAILURE.getValue()); gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); } return Boolean.TRUE; } else { - log.error("GamesPGXServiceImpl [exchangeTransferStatus]错误代码{},错误信息{}", exchangeTransferStatusResponse.getErrCode(), exchangeTransferStatusResponse.getErrMsg()); + log.error("GamesPGTServiceImpl [exchangeTransferStatus]错误代码{},错误信息{}", transactionResponse.getCode(), transactionResponse.getMessage()); return Boolean.FALSE; } } @@ -365,16 +360,20 @@ public class GamesPGTServiceImpl implements IGamesService { @Override public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { //请求参数 - log.info("GamesPGXServiceImpl [getBetRecordByTime] 请求参数 {}", betRecordByTimeDTO); + log.info("GamesPGTServiceImpl [getBetRecordByTime] 请求参数 {}", betRecordByTimeDTO); Map paramsMap = new LinkedHashMap<>(); - paramsMap.put("operatorcode", betRecordByTimeDTO.getAgentId()); + paramsMap.put("productId", productId); + paramsMap.put("date", productId); + paramsMap.put("startTime", productId); + paramsMap.put("endTime", productId); + paramsMap.put("nextId", productId); + Map key = this.getKey(betRecordByTimeDTO); - paramsMap.put("versionkey", 0); - PGXBetHistoryResponse betRecordByTime = pgtClient.getBetRecordByTime(JsonUtil.mapToQueryString(paramsMap)); + PGTTransactionDetailsResponse betRecordByTime = pgtClient.getBetRecordByTime(paramsMap, key); - if (this.getIsSuccess(betRecordByTime.getErrCode())) { - List results = JSON.parseArray(betRecordByTime.getResult(), PGXBetHistoryResponse.Result.class); - this.batchInsert(results, betRecordByTimeDTO); + if (this.getIsSuccess(betRecordByTime.getCode())) { + List txns = betRecordByTime.getData().getTxns(); + this.batchInsert(txns, betRecordByTimeDTO); return Boolean.TRUE; } else { log.error("GamesPGXServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getErrCode(), betRecordByTime.getErrMsg()); @@ -490,12 +489,12 @@ public class GamesPGTServiceImpl implements IGamesService { * * @param dataBean 数据bean */ - private void batchInsert(List dataBean, GamesBaseRequestDTO gamesBaseRequestDTO) { + private void batchInsert(List dataBean, GamesBaseRequestDTO gamesBaseRequestDTO) { List gameBettingDetails = new ArrayList<>(); List wagersIds = new ArrayList<>(); //数据转化 - for (PGXBetHistoryResponse.Result bean : dataBean) { + for (PGTTransactionDetailsResponse.Transaction bean : dataBean) { GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().agentId(gamesBaseRequestDTO.getAgentId()).data(bean).build()); if (!ObjectUtils.isEmpty(bettingDetails)) { bettingDetails.setId(IdUtil.getSnowflakeNextId()); @@ -505,7 +504,7 @@ public class GamesPGTServiceImpl implements IGamesService { } if (!CollectionUtils.isEmpty(gameBettingDetails)) { //查询重复数据id - List removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds,GamePlatforms.PGX.getInfo()); + List removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.PGX.getInfo()); //用steam流清除list中与wagersIds集合相同的数据 gameBettingDetails = gameBettingDetails.stream() .filter(detail -> !removeWagersIds.contains(detail.getWagersId()))