diff --git a/ff-game/src/main/java/com/ff/api/request/MemberCreateApiRequest.java b/ff-game/src/main/java/com/ff/api/request/MemberCreateApiRequest.java index ea2a2c5..6d2e461 100644 --- a/ff-game/src/main/java/com/ff/api/request/MemberCreateApiRequest.java +++ b/ff-game/src/main/java/com/ff/api/request/MemberCreateApiRequest.java @@ -6,6 +6,7 @@ import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; import java.io.Serializable; /** @@ -21,6 +22,7 @@ public class MemberCreateApiRequest implements Serializable{ @NotBlank(message = "account不能为空") @Length(max = 64, message = "account长度不能超过64个字符") + @Pattern(regexp = "^[a-z0-9]+$", message = "account只能包含小写字母和数字") private String account; /** 平台编码 */ diff --git a/ff-game/src/main/java/com/ff/game/api/ng/client/NGClient.java b/ff-game/src/main/java/com/ff/game/api/ng/client/NGClient.java index 3f3f91f..109b675 100644 --- a/ff-game/src/main/java/com/ff/game/api/ng/client/NGClient.java +++ b/ff-game/src/main/java/com/ff/game/api/ng/client/NGClient.java @@ -94,6 +94,6 @@ public interface NGClient { * @param headerMap 标题映射 * @return {@link ApiNGResponseDTO }<{@link ApiGameBetRecordPageResponseDTO }> */ - @Post(url = "server/recordAll") + @Post(url = "server/recordHistory") ApiNGResponseDTO getBetRecordByTime(@JSONBody Map parameters, @Header Map headerMap); } diff --git a/ff-game/src/main/java/com/ff/game/api/ng/service/impl/GamesPGServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/ng/service/impl/GamesPGServiceImpl.java index 0414340..eee2f97 100644 --- a/ff-game/src/main/java/com/ff/game/api/ng/service/impl/GamesPGServiceImpl.java +++ b/ff-game/src/main/java/com/ff/game/api/ng/service/impl/GamesPGServiceImpl.java @@ -43,6 +43,10 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.security.SecureRandom; import java.text.SimpleDateFormat; +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; @@ -499,6 +503,16 @@ public class GamesPGServiceImpl implements IGamesService { .build()); + String startTime = DateTimeFormatter + .ofPattern("yyyy-MM-dd HH:mm:ss") + .withZone(ZoneId.of("Asia/Shanghai")) + .format(Instant.ofEpochMilli(betRecordByTimeDTO.getStartTime())); + + String endTime = DateTimeFormatter + .ofPattern("yyyy-MM-dd HH:mm:ss") + .withZone(ZoneId.of("Asia/Shanghai")) + .format(Instant.ofEpochMilli(betRecordByTimeDTO.getEndTime())); + betRecordByTimeDTO.setAgentId(currencyDTO.getCode()); @@ -509,9 +523,11 @@ public class GamesPGServiceImpl implements IGamesService { paramsMap.put("currency", currencyDTO.getCurrency()); paramsMap.put("pageNo", pageNo); paramsMap.put("pageSize", pageSize); + paramsMap.put("startTime", startTime); + paramsMap.put("endTime",endTime); Map key = this.getKey(betRecordByTimeDTO); - SleepUtil.sleep(6000); + ApiNGResponseDTO betRecordByTime = ngClient.getBetRecordByTime(paramsMap, key); if (this.getIsSuccess(betRecordByTime.getCode())) { @@ -539,6 +555,9 @@ public class GamesPGServiceImpl implements IGamesService { paramMap.put("currency", currencyDTO.getCurrency()); paramMap.put("pageNo", pageNoAtomic.get()); paramMap.put("pageSize", pageSize); + paramMap.put("startTime", startTime); + paramMap.put("endTime", endTime); + SleepUtil.sleep(10000); ApiNGResponseDTO betRecordByTimePage = ngClient.getBetRecordByTime(paramMap, key); data = betRecordByTimePage.getData(); //数据组装 diff --git a/ff-game/src/main/java/com/ff/member/service/impl/MemberServiceImpl.java b/ff-game/src/main/java/com/ff/member/service/impl/MemberServiceImpl.java index 684d49b..e20e6ef 100644 --- a/ff-game/src/main/java/com/ff/member/service/impl/MemberServiceImpl.java +++ b/ff-game/src/main/java/com/ff/member/service/impl/MemberServiceImpl.java @@ -124,7 +124,7 @@ public class MemberServiceImpl implements IMemberService */ @Override public Member selectMemberByGameAccount(String gameAccount) { - return memberMapper.selectMemberByGameAccount(gameAccount); + return memberMapper.selectMemberByGameAccount(gameAccount.toLowerCase()); } /** diff --git a/ff-game/src/main/java/com/ff/quartz/task/GameTask.java b/ff-game/src/main/java/com/ff/quartz/task/GameTask.java index c8592b0..b92e41e 100644 --- a/ff-game/src/main/java/com/ff/quartz/task/GameTask.java +++ b/ff-game/src/main/java/com/ff/quartz/task/GameTask.java @@ -1,6 +1,7 @@ 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; @@ -32,6 +33,7 @@ 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; @@ -63,7 +65,7 @@ public class GameTask { @Resource private NGClient ngClient; - + @Resource private IGameExchangeMoneyService gameExchangeMoneyService; @@ -71,7 +73,11 @@ public class GameTask { private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService; @Resource - private IMemberService memberService; + private IMemberService memberService; + + @Resource + private RedisCache redisCache; + /** * 插入游戏投注详细信息 */ @@ -83,47 +89,50 @@ public class GameTask { Long endTime = DateUtils.getNowDate(); - for (String gameKey : gamesService.keySet()) { - String platformCode = gameKey.replace(Constants.SERVICE, ""); - if (NGPlatforms.exists(platformCode)) { - continue; - } - - List 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); - } - } - + for (String gameKey : gamesService.keySet()) { + String platformCode = gameKey.replace(Constants.SERVICE, ""); + if (NGPlatforms.exists(platformCode)) { + continue; } - + + List 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); + } + } + + } + } /** * 插入游戏ngbetting详细信息 - * */ - public void insertGameNGBettingDetails() { + 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); @@ -137,27 +146,27 @@ public class GameTask { * 插入免费游戏局数情况 */ public void insertFreeSpinDashflow() { - Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), -70); - for (String gameKey : gamesService.keySet()) { - List 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()); - } + Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), -70); + for (String gameKey : gamesService.keySet()) { + List 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()); } + } + - } } - public void updateGameExchangeMoney() { + public void updateGameExchangeMoney() { List gameExchangeMoneyList = gameExchangeMoneyService.selectGameExchangeMoneyList(GameExchangeMoney.builder().status(StatusType.IN_PROGRESS.getValue()).build()); for (GameExchangeMoney exchangeMoney : gameExchangeMoneyList) { try { @@ -172,14 +181,14 @@ public class GameTask { exchangeTransferStatusRequestDTO.setOrderId(exchangeMoney.getTransactionId()); exchangeTransferStatusRequestDTO.setAgentId(gameSecretKey.getCode()); exchangeTransferStatusRequestDTO.setAgentKey(gameSecretKey.getKey()); - gamesService.get(exchangeMoney.getPlatformCode()+Constants.SERVICE).exchangeTransferStatus(exchangeTransferStatusRequestDTO); + gamesService.get(exchangeMoney.getPlatformCode() + Constants.SERVICE).exchangeTransferStatus(exchangeTransferStatusRequestDTO); } catch (Exception e) { log.error("查询 更新交易记录失败,错误信息 {}", e); } } - } - + } + }