From 66769706447a440d465d80c8132c1efaea6940ea Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Sat, 10 Oct 2020 10:58:28 +0800 Subject: [PATCH] 20201010 --- .../com/ccsens/mt/api/CompeteController.java | 29 + .../com/ccsens/mt/bean/dto/CompeteDto.java | 59 ++ .../com/ccsens/mt/bean/po/CompetePlayer.java | 11 + .../mt/bean/po/CompetePlayerExample.java | 60 ++ .../mt/bean/po/CompeteProjectGroup.java | 95 +++ .../bean/po/CompeteProjectGroupExample.java | 631 ++++++++++++++++++ .../mt/bean/po/CompeteProjectPlayer.java | 11 + .../bean/po/CompeteProjectPlayerExample.java | 60 ++ .../com/ccsens/mt/bean/po/CompeteTeam.java | 11 + .../ccsens/mt/bean/po/CompeteTeamExample.java | 60 ++ .../ccsens/mt/persist/dao/CompeteTimeDao.java | 9 + .../mapper/CompeteProjectGroupMapper.java | 30 + .../com/ccsens/mt/service/CompeteService.java | 141 +++- .../ccsens/mt/service/ICompeteService.java | 21 + .../resources/mapper_dao/CompeteTimeDao.xml | 21 +- .../mapper_raw/CompetePlayerMapper.xml | 30 +- .../mapper_raw/CompeteProjectGroupMapper.xml | 243 +++++++ .../mapper_raw/CompeteProjectPlayerMapper.xml | 29 +- .../mapper_raw/CompeteTeamMapper.xml | 25 +- .../com/ccsens/tall/bean/dto/ProjectDto.java | 15 + .../com/ccsens/tall/bean/dto/RoleDto.java | 2 + .../ccsens/tall/service/IProjectService.java | 7 + .../ccsens/tall/service/ProRoleService.java | 9 + .../tall/service/ProTaskDetailService.java | 1 + .../ccsens/tall/service/ProjectService.java | 140 ++++ .../ccsens/tall/web/ProjectController.java | 12 + 26 files changed, 1738 insertions(+), 24 deletions(-) create mode 100644 mt/src/main/java/com/ccsens/mt/bean/po/CompeteProjectGroup.java create mode 100644 mt/src/main/java/com/ccsens/mt/bean/po/CompeteProjectGroupExample.java create mode 100644 mt/src/main/java/com/ccsens/mt/persist/mapper/CompeteProjectGroupMapper.java create mode 100644 mt/src/main/resources/mapper_raw/CompeteProjectGroupMapper.xml diff --git a/mt/src/main/java/com/ccsens/mt/api/CompeteController.java b/mt/src/main/java/com/ccsens/mt/api/CompeteController.java index 1ac89d12..6baa3541 100644 --- a/mt/src/main/java/com/ccsens/mt/api/CompeteController.java +++ b/mt/src/main/java/com/ccsens/mt/api/CompeteController.java @@ -49,6 +49,16 @@ public class CompeteController { return JsonResponse.newInstance().ok(competeGroups); } + + @MustLogin + @ApiOperation(value = "根据项目查找组别信息 ", notes = "") + @RequestMapping(value = "/group/project", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse> queryGroupByProject(@ApiParam @Validated @RequestBody QueryDto params) { + log.info("扫码加入团队:{}",params); + List groupByProject = competeService.queryGroupByProject(params); + return JsonResponse.newInstance().ok(groupByProject); + } + @MustLogin @ApiOperation(value = "模糊查询参赛单位", notes = "") @RequestMapping(value = "/company", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @@ -86,6 +96,15 @@ public class CompeteController { return JsonResponse.newInstance().ok(competeProjects); } +// @MustLogin +// @ApiOperation(value = "根据组别查看比赛项目 ", notes = "") +// @RequestMapping(value = "/project/group", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) +// public JsonResponse> queryProjectByGroup(@ApiParam @Validated @RequestBody QueryDto params) { +// log.info("扫码加入团队:{}",params); +// List projectByGroup = competeService.queryProjectByGroup(params); +// return JsonResponse.newInstance().ok(projectByGroup); +// } + @MustLogin @ApiOperation(value = "提交选择的比赛项目", notes = "") @RequestMapping(value = "/save/project", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @@ -132,6 +151,16 @@ public class CompeteController { return JsonResponse.newInstance().ok(competeTeamProject); } + @MustLogin + @ApiOperation(value = "提交报名信息和参加比赛", notes = "") + @RequestMapping(value = "/submit", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse submitProjectAndGroup(@ApiParam @Validated @RequestBody QueryDto params) { + log.info("扫码加入团队:{}",params); + competeService.submitProjectAndGroup(params); + return JsonResponse.newInstance().ok(); + } + + // @MustLogin // @ApiOperation(value = "查询比赛项目上的参赛选手列表", notes = "") // @RequestMapping(value = "/get/players", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) diff --git a/mt/src/main/java/com/ccsens/mt/bean/dto/CompeteDto.java b/mt/src/main/java/com/ccsens/mt/bean/dto/CompeteDto.java index 837868a6..f6f4d191 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/dto/CompeteDto.java +++ b/mt/src/main/java/com/ccsens/mt/bean/dto/CompeteDto.java @@ -169,4 +169,63 @@ public class CompeteDto { @ApiModelProperty("比赛的类型,0跳绳省赛 1跳绳校内比赛") private int type; } + + @Data + @ApiModel + public static class QueryProjectByGroup{ + @NotNull + @ApiModelProperty("比赛的类型,0跳绳省赛 1跳绳校内比赛") + private int type; + @NotNull + @ApiModelProperty("组别id") + private Long groupId; + } + @Data + @ApiModel + public static class QueryGroupByProject{ + @NotNull + @ApiModelProperty("比赛的类型,0跳绳省赛 1跳绳校内比赛") + private int type; + @NotNull + @ApiModelProperty("项目id") + private Long projectId; + } + + @Data + @ApiModel("提交报名基本信息") + public static class CompetePlayerAndProject{ + @NotNull + @ApiModelProperty("第几届信息的id") + private Long competeTimeId; + @NotNull + @ApiModelProperty("比赛的类型,0跳绳比赛") + private int type; + @NotEmpty + @ApiModelProperty("姓名") + private String name; + @NotEmpty + @ApiModelProperty("手机号") + private String phone; + @NotEmpty + @ApiModelProperty("手机验证码") + private String smsCode; + @NotEmpty + @ApiModelProperty("身份证") + private String idCard; +// @NotNull +// @ApiModelProperty("参加的组别的id") +// private Long groupId; + @ApiModelProperty("参加的比赛信息") + List projectAndGroups; + } + @Data + @ApiModel("项目id和组别id") + public static class ProjectAndGroup{ + @ApiModelProperty("比赛项目id(二级的)") + private Long projectId; + @ApiModelProperty("组别id") + private Long groupId; + @ApiModelProperty("其他参赛人员(亲子组需要)") + private String family; + } } diff --git a/mt/src/main/java/com/ccsens/mt/bean/po/CompetePlayer.java b/mt/src/main/java/com/ccsens/mt/bean/po/CompetePlayer.java index a35b7935..502bc17b 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/po/CompetePlayer.java +++ b/mt/src/main/java/com/ccsens/mt/bean/po/CompetePlayer.java @@ -34,6 +34,8 @@ public class CompetePlayer implements Serializable { private Byte recStatus; + private Long competeTimeId; + private static final long serialVersionUID = 1L; public Long getId() { @@ -156,6 +158,14 @@ public class CompetePlayer implements Serializable { this.recStatus = recStatus; } + public Long getCompeteTimeId() { + return competeTimeId; + } + + public void setCompeteTimeId(Long competeTimeId) { + this.competeTimeId = competeTimeId; + } + @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -177,6 +187,7 @@ public class CompetePlayer implements Serializable { sb.append(", createdAt=").append(createdAt); sb.append(", updatedAt=").append(updatedAt); sb.append(", recStatus=").append(recStatus); + sb.append(", competeTimeId=").append(competeTimeId); sb.append("]"); return sb.toString(); } diff --git a/mt/src/main/java/com/ccsens/mt/bean/po/CompetePlayerExample.java b/mt/src/main/java/com/ccsens/mt/bean/po/CompetePlayerExample.java index 96552c90..aeb381a1 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/po/CompetePlayerExample.java +++ b/mt/src/main/java/com/ccsens/mt/bean/po/CompetePlayerExample.java @@ -1064,6 +1064,66 @@ public class CompetePlayerExample { addCriterion("rec_status not between", value1, value2, "recStatus"); return (Criteria) this; } + + public Criteria andCompeteTimeIdIsNull() { + addCriterion("compete_time_id is null"); + return (Criteria) this; + } + + public Criteria andCompeteTimeIdIsNotNull() { + addCriterion("compete_time_id is not null"); + return (Criteria) this; + } + + public Criteria andCompeteTimeIdEqualTo(Long value) { + addCriterion("compete_time_id =", value, "competeTimeId"); + return (Criteria) this; + } + + public Criteria andCompeteTimeIdNotEqualTo(Long value) { + addCriterion("compete_time_id <>", value, "competeTimeId"); + return (Criteria) this; + } + + public Criteria andCompeteTimeIdGreaterThan(Long value) { + addCriterion("compete_time_id >", value, "competeTimeId"); + return (Criteria) this; + } + + public Criteria andCompeteTimeIdGreaterThanOrEqualTo(Long value) { + addCriterion("compete_time_id >=", value, "competeTimeId"); + return (Criteria) this; + } + + public Criteria andCompeteTimeIdLessThan(Long value) { + addCriterion("compete_time_id <", value, "competeTimeId"); + return (Criteria) this; + } + + public Criteria andCompeteTimeIdLessThanOrEqualTo(Long value) { + addCriterion("compete_time_id <=", value, "competeTimeId"); + return (Criteria) this; + } + + public Criteria andCompeteTimeIdIn(List values) { + addCriterion("compete_time_id in", values, "competeTimeId"); + return (Criteria) this; + } + + public Criteria andCompeteTimeIdNotIn(List values) { + addCriterion("compete_time_id not in", values, "competeTimeId"); + return (Criteria) this; + } + + public Criteria andCompeteTimeIdBetween(Long value1, Long value2) { + addCriterion("compete_time_id between", value1, value2, "competeTimeId"); + return (Criteria) this; + } + + public Criteria andCompeteTimeIdNotBetween(Long value1, Long value2) { + addCriterion("compete_time_id not between", value1, value2, "competeTimeId"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/mt/src/main/java/com/ccsens/mt/bean/po/CompeteProjectGroup.java b/mt/src/main/java/com/ccsens/mt/bean/po/CompeteProjectGroup.java new file mode 100644 index 00000000..d306cfbd --- /dev/null +++ b/mt/src/main/java/com/ccsens/mt/bean/po/CompeteProjectGroup.java @@ -0,0 +1,95 @@ +package com.ccsens.mt.bean.po; + +import java.io.Serializable; +import java.util.Date; + +public class CompeteProjectGroup implements Serializable { + private Long id; + + private Long projectId; + + private Long groupId; + + private String description; + + 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 getProjectId() { + return projectId; + } + + public void setProjectId(Long projectId) { + this.projectId = projectId; + } + + public Long getGroupId() { + return groupId; + } + + public void setGroupId(Long groupId) { + this.groupId = groupId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description == null ? null : description.trim(); + } + + 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(", projectId=").append(projectId); + sb.append(", groupId=").append(groupId); + sb.append(", description=").append(description); + sb.append(", createdAt=").append(createdAt); + sb.append(", updatedAt=").append(updatedAt); + sb.append(", recStatus=").append(recStatus); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/mt/src/main/java/com/ccsens/mt/bean/po/CompeteProjectGroupExample.java b/mt/src/main/java/com/ccsens/mt/bean/po/CompeteProjectGroupExample.java new file mode 100644 index 00000000..22e0f65b --- /dev/null +++ b/mt/src/main/java/com/ccsens/mt/bean/po/CompeteProjectGroupExample.java @@ -0,0 +1,631 @@ +package com.ccsens.mt.bean.po; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class CompeteProjectGroupExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public CompeteProjectGroupExample() { + oredCriteria = new ArrayList(); + } + + 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 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 criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List 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 values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List 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 andProjectIdIsNull() { + addCriterion("project_id is null"); + return (Criteria) this; + } + + public Criteria andProjectIdIsNotNull() { + addCriterion("project_id is not null"); + return (Criteria) this; + } + + public Criteria andProjectIdEqualTo(Long value) { + addCriterion("project_id =", value, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdNotEqualTo(Long value) { + addCriterion("project_id <>", value, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdGreaterThan(Long value) { + addCriterion("project_id >", value, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdGreaterThanOrEqualTo(Long value) { + addCriterion("project_id >=", value, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdLessThan(Long value) { + addCriterion("project_id <", value, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdLessThanOrEqualTo(Long value) { + addCriterion("project_id <=", value, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdIn(List values) { + addCriterion("project_id in", values, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdNotIn(List values) { + addCriterion("project_id not in", values, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdBetween(Long value1, Long value2) { + addCriterion("project_id between", value1, value2, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdNotBetween(Long value1, Long value2) { + addCriterion("project_id not between", value1, value2, "projectId"); + return (Criteria) this; + } + + public Criteria andGroupIdIsNull() { + addCriterion("group_id is null"); + return (Criteria) this; + } + + public Criteria andGroupIdIsNotNull() { + addCriterion("group_id is not null"); + return (Criteria) this; + } + + public Criteria andGroupIdEqualTo(Long value) { + addCriterion("group_id =", value, "groupId"); + return (Criteria) this; + } + + public Criteria andGroupIdNotEqualTo(Long value) { + addCriterion("group_id <>", value, "groupId"); + return (Criteria) this; + } + + public Criteria andGroupIdGreaterThan(Long value) { + addCriterion("group_id >", value, "groupId"); + return (Criteria) this; + } + + public Criteria andGroupIdGreaterThanOrEqualTo(Long value) { + addCriterion("group_id >=", value, "groupId"); + return (Criteria) this; + } + + public Criteria andGroupIdLessThan(Long value) { + addCriterion("group_id <", value, "groupId"); + return (Criteria) this; + } + + public Criteria andGroupIdLessThanOrEqualTo(Long value) { + addCriterion("group_id <=", value, "groupId"); + return (Criteria) this; + } + + public Criteria andGroupIdIn(List values) { + addCriterion("group_id in", values, "groupId"); + return (Criteria) this; + } + + public Criteria andGroupIdNotIn(List values) { + addCriterion("group_id not in", values, "groupId"); + return (Criteria) this; + } + + public Criteria andGroupIdBetween(Long value1, Long value2) { + addCriterion("group_id between", value1, value2, "groupId"); + return (Criteria) this; + } + + public Criteria andGroupIdNotBetween(Long value1, Long value2) { + addCriterion("group_id not between", value1, value2, "groupId"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNull() { + addCriterion("description is null"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNotNull() { + addCriterion("description is not null"); + return (Criteria) this; + } + + public Criteria andDescriptionEqualTo(String value) { + addCriterion("description =", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotEqualTo(String value) { + addCriterion("description <>", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThan(String value) { + addCriterion("description >", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThanOrEqualTo(String value) { + addCriterion("description >=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThan(String value) { + addCriterion("description <", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThanOrEqualTo(String value) { + addCriterion("description <=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLike(String value) { + addCriterion("description like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotLike(String value) { + addCriterion("description not like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionIn(List values) { + addCriterion("description in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotIn(List values) { + addCriterion("description not in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionBetween(String value1, String value2) { + addCriterion("description between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotBetween(String value1, String value2) { + addCriterion("description not between", value1, value2, "description"); + 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 values) { + addCriterion("created_at in", values, "createdAt"); + return (Criteria) this; + } + + public Criteria andCreatedAtNotIn(List 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 values) { + addCriterion("updated_at in", values, "updatedAt"); + return (Criteria) this; + } + + public Criteria andUpdatedAtNotIn(List 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 values) { + addCriterion("rec_status in", values, "recStatus"); + return (Criteria) this; + } + + public Criteria andRecStatusNotIn(List 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); + } + } +} \ No newline at end of file diff --git a/mt/src/main/java/com/ccsens/mt/bean/po/CompeteProjectPlayer.java b/mt/src/main/java/com/ccsens/mt/bean/po/CompeteProjectPlayer.java index e62d764d..d122968b 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/po/CompeteProjectPlayer.java +++ b/mt/src/main/java/com/ccsens/mt/bean/po/CompeteProjectPlayer.java @@ -22,6 +22,8 @@ public class CompeteProjectPlayer implements Serializable { private Byte recStatus; + private Long competeGroupId; + private static final long serialVersionUID = 1L; public Long getId() { @@ -96,6 +98,14 @@ public class CompeteProjectPlayer implements Serializable { this.recStatus = recStatus; } + public Long getCompeteGroupId() { + return competeGroupId; + } + + public void setCompeteGroupId(Long competeGroupId) { + this.competeGroupId = competeGroupId; + } + @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -111,6 +121,7 @@ public class CompeteProjectPlayer implements Serializable { sb.append(", createdAt=").append(createdAt); sb.append(", updatedAt=").append(updatedAt); sb.append(", recStatus=").append(recStatus); + sb.append(", competeGroupId=").append(competeGroupId); sb.append("]"); return sb.toString(); } diff --git a/mt/src/main/java/com/ccsens/mt/bean/po/CompeteProjectPlayerExample.java b/mt/src/main/java/com/ccsens/mt/bean/po/CompeteProjectPlayerExample.java index 8ab4278d..fb6e50c0 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/po/CompeteProjectPlayerExample.java +++ b/mt/src/main/java/com/ccsens/mt/bean/po/CompeteProjectPlayerExample.java @@ -644,6 +644,66 @@ public class CompeteProjectPlayerExample { addCriterion("rec_status not between", value1, value2, "recStatus"); return (Criteria) this; } + + public Criteria andCompeteGroupIdIsNull() { + addCriterion("compete_group_id is null"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdIsNotNull() { + addCriterion("compete_group_id is not null"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdEqualTo(Long value) { + addCriterion("compete_group_id =", value, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdNotEqualTo(Long value) { + addCriterion("compete_group_id <>", value, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdGreaterThan(Long value) { + addCriterion("compete_group_id >", value, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdGreaterThanOrEqualTo(Long value) { + addCriterion("compete_group_id >=", value, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdLessThan(Long value) { + addCriterion("compete_group_id <", value, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdLessThanOrEqualTo(Long value) { + addCriterion("compete_group_id <=", value, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdIn(List values) { + addCriterion("compete_group_id in", values, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdNotIn(List values) { + addCriterion("compete_group_id not in", values, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdBetween(Long value1, Long value2) { + addCriterion("compete_group_id between", value1, value2, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdNotBetween(Long value1, Long value2) { + addCriterion("compete_group_id not between", value1, value2, "competeGroupId"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/mt/src/main/java/com/ccsens/mt/bean/po/CompeteTeam.java b/mt/src/main/java/com/ccsens/mt/bean/po/CompeteTeam.java index 0bb0aeab..0d6a9e99 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/po/CompeteTeam.java +++ b/mt/src/main/java/com/ccsens/mt/bean/po/CompeteTeam.java @@ -24,6 +24,8 @@ public class CompeteTeam implements Serializable { private Byte recStatus; + private Long competeGroupId; + private static final long serialVersionUID = 1L; public Long getId() { @@ -106,6 +108,14 @@ public class CompeteTeam implements Serializable { this.recStatus = recStatus; } + public Long getCompeteGroupId() { + return competeGroupId; + } + + public void setCompeteGroupId(Long competeGroupId) { + this.competeGroupId = competeGroupId; + } + @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -122,6 +132,7 @@ public class CompeteTeam implements Serializable { sb.append(", createdAt=").append(createdAt); sb.append(", updatedAt=").append(updatedAt); sb.append(", recStatus=").append(recStatus); + sb.append(", competeGroupId=").append(competeGroupId); sb.append("]"); return sb.toString(); } diff --git a/mt/src/main/java/com/ccsens/mt/bean/po/CompeteTeamExample.java b/mt/src/main/java/com/ccsens/mt/bean/po/CompeteTeamExample.java index 8e894f31..25a8ba85 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/po/CompeteTeamExample.java +++ b/mt/src/main/java/com/ccsens/mt/bean/po/CompeteTeamExample.java @@ -714,6 +714,66 @@ public class CompeteTeamExample { addCriterion("rec_status not between", value1, value2, "recStatus"); return (Criteria) this; } + + public Criteria andCompeteGroupIdIsNull() { + addCriterion("compete_group_id is null"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdIsNotNull() { + addCriterion("compete_group_id is not null"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdEqualTo(Long value) { + addCriterion("compete_group_id =", value, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdNotEqualTo(Long value) { + addCriterion("compete_group_id <>", value, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdGreaterThan(Long value) { + addCriterion("compete_group_id >", value, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdGreaterThanOrEqualTo(Long value) { + addCriterion("compete_group_id >=", value, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdLessThan(Long value) { + addCriterion("compete_group_id <", value, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdLessThanOrEqualTo(Long value) { + addCriterion("compete_group_id <=", value, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdIn(List values) { + addCriterion("compete_group_id in", values, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdNotIn(List values) { + addCriterion("compete_group_id not in", values, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdBetween(Long value1, Long value2) { + addCriterion("compete_group_id between", value1, value2, "competeGroupId"); + return (Criteria) this; + } + + public Criteria andCompeteGroupIdNotBetween(Long value1, Long value2) { + addCriterion("compete_group_id not between", value1, value2, "competeGroupId"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTimeDao.java b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTimeDao.java index 6d65e9ef..53c51615 100644 --- a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTimeDao.java +++ b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTimeDao.java @@ -40,4 +40,13 @@ public interface CompeteTimeDao extends CompeteTimeMapper { * @return 参赛项目信息 */ List queryCompeteProjectByType(@Param("type") int type); + + + /** + * 通过项目查看组别信息 + * @param type 比赛类型 + * @param projectId 项目id + * @return 返回组别信息 + */ + List queryGroupByProject(@Param("type") int type, @Param("projectId") Long projectId); } diff --git a/mt/src/main/java/com/ccsens/mt/persist/mapper/CompeteProjectGroupMapper.java b/mt/src/main/java/com/ccsens/mt/persist/mapper/CompeteProjectGroupMapper.java new file mode 100644 index 00000000..a03b398c --- /dev/null +++ b/mt/src/main/java/com/ccsens/mt/persist/mapper/CompeteProjectGroupMapper.java @@ -0,0 +1,30 @@ +package com.ccsens.mt.persist.mapper; + +import com.ccsens.mt.bean.po.CompeteProjectGroup; +import com.ccsens.mt.bean.po.CompeteProjectGroupExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface CompeteProjectGroupMapper { + long countByExample(CompeteProjectGroupExample example); + + int deleteByExample(CompeteProjectGroupExample example); + + int deleteByPrimaryKey(Long id); + + int insert(CompeteProjectGroup record); + + int insertSelective(CompeteProjectGroup record); + + List selectByExample(CompeteProjectGroupExample example); + + CompeteProjectGroup selectByPrimaryKey(Long id); + + int updateByExampleSelective(@Param("record") CompeteProjectGroup record, @Param("example") CompeteProjectGroupExample example); + + int updateByExample(@Param("record") CompeteProjectGroup record, @Param("example") CompeteProjectGroupExample example); + + int updateByPrimaryKeySelective(CompeteProjectGroup record); + + int updateByPrimaryKey(CompeteProjectGroup record); +} \ No newline at end of file diff --git a/mt/src/main/java/com/ccsens/mt/service/CompeteService.java b/mt/src/main/java/com/ccsens/mt/service/CompeteService.java index 8b764640..f90ab9fe 100644 --- a/mt/src/main/java/com/ccsens/mt/service/CompeteService.java +++ b/mt/src/main/java/com/ccsens/mt/service/CompeteService.java @@ -58,6 +58,8 @@ public class CompeteService implements ICompeteService{ private ILevelUpService levelUpService; @Resource private CompetePlayerFamilyMapper competePlayerFamilyMapper; + @Resource + private CompeteProjectGroupMapper competeProjectGroupMapper; /** @@ -78,6 +80,24 @@ public class CompeteService implements ICompeteService{ return competeTimeDao.queryCompeteGroupByType(competeType.getType()); } + @Override + public List queryGroupByProject(QueryDto params) { + CompeteDto.QueryGroupByProject competeType = params.getParam(); + List competeGroups = competeTimeDao.queryGroupByProject(competeType.getType(),competeType.getProjectId()); +// +// +// CompeteDto.QueryGroupByProject competeType = params.getParam(); +// List competeGroups = competeTimeDao.queryCompeteGroupByType(competeType.getType()); +// competeGroups.forEach(competeGroup -> { +// CompeteProjectGroupExample competeProjectGroupExample = new CompeteProjectGroupExample(); +// competeProjectGroupExample.createCriteria().andGroupIdEqualTo(competeGroup.getGroupId()).andProjectIdEqualTo(competeType.getProjectId()); +// if(competeProjectGroupMapper.countByExample(competeProjectGroupExample) == 0){ +// competeGroups.remove(competeGroup); +// } +// }); + return competeGroups; + } + /** * 模糊查询参赛单位 */ @@ -209,6 +229,33 @@ public class CompeteService implements ICompeteService{ return competeTimeDao.queryCompeteProjectByType(competeType.getType()); } + /** + * 根据组别查看比赛项目信息 + */ + @Override + public List queryProjectByGroup(QueryDto params) { + CompeteDto.QueryProjectByGroup competeType = params.getParam(); + List competeSecondProjects = new ArrayList<>(); + CompeteProjectExample projectExample = new CompeteProjectExample(); + projectExample.createCriteria().andTypeEqualTo((byte) competeType.getType()).andLevelEqualTo((byte) 2); + List competeProjectList = competeProjectMapper.selectByExample(projectExample); + if(CollectionUtil.isNotEmpty(competeProjectList)){ + competeProjectList.forEach(competeProject -> { + CompeteProjectGroupExample projectGroupExample = new CompeteProjectGroupExample(); + projectGroupExample.createCriteria().andProjectIdEqualTo(competeProject.getId()) + .andGroupIdEqualTo(competeType.getGroupId()); + if(competeProjectGroupMapper.countByExample(projectGroupExample) != 0){ + competeProjectList.remove(competeProject); + }else { + CompeteVo.CompeteSecondProject secondProject = new CompeteVo.CompeteSecondProject(); + BeanUtil.copyProperties(competeProject,secondProject); + competeSecondProjects.add(secondProject); + } + }); + } + return competeSecondProjects; + } + /** * 提交选择的比赛项目 */ @@ -227,9 +274,9 @@ public class CompeteService implements ICompeteService{ // 个人赛 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); - } +// 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()); @@ -449,4 +496,92 @@ public class CompeteService implements ICompeteService{ } return queryPlayerList; } + + @Override + public void submitProjectAndGroup(QueryDto params) { + Long userId = params.getUserId(); + CompeteDto.CompetePlayerAndProject playerAndProject = params.getParam(); + //检查验证码是否正确 + if (!redisUtil.hasKey(RedisKeyManager.getSigninSmsKey(playerAndProject.getPhone()))) { + throw new BaseException(CodeEnum.SMS_CODE_CORRECT); + } + if (!playerAndProject.getSmsCode().equals(redisUtil.get(RedisKeyManager.getSigninSmsKey(playerAndProject.getPhone())).toString())) { + throw new BaseException(CodeEnum.SMS_CODE_CORRECT); + } + //查找此用户是否注册过此身份信息 + CompetePlayer player; + CompetePlayerExample playerExample = new CompetePlayerExample(); + playerExample.createCriteria().andUserIdEqualTo(userId).andIdCardEqualTo(playerAndProject.getIdCard()); + List playerList = competePlayerDao.selectByExample(playerExample); + if(CollectionUtil.isNotEmpty(playerList)){ + //有则直接使用 + player = playerList.get(0); + }else { + //没有则添加 + player = new CompetePlayer(); + BeanUtil.copyProperties(playerAndProject,player); + player.setId(snowflake.nextId()); + player.setUserId(userId); + player.setCompeteTimeId(playerAndProject.getCompeteTimeId()); + competePlayerDao.insertSelective(player); + } + + //读取项目信息 + if(CollectionUtil.isNotEmpty(playerAndProject.getProjectAndGroups())){ + playerAndProject.getProjectAndGroups().forEach(projectAndGroup -> { + CompeteProject project = competeProjectMapper.selectByPrimaryKey(projectAndGroup.getProjectId()); + log.info("项目信息:{}", project); + if (project == null) { + throw new BaseException(CodeEnum.PARAM_ERROR); + } + //单人项目直接添加信息和分组 + if (project.getTeam() == Constant.Compete.TEAM_NO) { + // 个人赛 + CompeteProjectPlayer projectPlayer = new CompeteProjectPlayer(); + projectPlayer.setId(snowflake.nextId()); + projectPlayer.setPlayerId(player.getId()); + projectPlayer.setProjectId(project.getId()); + projectPlayer.setCompeteTimeId(playerAndProject.getCompeteTimeId()); + projectPlayer.setCompeteGroupId(projectAndGroup.getGroupId()); + competeProjectPlayerMapper.insertSelective(projectPlayer); + }else { + //团队项目创建团队 + CompeteTeam team = new CompeteTeam(); + team.setId(snowflake.nextId()); + team.setCreator(player.getId()); + team.setProjectId(project.getId()); + team.setCompeteTimeId(playerAndProject.getCompeteTimeId()); + team.setCompeteGroupId(projectAndGroup.getGroupId()); + 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); + //读取其他参赛人员的姓名,并添加为选手 + if(StrUtil.isNotEmpty(projectAndGroup.getFamily())){ + String names = StringUtil.replaceComma(projectAndGroup.getFamily()); + String[] familyNames = names.split(","); + if(ObjectUtil.isNotNull(familyNames)){ + for (String familyName : familyNames) { + CompetePlayer familyPlayer = new CompetePlayer(); + familyPlayer.setId(snowflake.nextId()); + familyPlayer.setName(familyName); + competePlayerDao.insertSelective(familyPlayer); + //将其他参赛人员添加至此团队 + CompeteTeamMember member = new CompeteTeamMember(); + member.setId(snowflake.nextId()); + member.setPlayerId(familyPlayer.getId()); + member.setCompeteTeamId(team.getId()); + member.setCaptain(Constant.Compete.TEAM_LEADER_NO); + competeTeamMemberMapper.insertSelective(member); + } + } + } + } + }); + } + } } diff --git a/mt/src/main/java/com/ccsens/mt/service/ICompeteService.java b/mt/src/main/java/com/ccsens/mt/service/ICompeteService.java index 017d6cdb..35f5b07b 100644 --- a/mt/src/main/java/com/ccsens/mt/service/ICompeteService.java +++ b/mt/src/main/java/com/ccsens/mt/service/ICompeteService.java @@ -93,4 +93,25 @@ public interface ICompeteService { * @return 返回参赛人员或团队的列表 */ CompeteVo.QueryPlayerList queryPlayerList(QueryDto params); + + /** + * 根据组别查找比赛项目信息 + * @param params 类型和组别 + * @return 返回比赛项目(没有一级项目,直接二级) + */ + List queryProjectByGroup(QueryDto params); + + /** + * 根据项目查询组别信息 + * @param params 项目信息 + * @return 返回组别信息 + */ + List queryGroupByProject(QueryDto params); + + /** + * 同时提交基本信息和参赛项目 + * @param params + * @return + */ + void submitProjectAndGroup(QueryDto params); } diff --git a/mt/src/main/resources/mapper_dao/CompeteTimeDao.xml b/mt/src/main/resources/mapper_dao/CompeteTimeDao.xml index a5a581a4..53ed4b2e 100644 --- a/mt/src/main/resources/mapper_dao/CompeteTimeDao.xml +++ b/mt/src/main/resources/mapper_dao/CompeteTimeDao.xml @@ -46,9 +46,9 @@ FROM t_compete_group WHERE - rec_status = #{type} + rec_status = 0 and - type = 0 + type = #{type} ORDER BY sequence @@ -103,4 +103,21 @@ level = 1 + \ No newline at end of file diff --git a/mt/src/main/resources/mapper_raw/CompetePlayerMapper.xml b/mt/src/main/resources/mapper_raw/CompetePlayerMapper.xml index 52d11ab2..fcf5a501 100644 --- a/mt/src/main/resources/mapper_raw/CompetePlayerMapper.xml +++ b/mt/src/main/resources/mapper_raw/CompetePlayerMapper.xml @@ -17,6 +17,7 @@ + @@ -78,7 +79,8 @@ id, user_id, name, id_card, phone, gender, id_card_front, id_card_back, prove_img, - compete_group_id, company_id, authorization, created_at, updated_at, rec_status + compete_group_id, company_id, authorization, created_at, updated_at, rec_status, + compete_time_id @@ -275,6 +283,9 @@ rec_status = #{record.recStatus,jdbcType=TINYINT}, + + compete_time_id = #{record.competeTimeId,jdbcType=BIGINT}, + @@ -296,7 +307,8 @@ authorization = #{record.authorization,jdbcType=TINYINT}, created_at = #{record.createdAt,jdbcType=TIMESTAMP}, updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, - rec_status = #{record.recStatus,jdbcType=TINYINT} + rec_status = #{record.recStatus,jdbcType=TINYINT}, + compete_time_id = #{record.competeTimeId,jdbcType=BIGINT} @@ -346,6 +358,9 @@ rec_status = #{recStatus,jdbcType=TINYINT}, + + compete_time_id = #{competeTimeId,jdbcType=BIGINT}, + where id = #{id,jdbcType=BIGINT} @@ -364,7 +379,8 @@ authorization = #{authorization,jdbcType=TINYINT}, created_at = #{createdAt,jdbcType=TIMESTAMP}, updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - rec_status = #{recStatus,jdbcType=TINYINT} + rec_status = #{recStatus,jdbcType=TINYINT}, + compete_time_id = #{competeTimeId,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT} \ No newline at end of file diff --git a/mt/src/main/resources/mapper_raw/CompeteProjectGroupMapper.xml b/mt/src/main/resources/mapper_raw/CompeteProjectGroupMapper.xml new file mode 100644 index 00000000..2f6aa71d --- /dev/null +++ b/mt/src/main/resources/mapper_raw/CompeteProjectGroupMapper.xml @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, project_id, group_id, description, created_at, updated_at, rec_status + + + + + delete from t_compete_project_group + where id = #{id,jdbcType=BIGINT} + + + delete from t_compete_project_group + + + + + + insert into t_compete_project_group (id, project_id, group_id, + description, created_at, updated_at, + rec_status) + values (#{id,jdbcType=BIGINT}, #{projectId,jdbcType=BIGINT}, #{groupId,jdbcType=BIGINT}, + #{description,jdbcType=VARCHAR}, #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, + #{recStatus,jdbcType=TINYINT}) + + + insert into t_compete_project_group + + + id, + + + project_id, + + + group_id, + + + description, + + + created_at, + + + updated_at, + + + rec_status, + + + + + #{id,jdbcType=BIGINT}, + + + #{projectId,jdbcType=BIGINT}, + + + #{groupId,jdbcType=BIGINT}, + + + #{description,jdbcType=VARCHAR}, + + + #{createdAt,jdbcType=TIMESTAMP}, + + + #{updatedAt,jdbcType=TIMESTAMP}, + + + #{recStatus,jdbcType=TINYINT}, + + + + + + update t_compete_project_group + + + id = #{record.id,jdbcType=BIGINT}, + + + project_id = #{record.projectId,jdbcType=BIGINT}, + + + group_id = #{record.groupId,jdbcType=BIGINT}, + + + description = #{record.description,jdbcType=VARCHAR}, + + + created_at = #{record.createdAt,jdbcType=TIMESTAMP}, + + + updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, + + + rec_status = #{record.recStatus,jdbcType=TINYINT}, + + + + + + + + update t_compete_project_group + set id = #{record.id,jdbcType=BIGINT}, + project_id = #{record.projectId,jdbcType=BIGINT}, + group_id = #{record.groupId,jdbcType=BIGINT}, + description = #{record.description,jdbcType=VARCHAR}, + created_at = #{record.createdAt,jdbcType=TIMESTAMP}, + updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, + rec_status = #{record.recStatus,jdbcType=TINYINT} + + + + + + update t_compete_project_group + + + project_id = #{projectId,jdbcType=BIGINT}, + + + group_id = #{groupId,jdbcType=BIGINT}, + + + description = #{description,jdbcType=VARCHAR}, + + + created_at = #{createdAt,jdbcType=TIMESTAMP}, + + + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + + + rec_status = #{recStatus,jdbcType=TINYINT}, + + + where id = #{id,jdbcType=BIGINT} + + + update t_compete_project_group + set project_id = #{projectId,jdbcType=BIGINT}, + group_id = #{groupId,jdbcType=BIGINT}, + description = #{description,jdbcType=VARCHAR}, + created_at = #{createdAt,jdbcType=TIMESTAMP}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + rec_status = #{recStatus,jdbcType=TINYINT} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/mt/src/main/resources/mapper_raw/CompeteProjectPlayerMapper.xml b/mt/src/main/resources/mapper_raw/CompeteProjectPlayerMapper.xml index 07cea7e1..d26c89b2 100644 --- a/mt/src/main/resources/mapper_raw/CompeteProjectPlayerMapper.xml +++ b/mt/src/main/resources/mapper_raw/CompeteProjectPlayerMapper.xml @@ -11,6 +11,7 @@ + @@ -72,7 +73,7 @@ id, player_id, project_id, compete_time_id, gender_group, certificate, created_at, - updated_at, rec_status + updated_at, rec_status, compete_group_id @@ -211,6 +218,9 @@ rec_status = #{record.recStatus,jdbcType=TINYINT}, + + compete_group_id = #{record.competeGroupId,jdbcType=BIGINT}, + @@ -226,7 +236,8 @@ certificate = #{record.certificate,jdbcType=TINYINT}, created_at = #{record.createdAt,jdbcType=TIMESTAMP}, updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, - rec_status = #{record.recStatus,jdbcType=TINYINT} + rec_status = #{record.recStatus,jdbcType=TINYINT}, + compete_group_id = #{record.competeGroupId,jdbcType=BIGINT} @@ -258,6 +269,9 @@ rec_status = #{recStatus,jdbcType=TINYINT}, + + compete_group_id = #{competeGroupId,jdbcType=BIGINT}, + where id = #{id,jdbcType=BIGINT} @@ -270,7 +284,8 @@ certificate = #{certificate,jdbcType=TINYINT}, created_at = #{createdAt,jdbcType=TIMESTAMP}, updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - rec_status = #{recStatus,jdbcType=TINYINT} + rec_status = #{recStatus,jdbcType=TINYINT}, + compete_group_id = #{competeGroupId,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT} \ No newline at end of file diff --git a/mt/src/main/resources/mapper_raw/CompeteTeamMapper.xml b/mt/src/main/resources/mapper_raw/CompeteTeamMapper.xml index cdd11c38..056b0b81 100644 --- a/mt/src/main/resources/mapper_raw/CompeteTeamMapper.xml +++ b/mt/src/main/resources/mapper_raw/CompeteTeamMapper.xml @@ -12,6 +12,7 @@ + @@ -73,7 +74,7 @@ id, creator, project_id, compete_time_id, gender_group, certificate, qr_code, created_at, - updated_at, rec_status + updated_at, rec_status, compete_group_id @@ -221,6 +228,9 @@ rec_status = #{record.recStatus,jdbcType=TINYINT}, + + compete_group_id = #{record.competeGroupId,jdbcType=BIGINT}, + @@ -237,7 +247,8 @@ qr_code = #{record.qrCode,jdbcType=VARCHAR}, created_at = #{record.createdAt,jdbcType=TIMESTAMP}, updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, - rec_status = #{record.recStatus,jdbcType=TINYINT} + rec_status = #{record.recStatus,jdbcType=TINYINT}, + compete_group_id = #{record.competeGroupId,jdbcType=BIGINT} @@ -272,6 +283,9 @@ rec_status = #{recStatus,jdbcType=TINYINT}, + + compete_group_id = #{competeGroupId,jdbcType=BIGINT}, + where id = #{id,jdbcType=BIGINT} @@ -285,7 +299,8 @@ qr_code = #{qrCode,jdbcType=VARCHAR}, created_at = #{createdAt,jdbcType=TIMESTAMP}, updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - rec_status = #{recStatus,jdbcType=TINYINT} + rec_status = #{recStatus,jdbcType=TINYINT}, + compete_group_id = #{competeGroupId,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT} \ No newline at end of file diff --git a/tall/src/main/java/com/ccsens/tall/bean/dto/ProjectDto.java b/tall/src/main/java/com/ccsens/tall/bean/dto/ProjectDto.java index 7d007bce..6eda0918 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/dto/ProjectDto.java +++ b/tall/src/main/java/com/ccsens/tall/bean/dto/ProjectDto.java @@ -124,4 +124,19 @@ public class ProjectDto { @ApiModelProperty("变身的秘钥") private String code; } + + @Data + @ApiModel("创建新项目") + public static class CreateProject{ + @ApiModelProperty("名字") + private String name; + @ApiModelProperty("详情") + private String description; + @ApiModelProperty("地址") + private String address; + @ApiModelProperty("开始时间") + private Long beginTime; + @ApiModelProperty("结束时间") + private Long endTime; + } } diff --git a/tall/src/main/java/com/ccsens/tall/bean/dto/RoleDto.java b/tall/src/main/java/com/ccsens/tall/bean/dto/RoleDto.java index 9aff12cc..c46fe312 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/dto/RoleDto.java +++ b/tall/src/main/java/com/ccsens/tall/bean/dto/RoleDto.java @@ -29,6 +29,8 @@ public class RoleDto { private Long roleId; @ApiModelProperty("角色名") private String roleName; + @ApiModelProperty("关联项目id(只有角色项目可以修改)") + private Long relevanceProjectId; } @Data diff --git a/tall/src/main/java/com/ccsens/tall/service/IProjectService.java b/tall/src/main/java/com/ccsens/tall/service/IProjectService.java index ce219b3f..a0ed1c20 100644 --- a/tall/src/main/java/com/ccsens/tall/service/IProjectService.java +++ b/tall/src/main/java/com/ccsens/tall/service/IProjectService.java @@ -49,4 +49,11 @@ public interface IProjectService { * 变身成为某个角色 */ void imitationRole(Long currentUserId, ProjectDto.ImitationRole imitationRole); + + /** + * 新建项目 + * @param currentUserId userId + * @return 返回项目信息 + */ + ProjectVo.ProjectInfo createProject(Long currentUserId,ProjectDto.CreateProject createProject,String token); } diff --git a/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java b/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java index d336d0a9..6d2bf023 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java @@ -378,9 +378,18 @@ public class ProRoleService implements IProRoleService { if (power < 2) { throw new BaseException(CodeEnum.NOT_POWER); } + //修改名字 if(StrUtil.isNotEmpty(updateRole.getRoleName())){ proRole.setName(updateRole.getRoleName()); } + //修改关联项目id + if(ObjectUtil.isNotNull(updateRole.getRelevanceProjectId())){ + //检查角色是否是角色项目 + ProRole parentRole = proRoleDao.selectByPrimaryKey(proRole.getParentId()); + if(parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.ProjectVirtualRole.value)){ + proRole.setRelevanceProjectId(updateRole.getRelevanceProjectId()); + } + } proRoleDao.updateByPrimaryKeySelective(proRole); } diff --git a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java index 93d677fe..255c800e 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java @@ -1148,6 +1148,7 @@ public class ProTaskDetailService implements IProTaskDetailService { (taskDetail.getDelay() == WebConstant.TASK_DELAY.DelayManual.value)){ taskDetail.setDelayTime(updateTaskInfo.getDelayTime()); } + //是否是里程碑 if(ObjectUtil.isNotNull(updateTaskInfo.getMilestone())){ taskDetail.setMilestone(updateTaskInfo.getMilestone()); } diff --git a/tall/src/main/java/com/ccsens/tall/service/ProjectService.java b/tall/src/main/java/com/ccsens/tall/service/ProjectService.java index fcd7db7e..0a51842a 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProjectService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProjectService.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.ccsens.tall.bean.dto.MemberRoleDto; import com.ccsens.tall.bean.dto.ProjectDto; import com.ccsens.tall.bean.po.*; import com.ccsens.tall.bean.vo.LabelVo; @@ -41,6 +42,10 @@ public class ProjectService implements IProjectService { @Resource private ProRoleDao proRoleDao; @Resource + private ProMemberDao proMemberDao; + @Resource + private ProMemberRoleDao memberRoleDao; + @Resource private TaskDetailDao taskDetailDao; @Resource private TaskSubTimeDao taskSubTimeDao; @@ -66,6 +71,13 @@ public class ProjectService implements IProjectService { private ProTaskShowDao proTaskShowDao; @Resource private SysImitationMapper imitationMapper; + @Resource + private UserAttentionDao userAttentionDao; + @Resource + private SysUserDao sysUserDao; + @Resource + private SysAuthDao sysAuthDao; + @Override public void saveProject(SysProject sysProject) { @@ -950,4 +962,132 @@ public class ProjectService implements IProjectService { sysImitation.setUserId(currentUserId); imitationMapper.insertSelective(sysImitation); } + + @Override + public ProjectVo.ProjectInfo createProject(Long currentUserId,ProjectDto.CreateProject createProject,String token) { + //查找当前账号的用户名和手机号 + String name = sysUserDao.selectByPrimaryKey(currentUserId).getNickname(); + String phone = null; + SysAuthExample sysAuthExample = new SysAuthExample(); + sysAuthExample.createCriteria().andUserIdEqualTo(currentUserId).andIdentifyTypeEqualTo((byte) WebConstant.IDENTIFY_TYPE.Phone.value); + List sysAuthList = sysAuthDao.selectByExample(sysAuthExample); + if(CollectionUtil.isNotEmpty(sysAuthList)){ + phone = sysAuthList.get(0).getIdentifier(); + } + log.info("新建项目,操作用户id:{}",currentUserId); + //新建项目 + long beginTime = createProject.getBeginTime() == null ? System.currentTimeMillis() : createProject.getBeginTime(); + long endTime = createProject.getEndTime() == null ? beginTime + (3600 * 24 * 10 * 1000) : createProject.getEndTime(); + SysProject sysProject = new SysProject(); + sysProject.setId(snowflake.nextId()); + sysProject.setName(createProject.getName()); + sysProject.setDescription(createProject.getDescription()); + sysProject.setAddress(createProject.getAddress()); + sysProject.setBeginTime(beginTime); + sysProject.setEndTime(endTime); + sysProject.setCreatorId(currentUserId); + sysProjectDao.insertSelective(sysProject); + //让当前用户关注项目 + UserAttention userAttention = new UserAttention(); + userAttention.setId(snowflake.nextId()); + userAttention.setUserId(currentUserId); + userAttention.setProjectId(sysProject.getId()); + userAttentionDao.insertSelective(userAttention); + //添加默认的角色(奖惩干系人、创建者、关注者、项目经理、和项目成员的一级角色) + //添加奖惩干系人角色(一级角色) + ProRole stakeholderRole = new ProRole(); + stakeholderRole.setName(WebConstant.ROLE_NAME.MoneyStakeholder.value); + stakeholderRole.setDescription(WebConstant.ROLE_NAME.MoneyStakeholder.phase); + stakeholderRole.setProjectId(sysProject.getId()); + stakeholderRole.setId(snowflake.nextId()); + proRoleService.saveProRole(stakeholderRole); + //添加奖惩干系人角色(二级角色) + ProRole stakeholderProRole = new ProRole(); + stakeholderProRole.setName(WebConstant.ROLE_NAME.MoneyStakeholder.phase); + stakeholderProRole.setDescription(WebConstant.ROLE_NAME.MoneyStakeholder.value); + stakeholderProRole.setParentId(stakeholderRole.getId()); + stakeholderProRole.setProjectId(sysProject.getId()); + stakeholderProRole.setId(snowflake.nextId()); + proRoleService.saveProRole(stakeholderProRole); + //添加创建者一级角色 + ProRole creator = new ProRole(); + creator.setName(WebConstant.ROLE_NAME.Creator.value); + creator.setDescription(WebConstant.ROLE_NAME.Creator.phase); + creator.setProjectId(sysProject.getId()); + creator.setId(snowflake.nextId()); + proRoleService.saveProRole(creator); + //添加创建者角色(二级角色) + ProRole creatorRole = new ProRole(); + creatorRole.setName(WebConstant.ROLE_NAME.Creator.phase); + creatorRole.setDescription(WebConstant.ROLE_NAME.Creator.value); + creatorRole.setParentId(creator.getId()); + creatorRole.setProjectId(sysProject.getId()); + creatorRole.setId(snowflake.nextId()); + proRoleService.saveProRole(creatorRole); + + //添加关注者一级角色 + ProRole attention = new ProRole(); + attention.setName(WebConstant.ROLE_NAME.Attention.value); + attention.setDescription(WebConstant.ROLE_NAME.Attention.phase); + attention.setProjectId(sysProject.getId()); + attention.setId(snowflake.nextId()); + proRoleService.saveProRole(attention); + //添加关注者角色(二级角色) + ProRole attentionRole = new ProRole(); + attentionRole.setName(WebConstant.ROLE_NAME.Attention.phase); + attentionRole.setDescription(WebConstant.ROLE_NAME.Attention.value); + attentionRole.setParentId(attention.getId()); + attentionRole.setProjectId(sysProject.getId()); + attentionRole.setId(snowflake.nextId()); + proRoleService.saveProRole(attentionRole); + //添加项目经理一级角色 + ProRole pm = new ProRole(); + pm.setName(WebConstant.ROLE_NAME.PM.value); + pm.setDescription(WebConstant.ROLE_NAME.PM.phase); + pm.setProjectId(sysProject.getId()); + pm.setId(snowflake.nextId()); + proRoleService.saveProRole(pm); + //添加项目经理角色(二级角色) + ProRole pmRole = new ProRole(); + pmRole.setName(WebConstant.ROLE_NAME.PM.value); + pmRole.setParentId(pm.getId()); + pmRole.setProjectId(sysProject.getId()); + pmRole.setId(snowflake.nextId()); + proRoleService.saveProRole(pmRole); + //添加项目成员一级角色 + ProRole memberRole = new ProRole(); + memberRole.setName(WebConstant.ROLE_NAME.Member.value); + memberRole.setDescription(WebConstant.ROLE_NAME.Member.phase); + memberRole.setProjectId(sysProject.getId()); + memberRole.setId(snowflake.nextId()); + proRoleService.saveProRole(memberRole); + + //添加默认成员(当前用户) + ProMember proMember = new ProMember(); + proMember.setId(snowflake.nextId()); + proMember.setNickname(name); + proMember.setPhone(phone); + proMember.setUserId(currentUserId); + proMember.setProjectId(sysProject.getId()); + proMemberDao.insertSelective(proMember); + + //关联成员与项目经理 + ProMemberRole proMemberRole = new MemberRoleDto(); + proMemberRole.setId(snowflake.nextId()); + proMemberRole.setRoleId(pmRole.getId()); + proMemberRole.setMemberId(proMember.getId()); + memberRoleDao.insertSelective(proMemberRole); + //添加一个默认任务 + ProTaskDetail taskDetail = new ProTaskDetail(); + taskDetail.setId(snowflake.nextId()); + taskDetail.setProjectId(sysProject.getId()); + taskDetail.setName("一级任务"); + taskDetail.setBeginTime(sysProject.getBeginTime()); + taskDetail.setEndTime(sysProject.getEndTime()); + taskDetail.setExecutorRole(pmRole.getId()); + taskDetail.setCheckerRole(pmRole.getId()); + taskDetailDao.insertSelective(taskDetail); + + return getProjectInfoById(currentUserId,sysProject.getId(),token); + } } diff --git a/tall/src/main/java/com/ccsens/tall/web/ProjectController.java b/tall/src/main/java/com/ccsens/tall/web/ProjectController.java index 82076a10..81790e45 100644 --- a/tall/src/main/java/com/ccsens/tall/web/ProjectController.java +++ b/tall/src/main/java/com/ccsens/tall/web/ProjectController.java @@ -238,6 +238,18 @@ public class ProjectController { return JsonResponse.newInstance().ok(projectByKeyList); } + @ApiOperation(value = "新建项目", notes = "") + @ApiImplicitParams({ + }) + @RequestMapping(value = "/create", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse createProject(HttpServletRequest request,@RequestBody ProjectDto.CreateProject createProject) throws Exception { + Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject()); + String authHeader = request.getHeader(WebConstant.HEADER_KEY_TOKEN); + String token = authHeader.substring(WebConstant.HEADER_KEY_TOKEN_PREFIX.length()); + ProjectVo.ProjectInfo projectInfo = projectService.createProject(currentUserId,createProject,token); + return JsonResponse.newInstance().ok(projectInfo); + } + //==============================================================