|
|
@ -72,6 +72,8 @@ public class ProvinceService implements IProvinceService { |
|
|
|
ProvinceCompeteVo.CompeteOverview competeOverview = competeCompanyDao.getCompanyOverview(param.getCompeteTimeId(),userId); |
|
|
|
if(ObjectUtil.isNotNull(competeOverview)){ |
|
|
|
competeOverview.setProjectNum(competeCompanyDao.getJoinProjectNum(competeOverview.getCompanyId())); |
|
|
|
}else { |
|
|
|
competeOverview = new ProvinceCompeteVo.CompeteOverview(); |
|
|
|
} |
|
|
|
return competeOverview; |
|
|
|
} |
|
|
@ -81,7 +83,13 @@ public class ProvinceService implements IProvinceService { |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public List<ProvinceCompeteVo.GroupAndPlayer> queryPlayerByGroupId(ProvinceCompeteDto.QueryPlayerByGroup param, Long userId) { |
|
|
|
return competeCompanyDao.queryPlayerByGroupId(param.getCompanyId(),param.getGroupId(),param.getProjectId()); |
|
|
|
//查找比赛类型
|
|
|
|
int type = 0; |
|
|
|
CompeteCompany company = competeCompanyDao.selectByPrimaryKey(param.getCompanyId()); |
|
|
|
if(ObjectUtil.isNotNull(company)){ |
|
|
|
type = company.getType(); |
|
|
|
} |
|
|
|
return competeCompanyDao.queryPlayerByGroupId(type,param.getCompanyId(),param.getGroupId(),param.getProjectId()); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -388,25 +396,48 @@ public class ProvinceService implements IProvinceService { |
|
|
|
//查找项目信息
|
|
|
|
CompeteProject competeProject = competeProjectMapper.selectByPrimaryKey(param.getProjectId()); |
|
|
|
if(ObjectUtil.isNull(competeProject)){ throw new BaseException(CodeEnum.PARAM_ERROR); } |
|
|
|
|
|
|
|
//检查参赛人数是否符合
|
|
|
|
if(CollectionUtil.isEmpty(param.getPlayerId())){ throw new BaseException(CodeEnum.PARAM_ERROR); } |
|
|
|
if(param.getPlayerId().size() < competeProject.getMemberMin() || param.getPlayerId().size() > competeProject.getMemberMax()){ |
|
|
|
if(CollectionUtil.isEmpty(param.getPlayers())){ throw new BaseException(CodeEnum.PARAM_ERROR); } |
|
|
|
int joinCount = 0; |
|
|
|
for(ProvinceCompeteDto.JoinProjectPlayer joinProject : param.getPlayers()){ |
|
|
|
if(joinProject.getJoinProject() == 1){ |
|
|
|
joinCount++; |
|
|
|
} |
|
|
|
} |
|
|
|
if(joinCount < competeProject.getMemberMin() || joinCount > competeProject.getMemberMax()){ |
|
|
|
throw new BaseException(CodeEnum.TEAM_MEMBER_ERROR); |
|
|
|
} |
|
|
|
//判断项目是个人还是团队
|
|
|
|
//判断项目是个人还是团队,参加
|
|
|
|
if(competeProject.getTeam() == 0){ |
|
|
|
param.getPlayerId().forEach(playerId -> { |
|
|
|
CompetePlayer player = competePlayerDao.selectByPrimaryKey(playerId); |
|
|
|
if(ObjectUtil.isNull(player)){ throw new BaseException(CodeEnum.PARAM_ERROR); } |
|
|
|
param.getPlayers().forEach(joinPlayer -> { |
|
|
|
//检查此用户之前是否参加此项目
|
|
|
|
CompeteProjectPlayerExample example = new CompeteProjectPlayerExample(); |
|
|
|
example.createCriteria().andProjectIdEqualTo(competeProject.getId()).andPlayerIdEqualTo(joinPlayer.getPlayerId()) |
|
|
|
.andCompeteTimeIdEqualTo(param.getCompeteTimeId()); |
|
|
|
List<CompeteProjectPlayer> competeProjectPlayerList = projectPlayerMapper.selectByExample(example); |
|
|
|
//用户现在不参加且之前已经参加本项目,退出
|
|
|
|
if(joinPlayer.getJoinProject() == 0 && CollectionUtil.isNotEmpty(competeProjectPlayerList)) { |
|
|
|
competeProjectPlayerList.forEach(projectPlayer -> { |
|
|
|
projectPlayer.setRecStatus((byte) 2); |
|
|
|
projectPlayerMapper.updateByPrimaryKeySelective(projectPlayer); |
|
|
|
}); |
|
|
|
} |
|
|
|
//用户现在参加且之前未参加本项目,参加
|
|
|
|
if(joinPlayer.getJoinProject() == 1 && CollectionUtil.isEmpty(competeProjectPlayerList)) { |
|
|
|
CompetePlayer player = competePlayerDao.selectByPrimaryKey(joinPlayer.getPlayerId()); |
|
|
|
if (ObjectUtil.isNull(player)) { |
|
|
|
throw new BaseException(CodeEnum.PARAM_ERROR); |
|
|
|
} |
|
|
|
//查找此公司此组别是否参加过这个项目
|
|
|
|
int num = competeCompanyDao.getNumByCompanyAndGroup(competeProject.getId(),player.getCompanyId(),player.getCompeteGroupId(),param.getCompeteTimeId()); |
|
|
|
if(num > 0){ |
|
|
|
int num = competeCompanyDao.getNumByCompanyAndGroup(competeProject.getId(), player.getCompanyId(), player.getCompeteGroupId(), param.getCompeteTimeId()); |
|
|
|
if (num > 0) { |
|
|
|
throw new BaseException(CodeEnum.JOIN_PROJECT_NUM_FULL.mtProjectMsg("该项目该组别")); |
|
|
|
} |
|
|
|
//查找个人参赛数量是否符合
|
|
|
|
CompeteProjectPlayerExample projectPlayerExample = new CompeteProjectPlayerExample(); |
|
|
|
projectPlayerExample.createCriteria().andPlayerIdEqualTo(playerId).andCompeteTimeIdEqualTo(param.getCompeteTimeId()); |
|
|
|
if(projectPlayerMapper.countByExample(projectPlayerExample) >= 3){ |
|
|
|
projectPlayerExample.createCriteria().andPlayerIdEqualTo(joinPlayer.getPlayerId()).andCompeteTimeIdEqualTo(param.getCompeteTimeId()); |
|
|
|
if (projectPlayerMapper.countByExample(projectPlayerExample) >= 3) { |
|
|
|
throw new BaseException(CodeEnum.JOIN_PROJECT_NUM_FULL.mtProjectMsg(player.getName())); |
|
|
|
} |
|
|
|
//参加比赛记录
|
|
|
@ -414,41 +445,53 @@ public class ProvinceService implements IProvinceService { |
|
|
|
projectPlayer.setId(snowflake.nextId()); |
|
|
|
projectPlayer.setCompeteTimeId(param.getCompeteTimeId()); |
|
|
|
projectPlayer.setProjectId(param.getProjectId()); |
|
|
|
projectPlayer.setPlayerId(playerId); |
|
|
|
projectPlayer.setPlayerId(joinPlayer.getPlayerId()); |
|
|
|
projectPlayer.setCompeteGroupId(player.getCompeteGroupId()); |
|
|
|
projectPlayer.setGenderGroup(player.getGender()); |
|
|
|
projectPlayerMapper.insertSelective(projectPlayer); |
|
|
|
} |
|
|
|
}); |
|
|
|
}else { |
|
|
|
//查找当前公司是否已经报名次项目
|
|
|
|
//查找当前公司是否已经报名此项目
|
|
|
|
CompeteTeam competeTeam; |
|
|
|
CompeteTeamExample teamExample = new CompeteTeamExample(); |
|
|
|
teamExample.createCriteria().andProjectIdEqualTo(competeProject.getId()).andCompanyIdEqualTo(param.getCompanyId()).andCompeteTimeIdEqualTo(param.getCompeteTimeId()); |
|
|
|
if(competeTeamDao.countByExample(teamExample) > 0){ |
|
|
|
throw new BaseException(CodeEnum.JOIN_PROJECT_NUM_FULL.mtProjectMsg("该项目")); |
|
|
|
} |
|
|
|
//生成团队
|
|
|
|
CompeteTeam competeTeam = new CompeteTeam(); |
|
|
|
List<CompeteTeam> competeTeamList = competeTeamDao.selectByExample(teamExample); |
|
|
|
if(CollectionUtil.isNotEmpty(competeTeamList)){ |
|
|
|
competeTeam = competeTeamList.get(0); |
|
|
|
}else { |
|
|
|
competeTeam = new CompeteTeam(); |
|
|
|
competeTeam.setId(snowflake.nextId()); |
|
|
|
competeTeam.setCompeteTimeId(param.getCompeteTimeId()); |
|
|
|
competeTeam.setProjectId(param.getProjectId()); |
|
|
|
competeTeam.setCompanyId(param.getCompanyId()); |
|
|
|
//添加成员表
|
|
|
|
for (int i = 0; i < param.getPlayerId().size(); i++) { |
|
|
|
CompetePlayer player = competePlayerDao.selectByPrimaryKey(param.getPlayerId().get(i)); |
|
|
|
//添加团队表
|
|
|
|
competeTeamDao.insertSelective(competeTeam); |
|
|
|
} |
|
|
|
|
|
|
|
for (int i = 0; i < param.getPlayers().size(); i++) { |
|
|
|
ProvinceCompeteDto.JoinProjectPlayer joinProjectPlayer = param.getPlayers().get(i); |
|
|
|
CompetePlayer player = competePlayerDao.selectByPrimaryKey(joinProjectPlayer.getPlayerId()); |
|
|
|
if(ObjectUtil.isNull(player)){ throw new BaseException(CodeEnum.PARAM_ERROR); } |
|
|
|
//查找改选手是否在本团队内
|
|
|
|
CompeteTeamMemberExample memberExample = new CompeteTeamMemberExample(); |
|
|
|
memberExample.createCriteria().andPlayerIdEqualTo(player.getId()) |
|
|
|
.andCompeteTeamIdEqualTo(competeTeam.getId()); |
|
|
|
List<CompeteTeamMember> teamMemberList = teamMemberMapper.selectByExample(memberExample); |
|
|
|
//选手现在不参加,但以前参加了。删除以前的数据
|
|
|
|
if(joinProjectPlayer.getJoinProject() == 0 && CollectionUtil.isNotEmpty(teamMemberList)){ |
|
|
|
teamMemberList.forEach(member -> { |
|
|
|
member.setRecStatus((byte) 2); |
|
|
|
teamMemberMapper.updateByPrimaryKeySelective(member); |
|
|
|
}); |
|
|
|
} |
|
|
|
//选手这次参加,以前未参加,添加数据
|
|
|
|
if(joinProjectPlayer.getJoinProject() == 1 && CollectionUtil.isEmpty(teamMemberList)){ |
|
|
|
//检查该选手报名项目数量
|
|
|
|
int a = competeCompanyDao.getTeamNumByPlayerId(param.getCompeteTimeId(),player.getId()); |
|
|
|
if(a >= 6){ |
|
|
|
throw new BaseException(CodeEnum.JOIN_PROJECT_NUM_FULL.mtProjectMsg(player.getName())); |
|
|
|
} |
|
|
|
//团队性别组根据参赛成员而定
|
|
|
|
if (i == 0){ |
|
|
|
competeTeam.setGenderGroup(player.getGender()); |
|
|
|
}else { |
|
|
|
if(!competeTeam.getGenderGroup().equals(player.getGender())){ |
|
|
|
competeTeam.setGenderGroup((byte) 2); |
|
|
|
} |
|
|
|
} |
|
|
|
//添加成员表
|
|
|
|
CompeteTeamMember teamMember = new CompeteTeamMember(); |
|
|
|
teamMember.setId(snowflake.nextId()); |
|
|
@ -456,8 +499,27 @@ public class ProvinceService implements IProvinceService { |
|
|
|
teamMember.setPlayerId(player.getId()); |
|
|
|
teamMemberMapper.insertSelective(teamMember); |
|
|
|
} |
|
|
|
//添加团队表
|
|
|
|
competeTeamDao.insertSelective(competeTeam); |
|
|
|
// //检查该选手报名项目数量
|
|
|
|
// int a = competeCompanyDao.getTeamNumByPlayerId(param.getCompeteTimeId(),player.getId());
|
|
|
|
// if(a >= 6){
|
|
|
|
// throw new BaseException(CodeEnum.JOIN_PROJECT_NUM_FULL.mtProjectMsg(player.getName()));
|
|
|
|
// }
|
|
|
|
// //团队性别组根据参赛成员而定
|
|
|
|
// if (i == 0){
|
|
|
|
// competeTeam.setGenderGroup(player.getGender());
|
|
|
|
// }else {
|
|
|
|
// if(!competeTeam.getGenderGroup().equals(player.getGender())){
|
|
|
|
// competeTeam.setGenderGroup((byte) 2);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// //添加成员表
|
|
|
|
// CompeteTeamMember teamMember = new CompeteTeamMember();
|
|
|
|
// teamMember.setId(snowflake.nextId());
|
|
|
|
// teamMember.setCompeteTeamId(competeTeam.getId());
|
|
|
|
// teamMember.setPlayerId(player.getId());
|
|
|
|
// teamMemberMapper.insertSelective(teamMember);
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|