|
|
@ -84,7 +84,7 @@ public class ScreenService implements IScreenService { |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public ScreenVo.UrlVo getScreenUrl(QueryDto<ScreenDto.MemberGame> params) throws Exception { |
|
|
|
log.info("创建游戏:{}",params); |
|
|
|
log.info("开始创建游戏:{}",params); |
|
|
|
ScreenDto.MemberGame memberGame = params.getParam(); |
|
|
|
Long userId = params.getUserId(); |
|
|
|
|
|
|
@ -96,6 +96,7 @@ public class ScreenService implements IScreenService { |
|
|
|
throw new BaseException(CodeEnum.NOT_GAME_TYPE); |
|
|
|
} |
|
|
|
GameType gameType = gameTypeList.get(0); |
|
|
|
log.info("查找游戏类型:{}",gameType); |
|
|
|
//2、查找此用户购买的此游戏的信息,若没有则添加一条记录,默认已付款,结束时间为添加后的一个月,默认次数为10次
|
|
|
|
GameUserPay gameUserPay = getGameUserPay(userId, gameType); |
|
|
|
//查询该任务下的游戏记录信息 如果还有其他未结束的游戏则返回提示信息
|
|
|
@ -108,6 +109,7 @@ public class ScreenService implements IScreenService { |
|
|
|
gameRecord.setId(snowflake.nextId()); |
|
|
|
gameRecord.setUserPayId(gameUserPay.getId()); |
|
|
|
gameRecord.setTaskId(memberGame.getTaskId()); |
|
|
|
gameRecord.setGameGroup((byte) 0); |
|
|
|
//添加路径
|
|
|
|
String gameUrl = WebConstant.TEST_URL_GAME_SQ; |
|
|
|
switch (gameType.getCode()){ |
|
|
@ -120,18 +122,20 @@ public class ScreenService implements IScreenService { |
|
|
|
gameRecord.setQrCodeUrl(gameUrl + gameRecord.getId() + File.separator + gameType.getClientUrl()); |
|
|
|
//查找此任务下的游戏配置表
|
|
|
|
byte businessType = 8; |
|
|
|
if( GameConstant.GAME_TYPE_SQ.equalsIgnoreCase(memberGame.getGameType())){ |
|
|
|
if( GameConstant.GAME_TYPE_SP.equalsIgnoreCase(memberGame.getGameType())){ |
|
|
|
businessType = 9; |
|
|
|
}else if( GameConstant.GAME_TYPE_BH.equalsIgnoreCase(memberGame.getGameType())){ |
|
|
|
businessType = 10; |
|
|
|
} |
|
|
|
String wpsFilePath = tallFeignClient.getWpsFilePath(memberGame.getTaskId(),businessType); |
|
|
|
log.info("游戏配置表的路径:{}",wpsFilePath); |
|
|
|
if(StrUtil.isNotEmpty(wpsFilePath)){ |
|
|
|
//添加配置信息
|
|
|
|
saveGameRecord(wpsFilePath,gameRecord); |
|
|
|
} |
|
|
|
//将游戏记录添加数据库
|
|
|
|
gameRecordDao.insertSelective(gameRecord); |
|
|
|
log.info("添加游戏记录:{}",gameRecord); |
|
|
|
//配置表不存在,而且游戏类型默认为分组游戏,默认添加两个分组
|
|
|
|
if(StrUtil.isEmpty(wpsFilePath) && gameType.getIsGroup() == 1){ |
|
|
|
if (gameType.getIsGroup() == 1) { |
|
|
@ -165,16 +169,20 @@ public class ScreenService implements IScreenService { |
|
|
|
BaseMessageDto.MessageUser messageUser; |
|
|
|
List<BaseMessageDto.MessageUser> messageUserList = new ArrayList<>(); |
|
|
|
//获取项目下所有成员
|
|
|
|
Set<String> userIdSet = new HashSet<>(); |
|
|
|
List<Long> memberIdList = tallFeignClient.getMemberIdListByProject(memberGame.getProjectId()); |
|
|
|
if (CollectionUtil.isNotEmpty(memberIdList)) { |
|
|
|
for (Long memberId : memberIdList) { |
|
|
|
messageUser = new BaseMessageDto.MessageUser(); |
|
|
|
messageUser.setUserId(memberId); |
|
|
|
messageUserList.add(messageUser); |
|
|
|
// messageUser = new BaseMessageDto.MessageUser();
|
|
|
|
// messageUser.setUserId(memberId);
|
|
|
|
// messageUserList.add(messageUser);
|
|
|
|
userIdSet.add(memberId.toString()); |
|
|
|
} |
|
|
|
} |
|
|
|
chromeMessageDto.setReceivers(messageUserList); |
|
|
|
messageService.sendGameMessageWithGetUrl(chromeMessageDto); |
|
|
|
messageService.sendGameMessageWithGetUrl(chromeMessageDto,userIdSet); |
|
|
|
log.info("给所有成员发送消息:{}",chromeMessageDto); |
|
|
|
log.info("返回游戏信息:{}",urlVo); |
|
|
|
return urlVo; |
|
|
|
} |
|
|
|
|
|
|
@ -193,11 +201,13 @@ public class ScreenService implements IScreenService { |
|
|
|
if(ObjectUtil.isNull(sheet)){ throw new BaseException(CodeEnum.NOT_CONFIG_OR_ERR); } |
|
|
|
//比赛模式
|
|
|
|
XSSFRow gamePatternRow = sheet.getRow(1); |
|
|
|
log.info("游戏模式:{}",gamePatternRow); |
|
|
|
if(ObjectUtil.isNotNull(gamePatternRow)){ |
|
|
|
String gamePattern = ExcelUtil.getCellValue(gamePatternRow.getCell(1)); |
|
|
|
|
|
|
|
if(gamePattern.equalsIgnoreCase(GameConstant.EXCEL_GAME_GROUP)){ |
|
|
|
gameRecord.setGameGroup((byte) 1); |
|
|
|
}else { |
|
|
|
gameRecord.setGameGroup((byte) 0); |
|
|
|
} |
|
|
|
} |
|
|
|
//比赛时长
|
|
|
@ -209,7 +219,7 @@ public class ScreenService implements IScreenService { |
|
|
|
//人数上限
|
|
|
|
XSSFRow memberLimitRow = sheet.getRow(3); |
|
|
|
if(ObjectUtil.isNotNull(memberLimitRow)){ |
|
|
|
int memberLimit = Integer.parseInt(ExcelUtil.getCellValue(durationRow.getCell(1))); |
|
|
|
int memberLimit = Integer.parseInt(ExcelUtil.getCellValue(memberLimitRow.getCell(1))); |
|
|
|
gameRecord.setMemberLimit(memberLimit); |
|
|
|
} |
|
|
|
//排名计算方式
|
|
|
@ -223,10 +233,10 @@ public class ScreenService implements IScreenService { |
|
|
|
//添加分组信息
|
|
|
|
if(gameRecord.getGameGroup() == 1){ |
|
|
|
for (int i = 8; i < sheet.getLastRowNum(); i++){ |
|
|
|
XSSFRow groupRow = sheet.getRow(1); |
|
|
|
XSSFRow groupRow = sheet.getRow(i); |
|
|
|
if(ObjectUtil.isNotNull(groupRow)){ |
|
|
|
String groupName = ExcelUtil.getCellValue(groupRow.getCell(0)); |
|
|
|
String groupUrl = ExcelUtil.getCellValue(groupRow.getCell(0)); |
|
|
|
String groupUrl = ExcelUtil.getCellValue(groupRow.getCell(1)); |
|
|
|
if(ObjectUtil.isNotNull(groupName)){ |
|
|
|
GameGroup gameGroup = new GameGroup(); |
|
|
|
gameGroup.setId(snowflake.nextId()); |
|
|
@ -237,6 +247,7 @@ public class ScreenService implements IScreenService { |
|
|
|
gameGroup.setHeadPortraitUrl(groupUrl); |
|
|
|
} |
|
|
|
gameGroupDao.insertSelective(gameGroup); |
|
|
|
log.info("添加了分组:{}",gameGroup); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -410,13 +421,14 @@ public class ScreenService implements IScreenService { |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public ScreenVo.GameInfoVo getGameInformation(QueryDto<ScreenDto.MemberRecord> params) { |
|
|
|
log.info("获取游戏基本信息:{}",params); |
|
|
|
//传入
|
|
|
|
ScreenDto.MemberRecord memberRecord = params.getParam(); |
|
|
|
//返回
|
|
|
|
ScreenVo.GameInfoVo gameInfoVo = new ScreenVo.GameInfoVo(); |
|
|
|
|
|
|
|
GameRecord gameRecord = getGameRecord(memberRecord.getMemberRecord()); |
|
|
|
|
|
|
|
log.info("查找游戏信息:{}",gameRecord); |
|
|
|
GameUserPay gameUserPay = gameUserPayDao.selectByPrimaryKey(gameRecord.getUserPayId()); |
|
|
|
if (ObjectUtil.isNull(gameUserPay)) { |
|
|
|
throw new BaseException(CodeEnum.NOT_GAME_TYPE); |
|
|
@ -817,6 +829,7 @@ public class ScreenService implements IScreenService { |
|
|
|
BeanUtil.copyProperties(gameRecord,gameRecordNew); |
|
|
|
gameRecordNew.setId(snowflake.nextId()); |
|
|
|
gameRecordNew.setUserPayId(gameUserPay.getId()); |
|
|
|
gameRecordNew.setGameStatus(GameConstant.GAME_PENDING); |
|
|
|
//添加路径
|
|
|
|
String gameUrl = WebConstant.TEST_URL_GAME_SQ; |
|
|
|
switch (gameType.getCode()){ |
|
|
@ -841,6 +854,7 @@ public class ScreenService implements IScreenService { |
|
|
|
GameGroup gameGroupNew = new GameGroup(); |
|
|
|
BeanUtil.copyProperties(gameGroup,gameGroupNew); |
|
|
|
gameGroupNew.setId(snowflake.nextId()); |
|
|
|
gameGroupNew.setRecordId(gameRecordNew.getId()); |
|
|
|
gameGroupDao.insertSelective(gameGroupNew); |
|
|
|
}); |
|
|
|
} |
|
|
@ -853,16 +867,18 @@ public class ScreenService implements IScreenService { |
|
|
|
BaseMessageDto.MessageUser messageUser; |
|
|
|
List<BaseMessageDto.MessageUser> messageUserList = new ArrayList<>(); |
|
|
|
//获取项目下所有成员
|
|
|
|
Set<String> userIdSet = new HashSet<>(); |
|
|
|
List<Long> memberIdList = tallFeignClient.getMemberIdListByProject(memberRecord.getProjectId()); |
|
|
|
if (CollectionUtil.isNotEmpty(memberIdList)) { |
|
|
|
for (Long memberId : memberIdList) { |
|
|
|
messageUser = new BaseMessageDto.MessageUser(); |
|
|
|
messageUser.setUserId(memberId); |
|
|
|
messageUserList.add(messageUser); |
|
|
|
// messageUser = new BaseMessageDto.MessageUser();
|
|
|
|
// messageUser.setUserId(memberId);
|
|
|
|
// messageUserList.add(messageUser);
|
|
|
|
userIdSet.add(memberId.toString()); |
|
|
|
} |
|
|
|
} |
|
|
|
chromeMessageDto.setReceivers(messageUserList); |
|
|
|
messageService.sendGameMessageWithGetUrl(chromeMessageDto); |
|
|
|
messageService.sendGameMessageWithGetUrl(chromeMessageDto,userIdSet); |
|
|
|
|
|
|
|
return gameRecordNew.getUrl(); |
|
|
|
} |
|
|
@ -1191,10 +1207,11 @@ public class ScreenService implements IScreenService { |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<String> getConfig(QueryDto<ScreenDto.GetConfig> params)throws Exception { |
|
|
|
log.info("获取游戏的配置表:{}",params); |
|
|
|
ScreenDto.GetConfig getConfig = params.getParam(); |
|
|
|
//根据游戏类型获取文件类型
|
|
|
|
byte businessType = 8; |
|
|
|
if( GameConstant.GAME_TYPE_SQ.equalsIgnoreCase(getConfig.getGameType())){ |
|
|
|
if( GameConstant.GAME_TYPE_SP.equalsIgnoreCase(getConfig.getGameType())){ |
|
|
|
businessType = 9; |
|
|
|
}else if( GameConstant.GAME_TYPE_BH.equalsIgnoreCase(getConfig.getGameType())){ |
|
|
|
businessType = 10; |
|
|
@ -1206,6 +1223,7 @@ public class ScreenService implements IScreenService { |
|
|
|
visitWpsUrl.setBusinessType(businessType); |
|
|
|
visitWpsUrl.setUserId(params.getUserId()); |
|
|
|
wpsPath = tallFeignClient.queryVisitUrls(visitWpsUrl); |
|
|
|
log.info("是否已有创建的游戏配置:{}",wpsPath); |
|
|
|
//有配置直接返回
|
|
|
|
if (CollectionUtil.isNotEmpty(wpsPath)) { |
|
|
|
return wpsPath; |
|
|
@ -1219,9 +1237,10 @@ public class ScreenService implements IScreenService { |
|
|
|
throw new BaseException(CodeEnum.NOT_GAME_TYPE); |
|
|
|
} |
|
|
|
GameType gameType = gameTypeList.get(0); |
|
|
|
|
|
|
|
log.info("查找游戏类型信息:{}",gameType); |
|
|
|
//生成excel写入的数据
|
|
|
|
String templatePath = WebConstant.HOME_STATICREC + "GameConfig.xlsx"; |
|
|
|
log.info("游戏配置模板的地址:{}",templatePath); |
|
|
|
InputStream is = new FileInputStream(new File(templatePath)); |
|
|
|
Workbook wb = new XSSFWorkbook(is); |
|
|
|
//生成文件
|
|
|
@ -1235,6 +1254,8 @@ public class ScreenService implements IScreenService { |
|
|
|
OutputStream stream = new FileOutputStream(tmpFile); |
|
|
|
wb.write(stream); |
|
|
|
stream.close(); |
|
|
|
is.close(); |
|
|
|
log.info("新生成模板文件的路径:{}",path); |
|
|
|
//关联wps
|
|
|
|
WpsDto.Business business = new WpsDto.Business(); |
|
|
|
business.setBusinessId(getConfig.getTaskId()); |
|
|
@ -1246,8 +1267,8 @@ public class ScreenService implements IScreenService { |
|
|
|
business.setOperation(WebConstant.Wps.USER_OPERATION_NEW); |
|
|
|
business.setPrivilege(WebConstant.Wps.PROJECT_PRIVILEGE_WRITE); |
|
|
|
tallFeignClient.saveWpsFile(business); |
|
|
|
|
|
|
|
return tallFeignClient.queryVisitUrls(visitWpsUrl); |
|
|
|
wpsPath = tallFeignClient.queryVisitUrls(visitWpsUrl); |
|
|
|
return wpsPath; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|