2025-02-13 15:43:13 +08:00
|
|
|
package com.ff.quartz.task;
|
|
|
|
|
|
|
|
import com.ff.base.constant.Constants;
|
2025-03-17 17:00:44 +08:00
|
|
|
import com.ff.base.core.redis.RedisCache;
|
2025-02-13 15:43:13 +08:00
|
|
|
import com.ff.base.datasource.DynamicDataSourceContextHolder;
|
|
|
|
import com.ff.base.enums.GamePlatforms;
|
2025-03-14 13:31:17 +08:00
|
|
|
import com.ff.base.enums.NGPlatforms;
|
2025-03-25 17:04:25 +08:00
|
|
|
import com.ff.base.enums.PlatformType;
|
2025-03-14 13:31:17 +08:00
|
|
|
import com.ff.base.enums.StatusType;
|
2025-02-13 15:43:13 +08:00
|
|
|
import com.ff.base.utils.DateUtils;
|
|
|
|
import com.ff.game.api.IGamesService;
|
2025-03-14 13:31:17 +08:00
|
|
|
import com.ff.game.api.ng.client.NGClient;
|
|
|
|
import com.ff.game.api.ng.dto.ApiExchangeTransferStatusResponseDTO;
|
|
|
|
import com.ff.game.api.ng.dto.ApiNGResponseDTO;
|
2025-02-13 15:43:13 +08:00
|
|
|
import com.ff.game.api.request.BetRecordByTimeDTO;
|
2025-03-14 13:31:17 +08:00
|
|
|
import com.ff.game.api.request.ExchangeTransferStatusRequestDTO;
|
2025-02-13 15:43:13 +08:00
|
|
|
import com.ff.game.api.request.GamesBaseRequestDTO;
|
|
|
|
import com.ff.game.api.request.GetFreeSpinDashflowRequestDTO;
|
2025-03-14 13:31:17 +08:00
|
|
|
import com.ff.game.domain.GameExchangeMoney;
|
2025-02-13 15:43:13 +08:00
|
|
|
import com.ff.game.domain.GameSecretKey;
|
2025-03-14 13:31:17 +08:00
|
|
|
import com.ff.game.dto.GameSecretKeyCurrencyDTO;
|
|
|
|
import com.ff.game.dto.GameSecretKeyDTO;
|
2025-04-02 09:16:06 +08:00
|
|
|
import com.ff.game.service.*;
|
2025-03-14 13:31:17 +08:00
|
|
|
import com.ff.member.domain.Member;
|
|
|
|
import com.ff.member.service.IMemberService;
|
2025-02-13 15:43:13 +08:00
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.context.ApplicationEventPublisher;
|
2025-03-14 13:31:17 +08:00
|
|
|
import org.springframework.scheduling.annotation.AsyncConfigurationSelector;
|
|
|
|
import org.springframework.security.core.parameters.P;
|
2025-02-13 15:43:13 +08:00
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import org.springframework.util.CollectionUtils;
|
2025-03-17 17:00:44 +08:00
|
|
|
import org.springframework.util.ObjectUtils;
|
2025-02-13 15:43:13 +08:00
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import javax.sql.DataSource;
|
2025-03-14 13:31:17 +08:00
|
|
|
import javax.xml.crypto.dsig.keyinfo.PGPData;
|
2025-02-13 15:43:13 +08:00
|
|
|
import java.util.*;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 游戏任务
|
|
|
|
*
|
|
|
|
* @author shi
|
|
|
|
* @date 2024/10/22
|
|
|
|
*/
|
|
|
|
@Slf4j
|
|
|
|
@Component("gameTask")
|
|
|
|
public class GameTask {
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
private Map<String, IGamesService> gamesService;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
private IGameSecretKeyService gameSecretKeyService;
|
|
|
|
|
2025-03-14 13:31:17 +08:00
|
|
|
@Resource
|
|
|
|
private IGamePlatformService gamePlatformService;
|
|
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
private NGClient ngClient;
|
2025-03-17 17:00:44 +08:00
|
|
|
|
2025-03-14 13:31:17 +08:00
|
|
|
@Resource
|
|
|
|
private IGameExchangeMoneyService gameExchangeMoneyService;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
private IGameSecretKeyCurrencyService gameSecretKeyCurrencyService;
|
|
|
|
|
|
|
|
@Resource
|
2025-03-17 17:00:44 +08:00
|
|
|
private IMemberService memberService;
|
|
|
|
|
|
|
|
@Resource
|
2025-04-02 09:16:06 +08:00
|
|
|
private RedisCache redisCache;
|
|
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
private IGameService gameService;
|
2025-03-17 17:00:44 +08:00
|
|
|
|
2025-02-13 15:43:13 +08:00
|
|
|
/**
|
|
|
|
* 插入游戏投注详细信息
|
|
|
|
*/
|
|
|
|
|
|
|
|
public void insertGameBettingDetails(Integer backTime) {
|
|
|
|
|
|
|
|
//捞取指定分钟前的数据
|
|
|
|
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
|
|
|
|
Long endTime = DateUtils.getNowDate();
|
|
|
|
|
2025-03-14 13:31:17 +08:00
|
|
|
|
2025-03-17 17:00:44 +08:00
|
|
|
for (String gameKey : gamesService.keySet()) {
|
|
|
|
String platformCode = gameKey.replace(Constants.SERVICE, "");
|
2025-03-25 17:04:25 +08:00
|
|
|
//特殊的平台跳过
|
2025-04-02 09:16:06 +08:00
|
|
|
if (NGPlatforms.exists(platformCode) || GamePlatforms.FC.getInfo().equals(platformCode)) {
|
2025-03-17 17:00:44 +08:00
|
|
|
continue;
|
|
|
|
}
|
2025-03-14 13:31:17 +08:00
|
|
|
|
2025-03-17 17:00:44 +08:00
|
|
|
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);
|
2025-02-13 15:43:13 +08:00
|
|
|
}
|
|
|
|
}
|
2025-03-17 17:00:44 +08:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2025-03-14 13:31:17 +08:00
|
|
|
}
|
|
|
|
|
2025-03-25 17:04:25 +08:00
|
|
|
/**
|
|
|
|
* 插入游戏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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
log.error("查询 FC 投注记录失败,错误信息 {}", e);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2025-04-02 09:16:06 +08:00
|
|
|
|
2025-03-25 17:04:25 +08:00
|
|
|
/**
|
2025-04-02 09:16:06 +08:00
|
|
|
* 插入FC游戏投注详细信息
|
2025-03-25 17:04:25 +08:00
|
|
|
*
|
|
|
|
* @param backTime 返回时间
|
|
|
|
*/
|
2025-04-02 09:16:06 +08:00
|
|
|
public void insertFCHistoryGameBettingDetails(Integer backTime) {
|
2025-03-25 17:04:25 +08:00
|
|
|
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
|
|
|
|
Long endTime = DateUtils.getNowDate();
|
2025-04-02 09:16:06 +08:00
|
|
|
//捞取指定分钟前的数据
|
|
|
|
gameService.insertGameBettingDetails(startTime, endTime, GamePlatforms.FC.getInfo());
|
2025-03-25 17:04:25 +08:00
|
|
|
|
2025-04-02 09:16:06 +08:00
|
|
|
}
|
2025-03-25 17:04:25 +08:00
|
|
|
|
|
|
|
|
2025-04-02 09:16:06 +08:00
|
|
|
/**
|
|
|
|
* 插入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());
|
2025-03-25 17:04:25 +08:00
|
|
|
|
2025-04-02 09:16:06 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 插入PGX游戏投注详细信息
|
|
|
|
*
|
|
|
|
* @param backTime 返回时间
|
|
|
|
*/
|
|
|
|
public void insertPGXHistoryGameBettingDetails(Integer backTime) {
|
|
|
|
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
|
|
|
|
Long endTime = DateUtils.getNowDate();
|
|
|
|
//捞取指定分钟前的数据
|
|
|
|
gameService.insertGameBettingDetails(startTime, endTime, GamePlatforms.PGX.getInfo());
|
2025-03-25 17:04:25 +08:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2025-04-02 09:16:06 +08:00
|
|
|
/**
|
|
|
|
* 插入MT游戏投注详细信息
|
|
|
|
*
|
|
|
|
* @param backTime 返回时间
|
|
|
|
*/
|
|
|
|
public void insertMTHistoryGameBettingDetails(Integer backTime) {
|
|
|
|
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
|
|
|
|
Long endTime = DateUtils.getNowDate();
|
2025-03-25 17:04:25 +08:00
|
|
|
|
2025-04-02 09:16:06 +08:00
|
|
|
//捞取指定分钟前的数据
|
2025-04-03 14:34:49 +08:00
|
|
|
gameService.insertGameBettingDetails(startTime, endTime, GamePlatforms.MT.getCode());
|
2025-04-02 09:16:06 +08:00
|
|
|
|
|
|
|
}
|
2025-03-25 17:04:25 +08:00
|
|
|
|
2025-03-14 13:31:17 +08:00
|
|
|
/**
|
|
|
|
* 插入游戏ngbetting详细信息
|
|
|
|
*/
|
2025-03-17 17:00:44 +08:00
|
|
|
public void insertGameNGBettingDetails(Integer backTime) {
|
2025-03-14 13:31:17 +08:00
|
|
|
|
|
|
|
|
|
|
|
try {
|
2025-03-17 17:00:44 +08:00
|
|
|
//捞取指定分钟前的数据
|
|
|
|
Long startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
|
|
|
|
Long endTime = DateUtils.getNowDate();
|
2025-03-14 13:31:17 +08:00
|
|
|
BetRecordByTimeDTO betRecordByTimeDTO = new BetRecordByTimeDTO();
|
2025-03-17 17:00:44 +08:00
|
|
|
betRecordByTimeDTO.setStartTime(startTime);
|
|
|
|
betRecordByTimeDTO.setEndTime(endTime);
|
2025-03-14 13:31:17 +08:00
|
|
|
gamesService.get(NGPlatforms.PG.getPlatform() + Constants.SERVICE).getBetRecordByTime(betRecordByTimeDTO);
|
|
|
|
} catch (Exception e) {
|
|
|
|
log.error("查询 NG 投注记录失败,错误信息 {}", e);
|
|
|
|
|
2025-02-13 15:43:13 +08:00
|
|
|
}
|
2025-03-14 13:31:17 +08:00
|
|
|
|
2025-02-13 15:43:13 +08:00
|
|
|
}
|
|
|
|
|
2025-03-14 13:31:17 +08:00
|
|
|
|
2025-02-13 15:43:13 +08:00
|
|
|
/**
|
|
|
|
* 插入免费游戏局数情况
|
|
|
|
*/
|
|
|
|
public void insertFreeSpinDashflow() {
|
2025-03-17 17:00:44 +08:00
|
|
|
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());
|
2025-02-13 15:43:13 +08:00
|
|
|
}
|
2025-03-17 17:00:44 +08:00
|
|
|
}
|
|
|
|
|
2025-02-13 15:43:13 +08:00
|
|
|
|
|
|
|
}
|
|
|
|
}
|
2025-03-14 13:31:17 +08:00
|
|
|
|
|
|
|
|
2025-03-17 17:00:44 +08:00
|
|
|
public void updateGameExchangeMoney() {
|
2025-03-14 13:31:17 +08:00
|
|
|
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());
|
|
|
|
Member member = memberService.selectMemberById(exchangeMoney.getMemberId());
|
|
|
|
|
|
|
|
ExchangeTransferStatusRequestDTO exchangeTransferStatusRequestDTO = new ExchangeTransferStatusRequestDTO();
|
|
|
|
exchangeTransferStatusRequestDTO.setAccount(member.getGameAccount());
|
|
|
|
exchangeTransferStatusRequestDTO.setCurrency(gameSecretKey.getCurrency());
|
|
|
|
exchangeTransferStatusRequestDTO.setOrderId(exchangeMoney.getTransactionId());
|
|
|
|
exchangeTransferStatusRequestDTO.setAgentId(gameSecretKey.getCode());
|
|
|
|
exchangeTransferStatusRequestDTO.setAgentKey(gameSecretKey.getKey());
|
2025-04-01 16:13:44 +08:00
|
|
|
exchangeTransferStatusRequestDTO.setGameExchangeMoneyId(exchangeMoney.getId());
|
2025-03-17 17:00:44 +08:00
|
|
|
gamesService.get(exchangeMoney.getPlatformCode() + Constants.SERVICE).exchangeTransferStatus(exchangeTransferStatusRequestDTO);
|
2025-03-14 13:31:17 +08:00
|
|
|
} catch (Exception e) {
|
|
|
|
log.error("查询 更新交易记录失败,错误信息 {}", e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-03-17 17:00:44 +08:00
|
|
|
}
|
|
|
|
|
2025-02-13 15:43:13 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|