Browse Source

加入队伍

master
zhizhi wu 5 years ago
parent
commit
853e835275
  1. 12
      mt/src/main/java/com/ccsens/mt/bean/po/CompeteTeam.java
  2. 48
      mt/src/main/java/com/ccsens/mt/bean/po/CompeteTeamExample.java
  3. 42
      mt/src/main/java/com/ccsens/mt/bean/vo/CompeteVo.java
  4. 17
      mt/src/main/java/com/ccsens/mt/persist/dao/CompetePlayerDao.java
  5. 57
      mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTeamDao.java
  6. 1
      mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTimeDao.java
  7. 231
      mt/src/main/java/com/ccsens/mt/service/CompeteService.java
  8. 3
      mt/src/main/java/com/ccsens/mt/service/ICompeteService.java
  9. 22
      mt/src/main/java/com/ccsens/mt/util/Constant.java
  10. 4
      mt/src/main/resources/application-dev.yml
  11. 5
      mt/src/main/resources/application-prod.yml
  12. 4
      mt/src/main/resources/application-test.yml
  13. 29
      mt/src/main/resources/mapper_dao/CompetePlayerDao.xml
  14. 121
      mt/src/main/resources/mapper_dao/CompeteTeamDao.xml
  15. 28
      mt/src/main/resources/mapper_raw/CompeteTeamMapper.xml
  16. 2
      pom.xml
  17. 8
      util/src/main/java/com/ccsens/util/CodeEnum.java
  18. 5
      util/src/main/java/com/ccsens/util/PropUtil.java
  19. 2
      util/src/main/java/com/ccsens/util/RedisUtil.java

12
mt/src/main/java/com/ccsens/mt/bean/po/CompeteTeam.java

@ -8,7 +8,7 @@ public class CompeteTeam implements Serializable {
private Long creator;
private Long porjectId;
private Long projectId;
private Long competeTimeId;
@ -42,12 +42,12 @@ public class CompeteTeam implements Serializable {
this.creator = creator;
}
public Long getPorjectId() {
return porjectId;
public Long getProjectId() {
return projectId;
}
public void setPorjectId(Long porjectId) {
this.porjectId = porjectId;
public void setProjectId(Long projectId) {
this.projectId = projectId;
}
public Long getCompeteTimeId() {
@ -114,7 +114,7 @@ public class CompeteTeam implements Serializable {
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", creator=").append(creator);
sb.append(", porjectId=").append(porjectId);
sb.append(", projectId=").append(projectId);
sb.append(", competeTimeId=").append(competeTimeId);
sb.append(", genderGroup=").append(genderGroup);
sb.append(", certificate=").append(certificate);

48
mt/src/main/java/com/ccsens/mt/bean/po/CompeteTeamExample.java

@ -225,63 +225,63 @@ public class CompeteTeamExample {
return (Criteria) this;
}
public Criteria andPorjectIdIsNull() {
addCriterion("porject_id is null");
public Criteria andProjectIdIsNull() {
addCriterion("project_id is null");
return (Criteria) this;
}
public Criteria andPorjectIdIsNotNull() {
addCriterion("porject_id is not null");
public Criteria andProjectIdIsNotNull() {
addCriterion("project_id is not null");
return (Criteria) this;
}
public Criteria andPorjectIdEqualTo(Long value) {
addCriterion("porject_id =", value, "porjectId");
public Criteria andProjectIdEqualTo(Long value) {
addCriterion("project_id =", value, "projectId");
return (Criteria) this;
}
public Criteria andPorjectIdNotEqualTo(Long value) {
addCriterion("porject_id <>", value, "porjectId");
public Criteria andProjectIdNotEqualTo(Long value) {
addCriterion("project_id <>", value, "projectId");
return (Criteria) this;
}
public Criteria andPorjectIdGreaterThan(Long value) {
addCriterion("porject_id >", value, "porjectId");
public Criteria andProjectIdGreaterThan(Long value) {
addCriterion("project_id >", value, "projectId");
return (Criteria) this;
}
public Criteria andPorjectIdGreaterThanOrEqualTo(Long value) {
addCriterion("porject_id >=", value, "porjectId");
public Criteria andProjectIdGreaterThanOrEqualTo(Long value) {
addCriterion("project_id >=", value, "projectId");
return (Criteria) this;
}
public Criteria andPorjectIdLessThan(Long value) {
addCriterion("porject_id <", value, "porjectId");
public Criteria andProjectIdLessThan(Long value) {
addCriterion("project_id <", value, "projectId");
return (Criteria) this;
}
public Criteria andPorjectIdLessThanOrEqualTo(Long value) {
addCriterion("porject_id <=", value, "porjectId");
public Criteria andProjectIdLessThanOrEqualTo(Long value) {
addCriterion("project_id <=", value, "projectId");
return (Criteria) this;
}
public Criteria andPorjectIdIn(List<Long> values) {
addCriterion("porject_id in", values, "porjectId");
public Criteria andProjectIdIn(List<Long> values) {
addCriterion("project_id in", values, "projectId");
return (Criteria) this;
}
public Criteria andPorjectIdNotIn(List<Long> values) {
addCriterion("porject_id not in", values, "porjectId");
public Criteria andProjectIdNotIn(List<Long> values) {
addCriterion("project_id not in", values, "projectId");
return (Criteria) this;
}
public Criteria andPorjectIdBetween(Long value1, Long value2) {
addCriterion("porject_id between", value1, value2, "porjectId");
public Criteria andProjectIdBetween(Long value1, Long value2) {
addCriterion("project_id between", value1, value2, "projectId");
return (Criteria) this;
}
public Criteria andPorjectIdNotBetween(Long value1, Long value2) {
addCriterion("porject_id not between", value1, value2, "porjectId");
public Criteria andProjectIdNotBetween(Long value1, Long value2) {
addCriterion("project_id not between", value1, value2, "projectId");
return (Criteria) this;
}

42
mt/src/main/java/com/ccsens/mt/bean/vo/CompeteVo.java

@ -1,9 +1,14 @@
package com.ccsens.mt.bean.vo;
import com.ccsens.mt.bean.po.CompeteGroup;
import com.ccsens.mt.bean.po.CompetePlayer;
import com.ccsens.mt.bean.po.CompeteProject;
import com.ccsens.mt.bean.po.CompeteTeam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
@ -62,8 +67,8 @@ public class CompeteVo {
private int gender;
@ApiModelProperty("手机号")
private String phone;
@ApiModelProperty("手机验证码")
private String smsCode;
// @ApiModelProperty("手机验证码")
// private String smsCode;
@ApiModelProperty("身份证")
private String idCard;
@ApiModelProperty("参加的组别的id")
@ -82,6 +87,22 @@ public class CompeteVo {
private List<CompeteTiwnProject> competeTiwnProjects;
@ApiModelProperty("参加的团队比赛信息")
private List<CompeteTeamProject> competeTeamProjects;
public CompetePlayerInfo(CompetePlayer player, com.ccsens.mt.bean.po.CompeteGroup group , CompeteProjectAllByUser competeProjectAll) {
this.playerId = player.getId();
this.name = player.getName();
this.gender = player.getGender();
this.phone = player.getPhone();
this.idCard = player.getIdCard();
this.groupId = group.getId();
this.groupName = group.getGroupName();
this.companyName = player.getCompanyName();
this.idCardBack = player.getIdCardBack();
this.idCardFront = player.getIdCardFront();
this.proveImg = player.getProveImg();
this.competeTiwnProjects = competeProjectAll.getCompeteTiwnProjects();
this.competeTeamProjects = competeProjectAll.getCompeteTeamProjects();
}
}
@Data
@ -124,6 +145,19 @@ public class CompeteVo {
private String qrCode;
@ApiModelProperty("团队内的成员")
private List<CompeteTeamProjectMember> members;
public CompeteTeamProject(CompeteTeam team, byte isCreator, com.ccsens.mt.bean.po.CompeteProject project, String parentProjectName, List<CompeteTeamProjectMember> members) {
this.teamId = team.getId();
this.type = project.getType();
this.parentProjectName = parentProjectName;
this.secondProjectName = project.getName();
this.certificate = team.getCertificate();
this.creator = isCreator;
this.memberMin = project.getMemberMin();
this.memberMax = project.getMemberMax();
this.memberNums = members.size();
this.members = members;
}
}
@Data
@ -187,8 +221,8 @@ public class CompeteVo {
private int gender;
@ApiModelProperty("手机号")
private String phone;
@ApiModelProperty("手机验证码")
private String smsCode;
// @ApiModelProperty("手机验证码")
// private String smsCode;
@ApiModelProperty("身份证")
private String idCard;
@ApiModelProperty("参加的组别的id")

17
mt/src/main/java/com/ccsens/mt/persist/dao/CompetePlayerDao.java

@ -0,0 +1,17 @@
package com.ccsens.mt.persist.dao;
import com.ccsens.mt.bean.vo.CompeteVo;
import com.ccsens.mt.persist.mapper.CompetePlayerMapper;
import org.apache.ibatis.annotations.Param;
/**
* 参赛选手信息
*/
public interface CompetePlayerDao extends CompetePlayerMapper {
/**
* 查询选手的基本信息
* @param userId 用户ID
* @return 选手信息
*/
CompeteVo.GetPlayerInfo getInfo(@Param("userId") Long userId);
}

57
mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTeamDao.java

@ -2,6 +2,9 @@ package com.ccsens.mt.persist.dao;
import com.ccsens.mt.bean.vo.CompeteVo;
import com.ccsens.mt.persist.mapper.CompeteTeamMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @description:
@ -9,11 +12,59 @@ import com.ccsens.mt.persist.mapper.CompeteTeamMapper;
* @time: 2020/9/3 10:40
*/
public interface CompeteTeamDao extends CompeteTeamMapper {
/**
* 查询用户参加项目的分组信息
* 统计用户参加项目下分组的数量
* @param projectId 项目ID
* @param playerId 选手ID
* @return 分组信息
* @param competeTimeId 比赛ID
* @return
*/
long countJoinTeam(@Param("projectId") Long projectId, @Param("playerId") Long playerId, @Param("competeTimeId") Long competeTimeId);
/**
* 统计用户参加这一届下所有不限组别的队伍数
* @param playerId 选手ID
* @param competeTimeId 比赛ID
* @return
*/
long countJoinProject(@Param("playerId")Long playerId, @Param("competeTimeId")Long competeTimeId);
/**
* 根据团队ID查询成员信息
* @param teamId 团队ID
* @return 成员信息
*/
List<CompeteVo.CompeteTeamProjectMember> queryMembers(@Param("teamId") Long teamId);
/**
* 根据团队ID返回团队二维码
* @param teamId 团队ID
* @return 二维码路径
*/
String getQrCodeByTeamId(@Param("teamId") Long teamId);
/**
* 查询用户本届比赛所有的单人项目
* @param userId 用户ID
* @param competeTimeId 比赛ID
* @return 单人赛项目
*/
List<CompeteVo.CompeteTiwnProject> queryTiwn(@Param("userId") Long userId, @Param("competeTimeId") Long competeTimeId);
/**
* 查询用户本届比赛所有的团体赛项目
* @param userId 用户ID
* @param competeTimeId 比赛ID
* @return 团队项目(没有队员信息和队员总数)
*/
List<CompeteVo.CompeteTeamProject> queryTeam(@Param("userId") Long userId, @Param("competeTimeId") Long competeTimeId);
/**
* 统计用户参加了多少个单人赛
* @param playerId 选手ID
* @param competeTimeId 比赛ID
* @return
*/
CompeteVo.CompeteTeamProject getJoinTeam(Long projectId, Long playerId);
long countTiwnTeam(@Param("playerId") Long playerId, @Param("competeTimeId") Long competeTimeId);
}

1
mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTimeDao.java

@ -26,5 +26,4 @@ public interface CompeteTimeDao extends CompeteTimeMapper {
* @return 返回类型下的所有组别
*/
List<CompeteVo.CompeteGroup> queryCompeteGroupByType(@Param("type") int type);
}

231
mt/src/main/java/com/ccsens/mt/service/CompeteService.java

@ -1,17 +1,18 @@
package com.ccsens.mt.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import com.ccsens.mt.bean.dto.CompeteDto;
import com.ccsens.mt.bean.po.CompetePlayer;
import com.ccsens.mt.bean.po.CompetePlayerExample;
import com.ccsens.mt.bean.po.CompeteTeam;
import com.ccsens.mt.bean.po.CompeteTeamMemberExample;
import com.ccsens.mt.bean.po.*;
import com.ccsens.mt.bean.vo.CompeteVo;
import com.ccsens.mt.persist.dao.CompetePlayerDao;
import com.ccsens.mt.persist.dao.CompeteTeamDao;
import com.ccsens.mt.persist.mapper.CompetePlayerMapper;
import com.ccsens.mt.persist.mapper.CompeteTeamMemberMapper;
import com.ccsens.mt.persist.mapper.*;
import com.ccsens.mt.util.Constant;
import com.ccsens.util.CodeEnum;
import com.ccsens.mt.persist.dao.CompeteTimeDao;
import com.ccsens.util.PropUtil;
import com.ccsens.util.QrCodeUtil;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
@ -20,6 +21,7 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.List;
/**
@ -31,13 +33,23 @@ import java.util.List;
public class CompeteService implements ICompeteService{
@Resource
private CompeteTimeDao competeTimeDao;
@Resource
private CompeteCompanyMapper competeCompanyMapper;
@Resource
private CompeteTeamDao competeTeamDao;
@Resource
private CompetePlayerMapper competePlayerMapper;
private CompetePlayerDao competePlayerDao;
@Resource
private CompeteTeamMemberMapper competeTeamMemberMapper;
@Resource
private CompeteProjectMapper competeProjectMapper;
@Resource
private CompeteProjectPlayerMapper competeProjectPlayerMapper;
@Resource
private CompeteGroupMapper competeGroupMapper;
@Resource
private Snowflake snowflake;
/**
@ -72,8 +84,17 @@ public class CompeteService implements ICompeteService{
*/
@Override
public void syncCompeteCompany(QueryDto<CompeteDto.CompeteType> params) {
CompeteDto.CompeteType competeType = params.getParam();
//根据type查找数据库内所有参赛单位
//将单位信息存入redis
CompeteCompanyExample competeCompanyExample = new CompeteCompanyExample();
competeCompanyExample.createCriteria().andTypeEqualTo((byte) competeType.getType());
List<CompeteCompany> competeCompanyList = competeCompanyMapper.selectByExample(competeCompanyExample);
if(CollectionUtil.isNotEmpty(competeCompanyList)){
competeCompanyList.forEach(competeCompany -> {
//将单位信息存入redis
// String companyKey = Constant.
});
}
}
/**
@ -96,8 +117,75 @@ public class CompeteService implements ICompeteService{
* 提交选择的比赛项目
*/
@Override
public CompeteVo.CompetePlayerInfo saveCompeteProject(QueryDto<CompeteDto.CompeteProject> params) {
return null;
public CompeteVo.CompetePlayerInfo saveCompeteProject(QueryDto<CompeteDto.CompeteProject> params) throws IOException {
CompeteProject project = competeProjectMapper.selectByPrimaryKey(params.getParam().getCompeteProjectId());
log.info("项目信息:{}", project);
if (project == null) {
throw new BaseException(CodeEnum.PARAM_ERROR);
}
CompetePlayer player = getPlayer(params.getUserId());
if (project.getTeam() == Constant.Compete.TEAM_NO) {
// 个人赛
long joinedNum = competeTeamDao.countTiwnTeam(player.getId(), params.getParam().getCompeteTimeId());
log.info("个人赛参赛数量:{}", joinedNum);
if (joinedNum >= Constant.Compete.TIWN_MAX_NUM) {
throw new BaseException(CodeEnum.JOINED_MORE);
}
CompeteProjectPlayer projectPlayer = new CompeteProjectPlayer();
projectPlayer.setId(snowflake.nextId());
projectPlayer.setPlayerId(player.getId());
projectPlayer.setPorjectId(project.getId());
projectPlayer.setCompeteTimeId(params.getParam().getCompeteTimeId());
projectPlayer.setGenderGroup(player.getGender());
projectPlayer.setCertificate(params.getParam().getCertificate());
competeProjectPlayerMapper.insertSelective(projectPlayer);
} else {
// 团体赛
pageJoinedTeam(project, player, params.getParam().getCompeteTimeId(), null ,false);
// 创建团队
CompeteTeam team = new CompeteTeam();
team.setId(snowflake.nextId());
team.setCreator(player.getId());
team.setProjectId(project.getId());
team.setCompeteTimeId(params.getParam().getCompeteTimeId());
team.setCertificate(params.getParam().getCertificate());
team.setGenderGroup(player.getGender());
String qrCode = PropUtil.signUpUrl + "home";
String qrCodeVisit = QrCodeUtil.urlToQRCode(qrCode, PropUtil.path + "qrCode");
team.setQrCode(qrCodeVisit);
competeTeamDao.insertSelective(team);
// 加入团队
CompeteTeamMember teamMember = new CompeteTeamMember();
teamMember.setId(snowflake.nextId());
teamMember.setPlayerId(player.getId());
teamMember.setCompeteTeamId(team.getId());
teamMember.setCaptain(Constant.Compete.TEAM_LEADER_YES);
competeTeamMemberMapper.insertSelective(teamMember);
}
CompeteGroup group = competeGroupMapper.selectByPrimaryKey(player.getCompeteGroupId());
CompeteVo.CompetePlayerInfo info = new CompeteVo.CompetePlayerInfo(player, group, getCompeteProjectAll(params.getUserId(), params.getParam().getCompeteTimeId()));
log.info("{}参加返回:{}", params.getUserId(), info);
return info;
}
private CompetePlayer getPlayer(Long userId) {
CompetePlayerExample playerExample = new CompetePlayerExample();
playerExample.createCriteria().andUserIdEqualTo(userId);
List<CompetePlayer> players = competePlayerDao.selectByExample(playerExample);
if (CollectionUtil.isEmpty(players)) {
throw new BaseException(CodeEnum.BASE_INFO_LACK);
}
CompetePlayer player = players.get(0);
return player;
}
/**
@ -105,7 +193,26 @@ public class CompeteService implements ICompeteService{
*/
@Override
public CompeteVo.CompeteProjectAllByUser queryCompeteProjectAllByUser(QueryDto<CompeteDto.CompeteTime> params) {
return null;
log.info("查看本人所有参赛的项目:{}", params);
return getCompeteProjectAll(params.getUserId(), params.getParam().getCompeteTimeId());
}
private CompeteVo.CompeteProjectAllByUser getCompeteProjectAll(Long userId, Long competeTimeId){
List<CompeteVo.CompeteTiwnProject> competeTiwnProjects = competeTeamDao.queryTiwn(userId, competeTimeId);
List<CompeteVo.CompeteTeamProject> competeTeamProjects = competeTeamDao.queryTeam(userId, competeTimeId);
//封装队员信息和总队员数
competeTeamProjects.forEach(team -> {
List<CompeteVo.CompeteTeamProjectMember> members = competeTeamDao.queryMembers(team.getTeamId());
team.setMembers(members);
team.setMemberNums(members.size());
});
CompeteVo.CompeteProjectAllByUser compete = new CompeteVo.CompeteProjectAllByUser();
compete.setCompeteTiwnProjects(competeTiwnProjects);
compete.setCompeteTeamProjects(competeTeamProjects);
return compete;
}
/**
@ -113,7 +220,7 @@ public class CompeteService implements ICompeteService{
*/
@Override
public String getQrCodeByTeamId(QueryDto<CompeteDto.CompeteProjectPlayer> params) {
return null;
return competeTeamDao.getQrCodeByTeamId(params.getParam().getProjectPlayerId());
}
/**
@ -121,7 +228,8 @@ public class CompeteService implements ICompeteService{
*/
@Override
public CompeteVo.GetPlayerInfo getCompetePlayerInfo(QueryDto params) {
return null;
return competePlayerDao.getInfo(params.getUserId());
}
/**
@ -131,32 +239,95 @@ public class CompeteService implements ICompeteService{
public CompeteVo.CompeteTeamProject joinCompeteGroup(QueryDto<CompeteDto.CompeteGroup> params) {
log.info("扫码加入团队:{}", params);
CompetePlayerExample playerExample = new CompetePlayerExample();
playerExample.createCriteria().andUserIdEqualTo(params.getUserId());
List<CompetePlayer> competePlayers = competePlayerMapper.selectByExample(playerExample);
log.info("选手信息:{}", competePlayers);
if (CollectionUtil.isEmpty(competePlayers)) {
throw new BaseException(CodeEnum.PARAM_ERROR);
}
CompetePlayer player = competePlayers.get(0);
CompetePlayer player = getPlayer(params.getUserId());
CompeteTeam team = competeTeamDao.selectByPrimaryKey(params.getParam().getId());
log.info("团队信息:{}", team);
if (team == null) {
throw new BaseException(CodeEnum.PARAM_ERROR);
}
CompeteVo.CompeteTeamProject teamProject = competeTeamDao.getJoinTeam(team.getPorjectId(), player.getId());
// 查找队长信息
CompetePlayer creator = competePlayerDao.selectByPrimaryKey(team.getCreator());
// 项目信息
CompeteProject project = competeProjectMapper.selectByPrimaryKey(team.getProjectId());
// 判断是否已加入其他团队
pageJoinedTeam(project, player, team.getCompeteTimeId(), creator, true);
// 判断团队人数
CompeteTeamMemberExample teamMemberExample = new CompeteTeamMemberExample();
// TODO 缺少团队ID
teamMemberExample.createCriteria().andPlayerIdEqualTo(player.getId());
long count = competeTeamMemberMapper.countByExample(teamMemberExample);
if (count > 0) {
throw new BaseException(CodeEnum.JOINED_TEAM);
teamMemberExample.createCriteria().andCompeteTeamIdEqualTo(team.getId());
long memberNum = competeTeamMemberMapper.countByExample(teamMemberExample);
log.info("已加入团队人数:{}", memberNum);
if (project.getMemberMax() != null && memberNum >= project.getMemberMax()) {
log.info("团队人数:{}已达到最大人数:{}", memberNum, project.getMemberMax());
throw new BaseException(CodeEnum.TEAM_MEMBER_MORE);
}
// 加入团队
CompeteTeamMember teamMember = new CompeteTeamMember();
teamMember.setId(snowflake.nextId());
teamMember.setPlayerId(player.getId());
teamMember.setCompeteTeamId(team.getId());
competeTeamMemberMapper.insertSelective(teamMember);
if (team.getGenderGroup() != Constant.Compete.GENDER_GROUP_MIX && team.getGenderGroup().byteValue() != player.getGender().byteValue()) {
log.info("选手性别{}和团队性别组{}不一致,修改为混合", player.getGender(), team.getGenderGroup());
CompeteTeam updateTeam = new CompeteTeam();
updateTeam.setId(team.getId());
updateTeam.setGenderGroup(Constant.Compete.GENDER_GROUP_MIX);
competeTeamDao.updateByPrimaryKeySelective(updateTeam);
}
// 查询分组信息
List<CompeteVo.CompeteTeamProjectMember> members = competeTeamDao.queryMembers(team.getId());
CompeteProject parent = null;
if (project.getParentId() != null && project.getParentId() != 0L) {
parent = competeProjectMapper.selectByPrimaryKey(project.getParentId());
}
CompeteVo.CompeteTeamProject teamProject = new CompeteVo.CompeteTeamProject(team, Constant.Compete.TEAM_LEADER_NO, project, parent == null ? "" : parent.getName(), members);
return teamProject;
}
return null;
/**
* 判断是否已加入其他团队
* @param project 项目信息
* @param competeTimeId 比赛ID
* @param player 选手信息
* @param creator 队长信息
*/
private void pageJoinedTeam(CompeteProject project, CompetePlayer player, Long competeTimeId, CompetePlayer creator, boolean pageLeader) {
long joinedTeam = 0;
if (project.getJoinRule() == Constant.Compete.PROJECT_JOIN_RULE_GROUP_LIMIT) {
// 同单位同组别
// 1.与队长同单位且同组别
if (pageLeader) {
if (!player.getCompanyName().equals(creator.getCompanyName())) {
log.info("单位不一样:{},{}",player.getCompanyName(), creator.getCompanyName());
throw new BaseException(CodeEnum.TEAM_COMPANY_NOT_SAME);
}
if (player.getCompeteGroupId().longValue() != creator.getCompeteGroupId().longValue()) {
log.info("组别不一样:{},{}",player.getCompanyName(), creator.getCompanyName());
throw new BaseException(CodeEnum.TEAM_GROUP_NOT_SAME);
}
}
//2.只能参加项目下的一个团队
joinedTeam = competeTeamDao.countJoinTeam(project.getId(), player.getId(), competeTimeId);
log.info("{}参加{}比赛的{}同组别项目数:{}", player.getId(), competeTimeId, project.getId(), joinedTeam);
} else if (project.getJoinRule() == Constant.Compete.PROJECT_JOIN_RULE_GROUP_NOT_LIMIT) {
// 同单位不限组别
// 1.用户与队长同单位
if (pageLeader) {
if (!player.getCompanyName().equals(creator.getCompanyName())) {
log.info("单位不一样:{},{}", player.getCompanyName(), creator.getCompanyName());
throw new BaseException(CodeEnum.TEAM_COMPANY_NOT_SAME);
}
}
// 2.只能加入一个项目的一个团队
joinedTeam = competeTeamDao.countJoinProject(player.getId(), competeTimeId);
log.info("{}参加{}比赛的不限组别项目数:{}", player.getId(), competeTimeId, joinedTeam);
}
if (joinedTeam > 0) {
throw new BaseException(CodeEnum.JOINED_SAME);
}
}
}

3
mt/src/main/java/com/ccsens/mt/service/ICompeteService.java

@ -4,6 +4,7 @@ import com.ccsens.mt.bean.dto.CompeteDto;
import com.ccsens.mt.bean.vo.CompeteVo;
import com.ccsens.util.bean.dto.QueryDto;
import java.io.IOException;
import java.util.List;
/**
@ -56,7 +57,7 @@ public interface ICompeteService {
* @param params
* @return
*/
CompeteVo.CompetePlayerInfo saveCompeteProject(QueryDto<CompeteDto.CompeteProject> params);
CompeteVo.CompetePlayerInfo saveCompeteProject(QueryDto<CompeteDto.CompeteProject> params) throws IOException;
/**
* 查看本人所有参赛的项目

22
mt/src/main/java/com/ccsens/mt/util/Constant.java

@ -23,8 +23,28 @@ public class Constant {
public final static int VOTE_COMPLETED = 2;
//投票已结束
public final static int VOTE_START = 1;
// 远程比赛参赛单位
public final static String COMPETE_COMPANY = "_compete_company_";
// 远程比赛参赛单位存在时间10天
public final static long COMPETE_COMPANY_TIME = 10 * 24 * 60 * 60;
}
public static final int VOTE_TOTAL = 2;
public final static class Compete{
public final static byte PROJECT_JOIN_RULE_GROUP_LIMIT = 0;
public final static byte PROJECT_JOIN_RULE_GROUP_NOT_LIMIT = 1;
public final static byte GENDER_GROUP_WOMAN = 0;
public final static byte GENDER_GROUP_MAN = 1;
public final static byte GENDER_GROUP_MIX = 2;
public final static byte TEAM_LEADER_YES = 1;
public final static byte TEAM_LEADER_NO = 0;
public final static byte TEAM_NO = 0;
public final static byte TEAM_YES = 1;
public final static int TIWN_MAX_NUM = 3;
}
}

4
mt/src/main/resources/application-dev.yml

@ -26,4 +26,6 @@ spring:
timeout: 1000ms
swagger:
enable: true
file:
path: /home/cloud/mt/uploads/
signUpUrl: https://test.tall.wiki/signup/

5
mt/src/main/resources/application-prod.yml

@ -31,4 +31,7 @@ eureka:
ip-address: 192.144.182.42
gatewayUrl: https://www.tall.wiki/gateway/
notGatewayUrl: https://www.tall.wiki/
notGatewayUrl: https://www.tall.wiki/
file:
path: /home/cloud/mt/uploads/
signUpUrl: https://www.tall.wiki/signup/

4
mt/src/main/resources/application-test.yml

@ -29,4 +29,6 @@ swagger:
eureka:
instance:
ip-address: 192.168.0.99
file:
path: /home/cloud/mt/uploads/
signUpUrl: https://test.tall.wiki/signup/

29
mt/src/main/resources/mapper_dao/CompetePlayerDao.xml

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.mt.persist.dao.CompetePlayerDao">
<select id="getInfo" resultType="com.ccsens.mt.bean.vo.CompeteVo$GetPlayerInfo">
SELECT
p.id AS playerId,
p.NAME,
p.gender,
p.phone,
p.id_card AS idCard,
p.compete_group_id AS groupId,
g.group_name AS groupName,
p.company_name AS companyName,
p.id_card_front AS idCardFront,
p.id_card_back AS idCardBack,
p.prove_img AS proveImg
FROM
t_compete_player p,
t_compete_group g
WHERE
p.compete_group_id = g.id
AND p.user_id = #{userId}
AND p.rec_status = 0
AND g.rec_status = 0
LIMIT 1
</select>
</mapper>

121
mt/src/main/resources/mapper_dao/CompeteTeamDao.xml

@ -5,7 +5,7 @@
<resultMap id="BaseResultMap" type="com.ccsens.mt.bean.po.CompeteTeam">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="creator" jdbcType="BIGINT" property="creator" />
<result column="porject_id" jdbcType="BIGINT" property="porjectId" />
<result column="project_id" jdbcType="BIGINT" property="projectId" />
<result column="compete_time_id" jdbcType="BIGINT" property="competeTimeId" />
<result column="gender_group" jdbcType="TINYINT" property="genderGroup" />
<result column="certificate" jdbcType="TINYINT" property="certificate" />
@ -15,7 +15,124 @@
<result column="rec_status" jdbcType="TINYINT" property="recStatus" />
</resultMap>
<select id="getJoinTeam" resultType="com.ccsens.mt.bean.vo.CompeteVo$CompeteTeamProject">
<select id="countJoinTeam" resultType="java.lang.Long">
SELECT
count( t.id )
FROM
t_compete_team t,
t_compete_team_member m
WHERE
t.id = m.compete_team_id
AND t.project_id = #{projectId}
AND t.compete_time_id = #{competeTimeId}
AND m.player_id = #{playerId}
AND t.rec_status = 0
AND m.rec_status = 0
</select>
<select id="countJoinProject" resultType="java.lang.Long">
SELECT
count( t.id )
FROM
t_compete_team t,
t_compete_project p,
t_compete_team_member m
WHERE
t.project_id = p.id
AND t.id = m.compete_team_id
AND t.compete_time_id = #{competeTimeId}
AND m.player_id = #{playerId}
AND p.join_rule = 1
AND t.rec_status = 0
AND m.rec_status = 0
AND p.rec_status = 0
</select>
<select id="queryMembers" resultType="com.ccsens.mt.bean.vo.CompeteVo$CompeteTeamProjectMember">
SELECT
p.id AS memberId,
p.NAME AS memberName,
m.captain
FROM
t_compete_team_member m,
t_compete_player p
WHERE
m.player_id = p.id
AND m.compete_team_id = #{teamId}
AND m.rec_status = 0
AND p.rec_status = 0
</select>
<select id="getQrCodeByTeamId" resultType="java.lang.String">
SELECT
qr_code
FROM
t_compete_team
WHERE
id = #{teamId}
AND rec_status = 0
</select>
<select id="queryTiwn" resultType="com.ccsens.mt.bean.vo.CompeteVo$CompeteTiwnProject">
SELECT
pp.id as competeProjectId,
p2.type,
p2.name as secondProjectName,
p1.name as parentProjectName,
pp.certificate
FROM
t_compete_player p,
t_compete_project_player pp,
t_compete_project p2,
t_compete_project p1
WHERE
p.id = pp.player_id
AND pp.project_id = p2.id
AND p2.parent_id = p1.id
AND p.user_id = #{userId}
AND pp.compete_time_id = #{competeTimeId}
AND p2.team = 0
</select>
<select id="queryTeam" resultType="com.ccsens.mt.bean.vo.CompeteVo$CompeteTeamProject">
SELECT
m.id as teamId,
p2.type,
p2.name as secondProjectName,
p1.name as parentProjectName,
p2.member_min as memberMin,
p2.member_max as memberMax,
t.certificate,
m.captain as creator,
if (m.captain = 1, t.qr_code, '') as qrCode
FROM
t_compete_player p,
t_compete_team_member m,
t_compete_team t,
t_compete_project p2,
t_compete_project p1
WHERE
p.id = m.player_id
AND m.compete_team_id = t.id
AND t.project_id = p2.id
AND p2.parent_id = p1.id
AND p.user_id = #{userId}
AND t.compete_time_id = #{competeTimeId}
AND p2.team = 1
AND p.rec_status = 0
AND m.rec_status = 0
AND t.rec_status = 0
AND p1.rec_status = 0
AND p2.rec_status = 0
</select>
<select id="countTiwnTeam" resultType="java.lang.Long">
SELECT
count(*)
FROM
t_compete_project_player pp,
t_compete_project p
WHERE
pp.project_id = p.id
AND pp.player_id = #{playerId}
AND pp.compete_time_id = #{competeTimeId}
AND p.team = 0
AND p.rec_status = 0
AND pp.rec_status = 0
</select>
</mapper>

28
mt/src/main/resources/mapper_raw/CompeteTeamMapper.xml

@ -4,7 +4,7 @@
<resultMap id="BaseResultMap" type="com.ccsens.mt.bean.po.CompeteTeam">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="creator" jdbcType="BIGINT" property="creator" />
<result column="porject_id" jdbcType="BIGINT" property="porjectId" />
<result column="project_id" jdbcType="BIGINT" property="projectId" />
<result column="compete_time_id" jdbcType="BIGINT" property="competeTimeId" />
<result column="gender_group" jdbcType="TINYINT" property="genderGroup" />
<result column="certificate" jdbcType="TINYINT" property="certificate" />
@ -72,7 +72,7 @@
</where>
</sql>
<sql id="Base_Column_List">
id, creator, porject_id, compete_time_id, gender_group, certificate, qr_code, created_at,
id, creator, project_id, compete_time_id, gender_group, certificate, qr_code, created_at,
updated_at, rec_status
</sql>
<select id="selectByExample" parameterType="com.ccsens.mt.bean.po.CompeteTeamExample" resultMap="BaseResultMap">
@ -106,11 +106,11 @@
</if>
</delete>
<insert id="insert" parameterType="com.ccsens.mt.bean.po.CompeteTeam">
insert into t_compete_team (id, creator, porject_id,
insert into t_compete_team (id, creator, project_id,
compete_time_id, gender_group, certificate,
qr_code, created_at, updated_at,
rec_status)
values (#{id,jdbcType=BIGINT}, #{creator,jdbcType=BIGINT}, #{porjectId,jdbcType=BIGINT},
values (#{id,jdbcType=BIGINT}, #{creator,jdbcType=BIGINT}, #{projectId,jdbcType=BIGINT},
#{competeTimeId,jdbcType=BIGINT}, #{genderGroup,jdbcType=TINYINT}, #{certificate,jdbcType=TINYINT},
#{qrCode,jdbcType=VARCHAR}, #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP},
#{recStatus,jdbcType=TINYINT})
@ -124,8 +124,8 @@
<if test="creator != null">
creator,
</if>
<if test="porjectId != null">
porject_id,
<if test="projectId != null">
project_id,
</if>
<if test="competeTimeId != null">
compete_time_id,
@ -156,8 +156,8 @@
<if test="creator != null">
#{creator,jdbcType=BIGINT},
</if>
<if test="porjectId != null">
#{porjectId,jdbcType=BIGINT},
<if test="projectId != null">
#{projectId,jdbcType=BIGINT},
</if>
<if test="competeTimeId != null">
#{competeTimeId,jdbcType=BIGINT},
@ -197,8 +197,8 @@
<if test="record.creator != null">
creator = #{record.creator,jdbcType=BIGINT},
</if>
<if test="record.porjectId != null">
porject_id = #{record.porjectId,jdbcType=BIGINT},
<if test="record.projectId != null">
project_id = #{record.projectId,jdbcType=BIGINT},
</if>
<if test="record.competeTimeId != null">
compete_time_id = #{record.competeTimeId,jdbcType=BIGINT},
@ -230,7 +230,7 @@
update t_compete_team
set id = #{record.id,jdbcType=BIGINT},
creator = #{record.creator,jdbcType=BIGINT},
porject_id = #{record.porjectId,jdbcType=BIGINT},
project_id = #{record.projectId,jdbcType=BIGINT},
compete_time_id = #{record.competeTimeId,jdbcType=BIGINT},
gender_group = #{record.genderGroup,jdbcType=TINYINT},
certificate = #{record.certificate,jdbcType=TINYINT},
@ -248,8 +248,8 @@
<if test="creator != null">
creator = #{creator,jdbcType=BIGINT},
</if>
<if test="porjectId != null">
porject_id = #{porjectId,jdbcType=BIGINT},
<if test="projectId != null">
project_id = #{projectId,jdbcType=BIGINT},
</if>
<if test="competeTimeId != null">
compete_time_id = #{competeTimeId,jdbcType=BIGINT},
@ -278,7 +278,7 @@
<update id="updateByPrimaryKey" parameterType="com.ccsens.mt.bean.po.CompeteTeam">
update t_compete_team
set creator = #{creator,jdbcType=BIGINT},
porject_id = #{porjectId,jdbcType=BIGINT},
project_id = #{projectId,jdbcType=BIGINT},
compete_time_id = #{competeTimeId,jdbcType=BIGINT},
gender_group = #{genderGroup,jdbcType=TINYINT},
certificate = #{certificate,jdbcType=TINYINT},

2
pom.xml

@ -9,7 +9,7 @@
<module>cloudutil</module>
<module>util</module>
<module>tall</module>
<!-- <module>ht</module>-->
<module>ht</module>
<module>game</module>
<module>mt</module>
<!-- <module>health</module>-->

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

@ -140,7 +140,13 @@ public enum CodeEnum {
NOT_CONFIG_OR_ERR(118,"缺少配置信息,或配置信息异常",true),
GROUP_MEMBER_LIMIT(119,"当前组内人员已满,请选择其他组",true),
GROUP_NOT_CHOICE(120,"请选择要加入的队伍",true),
JOINED_TEAM(121,"您已经加入队伍",true),
JOINED_TEAM(121,"您已经加入队伍,无需重复加入",true),
TEAM_MEMBER_MORE(122,"加入队伍的人数已经达到上限,请选择其他队伍",true),
TEAM_COMPANY_NOT_SAME(123,"对不起,您和团队其他人不是同一个单位的", true),
TEAM_GROUP_NOT_SAME(124,"对不起,您和团队其他人不是同一个组别的", true),
BASE_INFO_LACK(125,"请先填写您的基本信息", true),
JOINED_MORE(126,"该类型比赛您参赛的数目已达上限", true),
JOINED_SAME(127,"您已经参加同类型的比赛了,不能再重复参加参赛", true),
;

5
util/src/main/java/com/ccsens/util/PropUtil.java

@ -22,6 +22,7 @@ public class PropUtil {
public static String wxPrefix;
public static String smsCode;
public static String openWx;
public static String signUpUrl;
@Value("${gatewayUrl:}")
@ -69,4 +70,8 @@ public class PropUtil {
public void setOpenWx(String openWx) {
PropUtil.openWx = openWx;
}
@Value("${file.signUpUrl:}")
public void setSignUpUrl(String signUpUrl) {
PropUtil.signUpUrl = signUpUrl;
}
}

2
util/src/main/java/com/ccsens/util/RedisUtil.java

@ -514,7 +514,7 @@ public class RedisUtil {
* @param time 时间()
* @return
*/
public boolean lSet(String key, List<Object> value, long time) {
public boolean lSet(String key, List<? extends Object> value, long time) {
try {
redisTemplate.opsForList().rightPushAll(key, value);
if (time > 0) expire(key, time);

Loading…
Cancel
Save