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())
.gameType(PlatformType.GAME_HALL.getCode())
.platformCode(GamePlatforms.AE.getCode())
.gameId(GAME_ID)
.gameId(/*GAME_ID*/ StringUtils.addSuffix(GamePlatforms.AE.getCode(), 1))
.gameName(resultBean.getGameName())
.gameStatus(gameStatus)
.gameStatusType(resultBean.getSettleStatus())

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -248,8 +248,7 @@ public class MeiTianGameServiceImpl implements IGamesService {
} else {
game = games.get(0);
}
gamesDataDTO.setSystemGameId(game.getId());
gamesDataDTO.setSystemGameId(game.getGameId());
}
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) {
// 获取当前日期减去指定天数
LocalDate date = LocalDate.now().minusDays(daysToSubtract);

View File

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

View File

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

View File

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

View File

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

View File

@ -252,7 +252,7 @@ public class GamesPGXServiceImpl implements IGamesService {
} else {
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())
.gameType(PlatformType.CARD_GAME.getCode())
.platformCode(GamePlatforms.SA.getInfo())
.gameId(GAME_ID)
.gameId(/*GAME_ID*/game.getGameId())
.gameName(game.getGameName())
.gameStatus(gameStatus)
.gameStatusType(1)

View File

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

View File

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

View File

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

View File

@ -53,7 +53,7 @@ public class GameBettingDetails extends BaseEntity
/** 游戏id */
@Excel(name = "游戏id")
@JsonSerialize(using = ToStringSerializer.class)
private Long gameId;
private String gameId;
/** 游戏类型 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.*;
/**
*
* @author cengy
*/
@Address(source = DBSportsAddress.class)
@ -15,11 +14,14 @@ public interface DBSportsClient {
*
* @return {@link CreateUserResponse}
*/
@Post(url = "/api/v2/new/user/create")
CreateUserResponse createMember(@JSONBody CreateUserRequest request,
@Header("sign") @Var("sign") String sign,
@Header("timestamp") @Var("timestamp") long timestamp,
@Header("merchantId") @Var("merchantId") String merchantId);
@Post(url = "/api/user/create",
headers = {
"Content-type: application/x-www-form-urlencoded"
}
)
CreateUserResponse createMember(@Body CreateUserRequest request,
@Header("requestId") @Var("requestId") String requestId,
@Header("lang") @Var("lang") String lang);
/**
* FB0.01

View File

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

View File

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

View File

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