From 01fad86630b241a71149ef924bd753cc59a40628 Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Thu, 29 Oct 2020 15:18:59 +0800 Subject: [PATCH] 20201029v1.5 --- .../mt/bean/dto/ProvinceCompeteDto.java | 11 +- .../ccsens/mt/bean/vo/ProvinceCompeteVo.java | 1 - .../mt/persist/dao/CompeteCompanyDao.java | 2 +- .../ccsens/mt/service/ProvinceService.java | 172 ++++++++++++------ .../mapper_dao/CompeteCompanyDao.xml | 12 +- tall/src/main/resources/application.yml | 4 +- 6 files changed, 137 insertions(+), 65 deletions(-) diff --git a/mt/src/main/java/com/ccsens/mt/bean/dto/ProvinceCompeteDto.java b/mt/src/main/java/com/ccsens/mt/bean/dto/ProvinceCompeteDto.java index b4aba3df..bf35a65f 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/dto/ProvinceCompeteDto.java +++ b/mt/src/main/java/com/ccsens/mt/bean/dto/ProvinceCompeteDto.java @@ -92,7 +92,16 @@ public class ProvinceCompeteDto { @ApiModelProperty("单位id") private Long companyId; @ApiModelProperty("选手id") - private List playerId; + private List players; + } + @Data + @ApiModel("选手是否参加项目") + public static class JoinProjectPlayer{ + @NotNull + @ApiModelProperty("大赛id") + private Long playerId ; + @ApiModelProperty("是否参加此项目 0否 1是") + private int joinProject; } @Data diff --git a/mt/src/main/java/com/ccsens/mt/bean/vo/ProvinceCompeteVo.java b/mt/src/main/java/com/ccsens/mt/bean/vo/ProvinceCompeteVo.java index d9b10438..97703ca8 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/vo/ProvinceCompeteVo.java +++ b/mt/src/main/java/com/ccsens/mt/bean/vo/ProvinceCompeteVo.java @@ -4,7 +4,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import javax.servlet.http.Part; import java.util.List; diff --git a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java index eff3c0b2..e0212263 100644 --- a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java +++ b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java @@ -30,7 +30,7 @@ public interface CompeteCompanyDao extends CompeteCompanyMapper { * @param projectId 项目id * @return 返回选手信息 */ - List queryPlayerByGroupId(@Param("companyId")Long companyId,@Param("groupId")Long groupId,@Param("projectId")Long projectId); + List queryPlayerByGroupId(@Param("type")int type,@Param("companyId")Long companyId,@Param("groupId")Long groupId,@Param("projectId")Long projectId); /** * 查找大赛所有的比赛项目 diff --git a/mt/src/main/java/com/ccsens/mt/service/ProvinceService.java b/mt/src/main/java/com/ccsens/mt/service/ProvinceService.java index 8daa95b8..51e5cc7c 100644 --- a/mt/src/main/java/com/ccsens/mt/service/ProvinceService.java +++ b/mt/src/main/java/com/ccsens/mt/service/ProvinceService.java @@ -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 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,76 +396,130 @@ 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); } - //查找此公司此组别是否参加过这个项目 - int num = competeCompanyDao.getNumByCompanyAndGroup(competeProject.getId(),player.getCompanyId(),player.getCompeteGroupId(),param.getCompeteTimeId()); - if(num > 0){ - throw new BaseException(CodeEnum.JOIN_PROJECT_NUM_FULL.mtProjectMsg("该项目该组别")); + param.getPlayers().forEach(joinPlayer -> { + //检查此用户之前是否参加此项目 + CompeteProjectPlayerExample example = new CompeteProjectPlayerExample(); + example.createCriteria().andProjectIdEqualTo(competeProject.getId()).andPlayerIdEqualTo(joinPlayer.getPlayerId()) + .andCompeteTimeIdEqualTo(param.getCompeteTimeId()); + List competeProjectPlayerList = projectPlayerMapper.selectByExample(example); + //用户现在不参加且之前已经参加本项目,退出 + if(joinPlayer.getJoinProject() == 0 && CollectionUtil.isNotEmpty(competeProjectPlayerList)) { + competeProjectPlayerList.forEach(projectPlayer -> { + projectPlayer.setRecStatus((byte) 2); + projectPlayerMapper.updateByPrimaryKeySelective(projectPlayer); + }); } - //查找个人参赛数量是否符合 - CompeteProjectPlayerExample projectPlayerExample = new CompeteProjectPlayerExample(); - projectPlayerExample.createCriteria().andPlayerIdEqualTo(playerId).andCompeteTimeIdEqualTo(param.getCompeteTimeId()); - if(projectPlayerMapper.countByExample(projectPlayerExample) >= 3){ - throw new BaseException(CodeEnum.JOIN_PROJECT_NUM_FULL.mtProjectMsg(player.getName())); + //用户现在参加且之前未参加本项目,参加 + 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) { + throw new BaseException(CodeEnum.JOIN_PROJECT_NUM_FULL.mtProjectMsg("该项目该组别")); + } + //查找个人参赛数量是否符合 + CompeteProjectPlayerExample projectPlayerExample = new CompeteProjectPlayerExample(); + projectPlayerExample.createCriteria().andPlayerIdEqualTo(joinPlayer.getPlayerId()).andCompeteTimeIdEqualTo(param.getCompeteTimeId()); + if (projectPlayerMapper.countByExample(projectPlayerExample) >= 3) { + throw new BaseException(CodeEnum.JOIN_PROJECT_NUM_FULL.mtProjectMsg(player.getName())); + } + //参加比赛记录 + CompeteProjectPlayer projectPlayer = new CompeteProjectPlayer(); + projectPlayer.setId(snowflake.nextId()); + projectPlayer.setCompeteTimeId(param.getCompeteTimeId()); + projectPlayer.setProjectId(param.getProjectId()); + projectPlayer.setPlayerId(joinPlayer.getPlayerId()); + projectPlayer.setCompeteGroupId(player.getCompeteGroupId()); + projectPlayer.setGenderGroup(player.getGender()); + projectPlayerMapper.insertSelective(projectPlayer); } - //参加比赛记录 - CompeteProjectPlayer projectPlayer = new CompeteProjectPlayer(); - projectPlayer.setId(snowflake.nextId()); - projectPlayer.setCompeteTimeId(param.getCompeteTimeId()); - projectPlayer.setProjectId(param.getProjectId()); - projectPlayer.setPlayerId(playerId); - 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("该项目")); + List 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()); + //添加团队表 + competeTeamDao.insertSelective(competeTeam); } - //生成团队 - CompeteTeam 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)); + + 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); } - //检查该选手报名项目数量 - int a = competeCompanyDao.getTeamNumByPlayerId(param.getCompeteTimeId(),player.getId()); - if(a >= 6){ - throw new BaseException(CodeEnum.JOIN_PROJECT_NUM_FULL.mtProjectMsg(player.getName())); + //查找改选手是否在本团队内 + CompeteTeamMemberExample memberExample = new CompeteTeamMemberExample(); + memberExample.createCriteria().andPlayerIdEqualTo(player.getId()) + .andCompeteTeamIdEqualTo(competeTeam.getId()); + List teamMemberList = teamMemberMapper.selectByExample(memberExample); + //选手现在不参加,但以前参加了。删除以前的数据 + if(joinProjectPlayer.getJoinProject() == 0 && CollectionUtil.isNotEmpty(teamMemberList)){ + teamMemberList.forEach(member -> { + member.setRecStatus((byte) 2); + teamMemberMapper.updateByPrimaryKeySelective(member); + }); } - //团队性别组根据参赛成员而定 - if (i == 0){ - competeTeam.setGenderGroup(player.getGender()); - }else { - if(!competeTeam.getGenderGroup().equals(player.getGender())){ - competeTeam.setGenderGroup((byte) 2); + //选手这次参加,以前未参加,添加数据 + 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())); } + //添加成员表 + CompeteTeamMember teamMember = new CompeteTeamMember(); + teamMember.setId(snowflake.nextId()); + teamMember.setCompeteTeamId(competeTeam.getId()); + teamMember.setPlayerId(player.getId()); + teamMemberMapper.insertSelective(teamMember); } - //添加成员表 - CompeteTeamMember teamMember = new CompeteTeamMember(); - teamMember.setId(snowflake.nextId()); - teamMember.setCompeteTeamId(competeTeam.getId()); - teamMember.setPlayerId(player.getId()); - teamMemberMapper.insertSelective(teamMember); +// //检查该选手报名项目数量 +// 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); } - //添加团队表 - competeTeamDao.insertSelective(competeTeam); + } } } diff --git a/mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml b/mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml index 28325042..4fd63fea 100644 --- a/mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml +++ b/mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml @@ -50,7 +50,7 @@ if(pp.id is null and a.mId is null,0,1) as joinProject FROM t_compete_group cg - LEFT JOIN t_compete_player p on cg.id = p.group_id + LEFT JOIN t_compete_player p on cg.id = p.compete_group_id LEFT JOIN t_compete_project_player pp on p.id = pp.player_id and pp.project_id = 1 LEFT JOIN ( SELECT @@ -65,12 +65,14 @@ and m.rec_status = 0 ) a on a.mPlayerId = p.id WHERE - p.company_id = #{companyId} + cg.type = #{type} + and cg.rec_status = 0 - AND p.compete_group_id = #{groupId} + and(p.company_id = #{companyId} or p.company_id is null) - and p.rec_status = 0 - and pp.rec_status = 0 + AND (p.compete_group_id =#{groupId} or p.compete_group_id is null) + AND (p.rec_status = 0 or p.rec_status is null) + AND (pp.rec_status = 0 or pp.rec_status is null)