Browse Source

0820_3.0

master
zy_Java 5 years ago
parent
commit
407aa6cf3e
  1. 2
      game/src/main/java/com/ccsens/game/bean/vo/ScreenVo.java
  2. 45
      game/src/main/java/com/ccsens/game/service/ClientService.java
  3. 39
      game/src/main/java/com/ccsens/game/service/ScreenService.java
  4. 4
      game/src/main/java/com/ccsens/game/util/GameConstant.java
  5. 2
      game/src/main/resources/application-test.yml
  6. 1
      tall/src/main/java/com/ccsens/tall/config/SpringConfig.java
  7. 36
      tall/src/main/java/com/ccsens/tall/service/ProMemberService.java
  8. 2
      tall/src/main/java/com/ccsens/tall/web/UserController.java
  9. 2
      util/src/main/java/com/ccsens/util/PropUtil.java
  10. 2
      util/src/main/java/com/ccsens/util/StringUtil.java

2
game/src/main/java/com/ccsens/game/bean/vo/ScreenVo.java

@ -160,6 +160,8 @@ public class ScreenVo {
private String headPortraitUrl;
@ApiModelProperty("该组的总分/均分")
private Integer score;
@ApiModelProperty("该组的总次数/均次数")
private Integer times;
@ApiModelProperty("该组总人数")
private int totalMembers;
@ApiModelProperty("code")

45
game/src/main/java/com/ccsens/game/service/ClientService.java

@ -8,14 +8,16 @@ import com.alibaba.fastjson.JSON;
import com.ccsens.cloudutil.bean.tall.vo.MemberVo;
import com.ccsens.cloudutil.feign.TallFeignClient;
import com.ccsens.game.bean.dto.ClientDto;
import com.ccsens.game.bean.dto.message.*;
import com.ccsens.game.bean.dto.message.GameMessageCountOut;
import com.ccsens.game.bean.po.*;
import com.ccsens.game.bean.vo.ClientVo;
import com.ccsens.game.bean.vo.ScreenVo;
import com.ccsens.game.persist.dao.*;
import com.ccsens.game.util.GameConstant;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.RedisUtil;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.util.exception.BaseException;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@ -24,10 +26,12 @@ import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.ccsens.util.bean.dto.QueryDto;
import javax.annotation.Resource;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @description: 游戏客户端接口
@ -139,11 +143,13 @@ public class ClientService implements IClientService {
userJoin.setLocalStartTime(prepare || processing ? gameRecord.getStartTime() + timeMore : 0);
userJoin.setLocalEndTime(prepare || processing ? gameRecord.getEndTime() + timeMore : 0);
// 获取头像和用户名
JsonResponse<MemberVo.MemberInfo> memberInfo = tallFeignClient.getMemberInfoByUserIdAndTaskId(userId, gameRecord.getTaskId());
if (memberInfo.getData() == null) {
memberInfo = tallFeignClient.getUserByUserId(userId);
}
if (memberInfo.getCode().intValue() == CodeEnum.SUCCESS.getCode().intValue() && memberInfo.getData() != null) {
// JsonResponse<MemberVo.MemberInfo> memberInfo = tallFeignClient.getMemberInfoByUserIdAndTaskId(userId, gameRecord.getTaskId());
// if (memberInfo.getData() == null) {
// memberInfo = tallFeignClient.getUserByUserId(userId);
// }
JsonResponse<MemberVo.MemberInfo> memberInfo = tallFeignClient.getUserByUserId(userId);
if (memberInfo != null && memberInfo.getCode().intValue() == CodeEnum.SUCCESS.getCode().intValue() && memberInfo.getData() != null) {
userJoin.setAvatarUrl(memberInfo.getData().getAvatarUrl());
userJoin.setNickname(memberInfo.getData().getNickname());
@ -179,6 +185,7 @@ public class ClientService implements IClientService {
// 缓存小组人数
String key = join.getGroupId() + GameConstant.GAME_GROUP_NUM;
Object o = redisUtil.get(key);
redisUtil.set(key, o == null ? 1 : (int)o + 1, GameConstant.REDIS_TIME_TWENTY);
}
// 3.更新redis(sort set key:分数 value:头像,姓名)
@ -294,6 +301,28 @@ public class ClientService implements IClientService {
int otherGroupScore = 0;
//查找所有队伍
String groupKey = recordId + "_group";
Set<ZSetOperations.TypedTuple<Object>> typedTuples = redisUtil.zsRevGetWithScore(groupKey, 0, -1);
if(CollectionUtil.isNotEmpty(typedTuples)){
List<ScreenVo.GroupVo> vos = new ArrayList<>();
AtomicInteger index = new AtomicInteger(0);
typedTuples.forEach(type -> {
index.set(index.get() + 1);
GameGroup gameGroup = JSON.parseObject((String) type.getValue(), GameGroup.class);
if(gameGroup.getId().longValue() == groupId.longValue()){
groupScore.setGroupScore(type.getScore().intValue());
groupScore.setGroupTimes(type.getScore().intValue() / 100);
groupScore.setGroupSort(index.get());
}
});
if(groupScore.getGroupSort() != null) {
return groupScore;
}
}
GameGroupExample gameGroupExample = new GameGroupExample();
gameGroupExample.createCriteria().andRecordIdEqualTo(recordId);
List<GameGroup> gameGroupList = gameGroupDao.selectByExample(gameGroupExample);

39
game/src/main/java/com/ccsens/game/service/ScreenService.java

@ -227,8 +227,17 @@ public class ScreenService implements IScreenService {
//比赛时长
XSSFRow durationRow = sheet.getRow(2);
if(ObjectUtil.isNotNull(durationRow)){
int duration = Integer.parseInt(ExcelUtil.getCellValue(durationRow.getCell(1)));
gameRecord.setDuration(duration);
String durationStr = ExcelUtil.getCellValue(durationRow.getCell(1));
if(StrUtil.isNotEmpty(durationStr)){
boolean match = StringUtil.isMatch(durationStr, StringUtil.NUMBER_DOUBLE);
if(match){
int duration = (int) Double.parseDouble(durationStr) * 60;
gameRecord.setDuration(duration);
}else {
throw new BaseException(CodeEnum.NOT_CONFIG_OR_ERR);
}
}
}
//人数上限
XSSFRow memberLimitRow = sheet.getRow(3);
@ -600,11 +609,29 @@ public class ScreenService implements IScreenService {
ScreenVo.GroupVo groupVo = new ScreenVo.GroupVo();
groupVo.setGroupId(gameGroup.getId());
groupVo.setGroupName(gameGroup.getName());
groupVo.setScore(score);
groupVo.setTotalMembers((int)redisUtil.get(gameGroup.getId() + GameConstant.GAME_GROUP_NUM));
Object o = redisUtil.get(gameGroup.getId() + GameConstant.GAME_GROUP_NUM);
if (ObjectUtil.isNotNull(o)) {
o = 0;
}
groupVo.setTotalMembers((int)o);
if(gameRecord.getRankRule() == GameConstant.RANK_RULE_AVA){
groupVo.setScore((int)o == 0 ? 0 : score / (int)o);
groupVo.setTimes(groupVo.getScore() /100);
}else {
groupVo.setScore(score);
groupVo.setTimes(score / 100);
}
log.info("分数{},人数{}",score,o);
// groupVo.setTotalMembers((int)redisUtil.get(gameGroup.getId() + GameConstant.GAME_GROUP_NUM));
groupVo.setHeadPortraitUrl(gameGroup.getHeadPortraitUrl());
vos.add(groupVo);
});
if(gameRecord.getRankRule() == GameConstant.RANK_RULE_AVA){
CollectionUtil.sort(vos, Comparator.comparingInt(ScreenVo.GroupVo::getScore));
}
return vos;
}
List<ScreenVo.GroupVo> vos = gameGroupDao.queryGroups(gameRecord.getId());
@ -879,8 +906,8 @@ public class ScreenService implements IScreenService {
String fileName = "/gameQrCode/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".png";
String path = WebConstant.UPLOAD_PATH_BASE + fileName;
WxXcxUtil.getWxCode(WebConstant.QRCODE_GAME
, "id=" + gameRecord.getId() + "&type=" + gameType.getCode(), null, path,gameType.getCode());
gameRecord.setQrCodeUrl(PropUtil.qrCode + fileName);
, "id=" + gameRecordNew.getId() + "&type=" + gameType.getCode(), null, path,gameType.getCode());
gameRecordNew.setQrCodeUrl(PropUtil.qrCode + fileName);
log.info("调用微信生成二维码");
} else {
log.info("测试环境,不调用生成二维码");

4
game/src/main/java/com/ccsens/game/util/GameConstant.java

@ -50,9 +50,9 @@ public class GameConstant {
/**按总分排名*/
public static final String GAME_RANK_TOTAL = "按总分排名";
/**排序规则:分*/
/**排序规则:平均分*/
public static final byte RANK_RULE_AVA = 1;
/**排序规则:分*/
/**排序规则:分*/
public static final byte RANK_RULE_TOTAL = 0;
/**游戏:分组*/
public static final byte GAME_GROUP = 1;

2
game/src/main/resources/application-test.yml

@ -34,4 +34,4 @@ gatewayUrl: https://test.tall.wiki/gateway/
notGatewayUrl: https://test.tall.wiki/
file:
qrCode: https://test.tall.wiki/gateway/tall/v1.0/uploads/
openWX: 1
openWX: 0

1
tall/src/main/java/com/ccsens/tall/config/SpringConfig.java

@ -147,6 +147,7 @@ public class SpringConfig implements WebMvcConfigurer {
.excludePathPatterns("/users/userId")
.excludePathPatterns("/users/mergeUserId")
.excludePathPatterns("/users/code")
.excludePathPatterns("/users/userInfo")
.addPathPatterns("/plugins/**")
.excludePathPatterns("/plugins/sign")
.excludePathPatterns("/plugins/fuzzy")

36
tall/src/main/java/com/ccsens/tall/service/ProMemberService.java

@ -193,24 +193,24 @@ public class ProMemberService implements IProMemberService {
memberInfo.setUserId(user.getId());
memberInfo.setNickname(user.getNickname());
memberInfo.setAvatarUrl(user.getAvatarUrl());
//查询该用户的手机号
SysAuthExample authExample = new SysAuthExample();
authExample.createCriteria().andIdentifyTypeEqualTo((byte) WebConstant.IDENTIFY_TYPE.Phone.value)
.andUserIdEqualTo(user.getId());
List<SysAuth> authList = authDao.selectByExample(authExample);
if(CollectionUtil.isNotEmpty(authList)){
memberInfo.setPhone(authList.get(0).getIdentifier());
}
if(ObjectUtil.isNull(user.getNickname())){
//查找账号名
SysAuthExample sysAuthExample = new SysAuthExample();
sysAuthExample.createCriteria().andIdentifyTypeEqualTo((byte) WebConstant.IDENTIFY_TYPE.Account.value)
.andUserIdEqualTo(user.getId());
List<SysAuth> accountAuth = authDao.selectByExample(sysAuthExample);
if(CollectionUtil.isNotEmpty(accountAuth)){
memberInfo.setNickname(accountAuth.get(0).getIdentifier());
}
}
// //查询该用户的手机号
// SysAuthExample authExample = new SysAuthExample();
// authExample.createCriteria().andIdentifyTypeEqualTo((byte) WebConstant.IDENTIFY_TYPE.Phone.value)
// .andUserIdEqualTo(user.getId());
// List<SysAuth> authList = authDao.selectByExample(authExample);
// if(CollectionUtil.isNotEmpty(authList)){
// memberInfo.setPhone(authList.get(0).getIdentifier());
// }
// if(ObjectUtil.isNull(user.getNickname())){
// //查找账号名
// SysAuthExample sysAuthExample = new SysAuthExample();
// sysAuthExample.createCriteria().andIdentifyTypeEqualTo((byte) WebConstant.IDENTIFY_TYPE.Account.value)
// .andUserIdEqualTo(user.getId());
// List<SysAuth> accountAuth = authDao.selectByExample(sysAuthExample);
// if(CollectionUtil.isNotEmpty(accountAuth)){
// memberInfo.setNickname(accountAuth.get(0).getIdentifier());
// }
// }
}
return memberInfo;
}

2
tall/src/main/java/com/ccsens/tall/web/UserController.java

@ -449,7 +449,7 @@ public class UserController {
* 查询user的信息
*/
@RequestMapping(value = "userInfo", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"})
public JsonResponse<MemberVo.MemberInfo> getUserInfoByUserId( Long userId) throws Exception {
public JsonResponse<MemberVo.MemberInfo> getUserInfoByUserId(Long userId) throws Exception {
MemberVo.MemberInfo memberInfo = proMemberService.getUserInfoByUserId(userId);
return JsonResponse.newInstance().ok(memberInfo);

2
util/src/main/java/com/ccsens/util/PropUtil.java

@ -66,7 +66,7 @@ public class PropUtil {
PropUtil.smsCode = smsCode;
}
@Value("${file.openWX:}")
public static void setOpenWx(String openWx) {
public void setOpenWx(String openWx) {
PropUtil.openWx = openWx;
}
}

2
util/src/main/java/com/ccsens/util/StringUtil.java

@ -1,7 +1,6 @@
package com.ccsens.util;
import cn.hutool.core.util.StrUtil;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
@ -44,6 +43,7 @@ public class StringUtil {
public final static String NUMBER = "\\d+";
private static final String NUMBER_FORMAT = "^[-\\+]?\\d+$";
public static final String NUMBER_DOUBLE = "([1-9]+[0-9]*|0)(\\.[\\d]+)?";
private static final String SEX_FORMAT = "^[01]$";
/**

Loading…
Cancel
Save