diff --git a/game/src/main/java/com/ccsens/game/api/ClientController.java b/game/src/main/java/com/ccsens/game/api/ClientController.java index 497a0cde..766a2e57 100644 --- a/game/src/main/java/com/ccsens/game/api/ClientController.java +++ b/game/src/main/java/com/ccsens/game/api/ClientController.java @@ -35,9 +35,10 @@ public class ClientController { @ApiImplicitParams({ }) @RequestMapping(value = "groupMembers", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) - public JsonResponse groupMembers(@ApiParam @Validated @RequestBody QueryDto params) throws Exception { + public JsonResponse> groupMembers(@ApiParam @Validated @RequestBody QueryDto params) throws Exception { log.info("查看组内排行榜:{}",params); PageInfo rankingAll = clientService.groupMembers(params.getParam()); + log.info("查询组内排行榜结束"); return JsonResponse.newInstance().ok(rankingAll); } @@ -48,6 +49,7 @@ public class ClientController { public JsonResponse members(@ApiParam @Validated @RequestBody QueryDto params) throws Exception { log.info("查看全部排行榜:{}",params); ClientVo.RankingAll rankingAll = clientService.getRankingAll(params); + log.info("查询排行榜结束"); return JsonResponse.newInstance().ok(rankingAll); } @@ -59,6 +61,7 @@ public class ClientController { public JsonResponse joinGame(@ApiParam @Validated @RequestBody QueryDto params) throws Exception { log.info("参加游戏:{}",params); ClientVo.Join join = clientService.join(params.getParam(), params.getUserId()); + log.info("参加游戏结果:{}", join); return JsonResponse.newInstance().ok(join); } @@ -68,7 +71,6 @@ public class ClientController { @RequestMapping(value = "activityRule", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"}) public JsonResponse> getGameActivityRule(@ApiParam @RequestParam Long recordId) throws Exception { log.info("获取游戏规则:{}",recordId); - List gameActivityRule = screenService.getGameActivityRule(screenService.getGameTypeId(recordId)); return JsonResponse.newInstance().ok(gameActivityRule); } @@ -100,6 +102,7 @@ public class ClientController { public JsonResponse> getGroupByRecordId(@ApiParam @RequestParam Long recordId) throws Exception { log.info("根据游戏id获取分组信息:{}",recordId); List groupList = screenService.getGroupByRecordId(recordId); + log.info("分组查询结束"); return JsonResponse.newInstance().ok(groupList); } @@ -108,8 +111,9 @@ public class ClientController { }) @RequestMapping(value = "task", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"}) public JsonResponse getRecordByTaskId(@ApiParam @RequestParam Long taskId,String gameType) throws Exception { - log.info("根据游戏id获取分组信息:{}",taskId); + log.info("根据任务id获取游戏记录id:{}",taskId); ScreenVo.RecordInfo recordInfo = screenService.getRecordByTaskId(taskId,gameType); + log.info("游戏信息:{}", recordInfo); return JsonResponse.newInstance().ok(recordInfo); } } diff --git a/game/src/main/java/com/ccsens/game/bean/dto/ClientDto.java b/game/src/main/java/com/ccsens/game/bean/dto/ClientDto.java index 8c47c908..cdbcb83b 100644 --- a/game/src/main/java/com/ccsens/game/bean/dto/ClientDto.java +++ b/game/src/main/java/com/ccsens/game/bean/dto/ClientDto.java @@ -23,9 +23,9 @@ public class ClientDto { @NotNull(message = "请选择的时间") @ApiModelProperty("本地时间") private Long localTime; - @ApiModelProperty - @NotNull(message = "请选择项目") - private Long projectId; +// @ApiModelProperty("不再传参") +// @NotNull(message = "请选择项目") +// private Long projectId; @ApiModelProperty("分组id,不是分组游戏则为空") private Long groupId; } diff --git a/game/src/main/java/com/ccsens/game/bean/vo/ScreenVo.java b/game/src/main/java/com/ccsens/game/bean/vo/ScreenVo.java index 05472f35..2c38b461 100644 --- a/game/src/main/java/com/ccsens/game/bean/vo/ScreenVo.java +++ b/game/src/main/java/com/ccsens/game/bean/vo/ScreenVo.java @@ -53,6 +53,8 @@ public class ScreenVo { private Long groupId ; @ApiModelProperty("分组名称") private String groupName ; + @ApiModelProperty("头像") + private String headPortraitUrl; @ApiModelProperty("该组参赛总人数") private int totalGroupMembers ; } diff --git a/game/src/main/java/com/ccsens/game/service/ClientService.java b/game/src/main/java/com/ccsens/game/service/ClientService.java index 297cf94f..cf03792b 100644 --- a/game/src/main/java/com/ccsens/game/service/ClientService.java +++ b/game/src/main/java/com/ccsens/game/service/ClientService.java @@ -76,7 +76,7 @@ public class ClientService implements IClientService { //获取游戏的购买记录和类型 // TODO 暂时没有购买相关的,先不查询 // GameUserPay gameUserPay = gameUserPayDao.selectByPrimaryKey(gameRecord.getUserPayId()); - Boolean isGroup = gameRecord.getGameGroup() == GameConstant.GAME_GROUP; + boolean isGroup = gameRecord.getGameGroup() == GameConstant.GAME_GROUP; //根据游戏ID和用户ID查询用户是否加入 GameUserJoinExample example = new GameUserJoinExample(); @@ -87,6 +87,12 @@ public class ClientService implements IClientService { //查询结果,返回对应的信息 return joinResult(gameUserJoins.get(0), gameRecord, isGroup, join.getGroupId()); } + if (isGroup) { + if (ObjectUtil.isNull(join.getGroupId())) { + log.info("分组信息为空"); + throw new BaseException(CodeEnum.GROUP_NOT_CHOICE); + } + } //游戏已结束 if (gameRecord.getGameStatus().byteValue() == GameConstant.GAME_COMPLETED) { @@ -105,6 +111,19 @@ public class ClientService implements IClientService { joinVo.setCompletedData(completedData); return joinVo; } + + // 判断是否达到组内上限 + if (isGroup) { + GameUserJoinGroupExample groupExample = new GameUserJoinGroupExample(); + groupExample.createCriteria().andGameGroupIdEqualTo(join.getGroupId()); + long count = gameUserJoinGroupDao.countByExample(groupExample); + log.info("组内人数:{},上限:{}", count, gameRecord.getMemberLimit()); + if (count >= gameRecord.getMemberLimit()) { + throw new BaseException(CodeEnum.GROUP_MEMBER_LIMIT); + } + } + + //准备中 boolean prepare = gameRecord.getGameStatus().byteValue() == GameConstant.GAME_PREPARATION; //进行中 @@ -120,7 +139,7 @@ public class ClientService implements IClientService { userJoin.setLocalStartTime(prepare || processing ? gameRecord.getStartTime() + timeMore : 0); userJoin.setLocalEndTime(prepare || processing ? gameRecord.getEndTime() + timeMore : 0); // 获取头像和用户名 - JsonResponse memberInfo = tallFeignClient.getMemberByUserId(userId, join.getProjectId()); + JsonResponse memberInfo = tallFeignClient.getMemberByUserId(userId, gameRecord.getTaskId()); if (memberInfo.getData() == null) { memberInfo = tallFeignClient.getUserByUserId(userId); } @@ -152,10 +171,6 @@ public class ClientService implements IClientService { gameUserJoinDao.insertSelective(userJoin); //如果是分组游戏,则添加用户与组的关联表 if (isGroup) { - if (ObjectUtil.isNull(join.getGroupId())) { - log.info("分组信息为空"); - throw new BaseException(CodeEnum.PARAM_ERROR); - } GameUserJoinGroup userJoinGroup = new GameUserJoinGroup(); userJoinGroup.setId(snowflake.nextId()); userJoinGroup.setUserJoinId(userJoin.getId()); diff --git a/game/src/main/java/com/ccsens/game/service/ScreenService.java b/game/src/main/java/com/ccsens/game/service/ScreenService.java index fdca6acd..e7e8931c 100644 --- a/game/src/main/java/com/ccsens/game/service/ScreenService.java +++ b/game/src/main/java/com/ccsens/game/service/ScreenService.java @@ -557,7 +557,7 @@ public class ScreenService implements IScreenService { break; case GameConstant.GAME_PROCESSING: //查询游戏是否有分组 - if (gameType.getIsGroup() == 0) { + if (gameRecord.getGameGroup() == GameConstant.GAME_SINGLE) { //普通游戏返回前十名的信息 ScreenVo.ProcessingData processingData = new ScreenVo.ProcessingData(); // 查询前十名(列表顺序即前十名顺序) @@ -566,7 +566,8 @@ public class ScreenService implements IScreenService { gameStatusVo.setProcessingData(processingData); } else { //分组游戏则返回每个分组的信息 - List groupVoList = getGroupScore(gameRecord); +// List groupVoList = getGroupScore(gameRecord); + List groupVoList = groupVo; gameStatusVo.setProcessingData(groupVoList); } break; @@ -1186,6 +1187,7 @@ public class ScreenService implements IScreenService { ScreenVo.Group group = new ScreenVo.Group(); group.setGroupId(gameGroup.getId()); group.setGroupName(gameGroup.getName()); + group.setHeadPortraitUrl(gameGroup.getHeadPortraitUrl()); groupList.add(group); } } diff --git a/util/src/main/java/com/ccsens/util/CodeEnum.java b/util/src/main/java/com/ccsens/util/CodeEnum.java index c37eda4a..a2cd9785 100644 --- a/util/src/main/java/com/ccsens/util/CodeEnum.java +++ b/util/src/main/java/com/ccsens/util/CodeEnum.java @@ -138,6 +138,8 @@ public enum CodeEnum { VOTE_COMPLETED(116,"投票已结束",true), VOTE_NOT_START(117,"投票未开始",true), NOT_CONFIG_OR_ERR(118,"缺少配置信息,或配置信息异常",true), + GROUP_MEMBER_LIMIT(119,"当前组内人员已满,请选择其他组",true), + GROUP_NOT_CHOICE(120,"请选择要加入的队伍",true), ;