refactor(ff-game): 重构游戏平台相关代码

- 移除了 GameSecretKeyCurrency 相关的使用
- 优化了货币转换逻辑
- 简化了游戏平台和货币信息的处理- 调整了批量插入逻辑,使其更加通用
main-meitian
liaoyong 2025-04-07 11:22:47 +08:00
parent 40208aab98
commit b35fad13d1
7 changed files with 201 additions and 200 deletions

View File

@ -250,6 +250,7 @@ public class ApiMemberController extends BaseController {
key.setCode(keyInfo.getCode());
key.setKey(keyInfo.getKey());
key.setCurrency(targetCurrency);
key.setSystemCurrency(memberInfoAllApiRequest.getCurrencyCode());
keys.add(key);
}
// 创建线程池
@ -276,6 +277,7 @@ public class ApiMemberController extends BaseController {
.accounts(member.getGameAccount())
.agentId(gameSecretKey.getCode())
.currency(gameSecretKey.getCurrency())
.systemCurrency(gameSecretKey.getSystemCurrency())
.agentKey(gameSecretKey.getKey())
.build();
//查询余额
@ -317,6 +319,7 @@ public class ApiMemberController extends BaseController {
private String code;
private String currency;
private String key;
private String systemCurrency;
}
}

View File

@ -255,15 +255,18 @@ public class GamesJILIServiceImpl implements IGamesService {
game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.JILI.getCode()) + 1);
game.setGameName(gamesDataDTO.getName().getZhCN());
game.setCreateBy(Constants.SYSTEM);
List<NameInfo> nameInfos = new ArrayList<>();
nameInfos.add(new NameInfo(gamesDataDTO.getName().getZhCN(), "zh-CN"));
nameInfos.add(new NameInfo(gamesDataDTO.getName().getEnUS(), "en-US"));
game.setNameInfo(nameInfos);
gameService.insertGame(game);
} else {
game = games.get(0);
}
gamesDataDTO.setSystemGameId(game.getId());
List<NameInfo> nameInfos = new ArrayList<>();
nameInfos.add(new NameInfo(gamesDataDTO.getName().getZhCN(), "zh-CN"));
nameInfos.add(new NameInfo(gamesDataDTO.getName().getEnUS(), "en-US"));
game.setNameInfo(nameInfos);
/*List<GameName> gameNames = gameNameService.selectGameNameList(GameName
.builder()
@ -411,11 +414,8 @@ public class GamesJILIServiceImpl implements IGamesService {
//判断是否获取成功
if (this.getIsSuccess(betRecordJILIResponse.getErrorCode())) {
KeyInfo keyInfo = betRecordByTimeDTO.getKeyInfo();
String currency = keyInfo.getCurrency();
String targetCurrency = betRecordByTimeDTO.getVendor().getOurCurrency(currency);
//数据插入
this.batchInsert(betRecordJILIResponse, betRecordByTimeDTO, currency, targetCurrency);
this.batchInsert(betRecordJILIResponse, betRecordByTimeDTO);
JILIBetRecordResponseDTO.DataBean dataBean = betRecordJILIResponse.getData();
//获取下一页数据
while (dataBean.getPagination().getCurrentPage() != dataBean.getPagination().getTotalPages() && dataBean.getPagination().getTotalPages() > 0) {
@ -429,7 +429,7 @@ public class GamesJILIServiceImpl implements IGamesService {
dataBean = betRecordJILIResponse.getData();
if (this.getIsSuccess(betRecordJILIResponse.getErrorCode())) {
//数据插入
this.batchInsert(betRecordJILIResponse, betRecordByTimeDTO, currency, targetCurrency);
this.batchInsert(betRecordJILIResponse, betRecordByTimeDTO);
} else {
log.error("GameBettingDataJILIServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordJILIResponse.getErrorCode(), betRecordJILIResponse.getMessage());
}
@ -715,7 +715,7 @@ public class GamesJILIServiceImpl implements IGamesService {
* @param betRecordJILIResponse jiliresponse
* @return {@link Integer }
*/
private void batchInsert(JILIBetRecordResponseDTO betRecordJILIResponse, BetRecordByTimeDTO betRecordByTimeDTO, String systemCurrency, String currency) {
private void batchInsert(JILIBetRecordResponseDTO betRecordJILIResponse, BetRecordByTimeDTO betRecordByTimeDTO) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>();
//数据组装
@ -723,8 +723,9 @@ public class GamesJILIServiceImpl implements IGamesService {
//数据转化
for (JILIBetRecordDataResponseDTO jiliBetRecordDataResponseDTO : dataBean.getResult()) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
.systemCurrencyCode(systemCurrency)
.currencyCode(currency)
.systemCurrencyCode(betRecordByTimeDTO.getSystemCurrency())
.platform(betRecordByTimeDTO.getVendor())
.currencyCode(betRecordByTimeDTO.getCurrency())
.platform(betRecordByTimeDTO.getVendor())
.data(jiliBetRecordDataResponseDTO).build());
if (!ObjectUtils.isEmpty(bettingDetails)) {

View File

@ -8,7 +8,6 @@ import com.ff.base.core.redis.RedisCache;
import com.ff.base.enums.*;
import com.ff.base.exception.base.ApiException;
import com.ff.base.exception.base.BaseException;
import com.ff.base.system.service.ISysConfigService;
import com.ff.base.utils.DateUtils;
import com.ff.base.utils.JsonUtil;
import com.ff.base.utils.StringUtils;
@ -21,7 +20,6 @@ import com.ff.game.api.km.dto.*;
import com.ff.game.api.request.*;
import com.ff.game.api.xk.dto.XKGamesDTO;
import com.ff.game.domain.*;
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
import com.ff.game.service.*;
import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService;
@ -53,20 +51,12 @@ public class GamesKMServiceImpl implements IGamesService {
@Resource
private IPlatformService platformService;
@Resource
private ISysConfigService configService;
@Resource
private RedisCache redisCache;
@Resource
private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource
private IGameService gameService;
@ -74,14 +64,6 @@ public class GamesKMServiceImpl implements IGamesService {
@Resource
private IMemberService memberService;
@Resource
private IGameFreeRecordService gameFreeRecordService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource
private KMClient KMClient;
@ -186,14 +168,14 @@ public class GamesKMServiceImpl implements IGamesService {
public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) {
log.info("GamesDGServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO);
Map<String, Object> paramsMap = new HashMap<>();
Member member = memberService.selectMemberByGameAccount(memberInfoRequestDTO.getAccounts());
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.KM.getInfo())
.currency(member.getCurrencyCode())
.build());
// Member member = memberService.selectMemberByGameAccount(memberInfoRequestDTO.getAccounts());
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(GamePlatforms.KM.getInfo())
// .currency(member.getCurrencyCode())
// .build());
paramsMap.put("userid", memberInfoRequestDTO.getAccounts());
paramsMap.put("cur", currencyDTO.getCurrency());
paramsMap.put("cur", memberInfoRequestDTO.getCurrency());
Map<String, Object> headerMap = this.getKey(memberInfoRequestDTO);
KMBalanceResponse memberInfo = KMClient.getMemberInfo(JsonUtil.mapToQueryString(paramsMap), headerMap);
if (ObjectUtils.isEmpty(memberInfo.getErrorCode()) || this.getIsSuccess(memberInfo.getErrorCode())) {
@ -214,17 +196,17 @@ public class GamesKMServiceImpl implements IGamesService {
log.info("GamesKMServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin);
String kmUserToken = redisCache.getCacheObject(CacheConstants.KM_USER_TOKEN + gamesLogin.getAccount());
if (StringUtils.isEmpty(kmUserToken)) {
Member member = memberService.selectMemberByGameAccount(gamesLogin.getAccount());
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.KM.getInfo())
.currency(member.getCurrencyCode())
.build());
// Member member = memberService.selectMemberByGameAccount(gamesLogin.getAccount());
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(GamePlatforms.KM.getInfo())
// .currency(member.getCurrencyCode())
// .build());
CreateMemberRequestDTO gamesBaseRequestDTO = CreateMemberRequestDTO.builder()
.account(gamesLogin.getAccount())
.agentId(gamesLogin.getAgentId())
.agentKey(gamesLogin.getAgentKey())
.currency(currencyDTO.getCurrency())
.currency(gamesLogin.getCurrency())
.build();
this.createMember(gamesBaseRequestDTO);
kmUserToken = redisCache.getCacheObject(CacheConstants.KM_USER_TOKEN + gamesLogin.getAccount());
@ -287,11 +269,11 @@ public class GamesKMServiceImpl implements IGamesService {
.anyMatch(pc -> pc.getCode().equals(mobile.getCode())))
.collect(Collectors.toList());
for (KMGameResponse.Game game : games) {
GamePlatform gamePlatform = GamePlatform.builder()
.platformType(KMGameType.findSystemByCode(game.getProviderCode()))
.platformCode(GamePlatforms.KM.getCode())
.build();
List<GamePlatform> gamePlatforms = gamePlatformService.selectGamePlatformList(gamePlatform);
// GamePlatform gamePlatform = GamePlatform.builder()
// .platformType(KMGameType.findSystemByCode(game.getProviderCode()))
// .platformCode(GamePlatforms.KM.getCode())
// .build();
/*List<GamePlatform> gamePlatforms = gamePlatformService.selectGamePlatformList(gamePlatform);
//没有此平台就新增一个平台
if (CollectionUtils.isEmpty(gamePlatforms)) {
gamePlatform.setPlatformName(GamePlatforms.KM.getInfo() + KMGameType.findInfoByCode(game.getProviderCode()));
@ -300,9 +282,12 @@ public class GamesKMServiceImpl implements IGamesService {
gamePlatformService.insertGamePlatform(gamePlatform);
} else {
gamePlatform = gamePlatforms.get(0);
}
}*/
Integer platformType = KMGameType.findSystemByCode(game.getProviderCode());
Game gameOne = Game.builder()
.platformId(gamePlatform.getId())
//.platformId(gamePlatform.getId())
.platformCode(GamePlatforms.KM.getCode())
.platformType(platformType)
.gameCode(game.getCode())
.build();
List<Game> gameOnes = gameService.selectGameList(gameOne);
@ -327,11 +312,11 @@ public class GamesKMServiceImpl implements IGamesService {
*/
private List<KMGameResponse.Game> gameList(KMGameResponse gameList, Integer ingress) {
for (KMGameResponse.Game gamesDataDTO : gameList.getGames()) {
GamePlatform gamePlatform = GamePlatform.builder()
.platformType(KMGameType.findSystemByCode(gamesDataDTO.getProviderCode()))
.platformCode(GamePlatforms.KM.getCode())
.build();
List<GamePlatform> gamePlatforms = gamePlatformService.selectGamePlatformList(gamePlatform);
// GamePlatform gamePlatform = GamePlatform.builder()
// .platformType(KMGameType.findSystemByCode(gamesDataDTO.getProviderCode()))
// .platformCode(GamePlatforms.KM.getCode())
// .build();
/*List<GamePlatform> gamePlatforms = gamePlatformService.selectGamePlatformList(gamePlatform);
//没有此平台就新增一个平台
if (CollectionUtils.isEmpty(gamePlatforms)) {
gamePlatform.setPlatformName(GamePlatforms.KM.getInfo() + KMGameType.findInfoByCode(gamesDataDTO.getProviderCode()));
@ -340,9 +325,12 @@ public class GamesKMServiceImpl implements IGamesService {
gamePlatformService.insertGamePlatform(gamePlatform);
} else {
gamePlatform = gamePlatforms.get(0);
}
}*/
Integer platformType = KMGameType.findSystemByCode(gamesDataDTO.getProviderCode());
Game game = Game.builder()
.platformId(gamePlatform.getId())
//.platformId(gamePlatform.getId())
.platformCode(GamePlatforms.KM.getCode())
.platformType(platformType)
.gameCode(gamesDataDTO.getCode())
.build();
List<Game> games = gameService.selectGameList(game);
@ -351,24 +339,27 @@ public class GamesKMServiceImpl implements IGamesService {
game.setGameSourceType(gamesDataDTO.getProviderCode());
game.setFreespin(Boolean.FALSE);
game.setDemoStatus(gamesDataDTO.getSupportDemoUrl());
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1);
game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.KM.getCode()) + 1);
game.setGameName(gamesDataDTO.getName());
game.setCreateBy(Constants.SYSTEM);
game.setIngress(ingress);
List<NameInfo> nameInfos = new ArrayList<>();
nameInfos.add(new NameInfo(gamesDataDTO.getName(), "zh-CN"));
game.setNameInfo(nameInfos);
gameService.insertGame(game);
} else {
game = games.get(0);
}
gamesDataDTO.setSystemGameId(game.getId());
List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(game.getGameName()).build());
if (CollectionUtils.isEmpty(gameNames)) {
gameNameService.insertGameName(GameName.builder()
.gameId(game.getId())
.gameName(game.getGameName())
.langCode("zh-CN")
.createBy(Constants.SYSTEM)
.build());
}
// List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(game.getGameName()).build());
// if (CollectionUtils.isEmpty(gameNames)) {
// gameNameService.insertGameName(GameName.builder()
// .gameId(game.getId())
// .gameName(game.getGameName())
// .langCode("zh-CN")
// .createBy(Constants.SYSTEM)
// .build());
// }
}
return gameList.getGames();
@ -384,10 +375,10 @@ public class GamesKMServiceImpl implements IGamesService {
@Transactional
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
log.info("GamesKMServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.KM.getInfo())
.currency(exchangeTransferMoneyRequestDTO.getCurrency())
.build());
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(GamePlatforms.KM.getInfo())
// .currency(exchangeTransferMoneyRequestDTO.getCurrency())
// .build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
String transactionId = GamePlatforms.KM.getInfo() + IdUtils.simpleUUID();
@ -407,7 +398,7 @@ public class GamesKMServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(currencyDTO.getSystemCurrency())
.currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.memberId(member.getId())
.transactionId(transactionId)
.platformCode(GamePlatforms.KM.getInfo())
@ -430,7 +421,7 @@ public class GamesKMServiceImpl implements IGamesService {
Map<String, Object> params = new LinkedHashMap<>();
params.put("userid", exchangeTransferMoneyRequestDTO.getAccount());
params.put("amt", amount);
params.put("cur", currencyDTO.getCurrency());
params.put("cur", exchangeTransferMoneyRequestDTO.getCurrency());
params.put("txid", transactionId);
Map<String, Object> headerMap = this.getKey(exchangeTransferMoneyRequestDTO);
@ -503,9 +494,7 @@ public class GamesKMServiceImpl implements IGamesService {
KMBetRecordResponse betRecordByTime = KMClient.getBetRecordByTime(JsonUtil.mapToQueryString(params), key);
if (ObjectUtils.isEmpty(betRecordByTime.getErrorCode()) || this.getIsSuccess(betRecordByTime.getErrorCode())) {
this.batchInsert(betRecordByTime);
this.batchInsert(betRecordByTime, betRecordByTimeDTO);
return Boolean.TRUE;
} else {
log.error("GamesKMServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getErrorCode(), betRecordByTime.getErrorDescription());
@ -628,14 +617,18 @@ public class GamesKMServiceImpl implements IGamesService {
*
* @param betRecordByTime dgdto
*/
private void batchInsert(KMBetRecordResponse betRecordByTime) {
private void batchInsert(KMBetRecordResponse betRecordByTime, BetRecordByTimeDTO betRecordByTimeDTO) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>();
//数据组装
List<KMBetRecordResponse.Bet> report = betRecordByTime.getBets();
//数据转化
for (KMBetRecordResponse.Bet bean : report) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean).build());
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
//.systemCurrencyCode(systemCurrency)
//.currencyCode(targetCurrency)
.platform(betRecordByTimeDTO.getVendor())
.data(bean).build());
if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId());
gameBettingDetails.add(bettingDetails);
@ -666,12 +659,11 @@ public class GamesKMServiceImpl implements IGamesService {
public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) {
//转化类
KMBetRecordResponse.Bet resultBean = (KMBetRecordResponse.Bet) gamesDataBuildDTO.getData();
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.KM.getInfo())
.currency(resultBean.getCurrency())
.build());
//
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(GamePlatforms.KM.getInfo())
// .currency(resultBean.getCurrency())
// .build());
Member member = memberService.selectMemberByGameAccount(resultBean.getUserId());
@ -697,20 +689,22 @@ public class GamesKMServiceImpl implements IGamesService {
}
Platform platform = gamesDataBuildDTO.getPlatform();
String systemCurrency = platform.getOurCurrency(resultBean.getCurrency());
//数据构造
GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
.tenantKey(member.getTenantKey())
//保存我们的币种id
.currencyCode(currencyDTO.getSystemCurrency())
.currencyCode(systemCurrency)
.memberId(member.getId())
.gameCode(gamesDataDTO.getCode())
.gameType(PlatformType.CARD_GAME.getCode())
.platformCode(GamePlatforms.KM.getInfo())
.platformCode(GamePlatforms.KM.getCode())
.gameId(GAME_ID)
.gameName(gamesDataDTO.getName())
.gameStatus(gameStatus)
.gameStatusType(1)
.gameCurrencyCode(currencyDTO.getCurrency())
.gameCurrencyCode(resultBean.getCurrency())
.account(resultBean.getUserId())
.wagersId(resultBean.getId())
.wagersTime(resultBean.getBeton().getTime())

View File

@ -10,7 +10,6 @@ import com.ff.base.enums.*;
import com.ff.base.exception.base.ApiException;
import com.ff.base.exception.base.BaseException;
import com.ff.base.system.domain.SysConfig;
import com.ff.base.system.service.ISysConfigService;
import com.ff.base.system.service.impl.SysConfigServiceImpl;
import com.ff.base.utils.DateUtils;
import com.ff.base.utils.sign.Md5Utils;
@ -20,8 +19,9 @@ import com.ff.game.api.meitian.client.MeiTianClient;
import com.ff.game.api.meitian.dto.*;
import com.ff.game.api.request.*;
import com.ff.game.domain.*;
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
import com.ff.game.service.*;
import com.ff.game.service.IGameBettingDetailsService;
import com.ff.game.service.IGameExchangeMoneyService;
import com.ff.game.service.IGameService;
import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j;
@ -55,20 +55,12 @@ import java.util.stream.Collectors;
@Slf4j
public class MeiTianGameServiceImpl implements IGamesService {
@Resource
private ISysConfigService configService;
@Resource
private RedisCache redisCache;
@Resource
private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource
private IGameService gameService;
@ -82,11 +74,6 @@ public class MeiTianGameServiceImpl implements IGamesService {
@Resource
private IGameBettingDetailsService gameBettingDetailsService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource
private IGameNameService gameNameService;
@Autowired
private SysConfigServiceImpl sysConfigServiceImpl;
@ -230,7 +217,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
MeiTianGamesDTO gameList = new MeiTianGamesDTO();
for (MeiTianGameDataDTO gamesDataDTO : gameList.getData()) {
GamePlatform gamePlatform = GamePlatform.builder()
/* GamePlatform gamePlatform = GamePlatform.builder()
.platformType(MeiTianGameType.findSystemByCode(gamesDataDTO.getGameCategoryId()))
.platformCode(GamePlatforms.MT.getCode())
.build();
@ -243,9 +230,12 @@ public class MeiTianGameServiceImpl implements IGamesService {
gamePlatformService.insertGamePlatform(gamePlatform);
} else {
gamePlatform = gamePlatforms.get(0);
}
}*/
Integer platformType = MeiTianGameType.findSystemByCode(gamesDataDTO.getGameCategoryId());
Game game = Game.builder()
.platformId(gamePlatform.getId())
//.platformId(gamePlatform.getId())
.platformCode(GamePlatforms.MT.getCode())
.platformType(platformType)
.gameCode(String.valueOf(gamesDataDTO.getGameId()))
.build();
List<Game> games = gameService.selectGameList(game);
@ -253,16 +243,21 @@ public class MeiTianGameServiceImpl implements IGamesService {
if (CollectionUtils.isEmpty(games)) {
game.setGameSourceType(String.valueOf(gamesDataDTO.getGameCategoryId()));
game.setFreespin(false);
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1);
game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.MT.getCode()) + 1);
game.setGameName(gamesDataDTO.getCnName());
game.setCreateBy(Constants.SYSTEM);
List<NameInfo> nameInfos = new ArrayList<>();
nameInfos.add(new NameInfo(gamesDataDTO.getCnName(), "zh-CN"));
nameInfos.add(new NameInfo(gamesDataDTO.getEnName(), "en-US"));
game.setNameInfo(nameInfos);
gameService.insertGame(game);
} else {
game = games.get(0);
}
gamesDataDTO.setSystemGameId(game.getId());
List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(game.getGameName()).build());
/*List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(game.getGameName()).build());
if (CollectionUtils.isEmpty(gameNames)) {
gameNameService.insertGameName(GameName.builder()
.gameId(game.getId())
@ -270,15 +265,13 @@ public class MeiTianGameServiceImpl implements IGamesService {
.langCode("zh-CN")
.createBy(Constants.SYSTEM)
.build());
//
gameNameService.insertGameName(GameName.builder()
.gameId(game.getId())
.gameName(gamesDataDTO.getEnName())
.langCode("en-US")
.createBy(Constants.SYSTEM)
.build());
}
}*/
}
@ -298,9 +291,9 @@ public class MeiTianGameServiceImpl implements IGamesService {
@Override
@Transactional
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.code(exchangeTransferMoneyRequestDTO.getAgentId())
.currency(exchangeTransferMoneyRequestDTO.getCurrency()).build());
// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .code(exchangeTransferMoneyRequestDTO.getAgentId())
// .currency(exchangeTransferMoneyRequestDTO.getCurrency()).build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
String transactionId = GamePlatforms.MT.getCode() + IdUtils.simpleUUID();
@ -322,7 +315,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(gameSecretKey.getSystemCurrency())
.currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.memberId(member.getId())
.transactionId(transactionId)
.platformCode(GamePlatforms.MT.getCode())
@ -332,7 +325,8 @@ public class MeiTianGameServiceImpl implements IGamesService {
exchangeMoney.setTransactionId(transactionId);
String key = gameSecretKey.getKey();
// String key = gameSecretKey.getKey();
String key = exchangeTransferMoneyRequestDTO.getAgentKey();
String merchantId = exchangeTransferMoneyRequestDTO.getAgentId();
String playerName = exchangeTransferMoneyRequestDTO.getAccount();
String coins = exchangeTransferMoneyRequestDTO.getAmount().setScale(4, RoundingMode.DOWN).toString();
@ -464,7 +458,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
return Boolean.TRUE;
}
//数据插入
this.batchInsert(recordResponse);
this.batchInsert(recordResponse, betRecordByTimeDTO);
MeiTianBetRecordResponseDTO.DataBean dataBean = dataList.get(dataList.size() - 1);
SysConfig config = sysConfigServiceImpl.getByConfigKey(configKey);
if (config == null) {
@ -532,7 +526,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
return Boolean.TRUE;
}
//数据插入
this.batchInsert(recordResponse);
this.batchInsert(recordResponse, betRecordByTimeDTO);
MeiTianBetRecordResponseDTO.DataBean dataBean = dataList.get(dataList.size() - 1);
syncDateMap.put(date, Long.parseLong(dataBean.getRowID()));
SysConfig config = sysConfigServiceImpl.getByConfigKey(configKey);
@ -693,7 +687,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
*
* @param recordResponse
*/
private void batchInsert(MeiTianBetRecordResponseDTO recordResponse) {
private void batchInsert(MeiTianBetRecordResponseDTO recordResponse, BetRecordByTimeDTO betRecordByTimeDTO) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>();
//数据组装
@ -705,6 +699,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
//数据转化
for (MeiTianBetRecordResponseDTO.DataBean dataBean : dataList) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
.platform(betRecordByTimeDTO.getVendor())
.data(dataBean).build());
if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId());
@ -737,10 +732,10 @@ public class MeiTianGameServiceImpl implements IGamesService {
//转化类
MeiTianBetRecordResponseDTO.DataBean dataBean = (MeiTianBetRecordResponseDTO.DataBean) gamesDataBuildDTO.getData();
GameSecretKeyCurrencyDTO gameSecretKey =
gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.currency(dataBean.getCurrency())
.platformCode(GamePlatforms.MT.getCode()).build());
// GameSecretKeyCurrencyDTO gameSecretKey =
// gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .currency(dataBean.getCurrency())
// .platformCode(GamePlatforms.MT.getCode()).build());
Member member = memberService.selectMemberByGameAccount(dataBean.getPlayerName());
@ -754,11 +749,13 @@ public class MeiTianGameServiceImpl implements IGamesService {
int compareResult = originPayoffAmount.compareTo(BigDecimal.ZERO);
long gameTime = getTime(dataBean.getGameDate());
Platform platform = gamesDataBuildDTO.getPlatform();
String systemCurrency = platform.getOurCurrency(dataBean.getCurrency());
//数据构造
GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
.tenantKey(member.getTenantKey())
//保存我们的币种id
.currencyCode(gameSecretKey.getSystemCurrency())
.currencyCode(systemCurrency)
.memberId(member.getId())
.gameCode(dataBean.getGameCode())
.gameType(MeiTianGameType.findSystemByCode(Integer.parseInt(dataBean.getGameType())))

View File

@ -19,8 +19,12 @@ import com.ff.game.api.ng.client.NGClient;
import com.ff.game.api.ng.dto.*;
import com.ff.game.api.request.*;
import com.ff.game.domain.*;
import com.ff.game.dto.*;
import com.ff.game.service.*;
import com.ff.game.dto.GameBettingDetailsDTO;
import com.ff.game.dto.GameDTO;
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
import com.ff.game.service.IGameBettingDetailsService;
import com.ff.game.service.IGameExchangeMoneyService;
import com.ff.game.service.IGameService;
import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j;
@ -65,11 +69,6 @@ public class GamesPGServiceImpl implements IGamesService {
@Resource
private IGameExchangeMoneyService gameExchangeMoneyService;
@Resource
private IGamePlatformService gamePlatformService;
@Resource
private IGameService gameService;
@ -77,33 +76,15 @@ public class GamesPGServiceImpl implements IGamesService {
@Resource
private IMemberService memberService;
@Resource
private IGameFreeRecordService gameFreeRecordService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Resource
private NGClient ngClient;
@Resource
private KeyConfig keyConfig;
@Resource
private IGameBettingDetailsService gameBettingDetailsService;
@Resource
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
@Resource
private IGameNameService gameNameService;
@Resource
private IGameSecretKeyLangService gameSecretKeyLangService;
@Autowired
@Qualifier("threadPoolTaskExecutor")
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
@ -252,7 +233,7 @@ public class GamesPGServiceImpl implements IGamesService {
ApiNGResponseDTO<List<ApiGameInfoResponseDTO>> gameList = ngClient.getGameList(paramsMap, headerMap);
if (this.getIsSuccess(gameList.getCode())) {
for (ApiGameInfoResponseDTO apiGameInfoResponseDTO : gameList.getData()) {
GamePlatform gamePlatform = GamePlatform.builder()
/*GamePlatform gamePlatform = GamePlatform.builder()
.platformType(NGGameType.findSystemByCode(apiGameInfoResponseDTO.getGameType()))
.platformCode(GamePlatforms.PG.getCode())
.build();
@ -265,9 +246,12 @@ public class GamesPGServiceImpl implements IGamesService {
gamePlatformService.insertGamePlatform(gamePlatform);
} else {
gamePlatform = gamePlatforms.get(0);
}
}*/
Integer platformType = NGGameType.findSystemByCode(apiGameInfoResponseDTO.getGameType());
Game game = Game.builder()
.platformId(gamePlatform.getId())
// .platformId(gamePlatform.getId())
.platformCode(GamePlatforms.PG.getCode())
.platformType(platformType)
.gameCode(apiGameInfoResponseDTO.getGameCode())
.build();
List<Game> games = gameService.selectGameList(game);
@ -276,15 +260,20 @@ public class GamesPGServiceImpl implements IGamesService {
game.setGameSourceType(String.valueOf(apiGameInfoResponseDTO.getGameType()));
game.setFreespin(Boolean.FALSE);
game.setDemoStatus(Boolean.TRUE);
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1);
game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.PG.getCode()) + 1);
game.setGameName(apiGameInfoResponseDTO.getGameName().get("zh-hans"));
game.setCreateBy(Constants.SYSTEM);
List<NameInfo> nameInfos = new ArrayList<>();
nameInfos.add(new NameInfo(apiGameInfoResponseDTO.getGameName().get("zh-hans"), "zh-CN"));
nameInfos.add(new NameInfo(apiGameInfoResponseDTO.getGameName().get("zh-hant"), "zh-TW"));
nameInfos.add(new NameInfo(apiGameInfoResponseDTO.getGameName().get("en"), "en-US"));
game.setNameInfo(nameInfos);
gameService.insertGame(game);
} else {
game = games.get(0);
}
apiGameInfoResponseDTO.setSystemGameId(game.getId());
Map<String, String> gameName = apiGameInfoResponseDTO.getGameName();
/*Map<String, String> gameName = apiGameInfoResponseDTO.getGameName();
for (String key : gameName.keySet()) {
String name = gameName.get(key);
List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(name).build());
@ -309,7 +298,7 @@ public class GamesPGServiceImpl implements IGamesService {
.build());
}
}
}
}*/
}
@ -334,11 +323,11 @@ public class GamesPGServiceImpl implements IGamesService {
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
log.info("GamesNGServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.PG.getCode())
.code(exchangeTransferMoneyRequestDTO.getAgentId())
.currency(exchangeTransferMoneyRequestDTO.getCurrency())
.build());
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(GamePlatforms.PG.getCode())
// .code(exchangeTransferMoneyRequestDTO.getAgentId())
// .currency(exchangeTransferMoneyRequestDTO.getCurrency())
// .build());
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
String transactionId = gameExchangeMoneyService.getTransactionId(GamePlatforms.PG.getCode(), 32);
@ -358,7 +347,7 @@ public class GamesPGServiceImpl implements IGamesService {
.quota(exchangeTransferMoneyRequestDTO.getQuota())
.balance(exchangeTransferMoneyRequestDTO.getAmount())
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
.currencyCode(currencyDTO.getSystemCurrency())
.currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
.memberId(member.getId())
.transactionId(transactionId)
.platformCode(GamePlatforms.PG.getCode())
@ -372,7 +361,7 @@ public class GamesPGServiceImpl implements IGamesService {
.accounts(member.getGameAccount())
.agentId(exchangeTransferMoneyRequestDTO.getAgentId())
.agentKey(exchangeTransferMoneyRequestDTO.getAgentKey())
.currency(currencyDTO.getCurrency())
.currency(exchangeTransferMoneyRequestDTO.getCurrency())
.build();
MemberInfoResponseDTO memberInfo = this.getMemberInfo(gamesBaseRequestDTO);
//判断是不是转出
@ -384,7 +373,7 @@ public class GamesPGServiceImpl implements IGamesService {
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("platType", NGPlatforms.PG.getCode());
paramsMap.put("playerId", exchangeTransferMoneyRequestDTO.getAccount());
paramsMap.put("currency", currencyDTO.getCurrency());
paramsMap.put("currency", exchangeTransferMoneyRequestDTO.getCurrency());
paramsMap.put("type", type);
paramsMap.put("amount", exchangeTransferMoneyRequestDTO.getAmount());
paramsMap.put("orderId", transactionId);
@ -399,7 +388,7 @@ public class GamesPGServiceImpl implements IGamesService {
gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney);
ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO();
exchangeTransferStatusRequestDTO.setAccount(exchangeTransferMoneyRequestDTO.getAccount());
exchangeTransferStatusRequestDTO.setCurrency(currencyDTO.getCurrency());
exchangeTransferStatusRequestDTO.setCurrency(exchangeTransferMoneyRequestDTO.getCurrency());
exchangeTransferStatusRequestDTO.setOrderId(transactionId);
exchangeTransferStatusRequestDTO.setAgentId(exchangeTransferMoneyRequestDTO.getAgentId());
exchangeTransferStatusRequestDTO.setAgentKey(exchangeTransferMoneyRequestDTO.getAgentKey());
@ -467,17 +456,19 @@ public class GamesPGServiceImpl implements IGamesService {
GameSecretKeyCurrencyDTO gameSecretKeyDTO = new GameSecretKeyCurrencyDTO();
gameSecretKeyDTO.setPlatformCodes(NGPlatforms.getAllPlatforms());
List<GameSecretKeyCurrencyDTO> currencyDTOList = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(gameSecretKeyDTO);
List<String> currencys = currencyDTOList.stream()
.map(GameSecretKeyCurrencyDTO::getCurrency)
.distinct()
.collect(Collectors.toList());
// List<GameSecretKeyCurrencyDTO> currencyDTOList = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(gameSecretKeyDTO);
// List<String> currencys = currencyDTOList.stream()
// .map(GameSecretKeyCurrencyDTO::getCurrency)
// .distinct()
// .collect(Collectors.toList());
Platform platform = betRecordByTimeDTO.getVendor();
Set<String> cacheSet = redisCache.getCacheSet(CacheConstants.PG_GAMES_BET_CURRENCY);
if (CollectionUtils.isEmpty(cacheSet)) {
cacheSet = new HashSet<>();
}
List<String> currencys = new ArrayList<>(platform.getCurrencyInfo().values());
//如果长度一致则清空缓存循环币种
if (cacheSet.size() >= currencys.size()) {
cacheSet = new HashSet<>();
@ -488,22 +479,24 @@ public class GamesPGServiceImpl implements IGamesService {
String firstCurrency = currencys.get(0);
GameSecretKeyCurrencyDTO currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCode(GamePlatforms.PG.getCode())
.currency(firstCurrency)
.build());
// GameSecretKeyCurrencyDTO currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCode(GamePlatforms.PG.getCode())
// .currency(firstCurrency)
// .build());
betRecordByTimeDTO.setAgentId(currencyDTO.getCode());
betRecordByTimeDTO.setAgentKey(currencyDTO.getKey());
// betRecordByTimeDTO.setAgentId(currencyDTO.getCode());
// betRecordByTimeDTO.setAgentKey(currencyDTO.getKey());
int pageNo = 1;
int pageSize = 2000;
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("currency", currencyDTO.getCurrency());
paramsMap.put("currency", /*currencyDTO.getCurrency()*/ firstCurrency);
paramsMap.put("pageNo", pageNo);
paramsMap.put("pageSize", pageSize);
Map<String, String> key = this.getKey(betRecordByTimeDTO);
String systemCurrency = platform.getOurCurrency(firstCurrency);
ApiNGResponseDTO<ApiGameBetRecordPageResponseDTO> betRecordByTime = ngClient.getBetRecordByTime(paramsMap, key);
@ -517,7 +510,7 @@ public class GamesPGServiceImpl implements IGamesService {
ApiGameBetRecordPageResponseDTO data = result.getData();
//数据组装
this.batchInsert(data);
this.batchInsert(data, systemCurrency, firstCurrency);
//总页数
// 计算总页数,确保不会遗漏
@ -528,19 +521,19 @@ public class GamesPGServiceImpl implements IGamesService {
pageNoAtomic.incrementAndGet();
//请求参数
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("currency", currencyDTO.getCurrency());
paramMap.put("currency", /*currencyDTO.getCurrency()*/firstCurrency);
paramMap.put("pageNo", pageNoAtomic.get());
paramMap.put("pageSize", pageSize);
SleepUtil.sleep(10000);
ApiNGResponseDTO<ApiGameBetRecordPageResponseDTO> betRecordByTimePage = ngClient.getBetRecordByTime(paramMap, key);
data = betRecordByTimePage.getData();
//数据组装
this.batchInsert(data);
this.batchInsert(data, systemCurrency, firstCurrency);
}
}
getBetRecordByHistoryTime(betRecordByTimeDTO, currencyDTO);
getBetRecordByHistoryTime(betRecordByTimeDTO, systemCurrency, firstCurrency);
return Boolean.TRUE;
}
@ -548,9 +541,9 @@ public class GamesPGServiceImpl implements IGamesService {
*
*
* @param betRecordByTimeDTO dto
* @param currencyDTO dto
* @param currency
*/
private void getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO, GameSecretKeyCurrencyDTO currencyDTO) {
private void getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO, String systemCurrency, String currency /*GameSecretKeyCurrencyDTO currencyDTO*/) {
//捞取指定30分钟前的数据
Long startTimes = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), -30);
@ -578,12 +571,12 @@ public class GamesPGServiceImpl implements IGamesService {
.format(Instant.ofEpochMilli(betRecordByTimeDTO.getEndTime()));
betRecordByTimeDTO.setAgentId(currencyDTO.getCode());
betRecordByTimeDTO.setAgentKey(currencyDTO.getKey());
//betRecordByTimeDTO.setAgentId(currencyDTO.getCode());
//betRecordByTimeDTO.setAgentKey(currencyDTO.getKey());
int pageNo = 1;
int pageSize = 2000;
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("currency", currencyDTO.getCurrency());
paramsMap.put("currency", /*currencyDTO.getCurrency()*/ currency);
paramsMap.put("pageNo", pageNo);
paramsMap.put("pageSize", pageSize);
paramsMap.put("startTime", startTime);
@ -601,7 +594,7 @@ public class GamesPGServiceImpl implements IGamesService {
ApiGameBetRecordPageResponseDTO data = result.getData();
//数据组装
this.batchInsert(data);
this.batchInsert(data, systemCurrency, currency);
//总页数
// 计算总页数,确保不会遗漏
@ -612,7 +605,7 @@ public class GamesPGServiceImpl implements IGamesService {
pageNoAtomic.incrementAndGet();
//请求参数
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("currency", currencyDTO.getCurrency());
paramMap.put("currency", /*currencyDTO.getCurrency()*/ currency);
paramMap.put("pageNo", pageNoAtomic.get());
paramMap.put("pageSize", pageSize);
paramMap.put("startTime", startTime);
@ -621,13 +614,14 @@ public class GamesPGServiceImpl implements IGamesService {
ApiNGResponseDTO<ApiGameBetRecordPageResponseDTO> betRecordByTimePage = ngClient.getBetRecordByTime(paramMap, key);
data = betRecordByTimePage.getData();
//数据组装
this.batchInsert(data);
this.batchInsert(data, systemCurrency, currency);
}
});
}
}
/**
*
*
@ -719,6 +713,7 @@ public class GamesPGServiceImpl implements IGamesService {
throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode());
}
/**
*
*
@ -731,7 +726,6 @@ public class GamesPGServiceImpl implements IGamesService {
}
/**
*
*
@ -750,15 +744,18 @@ public class GamesPGServiceImpl implements IGamesService {
}
String platform = ngPlatforms.getPlatform();
List<Game> games = gameService.selectGameDTOList(GameDTO.builder().gameName(resultBean.getGameName()).platformCode(platform).build());
List<Game> games = gameService.selectGameDTOList(GameDTO.builder()
.gameName(resultBean.getGameName())
.platformCode(platform)
.build());
if (CollectionUtils.isEmpty(games)) {
return null;
}
Game gamesDataDTO = games.get(0);
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
.platformCodes(NGPlatforms.getAllPlatforms())
.currency(resultBean.getCurrency())
.build());
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
// .platformCodes(NGPlatforms.getAllPlatforms())
// .currency(resultBean.getCurrency())
// .build());
Member member = memberService.selectMemberByGameAccount(resultBean.getPlayerId());
if (ObjectUtils.isEmpty(member)) {
@ -778,7 +775,7 @@ public class GamesPGServiceImpl implements IGamesService {
GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
.tenantKey(member.getTenantKey())
//保存我们的币种id
.currencyCode(currencyDTO.getSystemCurrency())
.currencyCode(gamesDataBuildDTO.getSystemCurrencyCode())
.memberId(member.getId())
.gameCode(gamesDataDTO.getGameCode())
.gameType(NGGameType.findSystemByCode(resultBean.getGameType()))
@ -814,12 +811,15 @@ public class GamesPGServiceImpl implements IGamesService {
*
* @param data
*/
private synchronized void batchInsert(ApiGameBetRecordPageResponseDTO data) {
private synchronized void batchInsert(ApiGameBetRecordPageResponseDTO data, String systemCurrency, String currency) {
List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
List<String> wagersIds = new ArrayList<>();
//数据转化
for (ApiGameBetRecordPageResponseDTO.GameBetRecord bean : data.getList()) {
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean).build());
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
.systemCurrencyCode(systemCurrency)
.currencyCode(currency)
.data(bean).build());
if (!ObjectUtils.isEmpty(bettingDetails)) {
bettingDetails.setId(IdUtil.getSnowflakeNextId());
gameBettingDetails.add(bettingDetails);
@ -828,7 +828,7 @@ public class GamesPGServiceImpl implements IGamesService {
}
if (!CollectionUtils.isEmpty(gameBettingDetails)) {
//查询重复数据id
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds,NGPlatforms.PG.getPlatform());
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, NGPlatforms.PG.getPlatform());
//用steam流清除list中与wagersIds集合相同的数据
gameBettingDetails = gameBettingDetails.stream()
.filter(detail -> !removeWagersIds.contains(detail.getWagersId()))

View File

@ -6,11 +6,10 @@ import java.io.Serializable;
import java.util.HashMap;
/**
* key:
*
* @author cengy
*/
@Data
public class CurrencyInfo extends HashMap<String, String> implements Serializable {
private String currencyId;
}

View File

@ -113,6 +113,10 @@ public class GameTask {
betRecordByTimeDTO.setAgentKey(keyInfo.getKey());
betRecordByTimeDTO.setKeyInfo(keyInfo);
betRecordByTimeDTO.setVendor(platform);
betRecordByTimeDTO.setSystemCurrency(keyInfo.getCurrency());
betRecordByTimeDTO.setCurrency(platform.getCurrencyInfo().get(keyInfo.getCurrency()));
gamesService.get(platformCode + Constants.SERVICE).getBetRecordByTime(betRecordByTimeDTO);
} catch (Exception e) {
log.error("同步平台投注记录失败platformCode:{}", platformCode, e);
@ -153,6 +157,9 @@ public class GameTask {
betRecordByTimeDTO.setKeyInfo(keyInfo);
betRecordByTimeDTO.setVendor(platform);
betRecordByTimeDTO.setSystemCurrency(keyInfo.getCurrency());
betRecordByTimeDTO.setCurrency(platform.getCurrencyInfo().get(keyInfo.getCurrency()));
gamesService.get(platformCode + Constants.SERVICE).getBetRecordByHistoryTime(betRecordByTimeDTO);
} catch (Exception e) {
log.error("同步平台投注记录失败platformCode:{}", platformCode, e);