refactor(game): 重构游戏服务实现类

- 优化 GameServiceImpl 类的代码结构,增加日志记录和依赖注入
- 新增 insertGameBettingDetails 方法处理游戏投注详细信息插入
- 修改 GameTask 类,使用新的游戏服务方法
- 更新 IGameService 接口,添加新的方法定义
main-KM
shi 2025-04-02 09:16:06 +08:00
parent 3571c94fd3
commit 5cddf1b783
3 changed files with 115 additions and 53 deletions

View File

@ -2,6 +2,7 @@ package com.ff.game.service;
import java.util.List; import java.util.List;
import com.dtflys.forest.annotation.Body;
import com.ff.api.response.GameResponse; import com.ff.api.response.GameResponse;
import com.ff.game.api.request.GameUniqueDTO; import com.ff.game.api.request.GameUniqueDTO;
import com.ff.game.domain.Game; import com.ff.game.domain.Game;
@ -95,5 +96,14 @@ public interface IGameService
*/ */
List<GameResponse> selectGameResponseList(); List<GameResponse> selectGameResponseList();
/**
*
*
* @param startTime
* @param endTime
* @param platformCode
*/
void insertGameBettingDetails(Long startTime,Long endTime,String platformCode);
} }

View File

@ -2,14 +2,21 @@ package com.ff.game.service.impl;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import com.ff.api.response.GameResponse; import com.ff.api.response.GameResponse;
import com.ff.base.constant.ConfigConstants; import com.ff.base.constant.ConfigConstants;
import com.ff.base.utils.DateUtils; import com.ff.base.utils.DateUtils;
import com.ff.game.api.IGamesService;
import com.ff.game.api.request.BetRecordByTimeDTO;
import com.ff.game.api.request.GameUniqueDTO; import com.ff.game.api.request.GameUniqueDTO;
import com.ff.game.api.request.GamesBaseRequestDTO;
import com.ff.game.domain.GameSecretKey;
import com.ff.game.dto.GameDTO; import com.ff.game.dto.GameDTO;
import com.ff.game.service.IGameSecretKeyService;
import com.ff.member.service.IMemberService; import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ff.game.mapper.GameMapper; import com.ff.game.mapper.GameMapper;
@ -25,14 +32,21 @@ import javax.annotation.Resource;
* @date 2025-02-10 * @date 2025-02-10
*/ */
@Service @Service
public class GameServiceImpl implements IGameService @Slf4j
{ public class GameServiceImpl implements IGameService {
@Autowired @Autowired
private GameMapper gameMapper; private GameMapper gameMapper;
@Resource @Resource
private IMemberService memberService; private IMemberService memberService;
@Resource
private IGameSecretKeyService gameSecretKeyService;
@Autowired
private Map<String, IGamesService> gamesService;
/** /**
* *
* *
@ -40,8 +54,7 @@ public class GameServiceImpl implements IGameService
* @return * @return
*/ */
@Override @Override
public Game selectGameById(Long id) public Game selectGameById(Long id) {
{
return gameMapper.selectGameById(id); return gameMapper.selectGameById(id);
} }
@ -52,8 +65,7 @@ public class GameServiceImpl implements IGameService
* @return * @return
*/ */
@Override @Override
public List<Game> selectGameList(Game game) public List<Game> selectGameList(Game game) {
{
return gameMapper.selectGameList(game); return gameMapper.selectGameList(game);
} }
@ -75,8 +87,7 @@ public class GameServiceImpl implements IGameService
* @return * @return
*/ */
@Override @Override
public int insertGame(Game game) public int insertGame(Game game) {
{
if (game.getId() == null) { if (game.getId() == null) {
game.setId(IdUtil.getSnowflakeNextId()); game.setId(IdUtil.getSnowflakeNextId());
} }
@ -91,8 +102,7 @@ public class GameServiceImpl implements IGameService
* @return * @return
*/ */
@Override @Override
public int updateGame(Game game) public int updateGame(Game game) {
{
game.setUpdateTime(DateUtils.getNowDate()); game.setUpdateTime(DateUtils.getNowDate());
return gameMapper.updateGame(game); return gameMapper.updateGame(game);
} }
@ -104,8 +114,7 @@ public class GameServiceImpl implements IGameService
* @return * @return
*/ */
@Override @Override
public int deleteGameByIds(Long[] ids) public int deleteGameByIds(Long[] ids) {
{
return gameMapper.deleteGameByIds(ids); return gameMapper.deleteGameByIds(ids);
} }
@ -116,8 +125,7 @@ public class GameServiceImpl implements IGameService
* @return * @return
*/ */
@Override @Override
public int deleteGameById(Long id) public int deleteGameById(Long id) {
{
return gameMapper.deleteGameById(id); return gameMapper.deleteGameById(id);
} }
@ -134,7 +142,6 @@ public class GameServiceImpl implements IGameService
} }
/** /**
* *
* *
@ -156,5 +163,36 @@ public class GameServiceImpl implements IGameService
return gameMapper.selectGameResponseList(); return gameMapper.selectGameResponseList();
} }
/**
*
*
* @param startTime
* @param endTime
* @param platformCode
*/
@Override
public void insertGameBettingDetails(Long startTime, Long endTime, String platformCode) {
List<GameSecretKey> gameSecretKeys = gameSecretKeyService.selectGameSecretKeyList(GameSecretKey.builder().platform(platformCode).build());
for (GameSecretKey gameSecretKey : gameSecretKeys) {
try {
gamesService.get(platformCode).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(platformCode).getBetRecordByHistoryTime(betRecordByTimeDTO);
} catch (Exception e) {
log.error("查询 平台 {} 投注记录失败,错误信息 {}", gameSecretKey.getCode(), e);
}
}
}
} }

View File

@ -20,10 +20,7 @@ import com.ff.game.domain.GameExchangeMoney;
import com.ff.game.domain.GameSecretKey; import com.ff.game.domain.GameSecretKey;
import com.ff.game.dto.GameSecretKeyCurrencyDTO; import com.ff.game.dto.GameSecretKeyCurrencyDTO;
import com.ff.game.dto.GameSecretKeyDTO; import com.ff.game.dto.GameSecretKeyDTO;
import com.ff.game.service.IGameExchangeMoneyService; import com.ff.game.service.*;
import com.ff.game.service.IGamePlatformService;
import com.ff.game.service.IGameSecretKeyCurrencyService;
import com.ff.game.service.IGameSecretKeyService;
import com.ff.member.domain.Member; import com.ff.member.domain.Member;
import com.ff.member.service.IMemberService; import com.ff.member.service.IMemberService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -79,6 +76,10 @@ public class GameTask {
@Resource @Resource
private RedisCache redisCache; private RedisCache redisCache;
@Resource
private IGameService gameService;
/** /**
* *
*/ */
@ -168,48 +169,61 @@ public class GameTask {
} }
/** /**
* 使 * FC
* *
* @param backTime * @param backTime
*/ */
public void insertHistoryGameBettingDetails(Integer 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
*/
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 startTime = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), backTime);
Long endTime = DateUtils.getNowDate(); Long endTime = DateUtils.getNowDate();
//捞取指定分钟前的数据
for (String gameKey : gamesService.keySet()) { gameService.insertGameBettingDetails(startTime, endTime, GamePlatforms.MeiTian.getCode());
String platformCode = gameKey.replace(Constants.SERVICE, "");
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).getBetRecordByHistoryTime(betRecordByTimeDTO);
} catch (Exception e) {
log.error("查询 平台 {} 投注记录失败,错误信息 {}", gameSecretKey.getCode(), e);
}
}
} }
}
/** /**
* ngbetting * ngbetting
*/ */