Browse Source

0819_1.0

master
zy_Java 5 years ago
parent
commit
0b17aee982
  1. 4
      game/src/main/java/com/ccsens/game/bean/vo/ScreenVo.java
  2. 10
      game/src/main/java/com/ccsens/game/config/SpringConfig.java
  3. 9
      game/src/main/java/com/ccsens/game/service/IMessageService.java
  4. 7
      game/src/main/java/com/ccsens/game/service/MessageService.java
  5. 59
      game/src/main/java/com/ccsens/game/service/ScreenService.java
  6. 2
      game/src/main/java/com/ccsens/game/util/GameConstant.java
  7. 4
      tall/src/main/java/com/ccsens/tall/service/ProMemberService.java
  8. 9
      tall/src/main/java/com/ccsens/tall/web/PimsController.java

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

@ -31,9 +31,9 @@ public class ScreenVo {
@ApiModelProperty("已用次数")
private int usedCount ;
@ApiModelProperty("总人数")
private int totalMembers ;
private int totalMembers;
@ApiModelProperty("分组信息")
private List<GroupVo> groups ;
private List<GroupVo> groups;
@ApiModelProperty("未开始")
private PendingData pendingData;

10
game/src/main/java/com/ccsens/game/config/SpringConfig.java

@ -78,12 +78,12 @@ public class SpringConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS");
registry.addMapping("/**").allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
// .allowedMethods("*") // 允许提交请求的方法,*表示全部允许
// .allowedOrigins("*") // #允许向该服务器提交请求的URI,*表示全部允许
// .allowCredentials(true) // 允许cookies跨域
// .allowedHeaders("*") // #允许访问的头信息,*表示全部
// .maxAge(18000L); // 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了
.allowedOrigins("*") // #允许向该服务器提交请求的URI,*表示全部允许
.allowCredentials(true) // 允许cookies跨域
.allowedHeaders("*") // #允许访问的头信息,*表示全部
.maxAge(18000L); // 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了
}

9
game/src/main/java/com/ccsens/game/service/IMessageService.java

@ -1,14 +1,17 @@
package com.ccsens.game.service;
import com.ccsens.game.bean.dto.message.*;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.ccsens.game.bean.dto.message.AckMessageDto;
import com.ccsens.game.bean.dto.message.AuthMessageDto;
import com.ccsens.game.bean.dto.message.ChromeMessageDto;
import com.ccsens.game.bean.dto.message.GameMessageWithChangeStatusOut;
import io.netty.channel.ChannelHandlerContext;
import java.util.List;
import java.util.Set;
public interface IMessageService {
//获取路径后给每个人发送游戏路径消息
void sendGameMessageWithGetUrl(ChromeMessageDto message) throws Exception;
void sendGameMessageWithGetUrl(ChromeMessageDto messag, Set<String> userIdSet) throws Exception;
void doAckMessageWithAck(String userId, AckMessageDto message);

7
game/src/main/java/com/ccsens/game/service/MessageService.java

@ -20,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
import static com.ccsens.game.netty.ChannelManager.sendTo;
@ -34,16 +35,16 @@ public class MessageService implements IMessageService {
private GameUserJoinDao gameUserJoinDao;
@Override
public void sendGameMessageWithGetUrl(ChromeMessageDto message) throws Exception {
public void sendGameMessageWithGetUrl(ChromeMessageDto message, Set<String> userIdSet) throws Exception {
log.info(JacksonUtil.beanToJson(message));
// rabbitTemplate.convertAndSend(RabbitMQConfig.RabbitMQ_QUEUE_NAME,
// JacksonUtil.beanToJson(message));
InMessage inMessage = new InMessage();
inMessage.setToDomain(MessageConstant.DomainType.User);
inMessage.setTos(message.receiversTransTos());
inMessage.setTos(userIdSet);
inMessage.setData(JSONObject.toJSONString(message));
rabbitTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME, inMessage);
rabbitTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME, JSONObject.toJSONString(inMessage));
}
@Override

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

@ -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;
}
}

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

@ -40,7 +40,7 @@ public class GameConstant {
/**个人*/
public static final String EXCEL_GAME_INDIVIDUAL = "个人";
/**团体*/
public static final String EXCEL_GAME_GROUP = "团";
public static final String EXCEL_GAME_GROUP = "团";
/**按人均分排名*/
public static final String GAME_RANK_AVE = "按人均分排名";
/**按总分排名*/

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

@ -219,12 +219,12 @@ public class ProMemberService implements IProMemberService {
public List<Long> getMemberIdByProjectId(Long projectId) {
List<Long> memberIdList = null;
ProMemberExample memberExample = new ProMemberExample();
memberExample.createCriteria().andProjectIdEqualTo(projectId);
memberExample.createCriteria().andProjectIdEqualTo(projectId).andUserIdNotEqualTo(0L);
List<ProMember> proMemberList = proMemberDao.selectByExample(memberExample);
if(CollectionUtil.isNotEmpty(proMemberList)){
memberIdList = new ArrayList<>();
for(ProMember member : proMemberList){
if(ObjectUtil.isNotNull(member.getUserId())){
if(ObjectUtil.isNotNull(member.getUserId()) && member.getUserId() != 0){
memberIdList.add(member.getUserId());
}
}

9
tall/src/main/java/com/ccsens/tall/web/PimsController.java

@ -61,4 +61,13 @@ public class PimsController {
WpsVo.BusinessFileIdAndPath wpsPath = wpsService.getPathById(wpsId);
return JsonResponse.newInstance().ok(wpsPath);
}
@ApiOperation(value = "通过业务id和业务类型查找文件路径",notes = "")
@ApiImplicitParams({
})
@RequestMapping(value = "/getFilePath", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"})
public String getFilePath(HttpServletRequest request, @RequestParam(required = true) Long businessId, byte businessType){
return wpsService.getFilePath(businessId,businessType);
}
}

Loading…
Cancel
Save