refactor(game): 重构游戏相关接口和数据结构

- 修改游戏 ID 类型从 Long 到 String
- 更新游戏创建和验证逻辑
- 调整游戏数据传输对象结构
- 优化游戏列表响应格式
main-meitian
liaoyong 2025-04-10 13:50:46 +08:00
parent fb6138f9a0
commit bf955ed14b
24 changed files with 59 additions and 71 deletions

View File

@ -631,7 +631,7 @@ public class GamesAEServiceImpl implements IGamesService {
.gameCode(resultBean.getGameCode()) .gameCode(resultBean.getGameCode())
.gameType(PlatformType.GAME_HALL.getCode()) .gameType(PlatformType.GAME_HALL.getCode())
.platformCode(GamePlatforms.AE.getCode()) .platformCode(GamePlatforms.AE.getCode())
.gameId(GAME_ID) .gameId(/*GAME_ID*/ StringUtils.addSuffix(GamePlatforms.AE.getCode(), 1))
.gameName(resultBean.getGameName()) .gameName(resultBean.getGameName())
.gameStatus(gameStatus) .gameStatus(gameStatus)
.gameStatusType(resultBean.getSettleStatus()) .gameStatusType(resultBean.getSettleStatus())

View File

@ -578,7 +578,8 @@ public class GamesDGServiceImpl implements IGamesService {
.gameCode(String.valueOf(resultBean.getGameId())) .gameCode(String.valueOf(resultBean.getGameId()))
.gameType(PlatformType.CARD_GAME.getCode()) .gameType(PlatformType.CARD_GAME.getCode())
.platformCode(GamePlatforms.DG.getCode()) .platformCode(GamePlatforms.DG.getCode())
.gameId(GAME_ID) //.gameId(GAME_ID)
.gameId(game.getGameId())
.gameName(game.getGameName()) .gameName(game.getGameName())
.gameStatus(gameStatus) .gameStatus(gameStatus)
.gameStatusType(resultBean.getGameType()) .gameStatusType(resultBean.getGameType())

View File

@ -37,7 +37,7 @@ public class ApiFCGameListResponseDTO {
/** /**
* id * id
*/ */
private Long systemGameId; private String systemGameId;
/** /**
* id * id
*/ */

View File

@ -285,7 +285,7 @@ public class GamesFCServiceImpl implements IGamesService {
game = games.get(0); game = games.get(0);
} }
gameDetails.setSystemGameId(game.getId()); gameDetails.setSystemGameId(game.getGameId());
gameDetails.setGameId(gameIdKey); gameDetails.setGameId(gameIdKey);
gameDetailsList.add(gameDetails); gameDetailsList.add(gameDetails);
} }

View File

@ -22,7 +22,7 @@ public class JILIGamesDataDTO {
/** /**
*id *id
*/ */
private Long systemGameId; private String systemGameId;
/** /**
* *

View File

@ -253,7 +253,7 @@ public class GamesJILIServiceImpl implements IGamesService {
} else { } else {
game = games.get(0); game = games.get(0);
} }
gamesDataDTO.setSystemGameId(game.getId()); gamesDataDTO.setSystemGameId(game.getGameId());
} }
@ -813,7 +813,7 @@ public class GamesJILIServiceImpl implements IGamesService {
.gameCode(jiliBetRecordDataResponseDTO.getGameId()) .gameCode(jiliBetRecordDataResponseDTO.getGameId())
.gameType(JILIGameType.findSystemByCode(jiliBetRecordDataResponseDTO.getGameCategoryId())) .gameType(JILIGameType.findSystemByCode(jiliBetRecordDataResponseDTO.getGameCategoryId()))
.platformCode(GamePlatforms.JILI.getInfo()) .platformCode(GamePlatforms.JILI.getInfo())
.gameId(gamesDataDTO.getSystemGameId()) .gameId(/*gamesDataDTO.getSystemGameId()*/gamesDataDTO.getSystemGameId())
.gameName(gamesDataDTO.getName().getZhCN()) .gameName(gamesDataDTO.getName().getZhCN())
.gameStatus(jiliBetRecordDataResponseDTO.getStatus()) .gameStatus(jiliBetRecordDataResponseDTO.getStatus())
.gameStatusType(jiliBetRecordDataResponseDTO.getType()) .gameStatusType(jiliBetRecordDataResponseDTO.getType())

View File

@ -91,7 +91,7 @@ public class KMGameResponse {
/** /**
* id * id
*/ */
private Long systemGameId; private String systemGameId;
/** /**
* *

View File

@ -302,7 +302,7 @@ public class GamesKMServiceImpl implements IGamesService {
} else { } else {
game = games.get(0); game = games.get(0);
} }
gamesDataDTO.setSystemGameId(game.getId()); gamesDataDTO.setSystemGameId(game.getGameId());
} }
return gameList.getGames(); return gameList.getGames();
} }

View File

@ -22,7 +22,7 @@ public class MeiTianGameDataDTO {
/** /**
*id *id
*/ */
private Long systemGameId; private String systemGameId;
private String gameId; private String gameId;
private String cnName; private String cnName;
private String enName; private String enName;

View File

@ -248,8 +248,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
} else { } else {
game = games.get(0); game = games.get(0);
} }
gamesDataDTO.setSystemGameId(game.getId()); gamesDataDTO.setSystemGameId(game.getGameId());
} }
redisCache.deleteObject(CacheConstants.MeiTian_GAMES); redisCache.deleteObject(CacheConstants.MeiTian_GAMES);
@ -827,10 +826,6 @@ public class MeiTianGameServiceImpl implements IGamesService {
} }
} }
public LocalDate getDate(int daysToSubtract) {
return LocalDate.now().minusDays(daysToSubtract); // 获取当前日期减去两天
}
public String getDateStr(int daysToSubtract) { public String getDateStr(int daysToSubtract) {
// 获取当前日期减去指定天数 // 获取当前日期减去指定天数
LocalDate date = LocalDate.now().minusDays(daysToSubtract); LocalDate date = LocalDate.now().minusDays(daysToSubtract);

View File

@ -711,7 +711,7 @@ public class GamesPGServiceImpl implements IGamesService {
.gameCode(gamesDataDTO.getGameCode()) .gameCode(gamesDataDTO.getGameCode())
.gameType(NGGameType.findSystemByCode(resultBean.getGameType())) .gameType(NGGameType.findSystemByCode(resultBean.getGameType()))
.platformCode(NGPlatforms.getByCode(resultBean.getPlatType()).getPlatform()) .platformCode(NGPlatforms.getByCode(resultBean.getPlatType()).getPlatform())
.gameId(gamesDataDTO.getId()) .gameId(gamesDataDTO.getGameId())
.gameName(gamesDataDTO.getGameName()) .gameName(gamesDataDTO.getGameName())
.gameStatus(gameStatus) .gameStatus(gameStatus)
.gameStatusType(1) .gameStatusType(1)

View File

@ -83,7 +83,7 @@ public class PGTGameListResponse {
/** /**
* id * id
*/ */
private Long systemGameId; private String systemGameId;
/** /**
* *

View File

@ -244,7 +244,7 @@ public class GamesPGTServiceImpl implements IGamesService {
} else { } else {
game = games.get(0); game = games.get(0);
} }
gameIdKey.setSystemGameId(game.getId()); gameIdKey.setSystemGameId(game.getGameId());
} }
@ -647,6 +647,7 @@ public class GamesPGTServiceImpl implements IGamesService {
.gameCode(resultBean.getGameCode()) .gameCode(resultBean.getGameCode())
.gameType(PGTGameType.findSystemByCode(gamesDataDTO.getCategory())) .gameType(PGTGameType.findSystemByCode(gamesDataDTO.getCategory()))
.platformCode(GamePlatforms.PGT.getCode()) .platformCode(GamePlatforms.PGT.getCode())
//.gameId(gamesDataDTO.getSystemGameId())
.gameId(gamesDataDTO.getSystemGameId()) .gameId(gamesDataDTO.getSystemGameId())
.gameName(gamesDataDTO.getName()) .gameName(gamesDataDTO.getName())
.gameStatus(PGTPayoutStatus.getByCode(resultBean.getPayoutStatus()).getSystemCode()) .gameStatus(PGTPayoutStatus.getByCode(resultBean.getPayoutStatus()).getSystemCode())

View File

@ -48,7 +48,7 @@ public class PGXGameListResponse {
/** /**
* id * id
*/ */
private Long systemGameId; private String systemGameId;
/** 游戏代码 (字符串类型) */ /** 游戏代码 (字符串类型) */
@JsonProperty("gameCode") @JsonProperty("gameCode")

View File

@ -252,7 +252,7 @@ public class GamesPGXServiceImpl implements IGamesService {
} else { } else {
game = games.get(0); game = games.get(0);
} }
gamesDataDTO.setSystemGameId(game.getId()); gamesDataDTO.setSystemGameId(game.getGameId());
} }

View File

@ -612,7 +612,7 @@ public class GamesSAServiceImpl implements IGamesService {
.gameCode(resultBean.getGameID()) .gameCode(resultBean.getGameID())
.gameType(PlatformType.CARD_GAME.getCode()) .gameType(PlatformType.CARD_GAME.getCode())
.platformCode(GamePlatforms.SA.getInfo()) .platformCode(GamePlatforms.SA.getInfo())
.gameId(GAME_ID) .gameId(/*GAME_ID*/game.getGameId())
.gameName(game.getGameName()) .gameName(game.getGameName())
.gameStatus(gameStatus) .gameStatus(gameStatus)
.gameStatusType(1) .gameStatusType(1)

View File

@ -201,7 +201,7 @@ public class SV388GamesServiceImpl implements IGamesService {
//不存在这个游戏 //不存在这个游戏
if (ObjectUtils.isEmpty(gameList)) { if (ObjectUtils.isEmpty(gameList)) {
Game game = new Game(); Game game = new Game();
game.setId(/*IdUtil.getSnowflakeNextId()*/GAME_ID); game.setId(IdUtil.getSnowflakeNextId());
game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.SV388.getCode()) + 1); game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.SV388.getCode()) + 1);
game.setPlatformCode(platform.getPlatformCode()); game.setPlatformCode(platform.getPlatformCode());
game.setPlatformType(platformType); game.setPlatformType(platformType);
@ -618,7 +618,7 @@ public class SV388GamesServiceImpl implements IGamesService {
.gameCode(resultBean.getGameCode()) .gameCode(resultBean.getGameCode())
.gameType(PlatformType.VIDEO.getCode()) .gameType(PlatformType.VIDEO.getCode())
.platformCode(GamePlatforms.SV388.getCode()) .platformCode(GamePlatforms.SV388.getCode())
.gameId(GAME_ID) .gameId(/*GAME_ID*/GamePlatforms.SV388.getCode() + "_" + 1)
.gameName(resultBean.getGameName()) .gameName(resultBean.getGameName())
.gameStatus(gameStatus) .gameStatus(gameStatus)
.gameStatusType(resultBean.getSettleStatus()) .gameStatusType(resultBean.getSettleStatus())

View File

@ -43,7 +43,7 @@ public class XKGamesDTO {
/** /**
*id *id
*/ */
private Long systemGameId; private String systemGameId;
/** /**
* jp * jp
*/ */

View File

@ -253,7 +253,7 @@ public class GamesXKServiceImpl implements IGamesService {
} else { } else {
game = games.get(0); game = games.get(0);
} }
gamesDataDTO.setSystemGameId(game.getId()); gamesDataDTO.setSystemGameId(game.getGameId());
} }
redisCache.deleteObject(CacheConstants.XK_GAMES); redisCache.deleteObject(CacheConstants.XK_GAMES);

View File

@ -53,7 +53,7 @@ public class GameBettingDetails extends BaseEntity
/** 游戏id */ /** 游戏id */
@Excel(name = "游戏id") @Excel(name = "游戏id")
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long gameId; private String gameId;
/** 游戏类型 ff_game_type 字典 */ /** 游戏类型 ff_game_type 字典 */
@Excel(name = "游戏类型 ff_game_type 字典") @Excel(name = "游戏类型 ff_game_type 字典")

View File

@ -5,7 +5,6 @@ import com.ff.sports.db.address.DBSportsAddress;
import com.ff.sports.db.dto.*; import com.ff.sports.db.dto.*;
/** /**
*
* @author cengy * @author cengy
*/ */
@Address(source = DBSportsAddress.class) @Address(source = DBSportsAddress.class)
@ -15,11 +14,14 @@ public interface DBSportsClient {
* *
* @return {@link CreateUserResponse} * @return {@link CreateUserResponse}
*/ */
@Post(url = "/api/v2/new/user/create") @Post(url = "/api/user/create",
CreateUserResponse createMember(@JSONBody CreateUserRequest request, headers = {
@Header("sign") @Var("sign") String sign, "Content-type: application/x-www-form-urlencoded"
@Header("timestamp") @Var("timestamp") long timestamp, }
@Header("merchantId") @Var("merchantId") String merchantId); )
CreateUserResponse createMember(@Body CreateUserRequest request,
@Header("requestId") @Var("requestId") String requestId,
@Header("lang") @Var("lang") String lang);
/** /**
* FB0.01 * FB0.01

View File

@ -1,12 +1,9 @@
package com.ff.sports.db.dto; package com.ff.sports.db.dto;
import com.alibaba.fastjson2.JSON; import com.ff.base.utils.sign.Md5Utils;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/** /**
* @author cengy * @author cengy
@ -16,15 +13,16 @@ public class CreateUserRequest implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private String merchantUserId;// 渠道用户id支持40位字符串必须唯一 private String userName; // 用户名(可以包含但是不要等同于特殊字符或者空格长度控制在30个字符以下)
private List<Integer> currencyIds = null; // 币种id集合 , see enum: currency private String merchantCode; // 商户code
private Integer oddsLevel = null; // 赔率级别,不传则为默认, see enum: user_odds_level_enum private String timestamp = System.currentTimeMillis() + ""; // 13位时间戳
private String currency; // 币种
private String nickname; // N 昵称
private String agentId; // N 信用网(代理id)
private String sign; // 签名 signature =MD5(MD5(userName +”&”+ merchantCode +”&”+ timestamp) + ”&”+ key)
public String toJSON() { public void calcSign(String key) {
Map<String, Object> map = new LinkedHashMap<>(); String signature = Md5Utils.md5New(Md5Utils.md5New(userName + "&" + merchantCode + "&" + timestamp) + "&" + key);
map.put("currencyIds", currencyIds); this.sign = signature;
map.put("merchantUserId", merchantUserId);
map.put("oddsLevel", oddsLevel);
return JSON.toJSONString(map);
} }
} }

View File

@ -87,31 +87,22 @@ public class DBSportsServiceImpl implements IGamesService {
/** /**
* *
* *
* @param createMemberRequestDTO dto * @param requestDTO dto
* @return {@link Boolean } * @return {@link Boolean }
*/ */
@Override @Override
public Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO) { public Boolean createMember(CreateMemberRequestDTO requestDTO) {
long timestamp = System.currentTimeMillis();
CreateUserRequest request = new CreateUserRequest(); CreateUserRequest request = new CreateUserRequest();
request.setMerchantUserId(createMemberRequestDTO.getAccount()); request.setUserName(requestDTO.getAccount());
ArrayList<Integer> currencyIds = new ArrayList<>(); request.setMerchantCode(requestDTO.getAgentId());
currencyIds.add(Integer.parseInt(createMemberRequestDTO.getCurrency())); request.setCurrency(requestDTO.getCurrency());
request.setCurrencyIds(currencyIds); request.calcSign(requestDTO.getAgentKey());
String jsonBody = /*SortByAttributeNameASC.get(request)*/ request.toJSON();
String sign = getSign(jsonBody,
createMemberRequestDTO.getAgentId(),
createMemberRequestDTO.getAgentKey(),
timestamp
);
CreateUserResponse response = dbSportsClient.createMember( String lang = "zh";
request, String requestId = IdUtils.fastUUID();
sign, CreateUserResponse response = dbSportsClient.createMember(request, requestId, lang);
timestamp, createMemberRequestDTO.getAgentId());
if (isSuccess(response.getCode())) { if (isSuccess(response.getCode())) {
log.info("创建会员成功, account:{}->{}", createMemberRequestDTO.getAccount(), response.getData());
return Boolean.TRUE; return Boolean.TRUE;
} }
@ -388,7 +379,7 @@ public class DBSportsServiceImpl implements IGamesService {
game.setPlatformType(PlatformType.SPORTS.getCode()); game.setPlatformType(PlatformType.SPORTS.getCode());
game.setGameCode("1"); game.setGameCode("1");
game.setGameSourceType(String.valueOf(1)); game.setGameSourceType(String.valueOf(1));
game.setGameName("DB体育"); game.setGameName(GamePlatforms.DBSports.getInfo());
game.setCreateBy(Constants.SYSTEM); game.setCreateBy(Constants.SYSTEM);
NameInfo nameInfo = new NameInfo(); NameInfo nameInfo = new NameInfo();
nameInfo.setLang("zh-CN"); nameInfo.setLang("zh-CN");
@ -715,8 +706,8 @@ public class DBSportsServiceImpl implements IGamesService {
if (ObjectUtils.isEmpty(member)) { if (ObjectUtils.isEmpty(member)) {
return null; return null;
} }
List<Game> gameList = redisCache.getCacheList(CacheConstants.DB_Sports); //List<Game> gameList = redisCache.getCacheList(CacheConstants.DB_Sports);
Game game = gameList.get(0); //Game game = gameList.get(0);
BigDecimal originPayoffAmount = new BigDecimal(dataBean.getSettleAmount()); BigDecimal originPayoffAmount = new BigDecimal(dataBean.getSettleAmount());
BigDecimal betAmount = new BigDecimal(dataBean.getStakeAmount()); BigDecimal betAmount = new BigDecimal(dataBean.getStakeAmount());
@ -731,11 +722,11 @@ public class DBSportsServiceImpl implements IGamesService {
//保存我们的币种id //保存我们的币种id
.currencyCode(systemCurrency) .currencyCode(systemCurrency)
.memberId(member.getId()) .memberId(member.getId())
.gameCode(game.getGameCode()) .gameCode("1")
.gameType(PlatformType.SPORTS.getCode()) // 体育 .gameType(PlatformType.SPORTS.getCode()) // 体育
.platformCode(GamePlatforms.DBSports.getCode()) .platformCode(GamePlatforms.DBSports.getCode())
.gameId(game.getId()) .gameId(GamePlatforms.DBSports.getCode() + "_1")
.gameName(game.getGameName()) .gameName(GamePlatforms.DBSports.getInfo())
.gameStatus(compareResult > 0 ? GameStatus.WIN.getCode() : compareResult < 0 ? GameStatus.FAIL.getCode() : GameStatus.FLAT.getCode()) .gameStatus(compareResult > 0 ? GameStatus.WIN.getCode() : compareResult < 0 ? GameStatus.FAIL.getCode() : GameStatus.FLAT.getCode())
.gameStatusType(1) // 一般下注 .gameStatusType(1) // 一般下注
.gameCurrencyCode(dataBean.getCurrency().toString()) .gameCurrencyCode(dataBean.getCurrency().toString())

View File

@ -732,7 +732,7 @@ public class FBSportsServiceImpl implements IGamesService {
.gameCode(game.getGameCode()) .gameCode(game.getGameCode())
.gameType(8) // 体育 .gameType(8) // 体育
.platformCode(GamePlatforms.FBSports.getCode()) .platformCode(GamePlatforms.FBSports.getCode())
.gameId(game.getId()) .gameId(game.getGameId())
.gameName(game.getGameName()) .gameName(game.getGameName())
.gameStatus(compareResult > 0 ? GameStatus.WIN.getCode() : compareResult < 0 ? GameStatus.FAIL.getCode() : GameStatus.FLAT.getCode()) .gameStatus(compareResult > 0 ? GameStatus.WIN.getCode() : compareResult < 0 ? GameStatus.FAIL.getCode() : GameStatus.FLAT.getCode())
.gameStatusType(1) // 一般下注 .gameStatusType(1) // 一般下注