Browse Source

比赛报名校内版

master
zy_Java 5 years ago
parent
commit
c2ad3e7cae
  1. 4
      cloudutil/src/main/java/com/ccsens/cloudutil/aspect/LogAspect.java
  2. 17
      game/src/main/java/com/ccsens/game/service/ScreenService.java
  3. 68
      mt/src/main/java/com/ccsens/mt/api/DepartmentController.java
  4. 8
      mt/src/main/java/com/ccsens/mt/api/LevelController.java
  5. 55
      mt/src/main/java/com/ccsens/mt/bean/dto/CompeteDto.java
  6. 6
      mt/src/main/java/com/ccsens/mt/bean/dto/LevelDto.java
  7. 95
      mt/src/main/java/com/ccsens/mt/bean/po/CompeteCompanyRole.java
  8. 621
      mt/src/main/java/com/ccsens/mt/bean/po/CompeteCompanyRoleExample.java
  9. 56
      mt/src/main/java/com/ccsens/mt/bean/vo/CompeteVo.java
  10. 31
      mt/src/main/java/com/ccsens/mt/persist/dao/CompetePlayerDao.java
  11. 11
      mt/src/main/java/com/ccsens/mt/persist/dao/LevelUpDao.java
  12. 30
      mt/src/main/java/com/ccsens/mt/persist/mapper/CompeteCompanyRoleMapper.java
  13. 4
      mt/src/main/java/com/ccsens/mt/service/CompeteService.java
  14. 220
      mt/src/main/java/com/ccsens/mt/service/DepartmentService.java
  15. 41
      mt/src/main/java/com/ccsens/mt/service/IDepartmentService.java
  16. 5
      mt/src/main/java/com/ccsens/mt/service/ILevelUpService.java
  17. 117
      mt/src/main/java/com/ccsens/mt/service/LevelUpService.java
  18. 4
      mt/src/main/resources/application-prod.yml
  19. 124
      mt/src/main/resources/mapper_dao/CompetePlayerDao.xml
  20. 19
      mt/src/main/resources/mapper_dao/LevelUpDao.xml
  21. 243
      mt/src/main/resources/mapper_raw/CompeteCompanyRoleMapper.xml
  22. 3
      tall/src/main/java/com/ccsens/tall/scheduled/ScheduledService.java
  23. 15
      tall/src/main/java/com/ccsens/tall/service/ProjectService.java
  24. 30
      tall/src/main/java/com/ccsens/tall/service/UserService.java
  25. 3
      tall/src/main/java/com/ccsens/tall/web/ProjectController.java
  26. 1
      util/src/main/java/com/ccsens/util/CodeEnum.java
  27. 2
      util/src/main/java/com/ccsens/util/QrCodeUtil.java
  28. 2
      util/src/main/java/com/ccsens/util/UploadFileUtil_Servlet3.java
  29. 40
      util/src/main/java/com/ccsens/util/WebConstant.java
  30. 24
      util/src/main/java/com/ccsens/util/wx/WxXcxUtil.java
  31. 2
      util/src/test/java/com/ccsens/util/TestQrCord.java

4
cloudutil/src/main/java/com/ccsens/cloudutil/aspect/LogAspect.java

@ -49,7 +49,9 @@ public class LogAspect {
} }
@Pointcut("execution(* com.ccsens.tall.web..*(..)) || execution(* com.ccsens.ht.api..*(..))") @Pointcut("execution(* com.ccsens.tall.web..*(..)) || execution(* com.ccsens.ht.api..*(..))" +
" || execution(* com.ccsens.mt.api..*(..)) || execution(* com.ccsens.game.api..*(..))" +
" || execution(* com.ccsens.health.api..*(..)) || execution(* com.ccsens.pims.api..*(..))")
public void logAdvice(){ public void logAdvice(){
} }

17
game/src/main/java/com/ccsens/game/service/ScreenService.java

@ -131,18 +131,21 @@ public class ScreenService implements IScreenService {
gameRecord.setUrl(gameUrl + gameType.getScreenUrl() + "?id=" + gameRecord.getId()); gameRecord.setUrl(gameUrl + gameType.getScreenUrl() + "?id=" + gameRecord.getId());
// gameRecord.setQrCodeUrl(gameUrl + gameRecord.getId() + File.separator + gameType.getClientUrl()); // gameRecord.setQrCodeUrl(gameUrl + gameRecord.getId() + File.separator + gameType.getClientUrl());
if("1".equalsIgnoreCase(PropUtil.openWx)){ // if("1".equalsIgnoreCase(PropUtil.openWx)){
//生成二维码 //生成二维码
String fileName = "/gameQrCode/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".png"; String fileName = "/gameQrCode/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".png";
String path = WebConstant.UPLOAD_PATH_BASE + fileName; String path = WebConstant.UPLOAD_PATH_BASE + fileName;
WxXcxUtil.getWxCode(WebConstant.QRCODE_GAME, "id=" + gameRecord.getId() + "&type=" + gameType.getCode(), null, path, gameType.getCode()); // WxXcxUtil.getWxCode(WebConstant.QRCODE_GAME, "id=" + gameRecord.getId() + "&type=" + gameType.getCode(), null, path, gameType.getCode());
WxXcxUtil.getWxCodeC(WebConstant.QRCODE_GAME+"?id=" + gameRecord.getId() + "&type=" + gameType.getCode(), path, gameType.getCode());
gameRecord.setQrCodeUrl(PropUtil.qrCode + fileName); gameRecord.setQrCodeUrl(PropUtil.qrCode + fileName);
log.info("调用微信生成二维码"); log.info("调用微信生成二维码");
} else {
log.info("测试环境,不调用生成二维码"); // } else {
//给一个默认测试的 // log.info("测试环境,不调用生成二维码");
gameRecord.setQrCodeUrl(PropUtil.qrCode + "/gameQrCode/2020-08-19/1597822577181.png"); // //给一个默认测试的
} // gameRecord.setQrCodeUrl(PropUtil.qrCode + "/gameQrCode/2020-08-19/1597822577181.png");
// }
//查找此任务下的游戏配置表 //查找此任务下的游戏配置表
byte businessType = 8; byte businessType = 8;

68
mt/src/main/java/com/ccsens/mt/api/DepartmentController.java

@ -0,0 +1,68 @@
package com.ccsens.mt.api;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.mt.bean.dto.CompeteDto;
import com.ccsens.mt.bean.vo.CompeteVo;
import com.ccsens.mt.service.IDepartmentService;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @author
*/
@Slf4j
@Api(tags = "线上体育竞技比赛(校内报名)", description = "")
@RestController
@RequestMapping("/department")
public class DepartmentController {
@Resource
private IDepartmentService departmentService;
@MustLogin
@ApiOperation(value = "查看院系信息", notes = "")
@RequestMapping(value = "/company", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<CompeteVo.CompeteTime> getCompany(@ApiParam @Validated @RequestBody QueryDto<CompeteDto.CompeteType> params) {
log.info("查看院系信息:{}",params);
List<CompeteVo.CompeteCompany> competeCompanyList = departmentService.getCompany(params);
return JsonResponse.newInstance().ok(competeCompanyList);
}
@MustLogin
@ApiOperation(value = "查看参赛项目信息", notes = "")
@RequestMapping(value = "/project", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<CompeteVo.CompeteProject>> queryCompeteProject(@ApiParam @Validated @RequestBody QueryDto<CompeteDto.CompeteType> params) {
log.info("查看参赛项目信息:{}",params);
List<CompeteVo.CompeteProject> competeProjects = departmentService.queryCompeteProject(params);
return JsonResponse.newInstance().ok(competeProjects);
}
@MustLogin
@ApiOperation(value = "院系提交报名信息", notes = "")
@RequestMapping(value = "/save/department", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<CompeteVo.DepartmentInfo> saveDepartment(@ApiParam @Validated @RequestBody QueryDto<CompeteDto.DepartmentInfo> params) {
log.info("查看参赛项目信息:{}",params);
CompeteVo.DepartmentInfo department = departmentService.saveDepartment(params);
return JsonResponse.newInstance().ok(department);
}
@MustLogin
@ApiOperation(value = "查看院系报名信息", notes = "")
@RequestMapping(value = "/get/department", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<CompeteVo.DepartmentInfo> getDepartment(@ApiParam @Validated @RequestBody QueryDto<CompeteDto.GetDepartmentInfo> params) {
log.info("查看参赛项目信息:{}",params);
CompeteVo.DepartmentInfo department = departmentService.getDepartment(params);
return JsonResponse.newInstance().ok(department);
}
}

8
mt/src/main/java/com/ccsens/mt/api/LevelController.java

@ -6,6 +6,7 @@ import com.ccsens.mt.bean.vo.LevelVo;
import com.ccsens.mt.service.ILevelUpService; import com.ccsens.mt.service.ILevelUpService;
import com.ccsens.util.JsonResponse; import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto; import com.ccsens.util.bean.dto.QueryDto;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
@ -17,13 +18,12 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
/** /**
* @author * @author
*/ */
@Slf4j @Slf4j
@Api(tags = "线上体育竞技比赛", description = "") @Api(tags = "晋级系统", description = "")
@RestController @RestController
@RequestMapping("/level") @RequestMapping("/level")
public class LevelController { public class LevelController {
@ -43,9 +43,9 @@ public class LevelController {
@MustLogin @MustLogin
@ApiOperation(value = "查找晋级选手信息", notes = "") @ApiOperation(value = "查找晋级选手信息", notes = "")
@RequestMapping(value = "/userInfo", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @RequestMapping(value = "/userInfo", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<LevelVo.QueryLevelUserInfo>> queryLevelUserInfo(@ApiParam @Validated @RequestBody QueryDto<LevelDto.ManualLevelUpDto> params) { public JsonResponse<PageInfo<LevelVo.QueryLevelUserInfo>> queryLevelUserInfo(@ApiParam @Validated @RequestBody QueryDto<LevelDto.QueryLevelUserInfo> params) {
log.info("手动晋级:{}",params); log.info("手动晋级:{}",params);
List<LevelVo.QueryLevelUserInfo> levelUserInfoList = levelUpService.queryLevelUserInfo(params); PageInfo<LevelVo.QueryLevelUserInfo> levelUserInfoList = levelUpService.queryLevelUserInfo(params);
return JsonResponse.newInstance().ok(levelUserInfoList); return JsonResponse.newInstance().ok(levelUserInfoList);
} }
} }

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

@ -6,6 +6,7 @@ import lombok.Data;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List;
/** /**
* @author * @author
@ -16,7 +17,7 @@ public class CompeteDto {
@ApiModel @ApiModel
public static class CompeteType{ public static class CompeteType{
@NotNull @NotNull
@ApiModelProperty("比赛的类型,0跳绳比赛") @ApiModelProperty("比赛的类型,0跳绳省赛 1跳绳校内比赛")
private int type; private int type;
} }
@ -105,4 +106,56 @@ public class CompeteDto {
@ApiModelProperty("团队ID") @ApiModelProperty("团队ID")
private Long id; private Long id;
} }
@Data
@ApiModel("院系提交报名信息")
public static class DepartmentInfo{
@NotNull(message="请选择院系信息")
@ApiModelProperty("院系id")
private Long id;
@NotNull
@ApiModelProperty("比赛的类型,0跳绳省赛 1跳绳校内比赛")
private int type;
@ApiModelProperty("填表人裁判等信息")
private List<DepartmentRole> roleList;
@ApiModelProperty("每个比赛项目的参赛名单")
private List<DepartmentProject> projectList;
}
@Data
@ApiModel("填表人裁判等信息")
public static class DepartmentRole{
@NotEmpty
@ApiModelProperty("名字")
private String name;
@NotEmpty
@ApiModelProperty("手机号")
private String phone;
@NotNull
@ApiModelProperty("担任的角色 0领队 1裁判 2填表人")
private int role;
}
@Data
@ApiModel("每个比赛项目的参赛名单")
public static class DepartmentProject{
@NotNull
@ApiModelProperty("比赛项目id(二级的)")
private Long competeProjectId;
@NotEmpty
@ApiModelProperty("参赛人员名单,名字中间用逗号隔开")
private String names;
@ApiModelProperty("性别组 0女 1男 2混合")
private int genderGroup;
}
@Data
@ApiModel("获取院系提交的报名信息")
public static class GetDepartmentInfo{
// @NotNull(message="请选择院系信息")
// @ApiModelProperty("院系id")
// private Long id;
@NotNull
@ApiModelProperty("比赛的类型,0跳绳省赛 1跳绳校内比赛")
private int type;
}
} }

6
mt/src/main/java/com/ccsens/mt/bean/dto/LevelDto.java

@ -68,12 +68,6 @@ public class LevelDto {
public static class ManualLevelUpPlayer{ public static class ManualLevelUpPlayer{
@ApiModelProperty("选手id") @ApiModelProperty("选手id")
private Long playerId; private Long playerId;
// @ApiModelProperty("分数")
// private int score;
// @ApiModelProperty("附加分数")
// private int additionScore;
// @ApiModelProperty("名次")
// private int ranking;
} }
@Data @Data
@ApiModel("查询晋级信息") @ApiModel("查询晋级信息")

95
mt/src/main/java/com/ccsens/mt/bean/po/CompeteCompanyRole.java

@ -0,0 +1,95 @@
package com.ccsens.mt.bean.po;
import java.io.Serializable;
import java.util.Date;
public class CompeteCompanyRole implements Serializable {
private Long id;
private Long playerId;
private Long competeCompanyId;
private Byte type;
private Date createdAt;
private Date updatedAt;
private Byte recStatus;
private static final long serialVersionUID = 1L;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getPlayerId() {
return playerId;
}
public void setPlayerId(Long playerId) {
this.playerId = playerId;
}
public Long getCompeteCompanyId() {
return competeCompanyId;
}
public void setCompeteCompanyId(Long competeCompanyId) {
this.competeCompanyId = competeCompanyId;
}
public Byte getType() {
return type;
}
public void setType(Byte type) {
this.type = type;
}
public Date getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
public Date getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Date updatedAt) {
this.updatedAt = updatedAt;
}
public Byte getRecStatus() {
return recStatus;
}
public void setRecStatus(Byte recStatus) {
this.recStatus = recStatus;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", playerId=").append(playerId);
sb.append(", competeCompanyId=").append(competeCompanyId);
sb.append(", type=").append(type);
sb.append(", createdAt=").append(createdAt);
sb.append(", updatedAt=").append(updatedAt);
sb.append(", recStatus=").append(recStatus);
sb.append("]");
return sb.toString();
}
}

621
mt/src/main/java/com/ccsens/mt/bean/po/CompeteCompanyRoleExample.java

@ -0,0 +1,621 @@
package com.ccsens.mt.bean.po;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class CompeteCompanyRoleExample {
protected String orderByClause;
protected boolean distinct;
protected List<Criteria> oredCriteria;
public CompeteCompanyRoleExample() {
oredCriteria = new ArrayList<Criteria>();
}
public void setOrderByClause(String orderByClause) {
this.orderByClause = orderByClause;
}
public String getOrderByClause() {
return orderByClause;
}
public void setDistinct(boolean distinct) {
this.distinct = distinct;
}
public boolean isDistinct() {
return distinct;
}
public List<Criteria> getOredCriteria() {
return oredCriteria;
}
public void or(Criteria criteria) {
oredCriteria.add(criteria);
}
public Criteria or() {
Criteria criteria = createCriteriaInternal();
oredCriteria.add(criteria);
return criteria;
}
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}
protected Criteria createCriteriaInternal() {
Criteria criteria = new Criteria();
return criteria;
}
public void clear() {
oredCriteria.clear();
orderByClause = null;
distinct = false;
}
protected abstract static class GeneratedCriteria {
protected List<Criterion> criteria;
protected GeneratedCriteria() {
super();
criteria = new ArrayList<Criterion>();
}
public boolean isValid() {
return criteria.size() > 0;
}
public List<Criterion> getAllCriteria() {
return criteria;
}
public List<Criterion> getCriteria() {
return criteria;
}
protected void addCriterion(String condition) {
if (condition == null) {
throw new RuntimeException("Value for condition cannot be null");
}
criteria.add(new Criterion(condition));
}
protected void addCriterion(String condition, Object value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value));
}
protected void addCriterion(String condition, Object value1, Object value2, String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value1, value2));
}
public Criteria andIdIsNull() {
addCriterion("id is null");
return (Criteria) this;
}
public Criteria andIdIsNotNull() {
addCriterion("id is not null");
return (Criteria) this;
}
public Criteria andIdEqualTo(Long value) {
addCriterion("id =", value, "id");
return (Criteria) this;
}
public Criteria andIdNotEqualTo(Long value) {
addCriterion("id <>", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThan(Long value) {
addCriterion("id >", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThanOrEqualTo(Long value) {
addCriterion("id >=", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThan(Long value) {
addCriterion("id <", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThanOrEqualTo(Long value) {
addCriterion("id <=", value, "id");
return (Criteria) this;
}
public Criteria andIdIn(List<Long> values) {
addCriterion("id in", values, "id");
return (Criteria) this;
}
public Criteria andIdNotIn(List<Long> values) {
addCriterion("id not in", values, "id");
return (Criteria) this;
}
public Criteria andIdBetween(Long value1, Long value2) {
addCriterion("id between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andIdNotBetween(Long value1, Long value2) {
addCriterion("id not between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andPlayerIdIsNull() {
addCriterion("player_id is null");
return (Criteria) this;
}
public Criteria andPlayerIdIsNotNull() {
addCriterion("player_id is not null");
return (Criteria) this;
}
public Criteria andPlayerIdEqualTo(Long value) {
addCriterion("player_id =", value, "playerId");
return (Criteria) this;
}
public Criteria andPlayerIdNotEqualTo(Long value) {
addCriterion("player_id <>", value, "playerId");
return (Criteria) this;
}
public Criteria andPlayerIdGreaterThan(Long value) {
addCriterion("player_id >", value, "playerId");
return (Criteria) this;
}
public Criteria andPlayerIdGreaterThanOrEqualTo(Long value) {
addCriterion("player_id >=", value, "playerId");
return (Criteria) this;
}
public Criteria andPlayerIdLessThan(Long value) {
addCriterion("player_id <", value, "playerId");
return (Criteria) this;
}
public Criteria andPlayerIdLessThanOrEqualTo(Long value) {
addCriterion("player_id <=", value, "playerId");
return (Criteria) this;
}
public Criteria andPlayerIdIn(List<Long> values) {
addCriterion("player_id in", values, "playerId");
return (Criteria) this;
}
public Criteria andPlayerIdNotIn(List<Long> values) {
addCriterion("player_id not in", values, "playerId");
return (Criteria) this;
}
public Criteria andPlayerIdBetween(Long value1, Long value2) {
addCriterion("player_id between", value1, value2, "playerId");
return (Criteria) this;
}
public Criteria andPlayerIdNotBetween(Long value1, Long value2) {
addCriterion("player_id not between", value1, value2, "playerId");
return (Criteria) this;
}
public Criteria andCompeteCompanyIdIsNull() {
addCriterion("compete_company_id is null");
return (Criteria) this;
}
public Criteria andCompeteCompanyIdIsNotNull() {
addCriterion("compete_company_id is not null");
return (Criteria) this;
}
public Criteria andCompeteCompanyIdEqualTo(Long value) {
addCriterion("compete_company_id =", value, "competeCompanyId");
return (Criteria) this;
}
public Criteria andCompeteCompanyIdNotEqualTo(Long value) {
addCriterion("compete_company_id <>", value, "competeCompanyId");
return (Criteria) this;
}
public Criteria andCompeteCompanyIdGreaterThan(Long value) {
addCriterion("compete_company_id >", value, "competeCompanyId");
return (Criteria) this;
}
public Criteria andCompeteCompanyIdGreaterThanOrEqualTo(Long value) {
addCriterion("compete_company_id >=", value, "competeCompanyId");
return (Criteria) this;
}
public Criteria andCompeteCompanyIdLessThan(Long value) {
addCriterion("compete_company_id <", value, "competeCompanyId");
return (Criteria) this;
}
public Criteria andCompeteCompanyIdLessThanOrEqualTo(Long value) {
addCriterion("compete_company_id <=", value, "competeCompanyId");
return (Criteria) this;
}
public Criteria andCompeteCompanyIdIn(List<Long> values) {
addCriterion("compete_company_id in", values, "competeCompanyId");
return (Criteria) this;
}
public Criteria andCompeteCompanyIdNotIn(List<Long> values) {
addCriterion("compete_company_id not in", values, "competeCompanyId");
return (Criteria) this;
}
public Criteria andCompeteCompanyIdBetween(Long value1, Long value2) {
addCriterion("compete_company_id between", value1, value2, "competeCompanyId");
return (Criteria) this;
}
public Criteria andCompeteCompanyIdNotBetween(Long value1, Long value2) {
addCriterion("compete_company_id not between", value1, value2, "competeCompanyId");
return (Criteria) this;
}
public Criteria andTypeIsNull() {
addCriterion("type is null");
return (Criteria) this;
}
public Criteria andTypeIsNotNull() {
addCriterion("type is not null");
return (Criteria) this;
}
public Criteria andTypeEqualTo(Byte value) {
addCriterion("type =", value, "type");
return (Criteria) this;
}
public Criteria andTypeNotEqualTo(Byte value) {
addCriterion("type <>", value, "type");
return (Criteria) this;
}
public Criteria andTypeGreaterThan(Byte value) {
addCriterion("type >", value, "type");
return (Criteria) this;
}
public Criteria andTypeGreaterThanOrEqualTo(Byte value) {
addCriterion("type >=", value, "type");
return (Criteria) this;
}
public Criteria andTypeLessThan(Byte value) {
addCriterion("type <", value, "type");
return (Criteria) this;
}
public Criteria andTypeLessThanOrEqualTo(Byte value) {
addCriterion("type <=", value, "type");
return (Criteria) this;
}
public Criteria andTypeIn(List<Byte> values) {
addCriterion("type in", values, "type");
return (Criteria) this;
}
public Criteria andTypeNotIn(List<Byte> values) {
addCriterion("type not in", values, "type");
return (Criteria) this;
}
public Criteria andTypeBetween(Byte value1, Byte value2) {
addCriterion("type between", value1, value2, "type");
return (Criteria) this;
}
public Criteria andTypeNotBetween(Byte value1, Byte value2) {
addCriterion("type not between", value1, value2, "type");
return (Criteria) this;
}
public Criteria andCreatedAtIsNull() {
addCriterion("created_at is null");
return (Criteria) this;
}
public Criteria andCreatedAtIsNotNull() {
addCriterion("created_at is not null");
return (Criteria) this;
}
public Criteria andCreatedAtEqualTo(Date value) {
addCriterion("created_at =", value, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtNotEqualTo(Date value) {
addCriterion("created_at <>", value, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtGreaterThan(Date value) {
addCriterion("created_at >", value, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtGreaterThanOrEqualTo(Date value) {
addCriterion("created_at >=", value, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtLessThan(Date value) {
addCriterion("created_at <", value, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtLessThanOrEqualTo(Date value) {
addCriterion("created_at <=", value, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtIn(List<Date> values) {
addCriterion("created_at in", values, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtNotIn(List<Date> values) {
addCriterion("created_at not in", values, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtBetween(Date value1, Date value2) {
addCriterion("created_at between", value1, value2, "createdAt");
return (Criteria) this;
}
public Criteria andCreatedAtNotBetween(Date value1, Date value2) {
addCriterion("created_at not between", value1, value2, "createdAt");
return (Criteria) this;
}
public Criteria andUpdatedAtIsNull() {
addCriterion("updated_at is null");
return (Criteria) this;
}
public Criteria andUpdatedAtIsNotNull() {
addCriterion("updated_at is not null");
return (Criteria) this;
}
public Criteria andUpdatedAtEqualTo(Date value) {
addCriterion("updated_at =", value, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtNotEqualTo(Date value) {
addCriterion("updated_at <>", value, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtGreaterThan(Date value) {
addCriterion("updated_at >", value, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtGreaterThanOrEqualTo(Date value) {
addCriterion("updated_at >=", value, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtLessThan(Date value) {
addCriterion("updated_at <", value, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtLessThanOrEqualTo(Date value) {
addCriterion("updated_at <=", value, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtIn(List<Date> values) {
addCriterion("updated_at in", values, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtNotIn(List<Date> values) {
addCriterion("updated_at not in", values, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtBetween(Date value1, Date value2) {
addCriterion("updated_at between", value1, value2, "updatedAt");
return (Criteria) this;
}
public Criteria andUpdatedAtNotBetween(Date value1, Date value2) {
addCriterion("updated_at not between", value1, value2, "updatedAt");
return (Criteria) this;
}
public Criteria andRecStatusIsNull() {
addCriterion("rec_status is null");
return (Criteria) this;
}
public Criteria andRecStatusIsNotNull() {
addCriterion("rec_status is not null");
return (Criteria) this;
}
public Criteria andRecStatusEqualTo(Byte value) {
addCriterion("rec_status =", value, "recStatus");
return (Criteria) this;
}
public Criteria andRecStatusNotEqualTo(Byte value) {
addCriterion("rec_status <>", value, "recStatus");
return (Criteria) this;
}
public Criteria andRecStatusGreaterThan(Byte value) {
addCriterion("rec_status >", value, "recStatus");
return (Criteria) this;
}
public Criteria andRecStatusGreaterThanOrEqualTo(Byte value) {
addCriterion("rec_status >=", value, "recStatus");
return (Criteria) this;
}
public Criteria andRecStatusLessThan(Byte value) {
addCriterion("rec_status <", value, "recStatus");
return (Criteria) this;
}
public Criteria andRecStatusLessThanOrEqualTo(Byte value) {
addCriterion("rec_status <=", value, "recStatus");
return (Criteria) this;
}
public Criteria andRecStatusIn(List<Byte> values) {
addCriterion("rec_status in", values, "recStatus");
return (Criteria) this;
}
public Criteria andRecStatusNotIn(List<Byte> values) {
addCriterion("rec_status not in", values, "recStatus");
return (Criteria) this;
}
public Criteria andRecStatusBetween(Byte value1, Byte value2) {
addCriterion("rec_status between", value1, value2, "recStatus");
return (Criteria) this;
}
public Criteria andRecStatusNotBetween(Byte value1, Byte value2) {
addCriterion("rec_status not between", value1, value2, "recStatus");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {
protected Criteria() {
super();
}
}
public static class Criterion {
private String condition;
private Object value;
private Object secondValue;
private boolean noValue;
private boolean singleValue;
private boolean betweenValue;
private boolean listValue;
private String typeHandler;
public String getCondition() {
return condition;
}
public Object getValue() {
return value;
}
public Object getSecondValue() {
return secondValue;
}
public boolean isNoValue() {
return noValue;
}
public boolean isSingleValue() {
return singleValue;
}
public boolean isBetweenValue() {
return betweenValue;
}
public boolean isListValue() {
return listValue;
}
public String getTypeHandler() {
return typeHandler;
}
protected Criterion(String condition) {
super();
this.condition = condition;
this.typeHandler = null;
this.noValue = true;
}
protected Criterion(String condition, Object value, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.typeHandler = typeHandler;
if (value instanceof List<?>) {
this.listValue = true;
} else {
this.singleValue = true;
}
}
protected Criterion(String condition, Object value) {
this(condition, value, null);
}
protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.secondValue = secondValue;
this.typeHandler = typeHandler;
this.betweenValue = true;
}
protected Criterion(String condition, Object value, Object secondValue) {
this(condition, value, secondValue, null);
}
}
}

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

@ -195,7 +195,7 @@ public class CompeteVo {
private String parentProjectName; private String parentProjectName;
@ApiModelProperty("比赛的类型,0跳绳比赛") @ApiModelProperty("比赛的类型,0跳绳比赛")
private byte type; private byte type;
@ApiModelProperty("比赛的类型,0跳绳比赛") @ApiModelProperty("二级项目信息")
private List<CompeteSecondProject> secondProjects; private List<CompeteSecondProject> secondProjects;
} }
@Data @Data
@ -253,4 +253,58 @@ public class CompeteVo {
private String proveImg; private String proveImg;
} }
@Data
@ApiModel("院系报名信息表")
public static class DepartmentInfo {
@ApiModelProperty("院系id")
private Long id;
@ApiModelProperty("院系名")
private String name;
@ApiModelProperty("返回的填表人裁判等信息")
private List<DepartmentRole> departmentRoles;
@ApiModelProperty("返回每个比赛项目的参赛名单")
private List<DepartmentProject> departmentProjects;
}
@Data
@ApiModel("返回的填表人裁判等信息")
public static class DepartmentRole{
@ApiModelProperty("人员的id")
private String id;
@ApiModelProperty("名字")
private String name;
@ApiModelProperty("手机号")
private String phone;
@ApiModelProperty("担任的角色 0领队 1裁判 2填表人")
private int role;
}
@Data
@ApiModel("查找比赛项目报名信息")
public static class DepartmentProject {
@ApiModelProperty("一级项目id")
private Long parentProjectId;
@ApiModelProperty("一级项目名字")
private String parentProjectName;
@ApiModelProperty("比赛的类型,0跳绳比赛")
private byte type;
@ApiModelProperty("二级项目报名人员信息")
private List<DepartmentSecondProject> secondProjects;
}
@Data
@ApiModel("返回每个比赛项目的参赛名单")
public static class DepartmentSecondProject{
@ApiModelProperty("比赛项目id(二级的)")
private Long competeProjectId;
@ApiModelProperty("比赛项目名字")
private String competeProjectName;
@ApiModelProperty("是否是团队项目 0否 1是")
private byte team;
@ApiModelProperty("男子参赛名单")
private String manName;
@ApiModelProperty("女子参赛名单")
private String womanName;
@ApiModelProperty("混合名单")
private String mixedName;
}
} }

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

@ -4,6 +4,8 @@ import com.ccsens.mt.bean.vo.CompeteVo;
import com.ccsens.mt.persist.mapper.CompetePlayerMapper; import com.ccsens.mt.persist.mapper.CompetePlayerMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 参赛选手信息 * 参赛选手信息
*/ */
@ -14,4 +16,33 @@ public interface CompetePlayerDao extends CompetePlayerMapper {
* @return 选手信息 * @return 选手信息
*/ */
CompeteVo.GetPlayerInfo getInfo(@Param("userId") Long userId); CompeteVo.GetPlayerInfo getInfo(@Param("userId") Long userId);
/**
* 查询院系信息和裁判领队填表人的信息
* @param id 院系id
* @return 返回
*/
CompeteVo.DepartmentInfo getDepartment(@Param("id") Long id);
/**
* 查询项目信息
* @param type
* @return
*/
List<CompeteVo.DepartmentProject> getDepartmentProject(@Param("type")int type);
/**
* 获取单人项目参赛人员名单用逗号分隔
* @param competeProjectId 项目id
* @return 返回名字
*/
String getMemberNamesByProjectId(@Param("companyId")Long companyId,@Param("competeProjectId")Long competeProjectId,@Param("genderGroup")int genderGroup);
/**
* 获取团队项目参赛人员名单用逗号分隔
* @param competeProjectId 项目id
* @return 返回名字
*/
String getTeamMemberNamesByProjectId(@Param("companyId")Long companyId,@Param("competeProjectId")Long competeProjectId,@Param("genderGroup")int genderGroup);
Long getCompanyIdByUser(@Param("userId")Long userId);
} }

11
mt/src/main/java/com/ccsens/mt/persist/dao/LevelUpDao.java

@ -1,9 +1,12 @@
package com.ccsens.mt.persist.dao; package com.ccsens.mt.persist.dao;
import com.ccsens.mt.bean.vo.LevelVo;
import com.ccsens.mt.persist.mapper.LevelUpMapper; import com.ccsens.mt.persist.mapper.LevelUpMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
/** /**
* @author * @author
*/ */
@ -16,4 +19,12 @@ public interface LevelUpDao extends LevelUpMapper{
* @return 返回晋级信息id * @return 返回晋级信息id
*/ */
Long getByLevelUserIdAndCode(@Param("levelUserId") Long levelUserId, @Param("competeCode")String competeCode); Long getByLevelUserIdAndCode(@Param("levelUserId") Long levelUserId, @Param("competeCode")String competeCode);
/**
* 查找项目的晋级人员信息
* @param competeCode 比赛code
* @param competeTimeId competeTimeId
* @return 返回晋级的人员信息
*/
List<LevelVo.QueryLevelUserInfo> queryLevelUserInfo(@Param("competeCode") String competeCode, @Param("competeTimeId") Long competeTimeId);
} }

30
mt/src/main/java/com/ccsens/mt/persist/mapper/CompeteCompanyRoleMapper.java

@ -0,0 +1,30 @@
package com.ccsens.mt.persist.mapper;
import com.ccsens.mt.bean.po.CompeteCompanyRole;
import com.ccsens.mt.bean.po.CompeteCompanyRoleExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface CompeteCompanyRoleMapper {
long countByExample(CompeteCompanyRoleExample example);
int deleteByExample(CompeteCompanyRoleExample example);
int deleteByPrimaryKey(Long id);
int insert(CompeteCompanyRole record);
int insertSelective(CompeteCompanyRole record);
List<CompeteCompanyRole> selectByExample(CompeteCompanyRoleExample example);
CompeteCompanyRole selectByPrimaryKey(Long id);
int updateByExampleSelective(@Param("record") CompeteCompanyRole record, @Param("example") CompeteCompanyRoleExample example);
int updateByExample(@Param("record") CompeteCompanyRole record, @Param("example") CompeteCompanyRoleExample example);
int updateByPrimaryKeySelective(CompeteCompanyRole record);
int updateByPrimaryKey(CompeteCompanyRole record);
}

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

@ -215,7 +215,9 @@ public class CompeteService implements ICompeteService{
team.setCompeteTimeId(params.getParam().getCompeteTimeId()); team.setCompeteTimeId(params.getParam().getCompeteTimeId());
team.setCertificate(params.getParam().getCertificate()); team.setCertificate(params.getParam().getCertificate());
team.setGenderGroup(player.getGender()); team.setGenderGroup(player.getGender());
String qrCode = PropUtil.signUpUrl + "home?teamId=" + team.getId(); String url = PropUtil.signUpUrl + "home?teamId=" + team.getId();
String qrCode = WebConstant.Wx.getAuthedUrl(url,WebConstant.WxGzhAuthType.SNSAPI_USERINFO
, (String) redisUtil.get(WebConstant.Wx.ACCOUNT_WX_APPID));
String qrCodeVisit = QrCodeUtil.urlToQRCode(qrCode, PropUtil.path); String qrCodeVisit = QrCodeUtil.urlToQRCode(qrCode, PropUtil.path);
team.setQrCode(qrCodeVisit); team.setQrCode(qrCodeVisit);
competeTeamDao.insertSelective(team); competeTeamDao.insertSelective(team);

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

@ -0,0 +1,220 @@
package com.ccsens.mt.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.mt.bean.dto.CompeteDto;
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.*;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.StringUtil;
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.util.ArrayList;
import java.util.List;
/**
* @author
*/
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class DepartmentService implements IDepartmentService{
@Resource
private CompeteCompanyMapper competeCompanyMapper;
@Resource
private CompeteTimeDao competeTimeDao;
@Resource
private Snowflake snowflake;
@Resource
private CompetePlayerDao competePlayerDao;
@Resource
private CompeteCompanyRoleMapper competeCompanyRoleMapper;
@Resource
private CompeteProjectMapper competeProjectMapper;
@Resource
private CompeteProjectPlayerMapper competeProjectPlayerMapper;
@Resource
private CompeteTeamDao competeTeamDao;
@Resource
private CompeteTeamMemberMapper competeTeamMemberMapper;
/**
* 查看院系信息
*/
@Override
public List<CompeteVo.CompeteCompany> getCompany(QueryDto<CompeteDto.CompeteType> params) {
CompeteDto.CompeteType competeType = params.getParam();
List<CompeteVo.CompeteCompany> competeCompanyList = new ArrayList<>();
//根据类型查找所有单位(院系)信息
CompeteCompanyExample competeCompanyExample = new CompeteCompanyExample();
competeCompanyExample.createCriteria().andTypeEqualTo((byte) competeType.getType());
List<CompeteCompany> companyList = competeCompanyMapper.selectByExample(competeCompanyExample);
if(CollectionUtil.isNotEmpty(companyList)){
companyList.forEach(company -> {
CompeteVo.CompeteCompany competeCompany = new CompeteVo.CompeteCompany();
competeCompany.setGroupId(company.getId());
competeCompany.setGroupName(company.getName());
competeCompanyList.add(competeCompany);
});
}
return competeCompanyList;
}
/**
* 查看比赛项目
*/
@Override
public List<CompeteVo.CompeteProject> queryCompeteProject(QueryDto<CompeteDto.CompeteType> params) {
CompeteDto.CompeteType competeType = params.getParam();
return competeTimeDao.queryCompeteProjectByType(competeType.getType());
}
@Override
public CompeteVo.DepartmentInfo saveDepartment(QueryDto<CompeteDto.DepartmentInfo> params) {
CompeteDto.DepartmentInfo departmentInfo = params.getParam();
Long userId = params.getUserId();
//查看该院系的报名信息
Long companyId = competePlayerDao.getCompanyIdByUser(params.getUserId());
if(ObjectUtil.isNotNull(companyId)){
throw new BaseException(CodeEnum.PLAYER_INFO_ALREADY);
}
CompeteCompanyRoleExample companyRoleExample = new CompeteCompanyRoleExample();
companyRoleExample.createCriteria().andCompeteCompanyIdEqualTo(departmentInfo.getId()).andTypeEqualTo((byte)2);
if(competeCompanyRoleMapper.countByExample(companyRoleExample) == 0) {
//添加裁判领队等信息
if (CollectionUtil.isNotEmpty(departmentInfo.getRoleList())) {
departmentInfo.getRoleList().forEach(departmentRole -> {
//添加player信息
CompetePlayer competePlayer = new CompetePlayer();
competePlayer.setId(snowflake.nextId());
competePlayer.setName(departmentRole.getName());
competePlayer.setPhone(departmentRole.getPhone());
competePlayer.setCompanyId(departmentInfo.getId());
if (departmentRole.getRole() == 2) {
competePlayer.setUserId(userId);
}
competePlayerDao.insertSelective(competePlayer);
//添加院系内担任的角色信息
CompeteCompanyRole competeCompanyRole = new CompeteCompanyRole();
competeCompanyRole.setId(snowflake.nextId());
competeCompanyRole.setType((byte) departmentRole.getRole());
competeCompanyRole.setCompeteCompanyId(departmentInfo.getId());
competeCompanyRole.setPlayerId(competePlayer.getId());
competeCompanyRoleMapper.insertSelective(competeCompanyRole);
});
}
//添加比赛报名信息
if (CollectionUtil.isNotEmpty(departmentInfo.getProjectList())) {
departmentInfo.getProjectList().forEach(departmentProject -> {
CompeteProject competeProject = competeProjectMapper.selectByPrimaryKey(departmentProject.getCompeteProjectId());
if (ObjectUtil.isNotNull(competeProject)) {
if (competeProject.getTeam() == 0) {
//不是团队比赛
String names = StringUtil.replaceComma(departmentProject.getNames());
String[] playerNames = names.split(",");
if (ObjectUtil.isNotNull(playerNames)) {
for (String playerName : playerNames) {
//直接添加选手
CompetePlayer competePlayer = new CompetePlayer();
competePlayer.setId(snowflake.nextId());
competePlayer.setName(playerName);
competePlayer.setCompanyId(departmentInfo.getId());
competePlayerDao.insertSelective(competePlayer);
//添加选手比赛关联信息
CompeteProjectPlayer competeProjectPlayer = new CompeteProjectPlayer();
competeProjectPlayer.setId(snowflake.nextId());
competeProjectPlayer.setProjectId(departmentProject.getCompeteProjectId());
competeProjectPlayer.setPlayerId(competePlayer.getId());
competeProjectPlayer.setGenderGroup((byte) departmentProject.getGenderGroup());
competeProjectPlayerMapper.insertSelective(competeProjectPlayer);
}
}
} else if (competeProject.getTeam() == 1) {
//创建一个团队
CompeteTeam competeTeam = new CompeteTeam();
competeTeam.setId(snowflake.nextId());
competeTeam.setProjectId(departmentProject.getCompeteProjectId());
competeTeam.setGenderGroup((byte) departmentProject.getGenderGroup());
competeTeamDao.insertSelective(competeTeam);
String names = StringUtil.replaceComma(departmentProject.getNames());
String[] playerNames = names.split(",");
if(playerNames.length > competeProject.getMemberMax()){
throw new BaseException(CodeEnum.TEAM_MEMBER_ERROR);
}
if (ObjectUtil.isNotNull(playerNames)) {
for (String playerName : playerNames) {
//直接添加选手
CompetePlayer competePlayer = new CompetePlayer();
competePlayer.setId(snowflake.nextId());
competePlayer.setName(playerName);
competePlayer.setCompanyId(departmentInfo.getId());
competePlayerDao.insertSelective(competePlayer);
//将选手加进团队
CompeteTeamMember competeTeamMember = new CompeteTeamMember();
competeTeamMember.setId(snowflake.nextId());
competeTeamMember.setPlayerId(competePlayer.getId());
competeTeamMember.setCompeteTeamId(competeTeam.getId());
competeTeamMemberMapper.insertSelective(competeTeamMember);
}
}
}
}
});
}
}
return getDepartmentInfo(departmentInfo.getId(),departmentInfo.getType());
}
@Override
public CompeteVo.DepartmentInfo getDepartment(QueryDto<CompeteDto.GetDepartmentInfo> params) {
CompeteDto.GetDepartmentInfo getDepartmentInfo = params.getParam();
//查询该用户的院系,默认用户只提交了一个院系的信息,只取一条数据
Long companyId = competePlayerDao.getCompanyIdByUser(params.getUserId());
//查询院系信息和裁判领队填表人的信息
return getDepartmentInfo(companyId,getDepartmentInfo.getType());
}
private CompeteVo.DepartmentInfo getDepartmentInfo(Long companyId,int competeType) {
CompeteVo.DepartmentInfo departmentInfo = competePlayerDao.getDepartment(companyId);
if(ObjectUtil.isNotNull(departmentInfo)) {
//查找每个项目的参赛人员
List<CompeteVo.DepartmentProject> departmentProject = competePlayerDao.getDepartmentProject(competeType);
if (CollectionUtil.isNotEmpty(departmentProject)) {
departmentProject.forEach(project -> {
if (CollectionUtil.isNotEmpty(project.getSecondProjects())) {
project.getSecondProjects().forEach(secondProject -> {
if (secondProject.getTeam() == 0) {
//不是团队比赛
secondProject.setManName(competePlayerDao.getMemberNamesByProjectId(companyId,secondProject.getCompeteProjectId(), 0));
secondProject.setWomanName(competePlayerDao.getMemberNamesByProjectId(companyId,secondProject.getCompeteProjectId(), 1));
secondProject.setMixedName(competePlayerDao.getMemberNamesByProjectId(companyId,secondProject.getCompeteProjectId(), 2));
} else {
secondProject.setManName(competePlayerDao.getTeamMemberNamesByProjectId(companyId,secondProject.getCompeteProjectId(), 0));
secondProject.setWomanName(competePlayerDao.getTeamMemberNamesByProjectId(companyId,secondProject.getCompeteProjectId(), 1));
secondProject.setMixedName(competePlayerDao.getTeamMemberNamesByProjectId(companyId,secondProject.getCompeteProjectId(), 2));
}
});
}
});
}
departmentInfo.setDepartmentProjects(departmentProject);
}
return departmentInfo;
}
}

41
mt/src/main/java/com/ccsens/mt/service/IDepartmentService.java

@ -0,0 +1,41 @@
package com.ccsens.mt.service;
import com.ccsens.mt.bean.dto.CompeteDto;
import com.ccsens.mt.bean.vo.CompeteVo;
import com.ccsens.util.bean.dto.QueryDto;
import java.util.List;
/**
* @author
*/
public interface IDepartmentService {
/**
* 查询院系信息
* @param params 比赛类型
* @return 返回院系信息
*/
List<CompeteVo.CompeteCompany> getCompany(QueryDto<CompeteDto.CompeteType> params);
/**
* 查看参赛项目
* @param params 比赛类型
* @return 返回比赛项目
*/
List<CompeteVo.CompeteProject> queryCompeteProject(QueryDto<CompeteDto.CompeteType> params);
/**
* 提交院系报名信息
* @param params 院系报名信息
* @return 返回报名信息
*/
CompeteVo.DepartmentInfo saveDepartment(QueryDto<CompeteDto.DepartmentInfo> params);
/**
* 获取院系报名的信息
* @param params 院系id和比赛类型id
* @return 返回报名信息
*/
CompeteVo.DepartmentInfo getDepartment(QueryDto<CompeteDto.GetDepartmentInfo> params);
}

5
mt/src/main/java/com/ccsens/mt/service/ILevelUpService.java

@ -3,8 +3,7 @@ package com.ccsens.mt.service;
import com.ccsens.mt.bean.dto.LevelDto; import com.ccsens.mt.bean.dto.LevelDto;
import com.ccsens.mt.bean.vo.LevelVo; import com.ccsens.mt.bean.vo.LevelVo;
import com.ccsens.util.bean.dto.QueryDto; import com.ccsens.util.bean.dto.QueryDto;
import com.github.pagehelper.PageInfo;
import java.util.List;
/** /**
* @author * @author
@ -40,5 +39,5 @@ public interface ILevelUpService {
* @param params 比赛id和分页信息 * @param params 比赛id和分页信息
* @return 返回查到的比赛下所有晋级的选手的信息 * @return 返回查到的比赛下所有晋级的选手的信息
*/ */
List<LevelVo.QueryLevelUserInfo> queryLevelUserInfo(QueryDto<LevelDto.ManualLevelUpDto> params); PageInfo<LevelVo.QueryLevelUserInfo> queryLevelUserInfo(QueryDto<LevelDto.QueryLevelUserInfo> params);
} }

117
mt/src/main/java/com/ccsens/mt/service/LevelUpService.java

@ -12,6 +12,8 @@ import com.ccsens.mt.persist.mapper.LevelUserMapper;
import com.ccsens.mt.util.Constant; import com.ccsens.mt.util.Constant;
import com.ccsens.util.RedisUtil; import com.ccsens.util.RedisUtil;
import com.ccsens.util.bean.dto.QueryDto; import com.ccsens.util.bean.dto.QueryDto;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.ZSetOperations; import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -103,28 +105,55 @@ public class LevelUpService implements ILevelUpService{
levelRule = ruleList.get(0); levelRule = ruleList.get(0);
} }
log.info("查找到的比赛晋级规则:{}",levelRule); log.info("查找到的比赛晋级规则:{}",levelRule);
//查找redis内的数据
String key = Constant.Redis.COMPETE_LEVEL + autoLevelUpDto.getCompeteTimeId() + "_" + autoLevelUpDto.getCompeteCode(); String key = Constant.Redis.COMPETE_LEVEL + autoLevelUpDto.getCompeteTimeId() + "_" + autoLevelUpDto.getCompeteCode();
Set<ZSetOperations.TypedTuple<Object>> typedTuples = redisUtil.zsRevGetWithScore(key, 0, -1);
AtomicInteger index = new AtomicInteger();
LevelRule finalLevelRule = levelRule;
switch (levelRule.getRule()){ switch (levelRule.getRule()){
case Constant.LevelUp.RULE_RANK_NO_REPEAT : case Constant.LevelUp.RULE_RANK_NO_REPEAT :
log.info("根据排名(不重复)晋级"); log.info("根据排名(不重复)晋级");
Set<ZSetOperations.TypedTuple<Object>> typedTuples = redisUtil.zsRevGetWithScore(key, 0, -1); index.set(0);
AtomicInteger index = new AtomicInteger(0);
typedTuples.forEach(type ->{ typedTuples.forEach(type ->{
index.set(index.get() + 1); index.set(index.get() + 1);
// 更新数据库分数 // 更新数据库分数
LevelUser levelUser = (LevelUser) type.getValue(); LevelUser levelUser = (LevelUser) type.getValue();
Long levelUpId = levelUpDao.getByLevelUserIdAndCode(levelUser.getId(),autoLevelUpDto.getCompeteCode()); updateLevelUpScore(autoLevelUpDto.getCompeteCode(), index.get(), Objects.requireNonNull(type.getScore()).intValue(), levelUser.getId());
LevelUp levelUp = new LevelUp(); //如果是符合晋级条件,添加新的晋级信息
levelUp.setId(levelUpId); if(index.get() <= finalLevelRule.getLevelCondition()){
levelUp.setScore(Objects.requireNonNull(type.getScore()).intValue()); insertLevelUp(autoLevelUpDto.getCompeteTimeId(), finalLevelRule.getCompeteCodeLevelUp(), levelUser.getId(), (byte) 0);
// levelUp.setRanking(); }
}); });
break; break;
case Constant.LevelUp.RULE_RANK_REPEAT : case Constant.LevelUp.RULE_RANK_REPEAT :
log.info("根据排名(可以重复)晋级"); log.info("根据排名(可以重复)晋级");
index.set(0);
AtomicInteger score = new AtomicInteger(0);
typedTuples.forEach(type ->{
index.set(index.get() + 1);
// 更新数据库分数
LevelUser levelUser = (LevelUser) type.getValue();
updateLevelUpScore(autoLevelUpDto.getCompeteCode(), index.get(), Objects.requireNonNull(type.getScore()).intValue(), levelUser.getId());
//如果是符合晋级条件,添加新的晋级信息
if(index.get() <= finalLevelRule.getLevelCondition() || score.get() == Objects.requireNonNull(type.getScore()).intValue()){
insertLevelUp(autoLevelUpDto.getCompeteTimeId(), finalLevelRule.getCompeteCodeLevelUp(), levelUser.getId(), (byte) 0);
}
score.set(Objects.requireNonNull(type.getScore()).intValue());
});
break; break;
case Constant.LevelUp.RULE_SCORE : case Constant.LevelUp.RULE_SCORE :
log.info("根据分数晋级"); log.info("根据分数晋级");
index.set(0);
typedTuples.forEach(type ->{
index.set(index.get() + 1);
// 更新数据库分数
LevelUser levelUser = (LevelUser) type.getValue();
updateLevelUpScore(autoLevelUpDto.getCompeteCode(), index.get(), Objects.requireNonNull(type.getScore()).intValue(), levelUser.getId());
//如果是符合晋级条件,添加新的晋级信息
if(Objects.requireNonNull(type.getScore()).intValue() >= finalLevelRule.getLevelCondition()){
insertLevelUp(autoLevelUpDto.getCompeteTimeId(), finalLevelRule.getCompeteCodeLevelUp(), levelUser.getId(), (byte) 0);
}
});
break; break;
case Constant.LevelUp.RULE_APPOINT : case Constant.LevelUp.RULE_APPOINT :
case Constant.LevelUp.RULE_TEAM_RANK : case Constant.LevelUp.RULE_TEAM_RANK :
@ -132,9 +161,40 @@ public class LevelUpService implements ILevelUpService{
default: default:
break; break;
} }
//在redis中查找需要晋级的人 }
//将选手和晋级信息添加至数据库 /**
* 将晋级信息添加进数据库存入redis
*/
private void insertLevelUp(Long competeTimeId, String competeCode, Long levelUser,byte levelUpType) {
LevelUp levelUp = new LevelUp();
levelUp.setId(snowflake.nextId());
levelUp.setLevelUserId(levelUser);
levelUp.setCompeteCode(competeCode);
levelUp.setCompeteTimeId(competeTimeId);
levelUp.setScore(0);
levelUp.setRanking(0);
levelUp.setLevelUpType(levelUpType);
levelUpDao.insertSelective(levelUp);
//存入redis
String keyNew = Constant.Redis.COMPETE_LEVEL + competeTimeId + "_" + competeCode;
redisUtil.zsSet(keyNew, levelUp, 0);
}
/**
* 查找晋级信息更新晋级信息里的分数和排名
* @param competeCode 比赛code
* @param index 排名
* @param score 分数
* @param levelUserId levelUserId
*/
private void updateLevelUpScore(String competeCode, int index, int score, Long levelUserId) {
Long levelUpId = levelUpDao.getByLevelUserIdAndCode(levelUserId, competeCode);
LevelUp levelUpOld = new LevelUp();
levelUpOld.setId(levelUpId);
levelUpOld.setScore(score);
levelUpOld.setRanking(index);
levelUpDao.updateByPrimaryKeySelective(levelUpOld);
} }
/** /**
@ -143,7 +203,35 @@ public class LevelUpService implements ILevelUpService{
*/ */
@Override @Override
public void manualLevelUpPlayer(QueryDto<LevelDto.ManualLevelUpDto> params) { public void manualLevelUpPlayer(QueryDto<LevelDto.ManualLevelUpDto> params) {
LevelDto.ManualLevelUpDto manualLevelUp = params.getParam();
//查找晋级规则,
LevelRule levelRule = new LevelRule();
LevelRuleExample levelRuleExample = new LevelRuleExample();
levelRuleExample.createCriteria().andCompeteCodeNowEqualTo(manualLevelUp.getCompeteCode())
.andCompeteTimeIdEqualTo(manualLevelUp.getCompeteTimeId());
List<LevelRule> ruleList = levelRuleMapper.selectByExample(levelRuleExample);
if(CollectionUtil.isNotEmpty(ruleList)){
levelRule = ruleList.get(0);
}
//查找redis内的数据
String key = Constant.Redis.COMPETE_LEVEL + manualLevelUp.getCompeteTimeId() + "_" + manualLevelUp.getCompeteCode();
Set<ZSetOperations.TypedTuple<Object>> typedTuples = redisUtil.zsRevGetWithScore(key, 0, -1);
AtomicInteger index = new AtomicInteger(0);
LevelRule finalLevelRule = levelRule;
typedTuples.forEach(type ->{
index.set(index.get() + 1);
// 更新数据库分数
LevelUser levelUser = (LevelUser) type.getValue();
updateLevelUpScore(manualLevelUp.getCompeteCode(), index.get(), Objects.requireNonNull(type.getScore()).intValue(), levelUser.getId());
//如果是符合晋级条件,添加新的晋级信息
if(CollectionUtil.isNotEmpty(manualLevelUp.getManualLevelUpPlayers())){
manualLevelUp.getManualLevelUpPlayers().forEach(player -> {
if(player.getPlayerId().equals(levelUser.getPlayerId())){
insertLevelUp(manualLevelUp.getCompeteTimeId(), finalLevelRule.getCompeteCodeLevelUp(), levelUser.getId(), (byte) 1);
}
});
}
});
} }
/** /**
@ -152,8 +240,13 @@ public class LevelUpService implements ILevelUpService{
* @return 返回查到的比赛下所有晋级的选手的信息 * @return 返回查到的比赛下所有晋级的选手的信息
*/ */
@Override @Override
public List<LevelVo.QueryLevelUserInfo> queryLevelUserInfo(QueryDto<LevelDto.ManualLevelUpDto> params) { public PageInfo<LevelVo.QueryLevelUserInfo> queryLevelUserInfo(QueryDto<LevelDto.QueryLevelUserInfo> params) {
LevelDto.QueryLevelUserInfo levelUserInfo = params.getParam();
if(levelUserInfo.getPage() != -1){
PageHelper.startPage(levelUserInfo.getPage(), levelUserInfo.getPageSize());
}
List<LevelVo.QueryLevelUserInfo> vos = levelUpDao.queryLevelUserInfo(levelUserInfo.getCompeteCode(),levelUserInfo.getCompeteTimeId());
return null; return new PageInfo<>(vos);
} }
} }

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

@ -35,5 +35,5 @@ notGatewayUrl: https://www.tall.wiki/
file: file:
path: /home/cloud/mt/uploads/ path: /home/cloud/mt/uploads/
signUpUrl: https://www.tall.wiki/compete/ signUpUrl: https://www.tall.wiki/compete/
domain: https://test.tall.wiki/gateway/mt/ domain: https://www.tall.wiki/gateway/mt/
imgDomain: https://test.tall.wiki/gateway/mt/uploads/ imgDomain: https://www.tall.wiki/gateway/mt/uploads/

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

@ -2,6 +2,27 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!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"> <mapper namespace="com.ccsens.mt.persist.dao.CompetePlayerDao">
<resultMap id="getDepartment" type="com.ccsens.mt.bean.vo.CompeteVo$DepartmentInfo">
<id column="id" property="id"/>
<result column="name" property="name"/>
<collection property="departmentRoles" ofType="com.ccsens.mt.bean.vo.CompeteVo$DepartmentRole">
<id column="rId" property="id"/>
<result column="rName" property="name"/>
<result column="rPhone" property="phone"/>
<result column="role" property="role"/>
</collection>
</resultMap>
<resultMap id="compete_project" type="com.ccsens.mt.bean.vo.CompeteVo$DepartmentProject">
<id column="parentProjectId" property="parentProjectId"/>
<result column="parentProjectName" property="parentProjectName"/>
<result column="type" property="type"/>
<collection property="secondProjects" ofType="com.ccsens.mt.bean.vo.CompeteVo$DepartmentSecondProject">
<id column="id" property="competeProjectId"/>
<result column="name" property="competeProjectName"/>
<result column="team" property="team"/>
</collection>
</resultMap>
<select id="getInfo" resultType="com.ccsens.mt.bean.vo.CompeteVo$GetPlayerInfo"> <select id="getInfo" resultType="com.ccsens.mt.bean.vo.CompeteVo$GetPlayerInfo">
SELECT SELECT
@ -26,4 +47,107 @@
AND g.rec_status = 0 AND g.rec_status = 0
LIMIT 1 LIMIT 1
</select> </select>
<select id="getDepartment" resultMap="getDepartment">
SELECT
r.type as role,
c.`id`,
c.`name`,
p.`id` as rId,
p.`name` as rName,
p.phone as rPhone
FROM
t_compete_company_role r
LEFT JOIN t_compete_company c on r.compete_company_id = c.id
LEFT JOIN t_compete_player p on r.player_id = p.id
WHERE
c.rec_status = 0
and
p.rec_status = 0
and
r.rec_status = 0
and
r.compete_company_id = #{id}
</select>
<select id="getDepartmentProject" parameterType="java.util.Map" resultMap="compete_project">
SELECT
p.id as parentProjectId,
p.`name` as parentProjectName,
p.type as type,
t.id as id,
t.`name` as name,
t.team as team
FROM
t_compete_project p LEFT JOIN
(
SELECT
id,
parent_id,
`name`,
team
FROM
t_compete_project
WHERE
rec_status = 0
and
level = 2
) t on t.parent_id = p.id
WHERE
rec_status = 0
and
type = #{type}
and
level = 1
</select>
<select id="getMemberNamesByProjectId" resultType="java.lang.String">
SELECT
GROUP_CONCAT(e.`name` ORDER BY e.id)
FROM
t_compete_project_player p LEFT JOIN t_compete_player e on p.player_id = e.id
WHERE
e.company_id = #{companyId}
and
p.rec_status = 0
and
e.rec_status = 0
and
p.project_id = #{competeProjectId}
and
p.gender_group = #{genderGroup}
</select>
<select id="getTeamMemberNamesByProjectId" resultType="java.lang.String">
SELECT
GROUP_CONCAT(p.`name` ORDER BY p.id)
FROM
t_compete_team t LEFT JOIN t_compete_team_member m on t.id = m.compete_team_id
LEFT JOIN t_compete_player p on m.player_id = p.id
WHERE
p.company_id = #{companyId}
and
t.rec_status = 0
and
m.rec_status = 0
and
p.rec_status = 0
and
t.project_id = #{competeProjectId}
and
t.gender_group = #{genderGroup}
</select>
<select id="getCompanyIdByUser" resultType="java.lang.Long">
SELECT
c.id
FROM
t_compete_company c LEFT JOIN t_compete_company_role r on c.id = r.compete_company_id
LEFT JOIN t_compete_player p on r.player_id = p.id
WHERE
c.type = 1
and
r.type = 2
and
p.user_id = #{userId}
LIMIT 1
</select>
</mapper> </mapper>

19
mt/src/main/resources/mapper_dao/LevelUpDao.xml

@ -2,8 +2,25 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!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.LevelUpDao"> <mapper namespace="com.ccsens.mt.persist.dao.LevelUpDao">
<select id="getByLevelUserIdAndCode" parameterMap="java.util.Map" resultType="Long"> <select id="getByLevelUserIdAndCode" parameterType="java.util.Map" resultType="Long">
SELECT id FROM `t_level_up` WHERE level_user_id = #{levelUserId} and compete_code = #{competeCode} SELECT id FROM `t_level_up` WHERE level_user_id = #{levelUserId} and compete_code = #{competeCode}
</select> </select>
<select id="queryLevelUserInfo" parameterType="java.util.Map" resultType="com.ccsens.mt.bean.vo.LevelVo$QueryLevelUserInfo">
SELECT
us.id as levelUserId,
us.avatar_url as avatarUrl,
us.`name` as name,
us.team_id as teamId
FROM
t_level_up u LEFT JOIN t_level_user us on u.level_user_id = us.id
WHERE
u.compete_code = #{competeCode}
and
u.compete_time_id = #{competeTimeId}
and
us.rec_status = 0
and
u.rec_status = 0
</select>
</mapper> </mapper>

243
mt/src/main/resources/mapper_raw/CompeteCompanyRoleMapper.xml

@ -0,0 +1,243 @@
<?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.mapper.CompeteCompanyRoleMapper">
<resultMap id="BaseResultMap" type="com.ccsens.mt.bean.po.CompeteCompanyRole">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="player_id" jdbcType="BIGINT" property="playerId" />
<result column="compete_company_id" jdbcType="BIGINT" property="competeCompanyId" />
<result column="type" jdbcType="TINYINT" property="type" />
<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>
<sql id="Example_Where_Clause">
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause">
<where>
<foreach collection="example.oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List">
id, player_id, compete_company_id, type, created_at, updated_at, rec_status
</sql>
<select id="selectByExample" parameterType="com.ccsens.mt.bean.po.CompeteCompanyRoleExample" resultMap="BaseResultMap">
select
<if test="distinct">
distinct
</if>
<include refid="Base_Column_List" />
from t_compete_company_role
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
</select>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from t_compete_company_role
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete from t_compete_company_role
where id = #{id,jdbcType=BIGINT}
</delete>
<delete id="deleteByExample" parameterType="com.ccsens.mt.bean.po.CompeteCompanyRoleExample">
delete from t_compete_company_role
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="com.ccsens.mt.bean.po.CompeteCompanyRole">
insert into t_compete_company_role (id, player_id, compete_company_id,
type, created_at, updated_at,
rec_status)
values (#{id,jdbcType=BIGINT}, #{playerId,jdbcType=BIGINT}, #{competeCompanyId,jdbcType=BIGINT},
#{type,jdbcType=TINYINT}, #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP},
#{recStatus,jdbcType=TINYINT})
</insert>
<insert id="insertSelective" parameterType="com.ccsens.mt.bean.po.CompeteCompanyRole">
insert into t_compete_company_role
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="playerId != null">
player_id,
</if>
<if test="competeCompanyId != null">
compete_company_id,
</if>
<if test="type != null">
type,
</if>
<if test="createdAt != null">
created_at,
</if>
<if test="updatedAt != null">
updated_at,
</if>
<if test="recStatus != null">
rec_status,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=BIGINT},
</if>
<if test="playerId != null">
#{playerId,jdbcType=BIGINT},
</if>
<if test="competeCompanyId != null">
#{competeCompanyId,jdbcType=BIGINT},
</if>
<if test="type != null">
#{type,jdbcType=TINYINT},
</if>
<if test="createdAt != null">
#{createdAt,jdbcType=TIMESTAMP},
</if>
<if test="updatedAt != null">
#{updatedAt,jdbcType=TIMESTAMP},
</if>
<if test="recStatus != null">
#{recStatus,jdbcType=TINYINT},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.ccsens.mt.bean.po.CompeteCompanyRoleExample" resultType="java.lang.Long">
select count(*) from t_compete_company_role
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
update t_compete_company_role
<set>
<if test="record.id != null">
id = #{record.id,jdbcType=BIGINT},
</if>
<if test="record.playerId != null">
player_id = #{record.playerId,jdbcType=BIGINT},
</if>
<if test="record.competeCompanyId != null">
compete_company_id = #{record.competeCompanyId,jdbcType=BIGINT},
</if>
<if test="record.type != null">
type = #{record.type,jdbcType=TINYINT},
</if>
<if test="record.createdAt != null">
created_at = #{record.createdAt,jdbcType=TIMESTAMP},
</if>
<if test="record.updatedAt != null">
updated_at = #{record.updatedAt,jdbcType=TIMESTAMP},
</if>
<if test="record.recStatus != null">
rec_status = #{record.recStatus,jdbcType=TINYINT},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
update t_compete_company_role
set id = #{record.id,jdbcType=BIGINT},
player_id = #{record.playerId,jdbcType=BIGINT},
compete_company_id = #{record.competeCompanyId,jdbcType=BIGINT},
type = #{record.type,jdbcType=TINYINT},
created_at = #{record.createdAt,jdbcType=TIMESTAMP},
updated_at = #{record.updatedAt,jdbcType=TIMESTAMP},
rec_status = #{record.recStatus,jdbcType=TINYINT}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="com.ccsens.mt.bean.po.CompeteCompanyRole">
update t_compete_company_role
<set>
<if test="playerId != null">
player_id = #{playerId,jdbcType=BIGINT},
</if>
<if test="competeCompanyId != null">
compete_company_id = #{competeCompanyId,jdbcType=BIGINT},
</if>
<if test="type != null">
type = #{type,jdbcType=TINYINT},
</if>
<if test="createdAt != null">
created_at = #{createdAt,jdbcType=TIMESTAMP},
</if>
<if test="updatedAt != null">
updated_at = #{updatedAt,jdbcType=TIMESTAMP},
</if>
<if test="recStatus != null">
rec_status = #{recStatus,jdbcType=TINYINT},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="com.ccsens.mt.bean.po.CompeteCompanyRole">
update t_compete_company_role
set player_id = #{playerId,jdbcType=BIGINT},
compete_company_id = #{competeCompanyId,jdbcType=BIGINT},
type = #{type,jdbcType=TINYINT},
created_at = #{createdAt,jdbcType=TIMESTAMP},
updated_at = #{updatedAt,jdbcType=TIMESTAMP},
rec_status = #{recStatus,jdbcType=TINYINT}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>

3
tall/src/main/java/com/ccsens/tall/scheduled/ScheduledService.java

@ -8,6 +8,7 @@ import com.ccsens.tall.service.IProjectMessageService;
import com.ccsens.tall.service.IRobotService; import com.ccsens.tall.service.IRobotService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -38,7 +39,7 @@ public class ScheduledService {
public static final String AFTER_END = "您在项目's'中的任务's'已经在's'结束了"; public static final String AFTER_END = "您在项目's'中的任务's'已经在's'结束了";
public static final String USER_DEFINED = "来自项目's'中的任务's'的提醒"; public static final String USER_DEFINED = "来自项目's'中的任务's'的提醒";
// @Scheduled(cron = "*/60 * * * * ?") @Scheduled(cron = "*/60 * * * * ?")
public void runfirst(){ public void runfirst(){
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
// long now = 1594611047000L; // long now = 1594611047000L;

15
tall/src/main/java/com/ccsens/tall/service/ProjectService.java

@ -127,14 +127,15 @@ public class ProjectService implements IProjectService {
Calendar max = Calendar.getInstance(); Calendar max = Calendar.getInstance();
min.setTime(s); min.setTime(s);
max.setTime(e); max.setTime(e);
Calendar curr = min; while (min.before(max)) {
while (curr.before(max)) { // for (String str : dateList) {
for (String str : dateList) { // if (!sdf.format(min.getTime()).equalsIgnoreCase(str)) {
if (!sdf.format(min.getTime()).equalsIgnoreCase(str)) { if(!dateList.contains(sdf.format(min.getTime()))) {
dateList.add(sdf.format(min.getTime())); dateList.add(sdf.format(min.getTime()));
}
} }
curr.add(Calendar.DATE, 1); // }
// }
min.add(Calendar.DATE, 1);
} }
} }

30
tall/src/main/java/com/ccsens/tall/service/UserService.java

@ -1237,17 +1237,6 @@ public class UserService implements IUserService {
return null; return null;
} }
} }
//
// private SysWx getSysWx(String unionId) {
// SysWx sysWx = null;
// SysWxExample sysWxExample = new SysWxExample();
// sysWxExample.createCriteria().andUnionIdEqualTo(unionId);
// List<SysWx> sysWxList = sysWxDao.selectByExample(sysWxExample);
// if (CollectionUtil.isNotEmpty(sysWxList)) {
// sysWx = sysWxList.get(0);
// }
// return sysWx;
// }
/** /**
* 合并账号 * 合并账号
@ -1304,8 +1293,25 @@ public class UserService implements IUserService {
List<SysAuth> authList = authDao.selectByExample(authExample); List<SysAuth> authList = authDao.selectByExample(authExample);
if (CollectionUtil.isNotEmpty(authList)) { if (CollectionUtil.isNotEmpty(authList)) {
SysAuth auth = authList.get(0); SysAuth auth = authList.get(0);
auth.setUserId(currentUserId); //查找这个手机号以前的用户,并删除
SysUser user = userDao.selectByPrimaryKey(auth.getUserId());
user.setRecStatus((byte) 2);
userDao.updateByPrimaryKeySelective(user);
//删除这个手机号的认证方式
auth.setRecStatus((byte) 2);
authDao.updateByPrimaryKeySelective(auth); authDao.updateByPrimaryKeySelective(auth);
//将当前的用户手机号改为新的手机号
SysAuthExample sysAuthExample = new SysAuthExample();
sysAuthExample.createCriteria().andUserIdEqualTo(currentUserId)
.andIdentifyTypeEqualTo((byte) WebConstant.IDENTIFY_TYPE.Phone.value);
List<SysAuth> sysAuthList = authDao.selectByExample(authExample);
if (CollectionUtil.isNotEmpty(sysAuthList)) {
SysAuth sysAuth = sysAuthList.get(0);
sysAuth.setIdentifier(wxPhone.getPhone());
authDao.updateByPrimaryKeySelective(sysAuth);
}
// auth.setUserId(currentUserId);
// authDao.updateByPrimaryKeySelective(auth);
} }
} }

3
tall/src/main/java/com/ccsens/tall/web/ProjectController.java

@ -1,6 +1,5 @@
package com.ccsens.tall.web; package com.ccsens.tall.web;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.tall.bean.dto.ProjectDto; import com.ccsens.tall.bean.dto.ProjectDto;
import com.ccsens.tall.bean.vo.ProjectVo; import com.ccsens.tall.bean.vo.ProjectVo;
import com.ccsens.tall.bean.vo.TaskVo; import com.ccsens.tall.bean.vo.TaskVo;
@ -40,7 +39,7 @@ public class ProjectController {
@Resource @Resource
private IProTaskDetailService taskDetailService; private IProTaskDetailService taskDetailService;
@ApiOperation(value = "获取日历上哪天有小红点",notes = "按照优先级倒序+时间正序排序") @ApiOperation(value = "获取日历上哪天有小红点",notes = "")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "date", value = "日期(格式:yy-[MM]-[dd])", required = true, paramType = "query",dataType = "string",example = "2019-02-13") @ApiImplicitParam(name = "date", value = "日期(格式:yy-[MM]-[dd])", required = true, paramType = "query",dataType = "string",example = "2019-02-13")
}) })

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

@ -150,6 +150,7 @@ public enum CodeEnum {
PLAYER_INFO_ALREADY(127,"您已经有了报名信息,请不要重复提交", true), PLAYER_INFO_ALREADY(127,"您已经有了报名信息,请不要重复提交", true),
GAME_TIME_DUE(128,"您的游戏已到期,请重新购买", true), GAME_TIME_DUE(128,"您的游戏已到期,请重新购买", true),
TEAM_MEMBER_ERROR(129,"参赛人数不符合,请重新填写", true),
; ;

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

@ -24,7 +24,7 @@ public class QrCodeUtil {
*/ */
public static String urlToQRCode(String url, String parentPath) throws IOException { public static String urlToQRCode(String url, String parentPath) throws IOException {
String fileName = "qrCode/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".png"; String fileName = "qrCode/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".png";
ByteArrayOutputStream stream = QRCode.from(url).to(ImageType.BMP).stream(); ByteArrayOutputStream stream = QRCode.from(url).to(ImageType.BMP).withSize(500,500).stream();
byte[] codeByte = stream.toByteArray(); byte[] codeByte = stream.toByteArray();
File file = new File(parentPath, fileName); File file = new File(parentPath, fileName);
if (!file.getParentFile().exists()) { if (!file.getParentFile().exists()) {

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

@ -5,7 +5,6 @@ import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -100,6 +99,7 @@ public class UploadFileUtil_Servlet3 {
File file = new File(path); File file = new File(path);
// 如果文件存在,则进行下载 // 如果文件存在,则进行下载
if (!file.exists()) { if (!file.exists()) {
log.info("该路径不存在:{}",path);
return; return;
} }
// 配置文件下载 // 配置文件下载

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

@ -1,6 +1,9 @@
package com.ccsens.util; package com.ccsens.util;
import cn.hutool.core.codec.Base64; import cn.hutool.core.codec.Base64;
import cn.hutool.core.util.URLUtil;
import lombok.Getter;
import lombok.Setter;
import java.io.File; import java.io.File;
@ -19,6 +22,37 @@ public class WebConstant {
} }
public static class Wx{
public static final String ACCESS_TOKEN = "tall_wx_access_token_";
public static final long EXPIRE_TIME = 1 * 60 * 60;
public static final String DOMAIN = PropUtil.wxPrefix;
public static final String TEMPLATE_SEND = DOMAIN + "template/send";
public static final String GZH_AUTH_URL
= "https://open.weixin.qq.com/connect/oauth2/authorize?appid=%1$s&redirect_uri=%2$s&response_type=code&scope=%3$s&state=STATE#wechat_redirect";
public static final String ACCOUNT_WX_APPID = "account_wx_appId";
public static String getAuthedUrl(String url, WxGzhAuthType wxGzhAuthType,String appId){
return String.format(GZH_AUTH_URL,appId, URLUtil.encode(url),wxGzhAuthType.getText());
}
}
public enum WxGzhAuthType {
//基本授权类型,静默,只能获取openId
SNSAPI_BASE("snsapi_base"),
//信息授权类型,弹出提示框,可以获取openId,unionId,nickanme,city等用户信息
SNSAPI_USERINFO("snsapi_userinfo");
@Getter
@Setter
private String text;
private WxGzhAuthType(String text){
this.text = text;
}
}
public static enum TemplateParam { public static enum TemplateParam {
Operator("{{operator}}", "操作者"), Operator("{{operator}}", "操作者"),
@ -112,12 +146,6 @@ public class WebConstant {
} }
} }
public static final class Wx {
public static final String ACCESS_TOKEN = "tall_wx_access_token_";
public static final long EXPIRE_TIME = 1 * 60 * 60;
public static final String DOMAIN = PropUtil.wxPrefix;
public static final String TEMPLATE_SEND = DOMAIN + "template/send";
}
/**注册来源*/ /**注册来源*/
public static final class Regist { public static final class Regist {

24
util/src/main/java/com/ccsens/util/wx/WxXcxUtil.java

@ -255,6 +255,30 @@ public class WxXcxUtil {
} }
/**
* 获取小程序二维码/小程序码小程序码 使用C方法
* @param code 不同的小程序的code
* @return
* @throws Exception
*/
public static void getWxCodeC(String page,String path,String code) throws Exception {
File file = new File(path);
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs();
}
String url = String.format(URL_GET_WX_CODE_C, WxGzhUtil.getAccessToken(appId(code),secret(code)));
WechatCodeA wechatCode = new WechatCodeA();
wechatCode.path = page;
String postStr = JacksonUtil.beanToJson(wechatCode);
System.out.println(postStr);
HttpsUtil.httpsRequest(url,"POST",postStr,path);
}
// /** // /**
// * 获取小程序二维码/小程序码(长度128,有数量限制)(二维码) // * 获取小程序二维码/小程序码(长度128,有数量限制)(二维码)
// * @return // * @return

2
util/src/test/java/com/ccsens/util/TestQrCord.java

@ -29,7 +29,7 @@ public class TestQrCord {
// String text = "https://www.tall.wiki/pt-dev/respond?groupId="+i+"&groupName="+i+"组"; // String text = "https://www.tall.wiki/pt-dev/respond?groupId="+i+"&groupName="+i+"组";
// String text = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx7af1bf1e14facf82&redirect_uri=http://www.tall.wiki/pt-dev/vote&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"; // String text = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx7af1bf1e14facf82&redirect_uri=http://www.tall.wiki/pt-dev/vote&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
String text = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx7af1bf1e14facf82&redirect_uri=http://www.tall.wiki/compete&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"; String text = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx7af1bf1e14facf82&redirect_uri=http://test.tall.wiki/compete&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
String fileName = "zzz/" + "远程比赛.png"; String fileName = "zzz/" + "远程比赛.png";
QRCodeWriter qrCodeWriter = new QRCodeWriter(); QRCodeWriter qrCodeWriter = new QRCodeWriter();

Loading…
Cancel
Save