Browse Source

20201111修改参加比赛规则

tiaosheng
zy_Java 5 years ago
parent
commit
32cc86a811
  1. 4
      mt/src/main/java/com/ccsens/mt/bean/dto/ProvinceCompeteDto.java
  2. 13
      mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java
  3. 272
      mt/src/main/java/com/ccsens/mt/service/ProvinceService.java
  4. 16
      mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml
  5. 6
      util/src/main/java/com/ccsens/util/CodeEnum.java

4
mt/src/main/java/com/ccsens/mt/bean/dto/ProvinceCompeteDto.java

@ -94,6 +94,10 @@ public class ProvinceCompeteDto {
private Long projectId;
@ApiModelProperty("单位id")
private Long companyId;
@ApiModelProperty("性别组")
private int gender;
@ApiModelProperty("组别信息")
private int groupRemark;
@ApiModelProperty("选手id")
private List<JoinProjectPlayer> players;
}

13
mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java

@ -127,4 +127,17 @@ public interface CompeteCompanyDao extends CompeteCompanyMapper {
* @return 返回选手信息
*/
List<ProvinceCompeteVo.GroupAndPlayer> getPlayerByTeamProjectWithRule(@Param("companyId")Long companyId, @Param("projectId")Long projectId, @Param("type")Byte type, @Param("groupRemark")int groupRemark, @Param("gender")int gender);
/**
* 查找该选手是否参加了该项目的其他组别
* @param competeTimeId 大赛id
* @param playerId 选手id
* @param projectId 项目id
* @param companyId 单位id
* @param gender 性别组
* @param groupRemark 组别备注信息
* @return 返回参加的数量
*/
int getTeamNumByPlayerIdAndGroup(@Param("competeTimeId")Long competeTimeId, @Param("playerId")Long playerId, @Param("projectId")Long projectId,
@Param("companyId")Long companyId, @Param("gender")int gender, @Param("groupRemark")int groupRemark);
}

272
mt/src/main/java/com/ccsens/mt/service/ProvinceService.java

@ -524,97 +524,207 @@ public class ProvinceService implements IProvinceService {
}
}
}else {
//查找当前公司是否已经报名此项目
CompeteTeam competeTeam;
CompeteTeamExample teamExample = new CompeteTeamExample();
teamExample.createCriteria().andProjectIdEqualTo(competeProject.getId()).andCompanyIdEqualTo(param.getCompanyId()).andCompeteTimeIdEqualTo(param.getCompeteTimeId());
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());
//添加团队表
competeTeamDao.insertSelective(competeTeam);
}
//检查参赛人数是否符合
int joinCount = 0;
for(ProvinceCompeteDto.JoinProjectPlayer joinProject : param.getPlayers()){
if(joinProject.getJoinProject() == 1){
joinCount++;
}else {
joinCount--;
if(competeProject.getJoinRule() == 1) {
//查找当前公司是否已经报名此项目
CompeteTeam competeTeam;
CompeteTeamExample teamExample = new CompeteTeamExample();
teamExample.createCriteria().andProjectIdEqualTo(competeProject.getId()).andCompanyIdEqualTo(param.getCompanyId()).andCompeteTimeIdEqualTo(param.getCompeteTimeId());
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());
//添加团队表
competeTeamDao.insertSelective(competeTeam);
}
}
CompeteTeamMemberExample example = new CompeteTeamMemberExample();
example.createCriteria().andCompeteTeamIdEqualTo(competeTeam.getId());
long memberNum = teamMemberMapper.countByExample(example);
if(joinCount + memberNum > 0) {
if (joinCount + memberNum > competeProject.getMemberMax() || joinCount + memberNum < competeProject.getMemberMin()) {
throw new BaseException(CodeEnum.MEMBER_NUM_ERROR);
// //检查参赛人数是否符合
// int joinCount = 0;
// for(ProvinceCompeteDto.JoinProjectPlayer joinProject : param.getPlayers()){
// if(joinProject.getJoinProject() == 1){
// joinCount++;
// }else {
// joinCount--;
// }
// }
// CompeteTeamMemberExample example = new CompeteTeamMemberExample();
// example.createCriteria().andCompeteTeamIdEqualTo(competeTeam.getId());
// long memberNum = teamMemberMapper.countByExample(example);
// if(joinCount + memberNum > 0) {
// if (joinCount + memberNum > competeProject.getMemberMax() || joinCount + memberNum < competeProject.getMemberMin()) {
// throw new BaseException(CodeEnum.MEMBER_NUM_ERROR);
// }
// }
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)) {
//检查该选手报名项目数量(团队6个)
int a = competeCompanyDao.getTeamNumByPlayerId(param.getCompeteTimeId(), player.getId());
if (a >= 6) {
throw new BaseException(CodeEnum.JOIN_PROJECT_NUM_FULL.mtProjectMsg(player.getName() + "团队"));
//XXX团队项目参赛次数已满
}
//添加成员表
CompeteTeamMember teamMember = new CompeteTeamMember();
teamMember.setId(snowflake.nextId());
teamMember.setCompeteTeamId(competeTeam.getId());
teamMember.setPlayerId(player.getId());
teamMemberMapper.insertSelective(teamMember);
}
}
}
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)){
//检查该选手报名项目数量(团队6个)
int a = competeCompanyDao.getTeamNumByPlayerId(param.getCompeteTimeId(),player.getId());
if(a >= 6){
throw new BaseException(CodeEnum.JOIN_PROJECT_NUM_FULL.mtProjectMsg(player.getName()+"团队"));
//XXX团队项目参赛次数已满
memberExample.createCriteria().andCompeteTeamIdEqualTo(competeTeam.getId());
if (teamMemberMapper.countByExample(memberExample) == 0) {
competeTeam.setRecStatus((byte) 2);
competeTeamDao.updateByPrimaryKeySelective(competeTeam);
} else {
//当前参赛人数不符提示错误信息
if (teamMemberMapper.countByExample(memberExample) > competeProject.getMemberMax() || teamMemberMapper.countByExample(memberExample) < competeProject.getMemberMin()) {
throw new BaseException(CodeEnum.MEMBER_NUM_ERROR);
}
//修改团队的性别组和组别备注信息
ProvinceCompeteVo.TeamGroupRemark teamGroupRemark = competePlayerDao.getTeamGroupRemark(competeTeam.getId());
if (StrUtil.isNotEmpty(teamGroupRemark.getGroupRemark())) {
competeTeam.setGenderGroup((byte) teamGroupRemark.getSexGroup());
if (ObjectUtil.isNull(competeTeam.getGroupRemark()) || competeTeam.getGroupRemark() == 0) {
String groupRemark = teamGroupRemark.getGroupRemark().substring(0, teamGroupRemark.getGroupRemark().length() - 3);
Constant.COMPETE_TEAM_GROUP_REMARK remark = Constant.COMPETE_TEAM_GROUP_REMARK.phaseOf(groupRemark);
if (ObjectUtil.isNotNull(remark)) {
competeTeam.setGroupRemark((byte) remark.value);
} else {
competeTeam.setGroupRemark((byte) 0);
}
}
competeTeamDao.updateByPrimaryKeySelective(competeTeam);
}
//添加成员表
CompeteTeamMember teamMember = new CompeteTeamMember();
teamMember.setId(snowflake.nextId());
teamMember.setCompeteTeamId(competeTeam.getId());
teamMember.setPlayerId(player.getId());
teamMemberMapper.insertSelective(teamMember);
}
}
//查询团队内的成员,如果没有则删除团队
CompeteTeamMemberExample memberExample = new CompeteTeamMemberExample();
memberExample.createCriteria().andCompeteTeamIdEqualTo(competeTeam.getId());
if(teamMemberMapper.countByExample(memberExample) == 0){
competeTeam.setRecStatus((byte) 2);
competeTeamDao.updateByPrimaryKeySelective(competeTeam);
}else {
//当前参赛人数不符提示错误信息
if(teamMemberMapper.countByExample(memberExample) > competeProject.getMemberMax() || teamMemberMapper.countByExample(memberExample) < competeProject.getMemberMin()){
throw new BaseException(CodeEnum.MEMBER_NUM_ERROR);
//查找当前单位是否已经报名此项目内的改组别
CompeteTeam competeTeam;
CompeteTeamExample teamExample = new CompeteTeamExample();
teamExample.createCriteria().andProjectIdEqualTo(competeProject.getId()).andCompanyIdEqualTo(param.getCompanyId())
.andCompeteTimeIdEqualTo(param.getCompeteTimeId()).andGenderGroupEqualTo((byte) param.getGender()).andGroupRemarkEqualTo((byte) param.getGroupRemark());
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());
competeTeam.setCompanyId((long) param.getGender());
competeTeam.setCompanyId((long) param.getGroupRemark());
//添加团队表
competeTeamDao.insertSelective(competeTeam);
}
//修改团队的性别组和组别备注信息
ProvinceCompeteVo.TeamGroupRemark teamGroupRemark = competePlayerDao.getTeamGroupRemark(competeTeam.getId());
if (StrUtil.isNotEmpty(teamGroupRemark.getGroupRemark())) {
competeTeam.setGenderGroup((byte) teamGroupRemark.getSexGroup());
if (ObjectUtil.isNull(competeTeam.getGroupRemark()) || competeTeam.getGroupRemark() == 0) {
String groupRemark = teamGroupRemark.getGroupRemark().substring(0, teamGroupRemark.getGroupRemark().length() - 3);
Constant.COMPETE_TEAM_GROUP_REMARK remark = Constant.COMPETE_TEAM_GROUP_REMARK.phaseOf(groupRemark);
if (ObjectUtil.isNotNull(remark)) {
competeTeam.setGroupRemark((byte) remark.value);
} else {
competeTeam.setGroupRemark((byte) 0);
// //检查参赛人数是否符合
// int joinCount = 0;
// for(ProvinceCompeteDto.JoinProjectPlayer joinProject : param.getPlayers()){
// if(joinProject.getJoinProject() == 1){
// joinCount++;
// }else {
// joinCount--;
// }
// }
// CompeteTeamMemberExample example = new CompeteTeamMemberExample();
// example.createCriteria().andCompeteTeamIdEqualTo(competeTeam.getId());
// long memberNum = teamMemberMapper.countByExample(example);
// if(joinCount + memberNum > 0) {
// if (joinCount + memberNum > competeProject.getMemberMax() || joinCount + memberNum < competeProject.getMemberMin()) {
// throw new BaseException(CodeEnum.MEMBER_NUM_ERROR);
// }
// }
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)) {
//检查该选手报名项目数量(团队6个)
int a = competeCompanyDao.getTeamNumByPlayerId(param.getCompeteTimeId(), player.getId());
if (a >= 6) {
throw new BaseException(CodeEnum.JOIN_PROJECT_NUM_FULL.mtProjectMsg(player.getName() + "团队"));
//XXX团队项目参赛次数已满
}
//查找该选手是否参加了该项目的其他组别
int b = competeCompanyDao.getTeamNumByPlayerIdAndGroup(param.getCompeteTimeId(), player.getId(),param.getProjectId()
,param.getCompanyId(),param.getGender(),param.getGroupRemark());
if (b > 0) {
throw new BaseException(CodeEnum.mtJoinAuthGroup(player.getName()));
}
//添加成员表
CompeteTeamMember teamMember = new CompeteTeamMember();
teamMember.setId(snowflake.nextId());
teamMember.setCompeteTeamId(competeTeam.getId());
teamMember.setPlayerId(player.getId());
teamMemberMapper.insertSelective(teamMember);
}
}
//查询团队内的成员,如果没有则删除团队
CompeteTeamMemberExample memberExample = new CompeteTeamMemberExample();
memberExample.createCriteria().andCompeteTeamIdEqualTo(competeTeam.getId());
if (teamMemberMapper.countByExample(memberExample) == 0) {
competeTeam.setRecStatus((byte) 2);
competeTeamDao.updateByPrimaryKeySelective(competeTeam);
} else {
//当前参赛人数不符提示错误信息
if (teamMemberMapper.countByExample(memberExample) > competeProject.getMemberMax() || teamMemberMapper.countByExample(memberExample) < competeProject.getMemberMin()) {
throw new BaseException(CodeEnum.MEMBER_NUM_ERROR);
}
//修改团队的性别组和组别备注信息
ProvinceCompeteVo.TeamGroupRemark teamGroupRemark = competePlayerDao.getTeamGroupRemark(competeTeam.getId());
if (StrUtil.isNotEmpty(teamGroupRemark.getGroupRemark())) {
competeTeam.setGenderGroup((byte) teamGroupRemark.getSexGroup());
if (ObjectUtil.isNull(competeTeam.getGroupRemark()) || competeTeam.getGroupRemark() == 0) {
String groupRemark = teamGroupRemark.getGroupRemark().substring(0, teamGroupRemark.getGroupRemark().length() - 3);
Constant.COMPETE_TEAM_GROUP_REMARK remark = Constant.COMPETE_TEAM_GROUP_REMARK.phaseOf(groupRemark);
if (ObjectUtil.isNotNull(remark)) {
competeTeam.setGroupRemark((byte) remark.value);
} else {
competeTeam.setGroupRemark((byte) 0);
}
}
competeTeamDao.updateByPrimaryKeySelective(competeTeam);
}
}
}
}

16
mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml

@ -323,5 +323,21 @@
and (a.mRemark = #{groupRemark} or a.mRemark is null)
and (a.mGender = #{gender} or a.mGender is null)
</select>
<select id="getTeamNumByPlayerIdAndGroup" resultType="java.lang.Integer">
SELECT
count(t.id)
FROM
t_compete_team t
LEFT JOIN t_compete_team_member m on t.id = m.compete_team_id
WHERE
t.company_id = #{companyId}
and t.project_id = #{projectId}
and t.compete_time_id = #{competeTimeId}
and t.gender_group = #{gender}
and t.group_remark = #{groupRemark}
and m.player_id = #{projectId}
and t.rec_status = 0
and m.rec_status = 0
</select>
</mapper>

6
util/src/main/java/com/ccsens/util/CodeEnum.java

@ -175,6 +175,7 @@ public enum CodeEnum {
CONTACTS_NAME_EMPTY(144,"联系人名称不能为空",true),
MEMBER_NUM_ERROR(145,"参赛人数不满足比赛人数要求",true),
GENDER_ERROR(146,"请选择正确的性别",true),
JOIN_AUTH_GROUP(147,"已参加了其他组别,无法再次报名",true),
;
@ -183,7 +184,10 @@ public enum CodeEnum {
this.msg = "请上传"+msg;
return this;
}
public static String mtJoinAuthGroup(String msg){
msg = msg+"已参加了其他组别,无法再次报名";
return msg;
}
public CodeEnum mtProjectMsg(String msg){
this.msg = msg+"项目参赛次数已满";
return this;

Loading…
Cancel
Save