Browse Source

合并

master
zy_Java 5 years ago
parent
commit
3979d290fb
  1. 5
      mt/src/main/java/com/ccsens/mt/api/CompeteController.java
  2. 8
      mt/src/main/java/com/ccsens/mt/bean/dto/CompeteDto.java
  3. 41
      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. 70
      mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTeamDao.java
  6. 220
      mt/src/main/java/com/ccsens/mt/service/CompeteService.java
  7. 5
      mt/src/main/java/com/ccsens/mt/service/ICompeteService.java
  8. 17
      mt/src/main/java/com/ccsens/mt/util/Constant.java
  9. 4
      mt/src/main/resources/application-dev.yml
  10. 5
      mt/src/main/resources/application-prod.yml
  11. 4
      mt/src/main/resources/application-test.yml
  12. 29
      mt/src/main/resources/mapper_dao/CompetePlayerDao.xml
  13. 138
      mt/src/main/resources/mapper_dao/CompeteTeamDao.xml
  14. 2
      pom.xml
  15. 7
      util/src/main/java/com/ccsens/util/CodeEnum.java
  16. 5
      util/src/main/java/com/ccsens/util/PropUtil.java
  17. 23
      util/src/main/java/com/ccsens/util/WebConstant.java
  18. 150
      util/src/main/java/com/ccsens/util/redis/AbstractRedisService.java

5
mt/src/main/java/com/ccsens/mt/api/CompeteController.java

@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.List;
/**
@ -88,7 +89,7 @@ public class CompeteController {
@MustLogin
@ApiOperation(value = "提交选择的比赛项目", notes = "")
@RequestMapping(value = "/save/project", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<CompeteVo.CompetePlayerInfo> saveCompeteProject(@ApiParam @Validated @RequestBody QueryDto<CompeteDto.CompeteProject> params) {
public JsonResponse<CompeteVo.CompetePlayerInfo> saveCompeteProject(@ApiParam @Validated @RequestBody QueryDto<CompeteDto.CompeteProject> params) throws IOException {
log.info("提交选择的比赛项目:{}",params);
CompeteVo.CompetePlayerInfo competePlayerInfo = competeService.saveCompeteProject(params);
return JsonResponse.newInstance().ok(competePlayerInfo);
@ -125,7 +126,7 @@ public class CompeteController {
@MustLogin
@ApiOperation(value = "扫码加入团队", notes = "")
@RequestMapping(value = "/joinGroup", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<CompeteVo.CompeteTeamProject> joinCompeteGroup(@ApiParam @Validated @RequestBody QueryDto params) {
public JsonResponse<CompeteVo.CompeteTeamProject> joinCompeteGroup(@ApiParam @Validated @RequestBody QueryDto<CompeteDto.CompeteGroup> params) {
log.info("扫码加入团队:{}",params);
CompeteVo.CompeteTeamProject competeTeamProject = competeService.joinCompeteGroup(params);
return JsonResponse.newInstance().ok(competeTeamProject);

8
mt/src/main/java/com/ccsens/mt/bean/dto/CompeteDto.java

@ -94,4 +94,12 @@ public class CompeteDto {
private Long competeTimeId;
}
@Data
@ApiModel("项目团队ID")
public static class CompeteGroup{
@NotNull(message="请选择团队信息")
@ApiModelProperty("团队ID")
private Long id;
}
}

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

@ -1,5 +1,7 @@
package com.ccsens.mt.bean.vo;
import com.ccsens.mt.bean.po.CompetePlayer;
import com.ccsens.mt.bean.po.CompeteTeam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -62,8 +64,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 +84,22 @@ public class CompeteVo {
private List<CompeteTiwnProject> competeTiwnProjects;
@ApiModelProperty("参加的团队比赛信息")
private List<CompeteTeamProject> competeTeamProjects;
public CompetePlayerInfo(CompetePlayer player, com.ccsens.mt.bean.po.CompeteGroup group , com.ccsens.mt.bean.po.CompeteCompany company ,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 = company.getName();
this.idCardBack = player.getIdCardBack();
this.idCardFront = player.getIdCardFront();
this.proveImg = player.getProveImg();
this.competeTiwnProjects = competeProjectAll.getCompeteTiwnProjects();
this.competeTeamProjects = competeProjectAll.getCompeteTeamProjects();
}
}
@Data
@ -102,8 +120,8 @@ public class CompeteVo {
@Data
@ApiModel("团队比赛信息")
public static class CompeteTeamProject {
@ApiModelProperty("选手与单人项目关联信息的id")
private Long competeProjectId;
@ApiModelProperty("团队id")
private Long teamId;
@ApiModelProperty("比赛的类型,0跳绳比赛")
private byte type;
@ApiModelProperty("一级项目名字")
@ -124,6 +142,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
@ -189,8 +220,6 @@ public class CompeteVo {
private int gender;
@ApiModelProperty("手机号")
private String phone;
@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);
}

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

@ -0,0 +1,70 @@
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:
* @author: whj
* @time: 2020/9/3 10:40
*/
public interface CompeteTeamDao extends CompeteTeamMapper {
/**
* 统计用户参加项目下分组的数量
* @param projectId 项目ID
* @param playerId 选手ID
* @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
*/
long countTiwnTeam(@Param("playerId") Long playerId, @Param("competeTimeId") Long competeTimeId);
}

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

@ -4,28 +4,32 @@ import cn.hutool.core.bean.BeanUtil;
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.CompeteCompany;
import com.ccsens.mt.bean.po.CompeteCompanyExample;
import com.ccsens.mt.bean.po.CompetePlayer;
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.dao.CompeteTimeDao;
import com.ccsens.mt.persist.mapper.CompeteCompanyMapper;
import com.ccsens.mt.persist.mapper.*;
import com.ccsens.mt.util.Constant;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.RedisKeyManager;
import com.ccsens.util.RedisUtil;
import com.ccsens.util.*;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* @author
*/
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class CompeteService implements ICompeteService{
@Resource
private CompeteTimeDao competeTimeDao;
@ -35,6 +39,19 @@ public class CompeteService implements ICompeteService{
private CompeteCompanyMapper competeCompanyMapper;
@Resource
private Snowflake snowflake;
@Resource
private CompeteTeamDao competeTeamDao;
@Resource
private CompetePlayerDao competePlayerDao;
@Resource
private CompeteTeamMemberMapper competeTeamMemberMapper;
@Resource
private CompeteProjectMapper competeProjectMapper;
@Resource
private CompeteProjectPlayerMapper competeProjectPlayerMapper;
@Resource
private CompeteGroupMapper competeGroupMapper;
/**
* 查看第几届
@ -141,8 +158,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.setProjectId(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());
CompeteCompany company = competeCompanyMapper.selectByPrimaryKey(player.getCompanyId());
CompeteVo.CompetePlayerInfo info = new CompeteVo.CompetePlayerInfo(player, group, company,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);
}
return players.get(0);
}
/**
@ -150,7 +234,24 @@ 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;
}
/**
@ -158,7 +259,7 @@ public class CompeteService implements ICompeteService{
*/
@Override
public String getQrCodeByTeamId(QueryDto<CompeteDto.CompeteProjectPlayer> params) {
return null;
return competeTeamDao.getQrCodeByTeamId(params.getParam().getProjectPlayerId());
}
/**
@ -166,14 +267,105 @@ public class CompeteService implements ICompeteService{
*/
@Override
public CompeteVo.GetPlayerInfo getCompetePlayerInfo(QueryDto params) {
return null;
return competePlayerDao.getInfo(params.getUserId());
}
/**
* 扫码加入团队
*/
@Override
public CompeteVo.CompeteTeamProject joinCompeteGroup(QueryDto params) {
return null;
public CompeteVo.CompeteTeamProject joinCompeteGroup(QueryDto<CompeteDto.CompeteGroup> params) {
log.info("扫码加入团队:{}", params);
CompetePlayer player = getPlayer(params.getUserId());
CompeteTeam team = competeTeamDao.selectByPrimaryKey(params.getParam().getId());
log.info("团队信息:{}", team);
if (team == null) {
throw new BaseException(CodeEnum.PARAM_ERROR);
}
// 查找队长信息
CompetePlayer creator = competePlayerDao.selectByPrimaryKey(team.getCreator());
// 项目信息
CompeteProject project = competeProjectMapper.selectByPrimaryKey(team.getProjectId());
// 判断是否已加入其他团队
pageJoinedTeam(project, player, team.getCompeteTimeId(), creator, true);
// 判断团队人数
CompeteTeamMemberExample teamMemberExample = new CompeteTeamMemberExample();
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;
}
/**
* 判断是否已加入其他团队
* @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.getCompanyId().equals(creator.getCompanyId())) {
log.info("单位不一样:{},{}",player.getCompanyId(), creator.getCompanyId());
throw new BaseException(CodeEnum.TEAM_COMPANY_NOT_SAME);
}
if (player.getCompeteGroupId().longValue() != creator.getCompeteGroupId().longValue()) {
log.info("组别不一样:{},{}",player.getCompanyId(), creator.getCompanyId());
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.getCompanyId().equals(creator.getCompanyId())) {
log.info("单位不一样:{},{}", player.getCompanyId(), creator.getCompanyId());
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);
}
}
}

5
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;
/**
* 查看本人所有参赛的项目
@ -84,5 +85,5 @@ public interface ICompeteService {
* @param params
* @return
*/
CompeteVo.CompeteTeamProject joinCompeteGroup(QueryDto params);
CompeteVo.CompeteTeamProject joinCompeteGroup(QueryDto<CompeteDto.CompeteGroup> params);
}

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

@ -30,4 +30,21 @@ public class Constant {
}
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>

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

@ -0,0 +1,138 @@
<?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.CompeteTeamDao">
<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="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" />
<result column="qr_code" jdbcType="VARCHAR" property="qrCode" />
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
<result column="rec_status" jdbcType="TINYINT" property="recStatus" />
</resultMap>
<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>

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>-->

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

@ -140,6 +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),
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;
}
}

23
util/src/main/java/com/ccsens/util/WebConstant.java

@ -1001,4 +1001,27 @@ public class WebConstant {
}
//wbs表时间类型==================================================================/
/**
* redis类型
*/
public enum RedisType{
/**redis类型**/
STRING(0,"字符串类型"),
LIST_INDEX(1,"列表-某一个"),
LIST_RANGE(2,"列表-范围"),
SET(3,"集合"),
SORT_SET_RANGE(4,"有序集合-index"),
SORT_SET_SCORE(5,"有序集合-分数"),
HASH_ITEM(6, "哈希-某一项"),
HASH(7, "哈希-全部"),
;
/**类型code*/
public int type;
/**类型*/
public String message;
RedisType(int type, String message) {
this.type = type;
this.message = message;
}
}
}

150
util/src/main/java/com/ccsens/util/redis/AbstractRedisService.java

@ -0,0 +1,150 @@
package com.ccsens.util.redis;
import com.ccsens.util.RedisUtil;
import com.ccsens.util.WebConstant;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Resource;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* redis查询
* @author whj
*/
@Slf4j
public abstract class AbstractRedisService {
@Resource
private RedisUtil redisUtil;
public Object queryRedis(String key, WebConstant.RedisType type, Long expireTime, Object... indexArr) {
Object obj = queryByType(key, type, indexArr);
log.info("key:{},value:{}", key, obj);
if (!isEmpty(obj)) {
return obj;
}
synchronized (this) {
Object obj2 = queryByType(key, type, indexArr);
if (!isEmpty(obj2)) {
return obj2;
}
// 查询数据库业务
Object o = queryDb(key);
log.info("Key:{}查询数据库的结果是:{}", key, o);
if (isEmpty(o)) {
return null;
}
saveByType(key, o, expireTime, type, indexArr);
return o;
}
}
private boolean isEmpty(Object obj) {
if (obj == null) {
return true;
}
if (obj instanceof Collection) {
Collection collection = (Collection)obj;
if (collection.isEmpty()) {
return true;
}
}
if (obj instanceof Map) {
Map map = (Map)obj;
return map.isEmpty();
}
return false;
}
/**
* 根据redis_key 查询数据库中对应的值
* @param key redis key
* @return value
*/
public abstract Object queryDb(String key);
/**
* 查询不同类型的值
* @param key redis key
* @param type 查询redis类型
* @param indexArr 查询listzset, hash时需要的其他字段
* @return value
*/
private Object queryByType(String key, WebConstant.RedisType type, Object... indexArr) {
switch (type) {
case STRING: return redisUtil.get(key);
case LIST_INDEX: return redisUtil.lGetIndex(key, (Long)indexArr[0]);
case LIST_RANGE: return redisUtil.lGet(key, (Long)indexArr[0], (Long)indexArr[1]);
case SET: return redisUtil.sGet(key);
case SORT_SET_RANGE: return redisUtil.zsGet(key, (Long)indexArr[0], (Long)indexArr[1]);
case SORT_SET_SCORE: return redisUtil.zsGetByScore(key, (Double) indexArr[0], (Double)indexArr[1]);
case HASH_ITEM: return redisUtil.hget(key, (String)indexArr[0]);
case HASH: return redisUtil.hmget(key);
default: return null;
}
}
/**
* 保存redis的值
* @param key redisKey
* @param value value
* @param expireTime 过期时间null为永久
* @param type 类型
* @param hashItem 仅hash类型时需传值读取某一个item时使用
*
*/
private void saveByType(String key, Object value, Long expireTime, WebConstant.RedisType type, Object... hashItem) {
switch (type) {
case STRING:
if (expireTime == null) {
redisUtil.set(key, value);
} else {
redisUtil.set(key, value, expireTime);
}
break;
case LIST_INDEX:
if (expireTime == null) {
redisUtil.lSet(key, value);
} else {
redisUtil.lSet(key, value, expireTime);
}
break;
case LIST_RANGE:
if (expireTime == null) {
redisUtil.lSet(key, (List<Object>)value);
} else {
redisUtil.lSet(key, (List<Object>)value, expireTime);
}
break;
case SET:
case SORT_SET_RANGE:
case SORT_SET_SCORE:
if (expireTime == null) {
redisUtil.sSet(key, value);
} else {
redisUtil.sSet(key, value, expireTime);
}
break;
case HASH_ITEM:
if (expireTime == null) {
redisUtil.hset(key, (String)hashItem[0], value);
} else {
redisUtil.hset(key, (String)hashItem[0], value, expireTime);
}
break;
case HASH:
if (expireTime == null) {
redisUtil.hmset(key, (Map<String, Object>)value);
} else {
redisUtil.hmset(key, (Map<String, Object>)value, expireTime);
}
break;
default:
}
}
}
Loading…
Cancel
Save