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 1/3] 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) + + \ No newline at end of file From ee68dd3492bf35bfbf8ffd410df25bde1e0b2f61 Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Thu, 29 Oct 2020 17:27:06 +0800 Subject: [PATCH 3/3] 20201029v1.7 --- .../com/ccsens/mt/api/ProvinceController.java | 2 +- .../com/ccsens/mt/bean/dto/CompeteDto.java | 2 + .../ccsens/mt/service/IProvinceService.java | 2 +- .../ccsens/mt/service/ProvinceService.java | 37 +++++++++++-------- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/mt/src/main/java/com/ccsens/mt/api/ProvinceController.java b/mt/src/main/java/com/ccsens/mt/api/ProvinceController.java index 3d142461..5a1d8ceb 100644 --- a/mt/src/main/java/com/ccsens/mt/api/ProvinceController.java +++ b/mt/src/main/java/com/ccsens/mt/api/ProvinceController.java @@ -109,7 +109,7 @@ public class ProvinceController { @RequestMapping(value = "/save/company", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public JsonResponse saveCompany(@ApiParam @Validated @RequestBody QueryDto params) { log.info("添加/修改单位信息:{}",params); - ProvinceCompeteVo.CompeteCompany competeCompany = provinceService.changeCompany(params.getParam()); + ProvinceCompeteVo.CompeteCompany competeCompany = provinceService.changeCompany(params.getParam(),params.getUserId()); log.info("添加/修改单位信息:{}",competeCompany); return JsonResponse.newInstance().ok(competeCompany); } diff --git a/mt/src/main/java/com/ccsens/mt/bean/dto/CompeteDto.java b/mt/src/main/java/com/ccsens/mt/bean/dto/CompeteDto.java index 1adc18c9..9d5b934d 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/dto/CompeteDto.java +++ b/mt/src/main/java/com/ccsens/mt/bean/dto/CompeteDto.java @@ -230,6 +230,8 @@ public class CompeteDto { @Data @ApiModel("当前用户参赛单位基本信息") public static class CompeteCompany{ + @ApiModelProperty("大赛id") + private Long competeTimeId; @ApiModelProperty("参赛单位id") private Long companyId; @ApiModelProperty("单位名称") diff --git a/mt/src/main/java/com/ccsens/mt/service/IProvinceService.java b/mt/src/main/java/com/ccsens/mt/service/IProvinceService.java index 1f4c5555..f7986aca 100644 --- a/mt/src/main/java/com/ccsens/mt/service/IProvinceService.java +++ b/mt/src/main/java/com/ccsens/mt/service/IProvinceService.java @@ -72,7 +72,7 @@ public interface IProvinceService { * @param * @return */ - ProvinceCompeteVo.CompeteCompany changeCompany(CompeteDto.CompeteCompany param); + ProvinceCompeteVo.CompeteCompany changeCompany(CompeteDto.CompeteCompany param, Long userId); /** * 添加/修改领队或教练 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 f59f6eb3..c5fe8621 100644 --- a/mt/src/main/java/com/ccsens/mt/service/ProvinceService.java +++ b/mt/src/main/java/com/ccsens/mt/service/ProvinceService.java @@ -225,16 +225,14 @@ public class ProvinceService implements IProvinceService { if (ObjectUtil.isNull(competeCompany)){ competeCompany = new ProvinceCompeteVo.CompeteCompany(); } - return competeCompany; } @Override - public ProvinceCompeteVo.CompeteCompany changeCompany(CompeteDto.CompeteCompany param) { + public ProvinceCompeteVo.CompeteCompany changeCompany(CompeteDto.CompeteCompany param, Long userId) { //判断当前单位id是否为空, Long companyid = param.getCompanyId(); CompeteCompany competeCompany = new CompeteCompany(); - ProvinceCompeteVo.CompeteCompany competeCompany1 = new ProvinceCompeteVo.CompeteCompany(); //单位id为空,新增 if (ObjectUtil.isNull(companyid)){ Long id = snowflake.nextId(); @@ -245,14 +243,16 @@ public class ProvinceService implements IProvinceService { competeCompany.setContactsPhone(param.getContactsPhone()); competeCompany.setLeaderNum(param.getGuideNum()); competeCompany.setJoinNum(param.getPlayerNum()); + competeCompany.setUserId(userId); + competeCompany.setCompeteTimeId(param.getCompeteTimeId()); competeCompanyDao.insertSelective(competeCompany); - // - competeCompany1.setCompanyId(competeCompany.getId()); - competeCompany1.setCoachNum(competeCompany.getCoachNum()); - competeCompany1.setContactsName(competeCompany.getContactsName()); - competeCompany1.setContactsPhone(competeCompany.getContactsPhone()); - competeCompany1.setGuideNum(competeCompany.getLeaderNum()); - competeCompany1.setPlayerNum(competeCompany.getJoinNum()); +// // +// competeCompany1.setCompanyId(competeCompany.getId()); +// competeCompany1.setCoachNum(competeCompany.getCoachNum()); +// competeCompany1.setContactsName(competeCompany.getContactsName()); +// competeCompany1.setContactsPhone(competeCompany.getContactsPhone()); +// competeCompany1.setGuideNum(competeCompany.getLeaderNum()); +// competeCompany1.setPlayerNum(competeCompany.getJoinNum()); }else { //不为空,根据单位id查出来修改 判断传进来的参数是否为空 为空则跳过 不为空则修改 competeCompany = competeCompanyDao.selectByPrimaryKey(companyid); @@ -274,12 +274,17 @@ public class ProvinceService implements IProvinceService { if (ObjectUtil.isNotNull(param.getPlayerNum())) { competeCompany.setJoinNum(param.getPlayerNum()); } - competeCompany1.setCompanyId(competeCompany.getId()); - competeCompany1.setCoachNum(competeCompany.getCoachNum()); - competeCompany1.setContactsName(competeCompany.getContactsName()); - competeCompany1.setContactsPhone(competeCompany.getContactsPhone()); - competeCompany1.setGuideNum(competeCompany.getLeaderNum()); - competeCompany1.setPlayerNum(competeCompany.getJoinNum()); + competeCompanyDao.updateByPrimaryKeySelective(competeCompany); +// competeCompany1.setCompanyId(competeCompany.getId()); +// competeCompany1.setCoachNum(competeCompany.getCoachNum()); +// competeCompany1.setContactsName(competeCompany.getContactsName()); +// competeCompany1.setContactsPhone(competeCompany.getContactsPhone()); +// competeCompany1.setGuideNum(competeCompany.getLeaderNum()); +// competeCompany1.setPlayerNum(competeCompany.getJoinNum()); + } + ProvinceCompeteVo.CompeteCompany competeCompany1 = competeCompanyDao.getCompany(param.getCompeteTimeId(),userId); + if (ObjectUtil.isNull(competeCompany1)){ + competeCompany1 = new ProvinceCompeteVo.CompeteCompany(); } return competeCompany1; }