feat(game): 新增游戏平台支持
- 添加 AE 和 DG 游戏平台的接口实现 - 新增游戏列表、兑换转账、投注记录等功能 - 优化游戏数据构建和处理逻辑 - 移除不必要的服务和缓存操作main-meitian
parent
22b613ece0
commit
40208aab98
|
|
@ -191,6 +191,8 @@ public class ApiGameController extends BaseController {
|
|||
.lang(/*gameSecretKeyLangDTO.getLang()*/ targetLang)
|
||||
.vendor(platform)
|
||||
.keyInfo(keyInfo)
|
||||
.systemCurrency(loginRequest.getCurrencyCode())
|
||||
|
||||
.build();
|
||||
|
||||
String login = iGamesService.loginWithoutRedirect(gamesLogin);
|
||||
|
|
@ -265,6 +267,8 @@ public class ApiGameController extends BaseController {
|
|||
.transferType(gameExchangeBalanceRequest.getTransferType())
|
||||
.vendor(platform)
|
||||
.keyInfo(keyInfo)
|
||||
.systemCurrency(gameExchangeBalanceRequest.getCurrencyCode())
|
||||
|
||||
.build();
|
||||
Long exchangeTransferId = iGamesService.exchangeTransferByAgentId(exchangeTransferMoneyRequestDTO);
|
||||
GameExchangeMoney gameExchangeMoney = gameExchangeMoneyService.selectGameExchangeMoneyById(exchangeTransferId);
|
||||
|
|
@ -349,6 +353,7 @@ public class ApiGameController extends BaseController {
|
|||
.startTime(gameCreateFreeSpinRequest.getStartTime())
|
||||
.vendor(platform)
|
||||
.keyInfo(keyInfo)
|
||||
.systemCurrency(gameCreateFreeSpinRequest.getCurrencyCode())
|
||||
.build();
|
||||
|
||||
|
||||
|
|
@ -447,6 +452,7 @@ public class ApiGameController extends BaseController {
|
|||
.agentKey(keyInfo.getKey())
|
||||
.vendor(platform)
|
||||
.keyInfo(keyInfo)
|
||||
.systemCurrency(gameGetDetailRequest.getCurrencyCode())
|
||||
.build());
|
||||
return AjaxResult.success(gameDetail);
|
||||
}
|
||||
|
|
@ -496,6 +502,7 @@ public class ApiGameController extends BaseController {
|
|||
.agentKey(keyInfo.getKey())
|
||||
.vendor(platform)
|
||||
.keyInfo(keyInfo)
|
||||
.systemCurrency(gameKickMemeberRequest.getCurrencyCode())
|
||||
.build()));
|
||||
}
|
||||
|
||||
|
|
@ -533,6 +540,7 @@ public class ApiGameController extends BaseController {
|
|||
.currency(/*gameSecretKey.getCurrency()*/targetCurrency)
|
||||
.vendor(platform)
|
||||
.keyInfo(keyInfo)
|
||||
.systemCurrency(gameKickMemeberAllRequest.getCurrencyCode())
|
||||
.build();
|
||||
if (!ObjectUtils.isEmpty(gameKickMemeberAllRequest.getGameId())) {
|
||||
Game game = gameService.selectGameById(gameKickMemeberAllRequest.getGameId());
|
||||
|
|
@ -617,6 +625,7 @@ public class ApiGameController extends BaseController {
|
|||
.referenceId(request.getReferenceId())
|
||||
.vendor(platform)
|
||||
.keyInfo(keyInfo)
|
||||
.systemCurrency(request.getCurrencyCode())
|
||||
.build());
|
||||
return AjaxResult.success(cancelFreeSpin);
|
||||
}
|
||||
|
|
@ -665,6 +674,7 @@ public class ApiGameController extends BaseController {
|
|||
key.setCurrency(targetCurrency);
|
||||
key.setPlatform(platform);
|
||||
key.setKeyInfo(keyInfo);
|
||||
key.setSystemCurrency(request.getCurrencyCode());
|
||||
keys.add(key);
|
||||
}
|
||||
|
||||
|
|
@ -697,6 +707,7 @@ public class ApiGameController extends BaseController {
|
|||
.account(member.getGameAccount())
|
||||
.vendor(key.getPlatform())
|
||||
.keyInfo(key.getKeyInfo())
|
||||
.systemCurrency(key.systemCurrency)
|
||||
.transferType(TransferType.ALL.getCode())
|
||||
.build();
|
||||
return iGamesService.exchangeTransferByAgentId(exchangeTransferMoneyRequestDTO);
|
||||
|
|
@ -801,6 +812,7 @@ public class ApiGameController extends BaseController {
|
|||
.lang(/*gameSecretKeyLangDTO.getLang()*/targetLang)
|
||||
.vendor(platform)
|
||||
.keyInfo(keyInfo)
|
||||
.systemCurrency(request.getCurrencyCode())
|
||||
.build();
|
||||
|
||||
GameDemoLoginResponseDTO gameDemoLoginResponseDTO = iGamesService.gameDemoLogin(gamesLogin);
|
||||
|
|
@ -817,5 +829,6 @@ public class ApiGameController extends BaseController {
|
|||
private String key;
|
||||
private Platform platform;
|
||||
private KeyInfo keyInfo;
|
||||
private String systemCurrency;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -145,6 +145,7 @@ public class ApiMemberController extends BaseController {
|
|||
.currency(targetCurrency)
|
||||
.vendor(platform)
|
||||
.keyInfo(keyInfo)
|
||||
.systemCurrency(memberCreateApiRequest.getCurrencyCode())
|
||||
.build();
|
||||
Boolean result = iGamesService.createMember(gamesBaseRequestDTO);
|
||||
Assert.isTrue(result, "建立游戏账号失败");
|
||||
|
|
@ -201,6 +202,7 @@ public class ApiMemberController extends BaseController {
|
|||
.agentKey(keyInfo.getKey())
|
||||
.vendor(platform)
|
||||
.keyInfo(keyInfo)
|
||||
.systemCurrency(request.getCurrencyCode())
|
||||
.build();
|
||||
MemberInfoResponseDTO memberInfo = iGamesService.getMemberInfo(gamesBaseRequestDTO);
|
||||
MemberInfoResponse memberInfoResponse = new MemberInfoResponse();
|
||||
|
|
|
|||
|
|
@ -12,23 +12,19 @@ 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;
|
||||
import com.ff.base.utils.TenantUtils;
|
||||
import com.ff.base.utils.uuid.IdUtils;
|
||||
import com.ff.common.dto.GameBalanceExchange;
|
||||
import com.ff.common.service.ITenantGameQuotaFlowService;
|
||||
import com.ff.common.service.ITenantGameQuotaService;
|
||||
import com.ff.config.KeyConfig;
|
||||
import com.ff.game.api.IGamesService;
|
||||
import com.ff.game.api.ae.client.AEClient;
|
||||
import com.ff.game.api.ae.dto.*;
|
||||
import com.ff.game.api.ng.dto.ApiExchangeTransferStatusResponseDTO;
|
||||
import com.ff.game.api.ng.dto.ApiNGResponseDTO;
|
||||
import com.ff.game.api.request.*;
|
||||
import com.ff.game.api.xk.dto.XKGamesDTO;
|
||||
import com.ff.game.api.xk.dto.XKKickMemberDTO;
|
||||
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;
|
||||
|
|
@ -65,10 +61,6 @@ public class GamesAEServiceImpl implements IGamesService {
|
|||
private IGameExchangeMoneyService gameExchangeMoneyService;
|
||||
|
||||
|
||||
@Resource
|
||||
private IGamePlatformService gamePlatformService;
|
||||
|
||||
|
||||
@Resource
|
||||
private IGameService gameService;
|
||||
@Resource
|
||||
|
|
@ -77,14 +69,6 @@ public class GamesAEServiceImpl implements IGamesService {
|
|||
@Resource
|
||||
private IMemberService memberService;
|
||||
|
||||
@Resource
|
||||
private IGameFreeRecordService gameFreeRecordService;
|
||||
@Resource
|
||||
private IGameSecretKeyService gameSecretKeyService;
|
||||
|
||||
@Resource
|
||||
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
|
||||
|
||||
@Resource
|
||||
private AEClient AEClient;
|
||||
|
||||
|
|
@ -95,10 +79,6 @@ public class GamesAEServiceImpl implements IGamesService {
|
|||
@Resource
|
||||
private IGameBettingDetailsService gameBettingDetailsService;
|
||||
|
||||
@Resource
|
||||
private IGameNameService gameNameService;
|
||||
|
||||
|
||||
/**
|
||||
* 游戏id
|
||||
*/
|
||||
|
|
@ -222,32 +202,39 @@ public class GamesAEServiceImpl implements IGamesService {
|
|||
@Transactional
|
||||
@Override
|
||||
public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) {
|
||||
GamePlatform gamePlatform = gamePlatformService.selectGamePlatformById(PLATFORM_ID);
|
||||
// GamePlatform gamePlatform = gamePlatformService.selectGamePlatformById(PLATFORM_ID);
|
||||
//没有此平台就新增一个平台
|
||||
if (ObjectUtils.isEmpty(gamePlatform)) {
|
||||
gamePlatform = new GamePlatform();
|
||||
gamePlatform.setId(PLATFORM_ID);
|
||||
gamePlatform.setPlatformCode(GamePlatforms.AE.getInfo());
|
||||
gamePlatform.setPlatformType(PlatformType.GAME_HALL.getCode());
|
||||
gamePlatform.setPlatformName(GamePlatforms.AE.getInfo() + PlatformType.GAME_HALL.getName());
|
||||
gamePlatform.setSortNo(gamePlatformService.selectMaxSortNo() + 1);
|
||||
gamePlatform.setCreateBy(Constants.SYSTEM);
|
||||
gamePlatformService.insertGamePlatform(gamePlatform);
|
||||
}
|
||||
// if (ObjectUtils.isEmpty(gamePlatform)) {
|
||||
// gamePlatform = new GamePlatform();
|
||||
// gamePlatform.setId(PLATFORM_ID);
|
||||
// gamePlatform.setPlatformCode(GamePlatforms.AE.getInfo());
|
||||
// gamePlatform.setPlatformType(PlatformType.GAME_HALL.getCode());
|
||||
// gamePlatform.setPlatformName(GamePlatforms.AE.getInfo() + PlatformType.GAME_HALL.getName());
|
||||
// gamePlatform.setSortNo(gamePlatformService.selectMaxSortNo() + 1);
|
||||
// gamePlatform.setCreateBy(Constants.SYSTEM);
|
||||
// gamePlatformService.insertGamePlatform(gamePlatform);
|
||||
// }
|
||||
Platform platform = gamesBaseRequestDTO.getVendor();
|
||||
Game game = gameService.selectGameById(GAME_ID);
|
||||
//不存在这个游戏
|
||||
if (ObjectUtils.isEmpty(game)) {
|
||||
game = new Game();
|
||||
game.setId(GAME_ID);
|
||||
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1);
|
||||
game.setPlatformId(gamePlatform.getId());
|
||||
game.setSortNo(gameService.selectMaxSortNo(PlatformType.GAME_HALL.getCode(), GamePlatforms.AE.getCode()) + 1);
|
||||
//game.setPlatformId(gamePlatform.getId());
|
||||
game.setPlatformCode(platform.getPlatformCode());
|
||||
game.setPlatformType(PlatformType.GAME_HALL.getCode());
|
||||
game.setGameCode("1");
|
||||
game.setGameSourceType(String.valueOf(1));
|
||||
game.setGameName("AE大厅");
|
||||
game.setCreateBy(Constants.SYSTEM);
|
||||
NameInfo nameInfo = new NameInfo();
|
||||
nameInfo.setLang("zh-CN");
|
||||
nameInfo.setName("AE大厅");
|
||||
game.setNameInfo(Collections.singletonList(nameInfo));
|
||||
gameService.insertGame(game);
|
||||
}
|
||||
GameName gameName = gameNameService.selectGameNameById(GAME_NAME_ID);
|
||||
/*GameName gameName = gameNameService.selectGameNameById(GAME_NAME_ID);
|
||||
if (ObjectUtils.isEmpty(gameName)) {
|
||||
gameNameService.insertGameName(GameName.builder()
|
||||
.id(GAME_NAME_ID)
|
||||
|
|
@ -256,7 +243,7 @@ public class GamesAEServiceImpl implements IGamesService {
|
|||
.langCode("zh-CN")
|
||||
.createBy(Constants.SYSTEM)
|
||||
.build());
|
||||
}
|
||||
}*/
|
||||
|
||||
return CacheConstants.XK_GAMES;
|
||||
}
|
||||
|
|
@ -271,10 +258,10 @@ public class GamesAEServiceImpl implements IGamesService {
|
|||
@Transactional
|
||||
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
|
||||
log.info("GamesAEServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
|
||||
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(GamePlatforms.AE.getInfo())
|
||||
.code(exchangeTransferMoneyRequestDTO.getAgentId())
|
||||
.build());
|
||||
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
// .platformCode(GamePlatforms.AE.getInfo())
|
||||
// .code(exchangeTransferMoneyRequestDTO.getAgentId())
|
||||
// .build());
|
||||
|
||||
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
|
||||
String transactionId = GamePlatforms.AE.getCode() + IdUtils.simpleUUID();
|
||||
|
|
@ -294,7 +281,7 @@ public class GamesAEServiceImpl implements IGamesService {
|
|||
.quota(exchangeTransferMoneyRequestDTO.getQuota())
|
||||
.balance(exchangeTransferMoneyRequestDTO.getAmount())
|
||||
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
|
||||
.currencyCode(currencyDTO.getSystemCurrency())
|
||||
.currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
|
||||
.memberId(member.getId())
|
||||
.transactionId(transactionId)
|
||||
.platformCode(GamePlatforms.AE.getInfo())
|
||||
|
|
@ -402,20 +389,20 @@ public class GamesAEServiceImpl implements IGamesService {
|
|||
Map<String, Object> params = this.getKey(betRecordByTimeDTO);
|
||||
|
||||
String timeFrom = redisCache.getCacheObject(CacheConstants.AE_TIME_FROM);
|
||||
if (StringUtils.isEmpty(timeFrom)){
|
||||
timeFrom = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getEndTime(), DateUtils.ISO_8601_FORMAT, "GMT+8")+"+08:00";
|
||||
if (StringUtils.isEmpty(timeFrom)) {
|
||||
timeFrom = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getEndTime(), DateUtils.ISO_8601_FORMAT, "GMT+8") + "+08:00";
|
||||
}
|
||||
|
||||
|
||||
params.put("timeFrom", timeFrom);
|
||||
params.put("platform", "SEXYBCRT");
|
||||
params.put("delayTime",10000);
|
||||
params.put("delayTime", 10000);
|
||||
AEBetRecordResponse aeBetRecordResponse = AEClient.getBetRecordByTime(params);
|
||||
|
||||
//判断是否获取成功
|
||||
if (this.getIsSuccess(aeBetRecordResponse.getStatus())) {
|
||||
//数据组装
|
||||
this.batchInsert(aeBetRecordResponse);
|
||||
this.batchInsert(aeBetRecordResponse, betRecordByTimeDTO);
|
||||
return Boolean.TRUE;
|
||||
} else {
|
||||
log.error("GamesAEServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", aeBetRecordResponse.getStatus(), aeBetRecordResponse.getDesc());
|
||||
|
|
@ -436,19 +423,19 @@ public class GamesAEServiceImpl implements IGamesService {
|
|||
Map<String, Object> params = this.getKey(betRecordByTimeDTO);
|
||||
|
||||
long startTimeLong = DateUtils.addOrSubtractMinutes(betRecordByTimeDTO.getStartTime(), -40);
|
||||
String startTime = DateUtils.convertTimestampToFormattedDate(startTimeLong, DateUtils.ISO_8601_FORMAT, "GMT+8")+"+08:00";
|
||||
String endTime = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getEndTime(), DateUtils.ISO_8601_FORMAT, "GMT+8")+"+08:00";
|
||||
String startTime = DateUtils.convertTimestampToFormattedDate(startTimeLong, DateUtils.ISO_8601_FORMAT, "GMT+8") + "+08:00";
|
||||
String endTime = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getEndTime(), DateUtils.ISO_8601_FORMAT, "GMT+8") + "+08:00";
|
||||
|
||||
|
||||
params.put("startTime", startTime);
|
||||
params.put("endTime", endTime);
|
||||
params.put("platform","SEXYBCRT");
|
||||
params.put("platform", "SEXYBCRT");
|
||||
AEBetRecordResponse aeBetRecordResponse = AEClient.getBetHistoryRecordByTime(params);
|
||||
|
||||
//判断是否获取成功
|
||||
if (this.getIsSuccess(aeBetRecordResponse.getStatus())) {
|
||||
//数据组装
|
||||
this.batchInsert(aeBetRecordResponse);
|
||||
this.batchInsert(aeBetRecordResponse, betRecordByTimeDTO);
|
||||
return Boolean.TRUE;
|
||||
} else {
|
||||
log.error("GamesAEServiceImpl [getBetRecordByHistoryTime] 获取投注记录失败,错误代码{},错误信息{}", aeBetRecordResponse.getStatus(), aeBetRecordResponse.getDesc());
|
||||
|
|
@ -548,22 +535,24 @@ public class GamesAEServiceImpl implements IGamesService {
|
|||
*
|
||||
* @param aeBetRecordResponse ae下注记录响应dto
|
||||
*/
|
||||
private void batchInsert(AEBetRecordResponse aeBetRecordResponse) {
|
||||
private void batchInsert(AEBetRecordResponse aeBetRecordResponse, BetRecordByTimeDTO betRecordByTimeDTO) {
|
||||
List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
|
||||
List<String> wagersIds = new ArrayList<>();
|
||||
//数据组装
|
||||
List<AEBetRecordResponse.Transaction> dataBean = aeBetRecordResponse.getTransactions();
|
||||
|
||||
String timeFrom=null ;
|
||||
String timeFrom = null;
|
||||
//数据转化
|
||||
for (AEBetRecordResponse.Transaction bean : dataBean) {
|
||||
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean).build());
|
||||
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
|
||||
.platform(betRecordByTimeDTO.getVendor())
|
||||
.data(bean).build());
|
||||
if (!ObjectUtils.isEmpty(bettingDetails)) {
|
||||
bettingDetails.setId(IdUtil.getSnowflakeNextId());
|
||||
gameBettingDetails.add(bettingDetails);
|
||||
}
|
||||
wagersIds.add(bean.getPlatform() + bean.getPlatformTxId());
|
||||
timeFrom=bean.getUpdateTime();
|
||||
timeFrom = bean.getUpdateTime();
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(gameBettingDetails)) {
|
||||
//查询重复数据id
|
||||
|
|
@ -576,8 +565,8 @@ public class GamesAEServiceImpl implements IGamesService {
|
|||
gameBettingDetailsService.batchInsert(gameBettingDetails);
|
||||
}
|
||||
}
|
||||
if (StringUtils.isEmpty(timeFrom)){
|
||||
timeFrom = DateUtils.convertTimestampToFormattedDate(DateUtils.getNowDate(), DateUtils.ISO_8601_FORMAT, "UTC+8")+"+08:00";
|
||||
if (StringUtils.isEmpty(timeFrom)) {
|
||||
timeFrom = DateUtils.convertTimestampToFormattedDate(DateUtils.getNowDate(), DateUtils.ISO_8601_FORMAT, "UTC+8") + "+08:00";
|
||||
}
|
||||
redisCache.setCacheObject(CacheConstants.AE_TIME_FROM, timeFrom);
|
||||
}
|
||||
|
|
@ -593,10 +582,10 @@ public class GamesAEServiceImpl implements IGamesService {
|
|||
//转化类
|
||||
AEBetRecordResponse.Transaction resultBean = (AEBetRecordResponse.Transaction) gamesDataBuildDTO.getData();
|
||||
|
||||
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
/*GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(GamePlatforms.AE.getInfo())
|
||||
.currency(resultBean.getCurrency())
|
||||
.build());
|
||||
.build());*/
|
||||
|
||||
Member member = memberService.selectMemberByGameAccount(resultBean.getUserId());
|
||||
if (ObjectUtils.isEmpty(member)) {
|
||||
|
|
@ -606,26 +595,26 @@ public class GamesAEServiceImpl implements IGamesService {
|
|||
|
||||
// 判断输赢
|
||||
Integer gameStatus = GameStatus.FLAT.getCode();
|
||||
BigDecimal payoffAmount=BigDecimal.ZERO;
|
||||
BigDecimal payoffAmount = BigDecimal.ZERO;
|
||||
if (resultBean.getRealWinAmount().compareTo(resultBean.getRealBetAmount()) > 0) {
|
||||
gameStatus = GameStatus.WIN.getCode();
|
||||
payoffAmount=resultBean.getRealWinAmount().subtract(resultBean.getRealBetAmount());
|
||||
} else if (resultBean.getRealWinAmount().compareTo(resultBean.getRealBetAmount()) < 0) {
|
||||
payoffAmount = resultBean.getRealWinAmount().subtract(resultBean.getRealBetAmount());
|
||||
} else if (resultBean.getRealWinAmount().compareTo(resultBean.getRealBetAmount()) < 0) {
|
||||
gameStatus = GameStatus.FAIL.getCode();
|
||||
payoffAmount=resultBean.getRealWinAmount().subtract(resultBean.getRealBetAmount()).abs();
|
||||
payoffAmount = resultBean.getRealWinAmount().subtract(resultBean.getRealBetAmount()).abs();
|
||||
}
|
||||
|
||||
//结算状态
|
||||
int settlementStatus=SettlementStatusEnum.REVOKED.getCode();
|
||||
if (resultBean.getTxStatus() == 1){
|
||||
settlementStatus=SettlementStatusEnum.COMPLETED.getCode();
|
||||
int settlementStatus = SettlementStatusEnum.REVOKED.getCode();
|
||||
if (resultBean.getTxStatus() == 1) {
|
||||
settlementStatus = SettlementStatusEnum.COMPLETED.getCode();
|
||||
}
|
||||
|
||||
//数据构造
|
||||
GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
|
||||
.tenantKey(member.getTenantKey())
|
||||
//保存我们的币种id
|
||||
.currencyCode(currencyDTO.getSystemCurrency())
|
||||
.currencyCode(gamesDataBuildDTO.getPlatform().getOurCurrency(resultBean.getCurrency()))
|
||||
.memberId(member.getId())
|
||||
.gameCode(resultBean.getGameCode())
|
||||
.gameType(PlatformType.GAME_HALL.getCode())
|
||||
|
|
@ -636,7 +625,7 @@ public class GamesAEServiceImpl implements IGamesService {
|
|||
.gameStatusType(resultBean.getSettleStatus())
|
||||
.gameCurrencyCode(resultBean.getCurrency())
|
||||
.account(resultBean.getUserId())
|
||||
.wagersId(resultBean.getPlatform()+resultBean.getPlatformTxId())
|
||||
.wagersId(resultBean.getPlatform() + resultBean.getPlatformTxId())
|
||||
.wagersTime(resultBean.getBetTime().getTime())
|
||||
.betAmount(resultBean.getRealBetAmount())
|
||||
.payoffTime(resultBean.getTxTime().getTime())
|
||||
|
|
|
|||
|
|
@ -4,14 +4,10 @@ import cn.hutool.core.util.IdUtil;
|
|||
import cn.hutool.core.util.NumberUtil;
|
||||
import com.ff.base.constant.CacheConstants;
|
||||
import com.ff.base.constant.Constants;
|
||||
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.SleepUtil;
|
||||
import com.ff.base.utils.StringUtils;
|
||||
import com.ff.base.utils.sign.Md5Utils;
|
||||
import com.ff.base.utils.uuid.IdUtils;
|
||||
|
|
@ -19,14 +15,8 @@ import com.ff.config.KeyConfig;
|
|||
import com.ff.game.api.IGamesService;
|
||||
import com.ff.game.api.dg.client.DGClient;
|
||||
import com.ff.game.api.dg.dto.*;
|
||||
import com.ff.game.api.ng.dto.ApiLoginResponseDTO;
|
||||
import com.ff.game.api.ng.dto.ApiMemberInfoResponseDTO;
|
||||
import com.ff.game.api.ng.dto.ApiNGResponseDTO;
|
||||
import com.ff.game.api.request.*;
|
||||
import com.ff.game.api.xk.client.XKClient;
|
||||
import com.ff.game.api.xk.dto.*;
|
||||
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;
|
||||
|
|
@ -40,7 +30,6 @@ import org.springframework.util.ObjectUtils;
|
|||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
|
|
@ -54,13 +43,6 @@ import java.util.stream.Collectors;
|
|||
@Slf4j
|
||||
public class GamesDGServiceImpl implements IGamesService {
|
||||
|
||||
|
||||
@Resource
|
||||
private ISysConfigService configService;
|
||||
|
||||
@Resource
|
||||
private RedisCache redisCache;
|
||||
|
||||
@Resource
|
||||
private IGameExchangeMoneyService gameExchangeMoneyService;
|
||||
|
||||
|
|
@ -76,18 +58,9 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
@Resource
|
||||
private IMemberService memberService;
|
||||
|
||||
@Resource
|
||||
private IGameFreeRecordService gameFreeRecordService;
|
||||
@Resource
|
||||
private IGameSecretKeyService gameSecretKeyService;
|
||||
|
||||
@Resource
|
||||
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
|
||||
|
||||
@Resource
|
||||
private DGClient DGClient;
|
||||
|
||||
|
||||
@Resource
|
||||
private KeyConfig keyConfig;
|
||||
|
||||
|
|
@ -97,7 +70,6 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
@Resource
|
||||
private IGameNameService gameNameService;
|
||||
|
||||
|
||||
/**
|
||||
* 游戏id
|
||||
*/
|
||||
|
|
@ -229,9 +201,9 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
@Transactional
|
||||
@Override
|
||||
public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) {
|
||||
GamePlatform gamePlatform = gamePlatformService.selectGamePlatformById(PLATFORM_ID);
|
||||
//GamePlatform gamePlatform = gamePlatformService.selectGamePlatformById(PLATFORM_ID);
|
||||
//没有此平台就新增一个平台
|
||||
if (ObjectUtils.isEmpty(gamePlatform)) {
|
||||
/*if (ObjectUtils.isEmpty(gamePlatform)) {
|
||||
gamePlatform = new GamePlatform();
|
||||
gamePlatform.setId(PLATFORM_ID);
|
||||
gamePlatform.setPlatformCode(GamePlatforms.DG.getInfo());
|
||||
|
|
@ -240,21 +212,24 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
gamePlatform.setSortNo(gamePlatformService.selectMaxSortNo() + 1);
|
||||
gamePlatform.setCreateBy(Constants.SYSTEM);
|
||||
gamePlatformService.insertGamePlatform(gamePlatform);
|
||||
}
|
||||
}*/
|
||||
Game game = gameService.selectGameById(GAME_ID);
|
||||
//不存在这个游戏
|
||||
if (ObjectUtils.isEmpty(game)) {
|
||||
game = new Game();
|
||||
game.setId(GAME_ID);
|
||||
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1);
|
||||
game.setPlatformId(gamePlatform.getId());
|
||||
game.setSortNo(1);
|
||||
//game.setPlatformId(gamePlatform.getId());
|
||||
game.setPlatformCode(GamePlatforms.DG.getCode());
|
||||
game.setPlatformType(PlatformType.GAME_HALL.getCode());
|
||||
game.setGameCode("1");
|
||||
game.setGameSourceType(String.valueOf(1));
|
||||
game.setGameName("真人棋牌");
|
||||
game.setCreateBy(Constants.SYSTEM);
|
||||
game.setNameInfo(Collections.singletonList(new NameInfo("真人棋牌", "zh-CN")));
|
||||
gameService.insertGame(game);
|
||||
}
|
||||
GameName gameName = gameNameService.selectGameNameById(GAME_NAME_ID);
|
||||
/*GameName gameName = gameNameService.selectGameNameById(GAME_NAME_ID);
|
||||
if (ObjectUtils.isEmpty(gameName)) {
|
||||
gameNameService.insertGameName(GameName.builder()
|
||||
.id(GAME_NAME_ID)
|
||||
|
|
@ -263,7 +238,7 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
.langCode("zh-CN")
|
||||
.createBy(Constants.SYSTEM)
|
||||
.build());
|
||||
}
|
||||
}*/
|
||||
return CacheConstants.DG_GAMES;
|
||||
}
|
||||
|
||||
|
|
@ -277,10 +252,10 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
@Transactional
|
||||
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
|
||||
log.info("GamesDGServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
|
||||
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(GamePlatforms.DG.getInfo())
|
||||
.code(exchangeTransferMoneyRequestDTO.getAgentId())
|
||||
.build());
|
||||
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
// .platformCode(GamePlatforms.DG.getInfo())
|
||||
// .code(exchangeTransferMoneyRequestDTO.getAgentId())
|
||||
// .build());
|
||||
|
||||
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
|
||||
String transactionId = GamePlatforms.DG.getInfo() + IdUtils.simpleUUID();
|
||||
|
|
@ -300,7 +275,7 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
.quota(exchangeTransferMoneyRequestDTO.getQuota())
|
||||
.balance(exchangeTransferMoneyRequestDTO.getAmount())
|
||||
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
|
||||
.currencyCode(currencyDTO.getSystemCurrency())
|
||||
.currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
|
||||
.memberId(member.getId())
|
||||
.transactionId(transactionId)
|
||||
.platformCode(GamePlatforms.DG.getInfo())
|
||||
|
|
@ -373,9 +348,7 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
DGBetRecordResponseDTO betRecordByTime = DGClient.getBetRecordByTime(key);
|
||||
|
||||
if (this.getIsSuccess(betRecordByTime.getCodeId())) {
|
||||
this.batchInsert(betRecordByTime,betRecordByTimeDTO);
|
||||
|
||||
|
||||
this.batchInsert(betRecordByTime, betRecordByTimeDTO);
|
||||
return Boolean.TRUE;
|
||||
} else {
|
||||
log.error("GamesDGServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getCodeId(), betRecordByTime.getMsg());
|
||||
|
|
@ -432,14 +405,14 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
if (!this.getIsSuccess(userListResponseDTO.getCodeId())) {
|
||||
throw new ApiException(ErrorCode.KICK_OUT_AILED.getCode());
|
||||
}
|
||||
if (CollectionUtils.isEmpty(userListResponseDTO.getList())){
|
||||
if (CollectionUtils.isEmpty(userListResponseDTO.getList())) {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
DGUserListResponseDTO.UserDTO userDTO = userListResponseDTO.getList().stream()
|
||||
.filter(user -> user.getUsername().equals(kickMemberRequestDTO.getAccount()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
if (Objects.isNull(userDTO)){
|
||||
if (Objects.isNull(userDTO)) {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -447,7 +420,7 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
List<Long> memberIds = new ArrayList<>();
|
||||
memberIds.add(userDTO.getMemberId());
|
||||
Map<String, Object> params = new LinkedHashMap<>();
|
||||
params.put("list",memberIds);
|
||||
params.put("list", memberIds);
|
||||
DGResponse dgResponse = DGClient.kickMember(params, key);
|
||||
//判断是否获取成功
|
||||
if (this.getIsSuccess(dgResponse.getCodeId())) {
|
||||
|
|
@ -472,7 +445,7 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
throw new ApiException(ErrorCode.KICK_OUT_AILED.getCode());
|
||||
}
|
||||
|
||||
if (CollectionUtils.isEmpty(userListResponseDTO.getList())){
|
||||
if (CollectionUtils.isEmpty(userListResponseDTO.getList())) {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -480,7 +453,7 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
|
||||
|
||||
Map<String, Object> params = new LinkedHashMap<>();
|
||||
params.put("list",memberIds);
|
||||
params.put("list", memberIds);
|
||||
DGResponse dgResponse = DGClient.kickMember(params, key);
|
||||
//判断是否获取成功
|
||||
if (this.getIsSuccess(dgResponse.getCodeId())) {
|
||||
|
|
@ -513,7 +486,6 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 取消赠送免费局数
|
||||
*
|
||||
|
|
@ -531,14 +503,16 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
*
|
||||
* @param dgBetRecordResponseDTO dg投注记录响应dto
|
||||
*/
|
||||
private void batchInsert(DGBetRecordResponseDTO dgBetRecordResponseDTO,GamesBaseRequestDTO gamesBaseRequestDTO) {
|
||||
private void batchInsert(DGBetRecordResponseDTO dgBetRecordResponseDTO, GamesBaseRequestDTO gamesBaseRequestDTO) {
|
||||
List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
|
||||
List<String> wagersIds = new ArrayList<>();
|
||||
//数据组装
|
||||
List<DGBetRecordResponseDTO.ReportDTO> report = dgBetRecordResponseDTO.getList();
|
||||
//数据转化
|
||||
for (DGBetRecordResponseDTO.ReportDTO bean : report) {
|
||||
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean).build());
|
||||
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
|
||||
.platform(gamesBaseRequestDTO.getVendor())
|
||||
.data(bean).build());
|
||||
if (!ObjectUtils.isEmpty(bettingDetails)) {
|
||||
bettingDetails.setId(IdUtil.getSnowflakeNextId());
|
||||
gameBettingDetails.add(bettingDetails);
|
||||
|
|
@ -547,7 +521,7 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
}
|
||||
if (!CollectionUtils.isEmpty(gameBettingDetails)) {
|
||||
//查询重复数据id
|
||||
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds,GamePlatforms.DG.getInfo());
|
||||
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.DG.getInfo());
|
||||
//用steam流清除list中与wagersIds集合相同的数据
|
||||
gameBettingDetails = gameBettingDetails.stream()
|
||||
.filter(detail -> !removeWagersIds.contains(detail.getWagersId()))
|
||||
|
|
@ -557,7 +531,7 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
Map<String, Object> key = this.getKey(gamesBaseRequestDTO);
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("list", wagersIds);
|
||||
DGClient.markReport(params,key);
|
||||
DGClient.markReport(params, key);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -575,10 +549,10 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
DGBetRecordResponseDTO.ReportDTO resultBean = (DGBetRecordResponseDTO.ReportDTO) gamesDataBuildDTO.getData();
|
||||
|
||||
|
||||
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(GamePlatforms.DG.getInfo())
|
||||
.currencyId(String.valueOf(resultBean.getCurrencyId()))
|
||||
.build());
|
||||
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
// .platformCode(GamePlatforms.DG.getInfo())
|
||||
// .currencyId(String.valueOf(resultBean.getCurrencyId()))
|
||||
// .build());
|
||||
|
||||
|
||||
Member member = memberService.selectMemberByGameAccount(resultBean.getUserName());
|
||||
|
|
@ -608,16 +582,16 @@ public class GamesDGServiceImpl implements IGamesService {
|
|||
GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
|
||||
.tenantKey(member.getTenantKey())
|
||||
//保存我们的币种id
|
||||
.currencyCode(currencyDTO.getSystemCurrency())
|
||||
.currencyCode(gamesDataBuildDTO.getPlatform().getExtInfo().getOurCurrency(String.valueOf(resultBean.getCurrencyId())))
|
||||
.memberId(member.getId())
|
||||
.gameCode(String.valueOf(resultBean.getGameId()))
|
||||
.gameType(PlatformType.CARD_GAME.getCode())
|
||||
.platformCode(GamePlatforms.DG.getInfo())
|
||||
.platformCode(GamePlatforms.DG.getCode())
|
||||
.gameId(GAME_ID)
|
||||
.gameName(game.getGameName())
|
||||
.gameStatus(gameStatus)
|
||||
.gameStatusType(resultBean.getGameType())
|
||||
.gameCurrencyCode(currencyDTO.getCurrency())
|
||||
.gameCurrencyCode(/*gamesDataBuildDTO.getCurrencyCode()*/String.valueOf(resultBean.getCurrencyId()))
|
||||
.account(String.valueOf(resultBean.getUserName()))
|
||||
.wagersId(String.valueOf(resultBean.getId()))
|
||||
.wagersTime(resultBean.getBetTime().getTime())
|
||||
|
|
|
|||
|
|
@ -9,19 +9,19 @@ 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.StringUtils;
|
||||
import com.ff.base.utils.sign.Md5Utils;
|
||||
import com.ff.config.KeyConfig;
|
||||
import com.ff.game.api.IGamesService;
|
||||
import com.ff.game.api.fc.dto.*;
|
||||
import com.ff.game.api.fc.client.FCClient;
|
||||
import com.ff.game.api.ng.client.NGClient;
|
||||
import com.ff.game.api.fc.dto.*;
|
||||
import com.ff.game.api.request.*;
|
||||
import com.ff.game.domain.*;
|
||||
import com.ff.game.dto.GameBettingDetailsDTO;
|
||||
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.game.service.IPlatformService;
|
||||
import com.ff.member.domain.Member;
|
||||
import com.ff.member.service.IMemberService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -54,21 +54,12 @@ import java.util.stream.Collectors;
|
|||
@Slf4j
|
||||
public class GamesFCServiceImpl implements IGamesService {
|
||||
|
||||
|
||||
@Resource
|
||||
private ISysConfigService configService;
|
||||
|
||||
@Resource
|
||||
private RedisCache redisCache;
|
||||
|
||||
@Resource
|
||||
private IGameExchangeMoneyService gameExchangeMoneyService;
|
||||
|
||||
|
||||
@Resource
|
||||
private IGamePlatformService gamePlatformService;
|
||||
|
||||
|
||||
@Resource
|
||||
private IGameService gameService;
|
||||
|
||||
|
|
@ -76,37 +67,22 @@ public class GamesFCServiceImpl implements IGamesService {
|
|||
@Resource
|
||||
private IMemberService memberService;
|
||||
|
||||
@Resource
|
||||
private IGameFreeRecordService gameFreeRecordService;
|
||||
|
||||
@Resource
|
||||
private IGameSecretKeyService gameSecretKeyService;
|
||||
|
||||
@Resource
|
||||
private FCClient FCClient;
|
||||
|
||||
|
||||
@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;
|
||||
|
||||
@Autowired
|
||||
private IPlatformService platformService;
|
||||
|
||||
/**
|
||||
* 获得就是成功
|
||||
*
|
||||
|
|
@ -276,45 +252,40 @@ public class GamesFCServiceImpl implements IGamesService {
|
|||
|
||||
for (String gameTypeKey : gameList.getGetGameIconList().keySet()) {
|
||||
Map<String, ApiFCGameListResponseDTO.GameDetails> integerGameDetailsMap = gameList.getGetGameIconList().get(gameTypeKey);
|
||||
GamePlatform gamePlatform = GamePlatform.builder()
|
||||
.platformType(FCGameType.findSystemByCode(gameTypeKey))
|
||||
.platformCode(GamePlatforms.FC.getInfo())
|
||||
.build();
|
||||
List<GamePlatform> gamePlatforms = gamePlatformService.selectGamePlatformList(gamePlatform);
|
||||
//没有此平台就新增一个平台
|
||||
if (CollectionUtils.isEmpty(gamePlatforms)) {
|
||||
gamePlatform.setPlatformName(GamePlatforms.FC.getInfo() + FCGameType.findInfoByCode(gameTypeKey));
|
||||
gamePlatform.setSortNo(gamePlatformService.selectMaxSortNo() + 1);
|
||||
gamePlatform.setCreateBy(Constants.SYSTEM);
|
||||
gamePlatformService.insertGamePlatform(gamePlatform);
|
||||
} else {
|
||||
gamePlatform = gamePlatforms.get(0);
|
||||
}
|
||||
|
||||
//新增游戏
|
||||
for (String gameIdKey : integerGameDetailsMap.keySet()) {
|
||||
|
||||
ApiFCGameListResponseDTO.GameDetails gameDetails = integerGameDetailsMap.get(gameIdKey);
|
||||
Game game = Game.builder()
|
||||
.platformId(gamePlatform.getId())
|
||||
//.platformId(gamePlatform.getId())
|
||||
.platformCode(GamePlatforms.FC.getCode())
|
||||
.gameCode(gameIdKey)
|
||||
.build();
|
||||
List<Game> games = gameService.selectGameList(game);
|
||||
int platformType = FCGameType.findSystemByCode(gameTypeKey);
|
||||
//不存在这个游戏
|
||||
if (CollectionUtils.isEmpty(games)) {
|
||||
game.setGameSourceType(String.valueOf(PlatformType.ELECTRONIC.getCode()));
|
||||
game.setFreespin(Boolean.FALSE);
|
||||
game.setDemoStatus(Boolean.TRUE);
|
||||
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1);
|
||||
game.setPlatformCode(GamePlatforms.FC.getCode());
|
||||
game.setPlatformType(platformType);
|
||||
game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.FC.getCode()) + 1);
|
||||
game.setGameName(gameDetails.getGameNameOfChinese());
|
||||
game.setCreateBy(Constants.SYSTEM);
|
||||
|
||||
List<NameInfo> nameInfos = new ArrayList<>();
|
||||
nameInfos.add(NameInfo.builder().lang("zh-CN").name(gameDetails.getGameNameOfChinese()).build());
|
||||
nameInfos.add(NameInfo.builder().lang("en-US").name(gameDetails.getGameNameOfEnglish()).build());
|
||||
game.setNameInfo(nameInfos);
|
||||
gameService.insertGame(game);
|
||||
} else {
|
||||
game = games.get(0);
|
||||
}
|
||||
gameDetails.setSystemGameId(game.getId());
|
||||
|
||||
List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(gameDetails.getGameNameOfChinese()).build());
|
||||
/*List<GameName> gameNames = gameNameService.selectGameNameList(GameName.builder().gameId(game.getId()).gameName(gameDetails.getGameNameOfChinese()).build());
|
||||
if (CollectionUtils.isEmpty(gameNames)) {
|
||||
gameNameService.insertGameName(GameName.builder()
|
||||
.gameId(game.getId())
|
||||
|
|
@ -331,7 +302,7 @@ public class GamesFCServiceImpl implements IGamesService {
|
|||
.langCode("en-US")
|
||||
.createBy(Constants.SYSTEM)
|
||||
.build());
|
||||
}
|
||||
}*/
|
||||
|
||||
gameDetails.setGameId(gameIdKey);
|
||||
gameDetailsList.add(gameDetails);
|
||||
|
|
@ -359,11 +330,11 @@ public class GamesFCServiceImpl implements IGamesService {
|
|||
public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) {
|
||||
log.info("GamesFCServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO);
|
||||
|
||||
GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(GamePlatforms.FC.getInfo())
|
||||
.code(exchangeTransferMoneyRequestDTO.getAgentId())
|
||||
.currency(exchangeTransferMoneyRequestDTO.getCurrency())
|
||||
.build());
|
||||
// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
// .platformCode(GamePlatforms.FC.getInfo())
|
||||
// .code(exchangeTransferMoneyRequestDTO.getAgentId())
|
||||
// .currency(exchangeTransferMoneyRequestDTO.getCurrency())
|
||||
// .build());
|
||||
|
||||
Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount());
|
||||
String transactionId = gameExchangeMoneyService.getTransactionId(GamePlatforms.FC.getInfo(), 30);
|
||||
|
|
@ -383,7 +354,7 @@ public class GamesFCServiceImpl implements IGamesService {
|
|||
.quota(exchangeTransferMoneyRequestDTO.getQuota())
|
||||
.balance(exchangeTransferMoneyRequestDTO.getAmount())
|
||||
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
|
||||
.currencyCode(currencyDTO.getSystemCurrency())
|
||||
.currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
|
||||
.memberId(member.getId())
|
||||
.transactionId(transactionId)
|
||||
.platformCode(GamePlatforms.FC.getInfo())
|
||||
|
|
@ -402,7 +373,7 @@ public class GamesFCServiceImpl implements IGamesService {
|
|||
.accounts(member.getGameAccount())
|
||||
.agentId(exchangeTransferMoneyRequestDTO.getAgentId())
|
||||
.agentKey(exchangeTransferMoneyRequestDTO.getAgentKey())
|
||||
.currency(currencyDTO.getCurrency())
|
||||
.currency(exchangeTransferMoneyRequestDTO.getCurrency())
|
||||
.build();
|
||||
MemberInfoResponseDTO memberInfo = this.getMemberInfo(gamesBaseRequestDTO);
|
||||
//判断是不是转出
|
||||
|
|
@ -459,29 +430,37 @@ public class GamesFCServiceImpl implements IGamesService {
|
|||
@Override
|
||||
public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) {
|
||||
|
||||
// List<GameSecretKeyCurrencyDTO> gameSecretKeyCurrencies = gameSecretKeyCurrencyService
|
||||
// .findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder()
|
||||
// .platformCode(GamePlatforms.FC.getInfo())
|
||||
// .build());
|
||||
|
||||
List<GameSecretKeyCurrencyDTO> gameSecretKeyCurrencies = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(GamePlatforms.FC.getInfo())
|
||||
.build());
|
||||
|
||||
for (GameSecretKeyCurrency gameSecretKeyCurrency : gameSecretKeyCurrencies) {
|
||||
Platform platform = betRecordByTimeDTO.getVendor();
|
||||
//for (KeyInfo keyInfo : platform.getKeyInfo()) {
|
||||
// for (GameSecretKeyCurrency gameSecretKeyCurrency : gameSecretKeyCurrencies) {
|
||||
String startTime = DateUtils.convertTimeZone(betRecordByTimeDTO.getStartTime(), "America/New_York", DateUtils.YYYY_MM_DD_HH_MM_SS);
|
||||
String endTime = DateUtils.convertTimeZone(betRecordByTimeDTO.getEndTime(), "America/New_York", DateUtils.YYYY_MM_DD_HH_MM_SS);
|
||||
Map<String, Object> paramsMap = new HashMap<>();
|
||||
paramsMap.put("StartDate", startTime);
|
||||
paramsMap.put("EndDate", endTime);
|
||||
paramsMap.putAll(getKeyMap(paramsMap, betRecordByTimeDTO.getAgentKey(), gameSecretKeyCurrency.getCurrency(), betRecordByTimeDTO.getAgentId()));
|
||||
KeyInfo keyInfo = betRecordByTimeDTO.getKeyInfo();
|
||||
String currency = keyInfo.getCurrency();
|
||||
String targetCurrency = platform.getCurrencyInfo().get(currency);
|
||||
if (StringUtils.isEmpty(targetCurrency)) {
|
||||
log.error("获取不到币种,platformCode:{},{}->{}", platform.getPlatformCode(), currency, targetCurrency);
|
||||
//continue;
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
paramsMap.putAll(getKeyMap(paramsMap, betRecordByTimeDTO.getAgentKey(), keyInfo.getCurrency(), betRecordByTimeDTO.getAgentId()));
|
||||
|
||||
ApiFCBetRecordResponseDTO betRecordByTime = FCClient.getBetRecordByTime(paramsMap);
|
||||
|
||||
if (this.getIsSuccess(betRecordByTime.getResult())) {
|
||||
//数据组装
|
||||
this.batchInsert(betRecordByTime, gameSecretKeyCurrency.getSystemCurrency(), gameSecretKeyCurrency.getCurrency());
|
||||
|
||||
this.batchInsert(betRecordByTime, currency, targetCurrency);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
//}
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -493,15 +472,20 @@ public class GamesFCServiceImpl implements IGamesService {
|
|||
*/
|
||||
@Override
|
||||
public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) {
|
||||
List<GameSecretKeyCurrencyDTO> gameSecretKeyCurrencies = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(GamePlatforms.FC.getInfo())
|
||||
.build());
|
||||
|
||||
for (GameSecretKeyCurrency gameSecretKeyCurrency : gameSecretKeyCurrencies) {
|
||||
Platform platform = betRecordByTimeDTO.getVendor();
|
||||
for (KeyInfo keyInfo : platform.getKeyInfo()) {
|
||||
|
||||
// for (GameSecretKeyCurrency gameSecretKeyCurrency : gameSecretKeyCurrencies) {
|
||||
//必须两个小时之前的数据
|
||||
long startTimeLong = DateUtils.addOrSubtractMinutes(betRecordByTimeDTO.getStartTime(), -120);
|
||||
long endTimeLong = DateUtils.addOrSubtractMinutes(betRecordByTimeDTO.getEndTime(), -120);
|
||||
|
||||
String currency = keyInfo.getCurrency();
|
||||
String targetCurrency = platform.getCurrencyInfo().get(currency);
|
||||
if (StringUtils.isEmpty(targetCurrency)) {
|
||||
log.error("获取不到币种,platformCode:{},{}->{}", platform.getPlatformCode(), currency, targetCurrency);
|
||||
continue;
|
||||
}
|
||||
//查询一个小时内的数据一次最多15分钟
|
||||
int timeWheel = 60;
|
||||
while (timeWheel > 0) {
|
||||
|
|
@ -510,18 +494,16 @@ public class GamesFCServiceImpl implements IGamesService {
|
|||
Map<String, Object> paramsMap = new HashMap<>();
|
||||
paramsMap.put("StartDate", startTime);
|
||||
paramsMap.put("EndDate", endTime);
|
||||
paramsMap.putAll(getKeyMap(paramsMap, betRecordByTimeDTO.getAgentKey(), gameSecretKeyCurrency.getCurrency(), betRecordByTimeDTO.getAgentId()));
|
||||
paramsMap.putAll(getKeyMap(paramsMap, betRecordByTimeDTO.getAgentKey(), targetCurrency, betRecordByTimeDTO.getAgentId()));
|
||||
|
||||
ApiFCBetRecordResponseDTO betRecordByTime = FCClient.getBetRecordByHistoryTime(paramsMap);
|
||||
|
||||
if (this.getIsSuccess(betRecordByTime.getResult())) {
|
||||
//数据组装
|
||||
this.batchInsert(betRecordByTime, gameSecretKeyCurrency.getSystemCurrency(), gameSecretKeyCurrency.getCurrency());
|
||||
this.batchInsert(betRecordByTime, currency, targetCurrency);
|
||||
}
|
||||
timeWheel -= 15;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
|
@ -660,7 +642,7 @@ public class GamesFCServiceImpl implements IGamesService {
|
|||
.memberId(member.getId())
|
||||
.gameCode(resultBean.getGameID())
|
||||
.gameType(FCGameType.findSystemByCode(resultBean.getGametype()))
|
||||
.platformCode(GamePlatforms.FC.getInfo())
|
||||
.platformCode(GamePlatforms.FC.getCode())
|
||||
.gameId(gamesDataDTO.getSystemGameId())
|
||||
.gameName(gamesDataDTO.getGameNameOfChinese())
|
||||
.gameStatus(gameStatus)
|
||||
|
|
@ -694,7 +676,9 @@ public class GamesFCServiceImpl implements IGamesService {
|
|||
List<String> wagersIds = new ArrayList<>();
|
||||
//数据转化
|
||||
for (ApiFCBetRecordResponseDTO.BetRecord bean : data.getRecords()) {
|
||||
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean).currencyCode(currencyCode).systemCurrencyCode(systemCurrencyCode).build());
|
||||
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean)
|
||||
.currencyCode(currencyCode)
|
||||
.systemCurrencyCode(systemCurrencyCode).build());
|
||||
if (!ObjectUtils.isEmpty(bettingDetails)) {
|
||||
bettingDetails.setId(IdUtil.getSnowflakeNextId());
|
||||
gameBettingDetails.add(bettingDetails);
|
||||
|
|
@ -703,7 +687,7 @@ public class GamesFCServiceImpl implements IGamesService {
|
|||
}
|
||||
if (!CollectionUtils.isEmpty(gameBettingDetails)) {
|
||||
//查询重复数据id
|
||||
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds,GamePlatforms.FC.getInfo());
|
||||
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.FC.getInfo());
|
||||
//用steam流清除list中与wagersIds集合相同的数据
|
||||
gameBettingDetails = gameBettingDetails.stream()
|
||||
.filter(detail -> !removeWagersIds.contains(detail.getWagersId()))
|
||||
|
|
|
|||
|
|
@ -19,8 +19,10 @@ import com.ff.game.api.jili.client.JILIClient;
|
|||
import com.ff.game.api.jili.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.IGameFreeRecordService;
|
||||
import com.ff.game.service.IGameService;
|
||||
import com.ff.member.domain.Member;
|
||||
import com.ff.member.service.IMemberService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -58,10 +60,6 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
private IGameExchangeMoneyService gameExchangeMoneyService;
|
||||
|
||||
|
||||
@Resource
|
||||
private IGamePlatformService gamePlatformService;
|
||||
|
||||
|
||||
@Resource
|
||||
private IGameService gameService;
|
||||
|
||||
|
|
@ -72,8 +70,6 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
@Resource
|
||||
private IGameFreeRecordService gameFreeRecordService;
|
||||
|
||||
@Resource
|
||||
private IGameSecretKeyService gameSecretKeyService;
|
||||
|
||||
@Resource
|
||||
private JILIClient jiliClient;
|
||||
|
|
@ -85,11 +81,6 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
@Resource
|
||||
private IGameBettingDetailsService gameBettingDetailsService;
|
||||
|
||||
@Resource
|
||||
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
|
||||
|
||||
@Resource
|
||||
private IGameNameService gameNameService;
|
||||
/**
|
||||
* 获得就是成功
|
||||
*
|
||||
|
|
@ -138,10 +129,10 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
String key = this.getKey(createMemberRequestDTO);
|
||||
JILICreateMemberResponseDTO createMemberResponseDTO = jiliClient.createMember(query + "&Key=" + key);
|
||||
int errorCode = createMemberResponseDTO.getErrorCode();
|
||||
if (0 == errorCode){
|
||||
if (0 == errorCode) {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
if (101 == errorCode){
|
||||
if (101 == errorCode) {
|
||||
throw new ApiException(ErrorCode.GAME_ACCOUNT_CREATION_FAILED.getCode());
|
||||
}
|
||||
//判断是否获取成功
|
||||
|
|
@ -235,7 +226,7 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
if (this.getIsSuccess(jiliGames.getErrorCode())) {
|
||||
|
||||
for (JILIGamesDataDTO gamesDataDTO : jiliGames.getData()) {
|
||||
GamePlatform gamePlatform = GamePlatform.builder()
|
||||
/*GamePlatform gamePlatform = GamePlatform.builder()
|
||||
.platformType(JILIGameType.findSystemByCode(gamesDataDTO.getGameCategoryId()))
|
||||
.platformCode(GamePlatforms.JILI.getInfo())
|
||||
.build();
|
||||
|
|
@ -248,9 +239,12 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
gamePlatformService.insertGamePlatform(gamePlatform);
|
||||
} else {
|
||||
gamePlatform = gamePlatforms.get(0);
|
||||
}
|
||||
}*/
|
||||
Integer platformType = JILIGameType.findSystemByCode(gamesDataDTO.getGameCategoryId());
|
||||
Game game = Game.builder()
|
||||
.platformId(gamePlatform.getId())
|
||||
//.platformId(gamePlatform.getId())
|
||||
.platformCode(GamePlatforms.JILI.getCode())
|
||||
.platformType(platformType)
|
||||
.gameCode(String.valueOf(gamesDataDTO.getGameId()))
|
||||
.build();
|
||||
List<Game> games = gameService.selectGameList(game);
|
||||
|
|
@ -258,7 +252,7 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
if (CollectionUtils.isEmpty(games)) {
|
||||
game.setGameSourceType(String.valueOf(gamesDataDTO.getGameCategoryId()));
|
||||
game.setFreespin(gamesDataDTO.isFreespin());
|
||||
game.setSortNo(gameService.selectMaxSortNoByPlatformId(gamePlatform.getId()) + 1);
|
||||
game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.JILI.getCode()) + 1);
|
||||
game.setGameName(gamesDataDTO.getName().getZhCN());
|
||||
game.setCreateBy(Constants.SYSTEM);
|
||||
gameService.insertGame(game);
|
||||
|
|
@ -266,9 +260,16 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
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().gameId(game.getId()).gameName(game.getGameName()).build());
|
||||
if (CollectionUtils.isEmpty(gameNames)){
|
||||
/*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())
|
||||
|
|
@ -282,8 +283,7 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
.langCode("en-US")
|
||||
.createBy(Constants.SYSTEM)
|
||||
.build());
|
||||
}
|
||||
|
||||
}*/
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -308,9 +308,9 @@ public class GamesJILIServiceImpl 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.JILI.getInfo() + IdUtils.simpleUUID();
|
||||
|
|
@ -332,7 +332,7 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
.quota(exchangeTransferMoneyRequestDTO.getQuota())
|
||||
.balance(exchangeTransferMoneyRequestDTO.getAmount())
|
||||
.exchangeType(exchangeTransferMoneyRequestDTO.getTransferType())
|
||||
.currencyCode(gameSecretKey.getSystemCurrency())
|
||||
.currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency())
|
||||
.memberId(member.getId())
|
||||
.transactionId(transactionId)
|
||||
.platformCode(GamePlatforms.JILI.getInfo())
|
||||
|
|
@ -410,8 +410,12 @@ 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);
|
||||
this.batchInsert(betRecordJILIResponse, betRecordByTimeDTO, currency, targetCurrency);
|
||||
JILIBetRecordResponseDTO.DataBean dataBean = betRecordJILIResponse.getData();
|
||||
//获取下一页数据
|
||||
while (dataBean.getPagination().getCurrentPage() != dataBean.getPagination().getTotalPages() && dataBean.getPagination().getTotalPages() > 0) {
|
||||
|
|
@ -425,7 +429,7 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
dataBean = betRecordJILIResponse.getData();
|
||||
if (this.getIsSuccess(betRecordJILIResponse.getErrorCode())) {
|
||||
//数据插入
|
||||
this.batchInsert(betRecordJILIResponse);
|
||||
this.batchInsert(betRecordJILIResponse, betRecordByTimeDTO, currency, targetCurrency);
|
||||
} else {
|
||||
log.error("GameBettingDataJILIServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordJILIResponse.getErrorCode(), betRecordJILIResponse.getMessage());
|
||||
}
|
||||
|
|
@ -461,9 +465,9 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
|
||||
String freeSpinValidity = DateUtils.formatDateToGMT4(new Date(createFreeSpinRequest.getFreeSpinValidity()));
|
||||
|
||||
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.code(createFreeSpinRequest.getAgentId())
|
||||
.currency(createFreeSpinRequest.getCurrency()).build());
|
||||
// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
// .code(createFreeSpinRequest.getAgentId())
|
||||
// .currency(createFreeSpinRequest.getCurrency()).build());
|
||||
|
||||
List<Long> gameIds = createFreeSpinRequest.getGameIds();
|
||||
GameUniqueDTO gameUniqueDTO = new GameUniqueDTO();
|
||||
|
|
@ -473,7 +477,7 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
.map(Game::getGameCode)
|
||||
.map(String::valueOf)
|
||||
.collect(Collectors.joining(","));
|
||||
String referenceId = GamePlatforms.JILI.getInfo() + IdUtils.simpleUUID();
|
||||
String referenceId = GamePlatforms.JILI.getCode() + IdUtils.simpleUUID();
|
||||
//请求参数
|
||||
String query = "Account=" + createFreeSpinRequest.getAccount()
|
||||
+ "&Currency=" + createFreeSpinRequest.getCurrency()
|
||||
|
|
@ -514,7 +518,7 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
|
||||
|
||||
GameFreeRecord gameFreeRecord = GameFreeRecord.builder()
|
||||
.currencyCode(gameSecretKey.getSystemCurrency())
|
||||
.currencyCode(createFreeSpinRequest.getSystemCurrency())
|
||||
.referenceId(referenceId)
|
||||
.platformCode(GamePlatforms.JILI.getInfo())
|
||||
.memberId(member.getId())
|
||||
|
|
@ -677,7 +681,7 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
cancelFreeSpinRequestDTO.setQuery(query);
|
||||
//获取key
|
||||
String key = this.getKey(cancelFreeSpinRequestDTO);
|
||||
JILICancelFreeSpinResponseDTO cancelFreeSpinResponseDTO = jiliClient.cancelFreeSpin(query + "&Key=" + key);
|
||||
JILICancelFreeSpinResponseDTO cancelFreeSpinResponseDTO = jiliClient.cancelFreeSpin(query + "&Key=" + key);
|
||||
//判断是否获取成功
|
||||
if (this.getIsSuccess(cancelFreeSpinResponseDTO.getErrorCode())) {
|
||||
List<GameFreeRecord> gameFreeRecords = gameFreeRecordService.selectGameFreeRecordList(GameFreeRecord.builder()
|
||||
|
|
@ -692,6 +696,7 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
throw new BaseException(cancelFreeSpinResponseDTO.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 游戏演示登录
|
||||
*
|
||||
|
|
@ -704,21 +709,24 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 批量插入
|
||||
*
|
||||
* @param betRecordJILIResponse 投注记录jiliresponse
|
||||
* @return {@link Integer }
|
||||
*/
|
||||
private void batchInsert(JILIBetRecordResponseDTO betRecordJILIResponse) {
|
||||
private void batchInsert(JILIBetRecordResponseDTO betRecordJILIResponse, BetRecordByTimeDTO betRecordByTimeDTO, String systemCurrency, String currency) {
|
||||
List<GameBettingDetails> gameBettingDetails = new ArrayList<>();
|
||||
List<String> wagersIds = new ArrayList<>();
|
||||
//数据组装
|
||||
JILIBetRecordResponseDTO.DataBean dataBean = betRecordJILIResponse.getData();
|
||||
//数据转化
|
||||
for (JILIBetRecordDataResponseDTO jiliBetRecordDataResponseDTO : dataBean.getResult()) {
|
||||
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(jiliBetRecordDataResponseDTO).build());
|
||||
GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder()
|
||||
.systemCurrencyCode(systemCurrency)
|
||||
.currencyCode(currency)
|
||||
.platform(betRecordByTimeDTO.getVendor())
|
||||
.data(jiliBetRecordDataResponseDTO).build());
|
||||
if (!ObjectUtils.isEmpty(bettingDetails)) {
|
||||
bettingDetails.setId(IdUtil.getSnowflakeNextId());
|
||||
gameBettingDetails.add(bettingDetails);
|
||||
|
|
@ -727,7 +735,7 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
}
|
||||
if (!CollectionUtils.isEmpty(gameBettingDetails)) {
|
||||
//查询重复数据id
|
||||
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds,GamePlatforms.JILI.getInfo());
|
||||
List<String> removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.JILI.getInfo());
|
||||
//用steam流清除list中与wagersIds集合相同的数据
|
||||
gameBettingDetails = gameBettingDetails.stream()
|
||||
.filter(detail -> !removeWagersIds.contains(detail.getWagersId()))
|
||||
|
|
@ -750,9 +758,9 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
|
||||
//转化类
|
||||
JILIBetRecordDataResponseDTO jiliBetRecordDataResponseDTO = (JILIBetRecordDataResponseDTO) gamesDataBuildDTO.getData();
|
||||
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.code(jiliBetRecordDataResponseDTO.getAgentId())
|
||||
.platformCode(GamePlatforms.JILI.getInfo()).build());
|
||||
// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
// .code(jiliBetRecordDataResponseDTO.getAgentId())
|
||||
// .platformCode(GamePlatforms.JILI.getInfo()).build());
|
||||
|
||||
|
||||
Member member = memberService.selectMemberByGameAccount(jiliBetRecordDataResponseDTO.getAccount());
|
||||
|
|
@ -773,7 +781,7 @@ public class GamesJILIServiceImpl implements IGamesService {
|
|||
GameBettingDetails gameBettingDetails = GameBettingDetails.builder()
|
||||
.tenantKey(member.getTenantKey())
|
||||
//保存我们的币种id
|
||||
.currencyCode(gameSecretKey.getSystemCurrency())
|
||||
.currencyCode(/*gameSecretKey.getSystemCurrency()*/gamesDataBuildDTO.getSystemCurrencyCode())
|
||||
.memberId(member.getId())
|
||||
.gameCode(jiliBetRecordDataResponseDTO.getGameId())
|
||||
.gameType(JILIGameType.findSystemByCode(jiliBetRecordDataResponseDTO.getGameCategoryId()))
|
||||
|
|
|
|||
|
|
@ -30,13 +30,6 @@ public class BetRecordByTimeDTO extends GamesBaseRequestDTO {
|
|||
* 游戏id
|
||||
*/
|
||||
private Integer gameId;
|
||||
/**
|
||||
* 指定平台
|
||||
*/
|
||||
private String gamePlatform;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,5 +46,6 @@ public class GamesBaseRequestDTO implements Serializable {
|
|||
|
||||
private KeyInfo keyInfo;
|
||||
|
||||
private String systemCurrency;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.ff.game.api.request;
|
||||
|
||||
import com.ff.game.domain.Platform;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
|
@ -39,5 +40,7 @@ public class GamesDataBuildDTO
|
|||
*/
|
||||
private String agentId;
|
||||
|
||||
private Platform platform;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,16 @@
|
|||
package com.ff.game.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class CurrencyInfo extends HashMap<String, String> implements Serializable {
|
||||
|
||||
private String currencyId;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
package com.ff.game.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
public class ExtInfo implements Serializable {
|
||||
|
||||
// 币种信息,key为其它平台的币种id,value为我们自己的币种
|
||||
private Map<String, String> currency;
|
||||
|
||||
public String getOurCurrency(String currencyId) {
|
||||
return currency == null ? null : currency.get(currencyId);
|
||||
}
|
||||
}
|
||||
|
|
@ -9,6 +9,8 @@ import lombok.Data;
|
|||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 平台子游戏管理对象 ff_game
|
||||
*
|
||||
|
|
@ -92,4 +94,5 @@ public class Game extends BaseEntity {
|
|||
*/
|
||||
private Integer platformType;
|
||||
|
||||
private List<NameInfo> nameInfo;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
package com.ff.game.domain;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
public class NameInfo implements Serializable {
|
||||
private String name;
|
||||
private String lang;
|
||||
}
|
||||
|
|
@ -1,9 +1,13 @@
|
|||
package com.ff.game.domain;
|
||||
|
||||
import com.ff.base.core.domain.BaseEntity;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author cengy
|
||||
|
|
@ -34,5 +38,39 @@ public class Platform extends BaseEntity {
|
|||
private LangInfo langInfo;
|
||||
private CurrencyInfo currencyInfo;
|
||||
private UrlInfo urlInfo;
|
||||
/**
|
||||
* 代理类型 0:代理单币种 1:代理多币种
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
private ExtInfo extInfo;
|
||||
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum Type {
|
||||
/**
|
||||
* 代理类型 0:代理单币种 1:代理多币种
|
||||
*/
|
||||
SINGLE(0, "代理单币种"),
|
||||
MULTI(1, "代理多币种");
|
||||
|
||||
private Integer code;
|
||||
private String name;
|
||||
|
||||
}
|
||||
|
||||
public boolean isMultiAgent() {
|
||||
return this.type == Type.MULTI.getCode();
|
||||
}
|
||||
|
||||
public String getOurCurrency(String currency) {
|
||||
Set<Map.Entry<String, String>> entrySet= currencyInfo.entrySet();
|
||||
for (Map.Entry<String, String> entry : entrySet) {
|
||||
if (entry.getValue().equals(currency)) {
|
||||
return entry.getKey();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,77 +1,77 @@
|
|||
package com.ff.game.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.ff.api.response.GameResponse;
|
||||
import com.ff.game.api.request.GameUniqueDTO;
|
||||
import com.ff.game.domain.Game;
|
||||
import com.ff.game.dto.GameDTO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 平台子游戏管理Mapper接口
|
||||
*
|
||||
*
|
||||
* @author shi
|
||||
* @date 2025-02-10
|
||||
*/
|
||||
public interface GameMapper
|
||||
{
|
||||
public interface GameMapper {
|
||||
/**
|
||||
* 查询平台子游戏管理
|
||||
*
|
||||
*
|
||||
* @param id 平台子游戏管理主键
|
||||
* @return 平台子游戏管理
|
||||
*/
|
||||
Game selectGameById(Long id);
|
||||
Game selectGameById(Long id);
|
||||
|
||||
/**
|
||||
* 查询平台子游戏管理列表
|
||||
*
|
||||
*
|
||||
* @param game 平台子游戏管理
|
||||
* @return 平台子游戏管理集合
|
||||
*/
|
||||
List<Game> selectGameList(Game game);
|
||||
List<Game> selectGameList(Game game);
|
||||
|
||||
/**
|
||||
* 新增平台子游戏管理
|
||||
*
|
||||
*
|
||||
* @param game 平台子游戏管理
|
||||
* @return 结果
|
||||
*/
|
||||
int insertGame(Game game);
|
||||
int insertGame(Game game);
|
||||
|
||||
/**
|
||||
* 修改平台子游戏管理
|
||||
*
|
||||
*
|
||||
* @param game 平台子游戏管理
|
||||
* @return 结果
|
||||
*/
|
||||
int updateGame(Game game);
|
||||
int updateGame(Game game);
|
||||
|
||||
/**
|
||||
* 删除平台子游戏管理
|
||||
*
|
||||
*
|
||||
* @param id 平台子游戏管理主键
|
||||
* @return 结果
|
||||
*/
|
||||
int deleteGameById(Long id);
|
||||
int deleteGameById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除平台子游戏管理
|
||||
*
|
||||
*
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
int deleteGameByIds(Long[] ids);
|
||||
int deleteGameByIds(Long[] ids);
|
||||
|
||||
|
||||
/**
|
||||
* 按平台id选择最大排序号
|
||||
* 根据平台code与平台类型选择最大序号
|
||||
*
|
||||
* @param platformId 平台id
|
||||
* @return {@link Integer }
|
||||
* @param platformType
|
||||
* @param platformCode
|
||||
* @return
|
||||
*/
|
||||
Integer selectMaxSortNoByPlatformId(Long platformId);
|
||||
|
||||
Integer selectMaxSortNoBy(@Param("platformType") Integer platformType, @Param("platformCode") String platformCode);
|
||||
|
||||
/**
|
||||
* 选择游戏唯一列表
|
||||
|
|
@ -79,7 +79,7 @@ public interface GameMapper
|
|||
* @param gameUniqueDTO 游戏独有dto
|
||||
* @return {@link List }<{@link Game }>
|
||||
*/
|
||||
List<Game> selectGameUniqueList(GameUniqueDTO gameUniqueDTO);
|
||||
List<Game> selectGameUniqueList(GameUniqueDTO gameUniqueDTO);
|
||||
|
||||
/**
|
||||
* 选择游戏响应列表
|
||||
|
|
|
|||
|
|
@ -1,36 +1,34 @@
|
|||
package com.ff.game.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.dtflys.forest.annotation.Body;
|
||||
import com.ff.api.response.GameResponse;
|
||||
import com.ff.game.api.request.GameUniqueDTO;
|
||||
import com.ff.game.domain.Game;
|
||||
import com.ff.game.dto.GameDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 平台子游戏管理Service接口
|
||||
*
|
||||
*
|
||||
* @author shi
|
||||
* @date 2025-02-10
|
||||
*/
|
||||
public interface IGameService
|
||||
{
|
||||
public interface IGameService {
|
||||
/**
|
||||
* 查询平台子游戏管理
|
||||
*
|
||||
*
|
||||
* @param id 平台子游戏管理主键
|
||||
* @return 平台子游戏管理
|
||||
*/
|
||||
Game selectGameById(Long id);
|
||||
Game selectGameById(Long id);
|
||||
|
||||
/**
|
||||
* 查询平台子游戏管理列表
|
||||
*
|
||||
*
|
||||
* @param game 平台子游戏管理
|
||||
* @return 平台子游戏管理集合
|
||||
*/
|
||||
List<Game> selectGameList(Game game);
|
||||
List<Game> selectGameList(Game game);
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -43,43 +41,42 @@ public interface IGameService
|
|||
|
||||
/**
|
||||
* 新增平台子游戏管理
|
||||
*
|
||||
*
|
||||
* @param game 平台子游戏管理
|
||||
* @return 结果
|
||||
*/
|
||||
int insertGame(Game game);
|
||||
int insertGame(Game game);
|
||||
|
||||
/**
|
||||
* 修改平台子游戏管理
|
||||
*
|
||||
*
|
||||
* @param game 平台子游戏管理
|
||||
* @return 结果
|
||||
*/
|
||||
int updateGame(Game game);
|
||||
int updateGame(Game game);
|
||||
|
||||
/**
|
||||
* 批量删除平台子游戏管理
|
||||
*
|
||||
*
|
||||
* @param ids 需要删除的平台子游戏管理主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
int deleteGameByIds(Long[] ids);
|
||||
int deleteGameByIds(Long[] ids);
|
||||
|
||||
/**
|
||||
* 删除平台子游戏管理信息
|
||||
*
|
||||
*
|
||||
* @param id 平台子游戏管理主键
|
||||
* @return 结果
|
||||
*/
|
||||
int deleteGameById(Long id);
|
||||
int deleteGameById(Long id);
|
||||
|
||||
/**
|
||||
* 按平台id选择最大排序号
|
||||
*
|
||||
* @param platformId 平台id
|
||||
* @return {@link Integer }
|
||||
*/
|
||||
Integer selectMaxSortNoByPlatformId(Long platformId);
|
||||
Integer selectMaxSortNo(Integer platformType, String platformCode);
|
||||
|
||||
/**
|
||||
* 选择游戏唯一列表
|
||||
|
|
@ -103,7 +100,7 @@ public interface IGameService
|
|||
* @param endTime 结束时间
|
||||
* @param platformCode 平台代码
|
||||
*/
|
||||
void insertGameBettingDetails(Long startTime,Long endTime,String platformCode);
|
||||
void insertGameBettingDetails(Long startTime, Long endTime, String platformCode);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,43 +1,30 @@
|
|||
package com.ff.quartz.task;
|
||||
|
||||
import com.ff.base.constant.Constants;
|
||||
import com.ff.base.core.redis.RedisCache;
|
||||
import com.ff.base.datasource.DynamicDataSourceContextHolder;
|
||||
import com.ff.base.enums.GamePlatforms;
|
||||
import com.ff.base.enums.NGPlatforms;
|
||||
import com.ff.base.enums.PlatformType;
|
||||
import com.ff.base.enums.StatusType;
|
||||
import com.ff.base.utils.DateUtils;
|
||||
import com.ff.base.utils.StringUtils;
|
||||
import com.ff.game.api.IGamesService;
|
||||
import com.ff.game.api.ng.client.NGClient;
|
||||
import com.ff.game.api.ng.dto.ApiExchangeTransferStatusResponseDTO;
|
||||
import com.ff.game.api.ng.dto.ApiNGResponseDTO;
|
||||
import com.ff.game.api.request.BetRecordByTimeDTO;
|
||||
import com.ff.game.api.request.ExchangeTransferStatusRequestDTO;
|
||||
import com.ff.game.api.request.GamesBaseRequestDTO;
|
||||
import com.ff.game.api.request.GetFreeSpinDashflowRequestDTO;
|
||||
import com.ff.game.domain.GameExchangeMoney;
|
||||
import com.ff.game.domain.GameSecretKey;
|
||||
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
|
||||
import com.ff.game.dto.GameSecretKeyDTO;
|
||||
import com.ff.game.service.*;
|
||||
import com.ff.game.domain.KeyInfo;
|
||||
import com.ff.game.domain.Platform;
|
||||
import com.ff.game.service.IGameExchangeMoneyService;
|
||||
import com.ff.game.service.IPlatformService;
|
||||
import com.ff.member.domain.Member;
|
||||
import com.ff.member.service.IMemberService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.scheduling.annotation.AsyncConfigurationSelector;
|
||||
import org.springframework.security.core.parameters.P;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.sql.DataSource;
|
||||
import javax.xml.crypto.dsig.keyinfo.PGPData;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -50,242 +37,206 @@ import java.util.stream.Collectors;
|
|||
@Component("gameTask")
|
||||
public class GameTask {
|
||||
|
||||
|
||||
@Autowired
|
||||
private Map<String, IGamesService> gamesService;
|
||||
|
||||
@Resource
|
||||
private IGameSecretKeyService gameSecretKeyService;
|
||||
|
||||
@Resource
|
||||
private IGamePlatformService gamePlatformService;
|
||||
|
||||
|
||||
@Resource
|
||||
private NGClient ngClient;
|
||||
|
||||
@Resource
|
||||
private IGameExchangeMoneyService gameExchangeMoneyService;
|
||||
|
||||
@Resource
|
||||
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
|
||||
|
||||
@Resource
|
||||
private IMemberService memberService;
|
||||
|
||||
@Resource
|
||||
private RedisCache redisCache;
|
||||
|
||||
|
||||
@Resource
|
||||
private IGameService gameService;
|
||||
private IPlatformService platformService;
|
||||
|
||||
/**
|
||||
* 插入游戏投注详细信息
|
||||
* 同步游戏列表
|
||||
*/
|
||||
|
||||
public void insertGameBettingDetails(Integer backTime) {
|
||||
|
||||
//捞取指定分钟前的数据
|
||||
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
|
||||
Long endTime = DateUtils.getNowDate();
|
||||
|
||||
|
||||
for (String gameKey : gamesService.keySet()) {
|
||||
String platformCode = gameKey.replace(Constants.SERVICE, "");
|
||||
//特殊的平台跳过
|
||||
if (NGPlatforms.exists(platformCode) || GamePlatforms.FC.getInfo().equals(platformCode)) {
|
||||
continue;
|
||||
public void syncGameList() {
|
||||
for (GamePlatforms gamePlatform : GamePlatforms.values()) {
|
||||
String platformCode = gamePlatform.getCode();
|
||||
try {
|
||||
syncGameList(platformCode);
|
||||
} catch (Exception e) {
|
||||
log.error("同步游戏列表失败platformCode:{}", platformCode, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<GameSecretKey> gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().platform(platformCode).build());
|
||||
for (GameSecretKey gameSecretKey : gameSecretKeys) {
|
||||
try {
|
||||
gamesService.get(gameKey).getGameList(GamesBaseRequestDTO.builder()
|
||||
.agentId(gameSecretKey.getCode())
|
||||
.agentKey(gameSecretKey.getKey())
|
||||
public void syncGameList(String platformCode) {
|
||||
|
||||
Platform platform = platformService.get(platformCode);
|
||||
if (null == platform) {
|
||||
return;
|
||||
}
|
||||
List<KeyInfo> keyData = platform.getKeyInfo();
|
||||
for (KeyInfo keyInfo : keyData) {
|
||||
gamesService.get(platformCode + Constants.SERVICE)
|
||||
.getGameList(GamesBaseRequestDTO.builder()
|
||||
.agentId(keyInfo.getCode())
|
||||
.agentKey(keyInfo.getKey())
|
||||
.keyInfo(keyInfo)
|
||||
.vendor(platform)
|
||||
.build());
|
||||
BetRecordByTimeDTO betRecordByTimeDTO = new BetRecordByTimeDTO();
|
||||
betRecordByTimeDTO.setGamePlatform(gameSecretKey.getPlatform());
|
||||
betRecordByTimeDTO.setStartTime(startTime);
|
||||
betRecordByTimeDTO.setEndTime(endTime);
|
||||
betRecordByTimeDTO.setPage(1);
|
||||
betRecordByTimeDTO.setPageLimit(1000);
|
||||
betRecordByTimeDTO.setAgentId(gameSecretKey.getCode());
|
||||
betRecordByTimeDTO.setAgentKey(gameSecretKey.getKey());
|
||||
gamesService.get(gameKey).getBetRecordByTime(betRecordByTimeDTO);
|
||||
} catch (Exception e) {
|
||||
log.error("查询 币种 {} 投注记录失败,错误信息 {}", gameSecretKey.getCode(), e);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步实时投注记录
|
||||
*
|
||||
* @param platformCode
|
||||
* @param backTimeMin
|
||||
*/
|
||||
public void syncRealtimeBetRecord(String platformCode, Integer backTimeMin) {
|
||||
//捞取指定分钟前的数据
|
||||
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTimeMin);
|
||||
Long endTime = DateUtils.getNowDate();
|
||||
|
||||
Platform platform = platformService.get(platformCode);
|
||||
if (null == platform) {
|
||||
return;
|
||||
}
|
||||
List<KeyInfo> keyData = platform.getKeyInfo();
|
||||
|
||||
for (KeyInfo keyInfo : keyData) {
|
||||
try {
|
||||
BetRecordByTimeDTO betRecordByTimeDTO = new BetRecordByTimeDTO();
|
||||
betRecordByTimeDTO.setStartTime(startTime);
|
||||
betRecordByTimeDTO.setEndTime(endTime);
|
||||
betRecordByTimeDTO.setPage(1);
|
||||
betRecordByTimeDTO.setPageLimit(1000);
|
||||
betRecordByTimeDTO.setAgentId(keyInfo.getCode());
|
||||
betRecordByTimeDTO.setAgentKey(keyInfo.getKey());
|
||||
betRecordByTimeDTO.setKeyInfo(keyInfo);
|
||||
betRecordByTimeDTO.setVendor(platform);
|
||||
gamesService.get(platformCode + Constants.SERVICE).getBetRecordByTime(betRecordByTimeDTO);
|
||||
} catch (Exception e) {
|
||||
log.error("同步平台投注记录失败platformCode:{}", platformCode, e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 插入游戏cfbetting详细信息
|
||||
*/
|
||||
public void insertGameCFBettingDetails(Integer backTime) {
|
||||
|
||||
|
||||
try {
|
||||
//捞取指定分钟前的数据
|
||||
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
|
||||
Long endTime = DateUtils.getNowDate();
|
||||
|
||||
for (String gameKey : gamesService.keySet()) {
|
||||
String platformCode = gameKey.replace(Constants.SERVICE, "");
|
||||
//不是特殊的平台跳过
|
||||
if (!GamePlatforms.FC.getInfo().equals(platformCode)) {
|
||||
continue;
|
||||
}
|
||||
List<GameSecretKey> gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().platform(platformCode).build());
|
||||
for (GameSecretKey gameSecretKey : gameSecretKeys) {
|
||||
try {
|
||||
gamesService.get(gameKey).getGameList(GamesBaseRequestDTO.builder()
|
||||
.agentId(gameSecretKey.getCode())
|
||||
.agentKey(gameSecretKey.getKey())
|
||||
.build());
|
||||
BetRecordByTimeDTO betRecordByTimeDTO = new BetRecordByTimeDTO();
|
||||
betRecordByTimeDTO.setGamePlatform(gameSecretKey.getPlatform());
|
||||
betRecordByTimeDTO.setStartTime(startTime);
|
||||
betRecordByTimeDTO.setEndTime(endTime);
|
||||
betRecordByTimeDTO.setPage(1);
|
||||
betRecordByTimeDTO.setPageLimit(1000);
|
||||
betRecordByTimeDTO.setAgentId(gameSecretKey.getCode());
|
||||
betRecordByTimeDTO.setAgentKey(gameSecretKey.getKey());
|
||||
gamesService.get(gameKey).getBetRecordByTime(betRecordByTimeDTO);
|
||||
} catch (Exception e) {
|
||||
log.error("查询 平台 {} 投注记录失败,错误信息 {}", gameSecretKey.getCode(), e);
|
||||
}
|
||||
}
|
||||
|
||||
if (platform.isMultiAgent()) {
|
||||
break;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("查询 FC 投注记录失败,错误信息 {}", e);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 插入FC游戏投注详细信息
|
||||
*
|
||||
* @param backTime 返回时间
|
||||
*/
|
||||
public void insertFCHistoryGameBettingDetails(Integer backTime) {
|
||||
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
|
||||
Long endTime = DateUtils.getNowDate();
|
||||
//捞取指定分钟前的数据
|
||||
gameService.insertGameBettingDetails(startTime, endTime, GamePlatforms.FC.getInfo());
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 插入AE游戏投注详细信息
|
||||
*
|
||||
* @param backTime 返回时间
|
||||
*/
|
||||
public void insertAEHistoryGameBettingDetails(Integer backTime) {
|
||||
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
|
||||
Long endTime = DateUtils.getNowDate();
|
||||
//捞取指定分钟前的数据
|
||||
gameService.insertGameBettingDetails(startTime, endTime, GamePlatforms.AE.getInfo());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 插入PGX游戏投注详细信息
|
||||
* 同步历史投注记录
|
||||
*
|
||||
* @param backTime 返回时间
|
||||
* @param platformCode
|
||||
* @param backTimeMin
|
||||
*/
|
||||
public void insertPGXHistoryGameBettingDetails(Integer backTime) {
|
||||
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
|
||||
Long endTime = DateUtils.getNowDate();
|
||||
//捞取指定分钟前的数据
|
||||
gameService.insertGameBettingDetails(startTime, endTime, GamePlatforms.PGX.getInfo());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 插入MT游戏投注详细信息
|
||||
*
|
||||
* @param backTime 返回时间
|
||||
*/
|
||||
public void insertMTHistoryGameBettingDetails(Integer backTime) {
|
||||
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
|
||||
Long endTime = DateUtils.getNowDate();
|
||||
public void syncHistoryBetRecord(String platformCode, Integer backTimeMin) {
|
||||
|
||||
//捞取指定分钟前的数据
|
||||
gameService.insertGameBettingDetails(startTime, endTime, GamePlatforms.MT.getCode());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 插入游戏ngbetting详细信息
|
||||
*/
|
||||
public void insertGameNGBettingDetails(Integer backTime) {
|
||||
|
||||
|
||||
try {
|
||||
//捞取指定分钟前的数据
|
||||
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
|
||||
Long endTime = DateUtils.getNowDate();
|
||||
BetRecordByTimeDTO betRecordByTimeDTO = new BetRecordByTimeDTO();
|
||||
betRecordByTimeDTO.setStartTime(startTime);
|
||||
betRecordByTimeDTO.setEndTime(endTime);
|
||||
gamesService.get(NGPlatforms.PG.getPlatform() + Constants.SERVICE).getBetRecordByTime(betRecordByTimeDTO);
|
||||
} catch (Exception e) {
|
||||
log.error("查询 NG 投注记录失败,错误信息 {}", e);
|
||||
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTimeMin);
|
||||
Long endTime = DateUtils.getNowDate();
|
||||
|
||||
Platform platform = platformService.get(platformCode);
|
||||
if (null == platform) {
|
||||
return;
|
||||
}
|
||||
List<KeyInfo> keyData = platform.getKeyInfo();
|
||||
|
||||
}
|
||||
for (KeyInfo keyInfo : keyData) {
|
||||
try {
|
||||
BetRecordByTimeDTO betRecordByTimeDTO = new BetRecordByTimeDTO();
|
||||
betRecordByTimeDTO.setStartTime(startTime);
|
||||
betRecordByTimeDTO.setEndTime(endTime);
|
||||
betRecordByTimeDTO.setPage(1);
|
||||
betRecordByTimeDTO.setPageLimit(1000);
|
||||
betRecordByTimeDTO.setAgentId(keyInfo.getCode());
|
||||
betRecordByTimeDTO.setAgentKey(keyInfo.getKey());
|
||||
betRecordByTimeDTO.setKeyInfo(keyInfo);
|
||||
betRecordByTimeDTO.setVendor(platform);
|
||||
|
||||
|
||||
/**
|
||||
* 插入免费游戏局数情况
|
||||
*/
|
||||
public void insertFreeSpinDashflow() {
|
||||
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), -70);
|
||||
for (String gameKey : gamesService.keySet()) {
|
||||
List<GameSecretKey> gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().platform(gameKey.replace(Constants.SERVICE, "")).build());
|
||||
for (GameSecretKey gameSecretKey : gameSecretKeys) {
|
||||
try {
|
||||
GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO = new GetFreeSpinDashflowRequestDTO();
|
||||
getFreeSpinDashflowRequestDTO.setStartTime(startTime);
|
||||
getFreeSpinDashflowRequestDTO.setAgentId(gameSecretKey.getCode());
|
||||
getFreeSpinDashflowRequestDTO.setAgentKey(gameSecretKey.getKey());
|
||||
gamesService.get(gameKey).getFreeSpinDashflow(getFreeSpinDashflowRequestDTO);
|
||||
} catch (Exception e) {
|
||||
log.error("查询 币种 {} 免费游戏投注记录失败,错误信息 {}", gameSecretKey.getCode(), e.getMessage());
|
||||
}
|
||||
gamesService.get(platformCode + Constants.SERVICE).getBetRecordByHistoryTime(betRecordByTimeDTO);
|
||||
} catch (Exception e) {
|
||||
log.error("同步平台投注记录失败platformCode:{}", platformCode, e);
|
||||
}
|
||||
if (platform.isMultiAgent()) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步免费游玩记录
|
||||
*/
|
||||
public void syncFreeBetRecord(String platformCode, Integer backTime) {
|
||||
// 捞取指定分钟前的数据
|
||||
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
|
||||
|
||||
Platform platform = platformService.get(platformCode);
|
||||
if (null == platform) {
|
||||
return;
|
||||
}
|
||||
List<KeyInfo> keyData = platform.getKeyInfo();
|
||||
|
||||
for (KeyInfo keyInfo : keyData) {
|
||||
try {
|
||||
GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO = new GetFreeSpinDashflowRequestDTO();
|
||||
getFreeSpinDashflowRequestDTO.setStartTime(startTime);
|
||||
getFreeSpinDashflowRequestDTO.setAgentId(keyInfo.getCode());
|
||||
getFreeSpinDashflowRequestDTO.setAgentKey(keyInfo.getKey());
|
||||
getFreeSpinDashflowRequestDTO.setVendor(platform);
|
||||
getFreeSpinDashflowRequestDTO.setKeyInfo(keyInfo);
|
||||
gamesService.get(platformCode + Constants.SERVICE).getFreeSpinDashflow(getFreeSpinDashflowRequestDTO);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("免费游戏投注记录失败platformCode:{}", platformCode, e);
|
||||
}
|
||||
if (platform.isMultiAgent()) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void updateGameExchangeMoney() {
|
||||
List<GameExchangeMoney> gameExchangeMoneyList = gameExchangeMoneyService.selectGameExchangeMoneyList(GameExchangeMoney.builder().status(StatusType.IN_PROGRESS.getValue()).build());
|
||||
for (GameExchangeMoney exchangeMoney : gameExchangeMoneyList) {
|
||||
try {
|
||||
GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
.platformCode(exchangeMoney.getPlatformCode())
|
||||
.systemCurrency(exchangeMoney.getCurrencyCode()).build());
|
||||
// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder()
|
||||
// .platformCode(exchangeMoney.getPlatformCode())
|
||||
// .systemCurrency(exchangeMoney.getCurrencyCode()).build());
|
||||
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(gameSecretKey.getCurrency());
|
||||
exchangeTransferStatusRequestDTO.setCurrency(targetCurrency);
|
||||
exchangeTransferStatusRequestDTO.setOrderId(exchangeMoney.getTransactionId());
|
||||
exchangeTransferStatusRequestDTO.setAgentId(gameSecretKey.getCode());
|
||||
exchangeTransferStatusRequestDTO.setAgentKey(gameSecretKey.getKey());
|
||||
exchangeTransferStatusRequestDTO.setAgentId(keyInfo.getCode());
|
||||
exchangeTransferStatusRequestDTO.setAgentKey(keyInfo.getKey());
|
||||
exchangeTransferStatusRequestDTO.setGameExchangeMoneyId(exchangeMoney.getId());
|
||||
exchangeTransferStatusRequestDTO.setVendor(platform);
|
||||
exchangeTransferStatusRequestDTO.setKeyInfo(keyInfo);
|
||||
exchangeTransferStatusRequestDTO.setSystemCurrency(targetCurrency);
|
||||
gamesService.get(exchangeMoney.getPlatformCode() + Constants.SERVICE).exchangeTransferStatus(exchangeTransferStatusRequestDTO);
|
||||
} catch (Exception e) {
|
||||
log.error("查询 更新交易记录失败,错误信息 {}", e);
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="ingress" column="ingress" />
|
||||
<result property="gameSourceType" column="game_source_type" />
|
||||
<result property="gameName" column="game_name" />
|
||||
<result property="nameInfo" column="name_info" typeHandler="com.ff.base.handler.JsonListHandler" javaType="com.ff.game.domain.NameInfo" />
|
||||
<result property="freespin" column="freespin" />
|
||||
<result property="demoStatus" column="demo_status" />
|
||||
<result property="stopStatus" column="stop_status" />
|
||||
|
|
@ -40,6 +41,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="freespin != null "> and freespin = #{freespin}</if>
|
||||
<if test="demoStatus != null "> and demo_status = #{demoStatus}</if>
|
||||
<if test="stopStatus != null "> and stop_status = #{stopStatus}</if>
|
||||
<if test="platformCode != null "> and platform_code = #{platformCode}</if>
|
||||
<if test="platformType != null "> and platform_type = #{platformType}</if>
|
||||
|
||||
</where>
|
||||
</select>
|
||||
|
||||
|
|
@ -161,6 +165,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
where platform_id = #{platformId}
|
||||
</select>
|
||||
|
||||
<select id="selectMaxSortNoBy" resultType="java.lang.Integer">
|
||||
select ifnull(max(sort_no), 0)
|
||||
from ff_game
|
||||
where platform_type = #{platformType} and platform_code = #{platformCode}
|
||||
</select>
|
||||
<resultMap id="GameResponseResultMap" type="com.ff.api.response.GameResponse">
|
||||
<result property="id" column="id"/>
|
||||
<result property="gameName" column="game_name"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue