游戏新增gameInfo字段
This commit is contained in:
parent
fcbed65ae5
commit
732c3d180b
@ -1,15 +1,13 @@
|
|||||||
package com.red.circle.other.app.command.game.ludo;
|
package com.red.circle.other.app.command.game.ludo;
|
||||||
|
|
||||||
import com.red.circle.component.redis.service.RedisService;
|
import com.red.circle.component.redis.service.RedisService;
|
||||||
import com.red.circle.external.inner.endpoint.message.ImGroupClient;
|
|
||||||
import com.red.circle.external.inner.model.cmd.message.BroadcastGroupMsgBodyCmd;
|
|
||||||
import com.red.circle.external.inner.model.enums.message.GroupMessageTypeEnum;
|
|
||||||
import com.red.circle.framework.core.asserts.ResponseAssert;
|
import com.red.circle.framework.core.asserts.ResponseAssert;
|
||||||
import com.red.circle.framework.core.response.CommonErrorCode;
|
import com.red.circle.framework.core.response.CommonErrorCode;
|
||||||
import com.red.circle.framework.web.props.EnvProperties;
|
import com.red.circle.framework.web.props.EnvProperties;
|
||||||
import com.red.circle.other.app.convertor.game.GameLudoAppConvertor;
|
import com.red.circle.other.app.convertor.game.GameLudoAppConvertor;
|
||||||
import com.red.circle.other.app.convertor.user.UserProfileAppConvertor;
|
import com.red.circle.other.app.convertor.user.UserProfileAppConvertor;
|
||||||
import com.red.circle.other.app.dto.clientobject.game.GameLudoRunCO;
|
import com.red.circle.other.app.dto.clientobject.game.GameLudoRunCO;
|
||||||
|
import com.red.circle.other.infra.database.rds.entity.sys.GameListConfig;
|
||||||
import com.red.circle.other.app.dto.cmd.game.GameLudoCreateCmd;
|
import com.red.circle.other.app.dto.cmd.game.GameLudoCreateCmd;
|
||||||
import com.red.circle.other.domain.gateway.user.UserProfileGateway;
|
import com.red.circle.other.domain.gateway.user.UserProfileGateway;
|
||||||
import com.red.circle.other.infra.database.cache.service.other.GameCacheService;
|
import com.red.circle.other.infra.database.cache.service.other.GameCacheService;
|
||||||
@ -20,6 +18,7 @@ import com.red.circle.other.infra.database.mongo.entity.game.ludo.GameStatus;
|
|||||||
import com.red.circle.other.infra.database.mongo.entity.game.ludo.GameStatusEvent;
|
import com.red.circle.other.infra.database.mongo.entity.game.ludo.GameStatusEvent;
|
||||||
import com.red.circle.other.infra.database.mongo.service.game.GameLudoRunService;
|
import com.red.circle.other.infra.database.mongo.service.game.GameLudoRunService;
|
||||||
import com.red.circle.other.infra.database.rds.service.live.RoomMemberService;
|
import com.red.circle.other.infra.database.rds.service.live.RoomMemberService;
|
||||||
|
import com.red.circle.other.infra.database.rds.service.sys.GameListConfigService;
|
||||||
import com.red.circle.other.inner.asserts.GameErrorCode;
|
import com.red.circle.other.inner.asserts.GameErrorCode;
|
||||||
import com.red.circle.other.inner.asserts.user.UserErrorCode;
|
import com.red.circle.other.inner.asserts.user.UserErrorCode;
|
||||||
import com.red.circle.other.inner.enums.live.RoomUserRolesEnum;
|
import com.red.circle.other.inner.enums.live.RoomUserRolesEnum;
|
||||||
@ -47,7 +46,6 @@ public class GameLudoCreateCmdExe {
|
|||||||
|
|
||||||
private final RedisService redisService;
|
private final RedisService redisService;
|
||||||
private final EnvProperties envProperties;
|
private final EnvProperties envProperties;
|
||||||
private final ImGroupClient imGroupClient;
|
|
||||||
private final WalletGoldClient walletGoldClient;
|
private final WalletGoldClient walletGoldClient;
|
||||||
private final GameCacheService gameCacheService;
|
private final GameCacheService gameCacheService;
|
||||||
private final RoomMemberService roomMemberService;
|
private final RoomMemberService roomMemberService;
|
||||||
@ -55,6 +53,7 @@ public class GameLudoCreateCmdExe {
|
|||||||
private final GameLudoRunService gameLudoRunService;
|
private final GameLudoRunService gameLudoRunService;
|
||||||
private final GameLudoAppConvertor gameLudoAppConvertor;
|
private final GameLudoAppConvertor gameLudoAppConvertor;
|
||||||
private final UserProfileAppConvertor userProfileAppConvertor;
|
private final UserProfileAppConvertor userProfileAppConvertor;
|
||||||
|
private final GameListConfigService gameListConfigService;
|
||||||
|
|
||||||
public GameLudoRunCO execute(GameLudoCreateCmd cmd) {
|
public GameLudoRunCO execute(GameLudoCreateCmd cmd) {
|
||||||
|
|
||||||
@ -76,15 +75,14 @@ public class GameLudoCreateCmdExe {
|
|||||||
ResponseAssert.isFalse(GameErrorCode.GAME_CREATED,
|
ResponseAssert.isFalse(GameErrorCode.GAME_CREATED,
|
||||||
gameLudoRunService.exists(cmd.getRoomId()));
|
gameLudoRunService.exists(cmd.getRoomId()));
|
||||||
|
|
||||||
gameLudoRun = createGameLudoRun(cmd);
|
GameListConfig gameListConfig = gameListConfigService.getById(cmd.getGameId());
|
||||||
|
ResponseAssert.notNull(GameErrorCode.GAME_NOT_EXIST, gameListConfig);
|
||||||
|
|
||||||
|
gameLudoRun = createGameLudoRun(cmd, gameListConfig);
|
||||||
ResponseAssert.isTrue(GameErrorCode.GAME_CREATED, gameLudoRunService.create(gameLudoRun));
|
ResponseAssert.isTrue(GameErrorCode.GAME_CREATED, gameLudoRunService.create(gameLudoRun));
|
||||||
gameCacheService.inrJoinNumberPeopleLudo(gameLudoRun.getId());
|
gameCacheService.inrJoinNumberPeopleLudo(gameLudoRun.getId());
|
||||||
gameCacheService.setJoinGameLudo(gameLudoRun.getId(), gameLudoRun.getUserId());
|
gameCacheService.setJoinGameLudo(gameLudoRun.getId(), gameLudoRun.getUserId());
|
||||||
|
|
||||||
imGroupClient
|
|
||||||
.sendMessageBroadcast(
|
|
||||||
BroadcastGroupMsgBodyCmd.builder().type(GroupMessageTypeEnum.CREATE_GAME_LUDO)
|
|
||||||
.data(gameLudoRun.getId()).toPlatform(cmd.requireReqSysOriginEnum()).build());
|
|
||||||
} finally {
|
} finally {
|
||||||
redisService.unlock(lockKey(cmd));
|
redisService.unlock(lockKey(cmd));
|
||||||
}
|
}
|
||||||
@ -95,16 +93,24 @@ public class GameLudoCreateCmdExe {
|
|||||||
return "CREATE_LUDO".concat(cmd.getRoomId().toString());
|
return "CREATE_LUDO".concat(cmd.getRoomId().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
private GameLudoRun createGameLudoRun(GameLudoCreateCmd cmd) {
|
private GameLudoRun createGameLudoRun(GameLudoCreateCmd cmd, GameListConfig config) {
|
||||||
BigDecimal consumeAmount = consumeAmount(cmd);
|
BigDecimal consumeAmount = consumeAmount(cmd);
|
||||||
UserProfileDTO userProfile = userProfileAppConvertor.toUserProfileDTO(
|
UserProfileDTO userProfile = userProfileAppConvertor.toUserProfileDTO(
|
||||||
userProfileGateway.getByUserId(cmd.getHomeownerUserId()));
|
userProfileGateway.getByUserId(cmd.getHomeownerUserId()));
|
||||||
ResponseAssert.notNull(UserErrorCode.USER_INFO_NOT_FOUND, userProfile);
|
ResponseAssert.notNull(UserErrorCode.USER_INFO_NOT_FOUND, userProfile);
|
||||||
|
GameLudoRun.GameInfo gameInfo = new GameLudoRun.GameInfo();
|
||||||
|
gameInfo.setId(config.getId());
|
||||||
|
gameInfo.setGameId(config.getGameId());
|
||||||
|
gameInfo.setName(config.getName());
|
||||||
|
gameInfo.setGameCode(config.getGameCode());
|
||||||
|
gameInfo.setCover(config.getCover());
|
||||||
return new GameLudoRun()
|
return new GameLudoRun()
|
||||||
.setId(cmd.getRoomId())
|
.setId(cmd.getRoomId())
|
||||||
.setSysOrigin(cmd.getReqSysOrigin().getOrigin())
|
.setSysOrigin(cmd.getReqSysOrigin().getOrigin())
|
||||||
.setRoomId(cmd.getRoomId())
|
.setRoomId(cmd.getRoomId())
|
||||||
.setUserId(cmd.getHomeownerUserId())
|
.setUserId(cmd.getHomeownerUserId())
|
||||||
|
.setGameId(cmd.getGameId())
|
||||||
|
.setGameInfo(gameInfo)
|
||||||
.setGameStatus(GameStatus.WAIT)
|
.setGameStatus(GameStatus.WAIT)
|
||||||
.setGameStatusEvent(GameStatusEvent.NONE)
|
.setGameStatusEvent(GameStatusEvent.NONE)
|
||||||
.setJoinAmount(cmd.getAmount())
|
.setJoinAmount(cmd.getAmount())
|
||||||
|
|||||||
@ -79,5 +79,24 @@ public class GameLudoRunCO extends ClientObject {
|
|||||||
*/
|
*/
|
||||||
private Timestamp createTime;
|
private Timestamp createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 游戏信息.
|
||||||
|
*/
|
||||||
|
private GameInfo gameInfo;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class GameInfo {
|
||||||
|
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private String gameId;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private String gameCode;
|
||||||
|
|
||||||
|
private String cover;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,6 +40,11 @@ public class GameLudoCreateCmd extends AppExtCommand {
|
|||||||
@NotNull(message = "localSeat required.")
|
@NotNull(message = "localSeat required.")
|
||||||
private String localSeat;
|
private String localSeat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 游戏ID
|
||||||
|
*/
|
||||||
|
private Long gameId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 房主id.
|
* 房主id.
|
||||||
*
|
*
|
||||||
|
|||||||
@ -50,6 +50,26 @@ public class GameLudoRun implements Serializable {
|
|||||||
@JsonSerialize(using = ToStringSerializer.class)
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 游戏ID(游戏列表的ID)
|
||||||
|
*/
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long gameId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 游戏信息快照.
|
||||||
|
*/
|
||||||
|
private GameInfo gameInfo;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class GameInfo {
|
||||||
|
private Long id;
|
||||||
|
private String gameId;
|
||||||
|
private String name;
|
||||||
|
private String gameCode;
|
||||||
|
private String cover;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 游戏状态.
|
* 游戏状态.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user