From 4a720d6bdf9eaf76be097465f4ffe32c27ae45da Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Fri, 21 Aug 2020 17:27:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=89=8B=E6=9C=BA=E5=86=8D?= =?UTF-8?q?=E7=8E=A9=E4=B8=80=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cloudutil/feign/TallFeignClient.java | 2 +- .../com/ccsens/game/api/ScreenController.java | 10 +++ .../com/ccsens/game/bean/dto/ScreenDto.java | 9 +++ .../com/ccsens/game/bean/vo/ScreenVo.java | 4 + .../ccsens/game/service/IScreenService.java | 12 +++ .../ccsens/game/service/ScreenService.java | 77 ++++++++++++++++++- .../java/com/ccsens/game/util/SendMsg.java | 33 ++++++-- .../com/ccsens/tall/config/SpringConfig.java | 2 +- .../com/ccsens/tall/service/UserService.java | 3 +- .../com/ccsens/tall/web/UserController.java | 3 +- tall/src/main/resources/application.yml | 4 +- 11 files changed, 144 insertions(+), 15 deletions(-) diff --git a/cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java b/cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java index ace5ad5c..bfed3df8 100644 --- a/cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java +++ b/cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java @@ -113,7 +113,7 @@ public interface TallFeignClient { * * @return */ - @GetMapping("/users/userInfo") + @GetMapping("/users/getUserInfo") JsonResponse getUserByUserId(@RequestParam(name = "userId") Long userId); diff --git a/game/src/main/java/com/ccsens/game/api/ScreenController.java b/game/src/main/java/com/ccsens/game/api/ScreenController.java index cff14889..1b1523ae 100644 --- a/game/src/main/java/com/ccsens/game/api/ScreenController.java +++ b/game/src/main/java/com/ccsens/game/api/ScreenController.java @@ -83,6 +83,16 @@ public class ScreenController { return JsonResponse.newInstance().ok(url); } + @Login + @ApiOperation(value = "手机端再玩一次", notes = "") + @ApiImplicitParams({ + }) + @RequestMapping(value = "startAgainByPhone", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse startAgainByPhone(@ApiParam @Validated @RequestBody QueryDto params) throws Exception { + log.info("手机端再玩一次:{}",params); + Long recordId = screenService.startAgainByPhone(params); + return JsonResponse.newInstance().ok(recordId); + } @Login @ApiOperation(value = "自定义游戏时查询游戏配置信息excel", notes = "") diff --git a/game/src/main/java/com/ccsens/game/bean/dto/ScreenDto.java b/game/src/main/java/com/ccsens/game/bean/dto/ScreenDto.java index a9acd5b6..a5b391b9 100644 --- a/game/src/main/java/com/ccsens/game/bean/dto/ScreenDto.java +++ b/game/src/main/java/com/ccsens/game/bean/dto/ScreenDto.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; @Data @@ -35,6 +36,14 @@ public class ScreenDto { private Long projectId; } + @Data + @ApiModel("手机端再玩一次") + public static class StartAgainByPhone{ + @NotEmpty + @ApiModelProperty("游戏类型") + private String gameType; + } + @Data @ApiModel public static class MemberRecordAndTime{ 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 974a6ba0..6d1d75f4 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 @@ -166,6 +166,10 @@ public class ScreenVo { private Integer score; @ApiModelProperty("该组的总次数/均次数") private Integer times; + @ApiModelProperty("该组的总分") + private Integer totalScore; + @ApiModelProperty("该组的总次数") + private Integer totalTimes; @ApiModelProperty("该组总人数") private Integer totalMembers; @ApiModelProperty("code") diff --git a/game/src/main/java/com/ccsens/game/service/IScreenService.java b/game/src/main/java/com/ccsens/game/service/IScreenService.java index dd7f90b8..1fce6da0 100644 --- a/game/src/main/java/com/ccsens/game/service/IScreenService.java +++ b/game/src/main/java/com/ccsens/game/service/IScreenService.java @@ -15,6 +15,13 @@ public interface IScreenService { ScreenVo.GameStatusVo getGameStatusVo(QueryDto params); + /** + * 查找分组信息(排序) + * @param gameRecord 游戏记录 + * @return 返回排序后的每个组的信息 + */ + List getGroupScore2(GameRecord gameRecord); + String startAgain(QueryDto params) throws Exception; /** @@ -56,4 +63,9 @@ public interface IScreenService { * @return */ List getConfig(QueryDto params)throws Exception; + + /** + * 手机端再玩一次 + */ + Long startAgainByPhone(QueryDto params); } 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 38f508bf..cab1ed37 100644 --- a/game/src/main/java/com/ccsens/game/service/ScreenService.java +++ b/game/src/main/java/com/ccsens/game/service/ScreenService.java @@ -599,7 +599,8 @@ public class ScreenService implements IScreenService { /** * 进行中查询每个组的信息 */ - private List getGroupScore2(GameRecord gameRecord) { + @Override + public List getGroupScore2(GameRecord gameRecord) { String groupKey = gameRecord.getId() + "_group"; Set> typedTuples = redisUtil.zsRevGetWithScore(groupKey, 0, -1); if(CollectionUtil.isNotEmpty(typedTuples)){ @@ -616,7 +617,8 @@ public class ScreenService implements IScreenService { o = 0; } groupVo.setTotalMembers((int)o); - + groupVo.setTotalScore(score); + groupVo.setTotalTimes(score / 100); if(gameRecord.getRankRule() == GameConstant.RANK_RULE_AVA){ groupVo.setScore((int)o == 0 ? 0 : score / (int)o); groupVo.setTimes(groupVo.getScore() /100); @@ -637,6 +639,10 @@ public class ScreenService implements IScreenService { return vos; } List vos = gameGroupDao.queryGroups(gameRecord.getId()); + vos.forEach(vo ->{ + vo.setTotalScore(vo.getScore()); + vo.setTotalTimes(vo.getScore() == null ? 0 : vo.getScore() / 100); + }); if (CollectionUtil.isEmpty(vos) || gameRecord.getRankRule() == GameConstant.RANK_RULE_TOTAL) { return vos; } @@ -1433,4 +1439,71 @@ public class ScreenService implements IScreenService { return wpsPath; } + + /** + * 手机端再玩一次 + * @param params 游戏类型 + * @return 返回游戏id + */ + @Override + public Long startAgainByPhone(QueryDto params) { + log.info("手机端再玩一次:{}",params); + ScreenDto.StartAgainByPhone startAgainByPhone = params.getParam(); + Long userId = params.getUserId(); + + //查找游戏 + GameTypeExample gameTypeExample = new GameTypeExample(); + gameTypeExample.createCriteria().andCodeEqualTo(startAgainByPhone.getGameType()); + List gameTypeList = gameTypeDao.selectByExample(gameTypeExample); + if (CollectionUtil.isEmpty(gameTypeList)) { + throw new BaseException(CodeEnum.NOT_GAME_TYPE); + } + GameType gameType = gameTypeList.get(0); + log.info("查找游戏类型:{}",gameType); + //2、查找此用户购买的此游戏的信息,若没有则添加一条记录,默认已付款,结束时间为添加后的一个月,默认次数为10次 + GameUserPay gameUserPay = getGameUserPay(userId, gameType); + + //3、根据用户购买的记录,添加一场新的游戏记录 + GameRecord gameRecord = new GameRecord(); + gameRecord.setId(snowflake.nextId()); + gameRecord.setUserPayId(gameUserPay.getId()); + gameRecord.setGameGroup((byte) 0); + //添加路径 + String gameUrl = PropUtil.notGatewayUrl + WebConstant.TEST_URL_GAME_SQ; + switch (gameType.getCode()){ + case GameConstant.GAME_TYPE_SQ: break; + case GameConstant.GAME_TYPE_SP: gameUrl = PropUtil.notGatewayUrl + WebConstant.TEST_URL_GAME_SP; break; + case GameConstant.GAME_TYPE_BH: gameUrl = PropUtil.notGatewayUrl + WebConstant.TEST_URL_GAME_BH; break; + default:break; + } + gameRecord.setUrl(gameUrl + gameType.getScreenUrl() + "?id=" + gameRecord.getId()); + gameRecordDao.insertSelective(gameRecord); + + log.info("添加游戏记录:{}",gameRecord); + //配置表不存在,而且游戏类型默认为分组游戏,默认添加两个分组 + if (gameType.getIsGroup() == 1) { + GameGroup gameGroupRed = new GameGroup(); + gameGroupRed.setId(snowflake.nextId()); + gameGroupRed.setRecordId(gameRecord.getId()); + gameGroupRed.setName("红队"); + gameGroupRed.setCode(GameConstant.FIRST_GROUP); + gameGroupDao.insertSelective(gameGroupRed); + GameGroup gameGroupBlue = new GameGroup(); + gameGroupBlue.setId(snowflake.nextId()); + gameGroupBlue.setRecordId(gameRecord.getId()); + gameGroupBlue.setName("蓝队"); + gameGroupBlue.setCode(GameConstant.SECOND_GROUP); + gameGroupDao.insertSelective(gameGroupBlue); + } + + //5、查询该游戏的规则 + List ruleList = getGameActivityRule(gameType.getId()); + //6、返回 + ScreenVo.UrlVo urlVo = new ScreenVo.UrlVo(); + urlVo.setId(gameRecord.getId()); + urlVo.setUrl(gameRecord.getUrl()); + urlVo.setRuleList(ruleList); + + return gameRecord.getId(); + } } diff --git a/game/src/main/java/com/ccsens/game/util/SendMsg.java b/game/src/main/java/com/ccsens/game/util/SendMsg.java index 1cb39162..33e4922a 100644 --- a/game/src/main/java/com/ccsens/game/util/SendMsg.java +++ b/game/src/main/java/com/ccsens/game/util/SendMsg.java @@ -8,7 +8,9 @@ import com.ccsens.game.bean.dto.message.ChangeStatusMessageDto; import com.ccsens.game.bean.dto.message.GameMessageWithChangeStatusOut; import com.ccsens.game.bean.po.GameRecord; import com.ccsens.game.bean.vo.ClientVo; -import com.ccsens.game.service.ClientService; +import com.ccsens.game.bean.vo.ScreenVo; +import com.ccsens.game.service.IClientService; +import com.ccsens.game.service.IScreenService; import com.ccsens.util.JacksonUtil; import com.ccsens.util.RedisUtil; import com.ccsens.util.WebConstant; @@ -16,10 +18,11 @@ import com.ccsens.util.config.RabbitMQConfig; import com.fasterxml.jackson.core.JsonProcessingException; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.AmqpTemplate; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.data.redis.core.ZSetOperations; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -35,11 +38,14 @@ import java.util.concurrent.TimeUnit; @Service @Slf4j public class SendMsg { - @Autowired - private ClientService clientService; - @Autowired + @Resource + private IClientService clientService; + @Lazy + @Resource + private IScreenService screenService; + @Resource private AmqpTemplate rabbitTemplate; - @Autowired + @Resource private RedisUtil redisUtil; public void sendStatus(GameRecord gameRecord, List userJoins, byte status) throws JsonProcessingException { @@ -84,7 +90,20 @@ public class SendMsg { ChangeStatusMessageDto.CompletedData completedData = new ChangeStatusMessageDto.CompletedData(); //如果是分组游戏,获取本组分数信息 if (ObjectUtil.isNotNull(join.getGroupId())) { - ClientVo.GroupScore groupScore = clientService.getGroupScore(join.getGroupId(),gameRecord.getId()); +// ClientVo.GroupScore groupScore = clientService.getGroupScore(join.getGroupId(),gameRecord.getId()); +// completedData.setGroupScore(groupScore); + ClientVo.GroupScore groupScore = new ClientVo.GroupScore(); + List groupVoList = screenService.getGroupScore2(gameRecord); + for (int i = 0; i < groupVoList.size(); i++) { + ScreenVo.GroupVo groupVo = groupVoList.get(i); + if(groupVo.getGroupId().longValue() == join.getGroupId().longValue()){ + groupScore = new ClientVo.GroupScore(); + groupScore.setGroupScore(groupVo.getTotalScore()); + groupScore.setGroupTimes(groupVo.getTotalTimes()); + groupScore.setGroupSort(i+1); + break; + } + } completedData.setGroupScore(groupScore); } completedData.setTimes(join.getTimes()); diff --git a/tall/src/main/java/com/ccsens/tall/config/SpringConfig.java b/tall/src/main/java/com/ccsens/tall/config/SpringConfig.java index 834da481..157e6222 100644 --- a/tall/src/main/java/com/ccsens/tall/config/SpringConfig.java +++ b/tall/src/main/java/com/ccsens/tall/config/SpringConfig.java @@ -147,7 +147,7 @@ public class SpringConfig implements WebMvcConfigurer { .excludePathPatterns("/users/userId") .excludePathPatterns("/users/mergeUserId") .excludePathPatterns("/users/code") - .excludePathPatterns("/users/userInfo") + .excludePathPatterns("/users/getUserInfo") .addPathPatterns("/plugins/**") .excludePathPatterns("/plugins/sign") .excludePathPatterns("/plugins/fuzzy") diff --git a/tall/src/main/java/com/ccsens/tall/service/UserService.java b/tall/src/main/java/com/ccsens/tall/service/UserService.java index eb90b959..0707e5e3 100644 --- a/tall/src/main/java/com/ccsens/tall/service/UserService.java +++ b/tall/src/main/java/com/ccsens/tall/service/UserService.java @@ -1361,6 +1361,7 @@ public class UserService implements IUserService { public UserVo.WxInfo updateUserInfo(Long currentUserId, UserDto.WxInfo userInfo) { //通过userId查找到用户 SysUser user = userDao.selectByPrimaryKey(currentUserId); + log.info("查找到原来的user信息,{}",user); if (ObjectUtil.isNull(user)) { throw new BaseException(CodeEnum.NOT_LOGIN); } @@ -1387,7 +1388,7 @@ public class UserService implements IUserService { user.setLanguage(userInfo.getLanguage()); } userDao.updateByPrimaryKeySelective(user); - + log.info("修改后的user信息,{}",user); UserVo.WxInfo wxInfo = new UserVo.WxInfo(); BeanUtil.copyProperties(user, wxInfo); wxInfo.setHeadImgUrl(user.getAvatarUrl()); diff --git a/tall/src/main/java/com/ccsens/tall/web/UserController.java b/tall/src/main/java/com/ccsens/tall/web/UserController.java index 15f342be..2962f7c5 100644 --- a/tall/src/main/java/com/ccsens/tall/web/UserController.java +++ b/tall/src/main/java/com/ccsens/tall/web/UserController.java @@ -245,6 +245,7 @@ public class UserController { @RequestMapping(value = "/userInfo", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public JsonResponse updateUserInfo(HttpServletRequest request, @ApiParam @RequestBody UserDto.WxInfo userInfo) throws Exception { + log.info("修改用户信息,{}",userInfo); Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject()); UserVo.WxInfo wxInfo = userService.updateUserInfo(currentUserId, userInfo); return JsonResponse.newInstance().ok(wxInfo); @@ -448,7 +449,7 @@ public class UserController { /** * 查询user的信息 */ - @RequestMapping(value = "userInfo", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"}) + @RequestMapping(value = "getUserInfo", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"}) public JsonResponse getUserInfoByUserId(Long userId) throws Exception { MemberVo.MemberInfo memberInfo = proMemberService.getUserInfoByUserId(userId); diff --git a/tall/src/main/resources/application.yml b/tall/src/main/resources/application.yml index 4fc2efe4..b2acd365 100644 --- a/tall/src/main/resources/application.yml +++ b/tall/src/main/resources/application.yml @@ -1,4 +1,4 @@ spring: profiles: - active: prod - include: util-prod,common + active: dev + include: util-dev,common