diff --git a/common/src/main/java/com/ccsens/common/api/ProjectController.java b/common/src/main/java/com/ccsens/common/api/ProjectController.java new file mode 100644 index 00000000..6946fcb3 --- /dev/null +++ b/common/src/main/java/com/ccsens/common/api/ProjectController.java @@ -0,0 +1,41 @@ +package com.ccsens.common.api; + +import com.ccsens.common.bean.dto.ProjectDto; +import com.ccsens.common.bean.vo.ProjectVo; +import com.ccsens.common.service.IProjectService; +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; + +/** + * @author ma + */ +@Api(tags = "项目相关接口", description = "ProjectController | 项目相关接口") +@RestController +@Slf4j +@RequestMapping("/project") +public class ProjectController { + + @Resource + private IProjectService projectService; + + @ApiOperation(value = "根据id查询项目信息", notes = "根据id查询项目信息") + @RequestMapping(value = "/findProjectById", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse findProjectById(@ApiParam @Validated @RequestBody QueryDto params) throws Exception{ + log.info("根据id查询项目信息:{}",params); + ProjectVo.ProjectInfo projectInfo = projectService.findProjectById(params.getParam(),params.getUserId()); + log.info("根据id查询项目信息"); + return JsonResponse.newInstance().ok(projectInfo); + } + +} diff --git a/common/src/main/java/com/ccsens/common/api/TaskController.java b/common/src/main/java/com/ccsens/common/api/TaskController.java new file mode 100644 index 00000000..74a3c310 --- /dev/null +++ b/common/src/main/java/com/ccsens/common/api/TaskController.java @@ -0,0 +1,64 @@ +package com.ccsens.common.api; + +import com.ccsens.cloudutil.annotation.MustLogin; +import com.ccsens.common.bean.dto.TaskDto; +import com.ccsens.common.bean.vo.TaskVo; +import com.ccsens.common.service.ITaskService; +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 逗 + */ +@Api(tags = "DEBUG" , description = "DebugController | ") +@RestController +@RequestMapping("/task") +@Slf4j +public class TaskController { + + @Resource + private ITaskService taskService; + + @MustLogin + @ApiOperation(value = "查找永久日常任务", notes = "") + @RequestMapping(value = "/permanent", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse> queryPermanentGlobalTask(@ApiParam @Validated @RequestBody QueryDto params) { + log.info("查找永久日常任务开始{}",params); + List permanentGlobalTaskList = taskService.queryPermanentGlobalTask(params.getParam(),params.getUserId()); + log.info("查找永久日常任务结束{}",permanentGlobalTaskList); + return JsonResponse.newInstance().ok(permanentGlobalTaskList); + } + + @MustLogin + @ApiOperation(value = "查找带时间的日常任务", notes = "") + @RequestMapping(value = "/global", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse> queryGlobalTask(@ApiParam @Validated @RequestBody QueryDto params) { + log.info("查找带时间的日常任务开始{}",params); + List globalTask = taskService.queryGlobalTask(params.getParam(),params.getUserId()); + log.info("查找带时间的日常任务结束{}",globalTask); + return JsonResponse.newInstance().ok(globalTask); + } + + @MustLogin + @ApiOperation(value = "查找带时间的定期任务", notes = "") + @RequestMapping(value = "/regular", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse> queryRegularTask(@ApiParam @Validated @RequestBody QueryDto params) { + log.info("查找带时间的定期任务开始{}",params); + + log.info("查找带时间的定期任务结束{}"); + return JsonResponse.newInstance().ok(); + } + +} diff --git a/common/src/main/java/com/ccsens/common/bean/dto/ProjectDto.java b/common/src/main/java/com/ccsens/common/bean/dto/ProjectDto.java new file mode 100644 index 00000000..aa82199c --- /dev/null +++ b/common/src/main/java/com/ccsens/common/bean/dto/ProjectDto.java @@ -0,0 +1,19 @@ +package com.ccsens.common.bean.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProjectDto { + + @Data + @ApiModel("根据id查找项目信息") + public static class ProjectById { + @NotNull(message = "请选择项目") + @ApiModelProperty("项目id") + private Long projectId; + } +} diff --git a/common/src/main/java/com/ccsens/common/bean/dto/TaskDto.java b/common/src/main/java/com/ccsens/common/bean/dto/TaskDto.java new file mode 100644 index 00000000..3c14c2a1 --- /dev/null +++ b/common/src/main/java/com/ccsens/common/bean/dto/TaskDto.java @@ -0,0 +1,61 @@ +package com.ccsens.common.bean.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author 逗 + */ +@Data +public class TaskDto { + + @Data + @ApiModel("查看永久日常任务") + public static class QueryPermanentGlobalTask{ + @NotNull(message = "角色id不能为空") + @ApiModelProperty("角色id") + private Long roleId; + } + + @Data + @ApiModel("查看带时间的日常任务") + public static class QueryGlobalTask{ + @NotNull(message = "角色id不能为空") + @ApiModelProperty("角色id") + private Long roleId; + @ApiModelProperty("时间基准点 默认当前") + private Long timeNode = System.currentTimeMillis(); + @ApiModelProperty("时间基准点 默认天") + private int timeUnit = 4; + } + + @Data + @ApiModel("查看定期任务") + public static class QueryRegularTask{ + @NotNull(message = "角色id不能为空") + @ApiModelProperty("角色id") + private Long roleId; + @ApiModelProperty("时间基准点 默认当前") + private Long timeNode = System.currentTimeMillis(); + @ApiModelProperty("时间基准点 默认天") + private int timeUnit; + @ApiModelProperty("0向上查找 1向下查找(默认) 下查包含自己,上查不包含") + private int queryType = 1; + @ApiModelProperty("查找颗粒度数量 默认3个") + private int queryNum = 3; + } + + @Data + @ApiModel("修改任务状态") + public static class UpdateTaskType{ + @NotNull(message = "任务id不能为空") + @ApiModelProperty("任务分解id") + private Long id; + @ApiModelProperty("0开始 1暂停 2继续 3完成 默认0") + private int type; + } + +} diff --git a/common/src/main/java/com/ccsens/common/bean/po/ProTaskPanelInfo.java b/common/src/main/java/com/ccsens/common/bean/po/ProTaskPanelInfo.java index 8ac32d82..e6aa9161 100644 --- a/common/src/main/java/com/ccsens/common/bean/po/ProTaskPanelInfo.java +++ b/common/src/main/java/com/ccsens/common/bean/po/ProTaskPanelInfo.java @@ -26,6 +26,10 @@ public class ProTaskPanelInfo implements Serializable { private Byte recStatus; + private Integer row; + + private Integer col; + private static final long serialVersionUID = 1L; public Long getId() { @@ -116,6 +120,22 @@ public class ProTaskPanelInfo implements Serializable { this.recStatus = recStatus; } + public Integer getRow() { + return row; + } + + public void setRow(Integer row) { + this.row = row; + } + + public Integer getCol() { + return col; + } + + public void setCol(Integer col) { + this.col = col; + } + @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -133,6 +153,8 @@ public class ProTaskPanelInfo implements Serializable { sb.append(", createdAt=").append(createdAt); sb.append(", updatedAt=").append(updatedAt); sb.append(", recStatus=").append(recStatus); + sb.append(", row=").append(row); + sb.append(", col=").append(col); sb.append("]"); return sb.toString(); } diff --git a/common/src/main/java/com/ccsens/common/bean/po/ProTaskPanelInfoExample.java b/common/src/main/java/com/ccsens/common/bean/po/ProTaskPanelInfoExample.java index 49d16676..01014ae4 100644 --- a/common/src/main/java/com/ccsens/common/bean/po/ProTaskPanelInfoExample.java +++ b/common/src/main/java/com/ccsens/common/bean/po/ProTaskPanelInfoExample.java @@ -824,6 +824,126 @@ public class ProTaskPanelInfoExample { addCriterion("rec_status not between", value1, value2, "recStatus"); return (Criteria) this; } + + public Criteria andRowIsNull() { + addCriterion("row is null"); + return (Criteria) this; + } + + public Criteria andRowIsNotNull() { + addCriterion("row is not null"); + return (Criteria) this; + } + + public Criteria andRowEqualTo(Integer value) { + addCriterion("row =", value, "row"); + return (Criteria) this; + } + + public Criteria andRowNotEqualTo(Integer value) { + addCriterion("row <>", value, "row"); + return (Criteria) this; + } + + public Criteria andRowGreaterThan(Integer value) { + addCriterion("row >", value, "row"); + return (Criteria) this; + } + + public Criteria andRowGreaterThanOrEqualTo(Integer value) { + addCriterion("row >=", value, "row"); + return (Criteria) this; + } + + public Criteria andRowLessThan(Integer value) { + addCriterion("row <", value, "row"); + return (Criteria) this; + } + + public Criteria andRowLessThanOrEqualTo(Integer value) { + addCriterion("row <=", value, "row"); + return (Criteria) this; + } + + public Criteria andRowIn(List values) { + addCriterion("row in", values, "row"); + return (Criteria) this; + } + + public Criteria andRowNotIn(List values) { + addCriterion("row not in", values, "row"); + return (Criteria) this; + } + + public Criteria andRowBetween(Integer value1, Integer value2) { + addCriterion("row between", value1, value2, "row"); + return (Criteria) this; + } + + public Criteria andRowNotBetween(Integer value1, Integer value2) { + addCriterion("row not between", value1, value2, "row"); + return (Criteria) this; + } + + public Criteria andColIsNull() { + addCriterion("col is null"); + return (Criteria) this; + } + + public Criteria andColIsNotNull() { + addCriterion("col is not null"); + return (Criteria) this; + } + + public Criteria andColEqualTo(Integer value) { + addCriterion("col =", value, "col"); + return (Criteria) this; + } + + public Criteria andColNotEqualTo(Integer value) { + addCriterion("col <>", value, "col"); + return (Criteria) this; + } + + public Criteria andColGreaterThan(Integer value) { + addCriterion("col >", value, "col"); + return (Criteria) this; + } + + public Criteria andColGreaterThanOrEqualTo(Integer value) { + addCriterion("col >=", value, "col"); + return (Criteria) this; + } + + public Criteria andColLessThan(Integer value) { + addCriterion("col <", value, "col"); + return (Criteria) this; + } + + public Criteria andColLessThanOrEqualTo(Integer value) { + addCriterion("col <=", value, "col"); + return (Criteria) this; + } + + public Criteria andColIn(List values) { + addCriterion("col in", values, "col"); + return (Criteria) this; + } + + public Criteria andColNotIn(List values) { + addCriterion("col not in", values, "col"); + return (Criteria) this; + } + + public Criteria andColBetween(Integer value1, Integer value2) { + addCriterion("col between", value1, value2, "col"); + return (Criteria) this; + } + + public Criteria andColNotBetween(Integer value1, Integer value2) { + addCriterion("col not between", value1, value2, "col"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/common/src/main/java/com/ccsens/common/bean/po/ProTaskPlugin.java b/common/src/main/java/com/ccsens/common/bean/po/ProTaskPlugin.java index cf10b09e..297da896 100644 --- a/common/src/main/java/com/ccsens/common/bean/po/ProTaskPlugin.java +++ b/common/src/main/java/com/ccsens/common/bean/po/ProTaskPlugin.java @@ -22,6 +22,10 @@ public class ProTaskPlugin implements Serializable { private Byte recStatus; + private Integer colspan; + + private Integer rowspan; + private static final long serialVersionUID = 1L; public Long getId() { @@ -96,6 +100,22 @@ public class ProTaskPlugin implements Serializable { this.recStatus = recStatus; } + public Integer getColspan() { + return colspan; + } + + public void setColspan(Integer colspan) { + this.colspan = colspan; + } + + public Integer getRowspan() { + return rowspan; + } + + public void setRowspan(Integer rowspan) { + this.rowspan = rowspan; + } + @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -111,6 +131,8 @@ public class ProTaskPlugin implements Serializable { sb.append(", createdAt=").append(createdAt); sb.append(", updatedAt=").append(updatedAt); sb.append(", recStatus=").append(recStatus); + sb.append(", colspan=").append(colspan); + sb.append(", rowspan=").append(rowspan); sb.append("]"); return sb.toString(); } diff --git a/common/src/main/java/com/ccsens/common/bean/po/ProTaskPluginExample.java b/common/src/main/java/com/ccsens/common/bean/po/ProTaskPluginExample.java index f5086f25..c45a18b6 100644 --- a/common/src/main/java/com/ccsens/common/bean/po/ProTaskPluginExample.java +++ b/common/src/main/java/com/ccsens/common/bean/po/ProTaskPluginExample.java @@ -654,6 +654,126 @@ public class ProTaskPluginExample { addCriterion("rec_status not between", value1, value2, "recStatus"); return (Criteria) this; } + + public Criteria andColspanIsNull() { + addCriterion("colspan is null"); + return (Criteria) this; + } + + public Criteria andColspanIsNotNull() { + addCriterion("colspan is not null"); + return (Criteria) this; + } + + public Criteria andColspanEqualTo(Integer value) { + addCriterion("colspan =", value, "colspan"); + return (Criteria) this; + } + + public Criteria andColspanNotEqualTo(Integer value) { + addCriterion("colspan <>", value, "colspan"); + return (Criteria) this; + } + + public Criteria andColspanGreaterThan(Integer value) { + addCriterion("colspan >", value, "colspan"); + return (Criteria) this; + } + + public Criteria andColspanGreaterThanOrEqualTo(Integer value) { + addCriterion("colspan >=", value, "colspan"); + return (Criteria) this; + } + + public Criteria andColspanLessThan(Integer value) { + addCriterion("colspan <", value, "colspan"); + return (Criteria) this; + } + + public Criteria andColspanLessThanOrEqualTo(Integer value) { + addCriterion("colspan <=", value, "colspan"); + return (Criteria) this; + } + + public Criteria andColspanIn(List values) { + addCriterion("colspan in", values, "colspan"); + return (Criteria) this; + } + + public Criteria andColspanNotIn(List values) { + addCriterion("colspan not in", values, "colspan"); + return (Criteria) this; + } + + public Criteria andColspanBetween(Integer value1, Integer value2) { + addCriterion("colspan between", value1, value2, "colspan"); + return (Criteria) this; + } + + public Criteria andColspanNotBetween(Integer value1, Integer value2) { + addCriterion("colspan not between", value1, value2, "colspan"); + return (Criteria) this; + } + + public Criteria andRowspanIsNull() { + addCriterion("rowspan is null"); + return (Criteria) this; + } + + public Criteria andRowspanIsNotNull() { + addCriterion("rowspan is not null"); + return (Criteria) this; + } + + public Criteria andRowspanEqualTo(Integer value) { + addCriterion("rowspan =", value, "rowspan"); + return (Criteria) this; + } + + public Criteria andRowspanNotEqualTo(Integer value) { + addCriterion("rowspan <>", value, "rowspan"); + return (Criteria) this; + } + + public Criteria andRowspanGreaterThan(Integer value) { + addCriterion("rowspan >", value, "rowspan"); + return (Criteria) this; + } + + public Criteria andRowspanGreaterThanOrEqualTo(Integer value) { + addCriterion("rowspan >=", value, "rowspan"); + return (Criteria) this; + } + + public Criteria andRowspanLessThan(Integer value) { + addCriterion("rowspan <", value, "rowspan"); + return (Criteria) this; + } + + public Criteria andRowspanLessThanOrEqualTo(Integer value) { + addCriterion("rowspan <=", value, "rowspan"); + return (Criteria) this; + } + + public Criteria andRowspanIn(List values) { + addCriterion("rowspan in", values, "rowspan"); + return (Criteria) this; + } + + public Criteria andRowspanNotIn(List values) { + addCriterion("rowspan not in", values, "rowspan"); + return (Criteria) this; + } + + public Criteria andRowspanBetween(Integer value1, Integer value2) { + addCriterion("rowspan between", value1, value2, "rowspan"); + return (Criteria) this; + } + + public Criteria andRowspanNotBetween(Integer value1, Integer value2) { + addCriterion("rowspan not between", value1, value2, "rowspan"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/common/src/main/java/com/ccsens/common/bean/vo/ProjectVo.java b/common/src/main/java/com/ccsens/common/bean/vo/ProjectVo.java new file mode 100644 index 00000000..8bbf9ee2 --- /dev/null +++ b/common/src/main/java/com/ccsens/common/bean/vo/ProjectVo.java @@ -0,0 +1,40 @@ +package com.ccsens.common.bean.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author AUSU + */ +@Data +public class ProjectVo { + @Data + @ApiModel("项目信息") + public static class ProjectInfo{ + @ApiModelProperty("项目id(任务详情id)") + private Long id; + @ApiModelProperty("项目名称") + private String name; + @ApiModelProperty("项目描述") + private String description; + @ApiModelProperty("重复频率") + private String cycle; + @ApiModelProperty("重复频率") + private String planStartTime; + @ApiModelProperty("重复频率") + private String planDuration; + @ApiModelProperty("重复频率") + private String planEndTime; + @ApiModelProperty("重复频率") + private String realStartTime; + @ApiModelProperty("重复频率") + private String realDuration; + @ApiModelProperty("重复频率") + private String realEndTime; + + + } +} diff --git a/common/src/main/java/com/ccsens/common/bean/vo/TaskVo.java b/common/src/main/java/com/ccsens/common/bean/vo/TaskVo.java new file mode 100644 index 00000000..bcf027c5 --- /dev/null +++ b/common/src/main/java/com/ccsens/common/bean/vo/TaskVo.java @@ -0,0 +1,80 @@ +package com.ccsens.common.bean.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +@Data +public class TaskVo { + @Data + @ApiModel("查看定期任务返回值") + public static class QueryTask{ + @ApiModelProperty("任务id(任务分解id)") + private Long id; + @ApiModelProperty("详情id") + private Long detailId; + @ApiModelProperty("任务名") + private String name; + @ApiModelProperty("任务详情") + private String description; + @ApiModelProperty("计划开始时间") + private Long planStart; + @ApiModelProperty("计划时长") + private Long planDuration; + @ApiModelProperty("实际开始时间") + private Long realStart; + @ApiModelProperty("实际时长") + private Long realDuration; + @ApiModelProperty("任务状态 0未开始 1进行中 2暂停中 3已完成") + private int process; + @ApiModelProperty("任务流转策略 -1不跳转 0直接跳转 如果是其他正整数 就是多少毫秒后跳转 ") + private Long skip; + @ApiModelProperty("跳转的任务id") + private Long skipTaskId; + @ApiModelProperty("任务面板") + private PanelInfo panel; + @ApiModelProperty("插件") + private List> plugins; + } + + @Data + @ApiModel("任务面板信息") + public static class PanelInfo{ + @ApiModelProperty("背景色") + private String backgroundColor; + @ApiModelProperty("圆角") + private String borderRadius; + @ApiModelProperty("边框") + private String border; + @ApiModelProperty("阴影") + private String shadow; + @ApiModelProperty("宽") + private String width; + @ApiModelProperty("高") + private String height; + @ApiModelProperty("行") + private int row; + @ApiModelProperty("列") + private int col; + } + + @Data + @ApiModel("任务下的插件信息") + public static class TaskPluginInfo{ + @ApiModelProperty("插件id") + private Long pluginId; + @ApiModelProperty("参数") + private String param; + @ApiModelProperty("行") + private int row; + @ApiModelProperty("列") + private int col; + @ApiModelProperty("跨行") + private int rowspan; + @ApiModelProperty("跨列") + private int colspan; + } +} diff --git a/common/src/main/java/com/ccsens/common/persist/dao/ProMemberDao.java b/common/src/main/java/com/ccsens/common/persist/dao/ProMemberDao.java new file mode 100644 index 00000000..c45e9b23 --- /dev/null +++ b/common/src/main/java/com/ccsens/common/persist/dao/ProMemberDao.java @@ -0,0 +1,20 @@ +package com.ccsens.common.persist.dao; + +import com.ccsens.common.persist.mapper.ProMemberMapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +/** + * @author AUSU + */ +@Repository +public interface ProMemberDao extends ProMemberMapper { + + /** + * 查找用户的成员id + * @param projectId 项目id + * @param userId 用户id + * @return 用户的成员id + */ + Long findUserOfMemberId(@Param("projectId") Long projectId,@Param("userId") Long userId); +} diff --git a/common/src/main/java/com/ccsens/common/persist/dao/ProProjectDao.java b/common/src/main/java/com/ccsens/common/persist/dao/ProProjectDao.java new file mode 100644 index 00000000..812c5f49 --- /dev/null +++ b/common/src/main/java/com/ccsens/common/persist/dao/ProProjectDao.java @@ -0,0 +1,19 @@ +package com.ccsens.common.persist.dao; + +import com.ccsens.common.bean.vo.ProjectVo; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +/** + * @author AUSU + */ +@Repository +public interface ProProjectDao { + + /** + * 根据id查找项目信息 + * @param projectId 项目id(任务详情id) + * @return 项目详情 + */ + ProjectVo.ProjectInfo findProjectById(@Param("projectId") Long projectId); +} diff --git a/common/src/main/java/com/ccsens/common/persist/dao/ProRoleDao.java b/common/src/main/java/com/ccsens/common/persist/dao/ProRoleDao.java index 20f6811a..f0c029e5 100644 --- a/common/src/main/java/com/ccsens/common/persist/dao/ProRoleDao.java +++ b/common/src/main/java/com/ccsens/common/persist/dao/ProRoleDao.java @@ -1,9 +1,20 @@ package com.ccsens.common.persist.dao; + import com.ccsens.common.persist.mapper.ProRoleMapper; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; +/** + * @author AUSU + */ @Repository public interface ProRoleDao extends ProRoleMapper { + /** + * 根据角色id查找项目id + * @param roleId 角色id + * @return 项目id + */ + Long findRoleOfProjectId(@Param("roleId") Long roleId); } diff --git a/common/src/main/java/com/ccsens/common/persist/dao/ProRoleMemberDao.java b/common/src/main/java/com/ccsens/common/persist/dao/ProRoleMemberDao.java new file mode 100644 index 00000000..40c688df --- /dev/null +++ b/common/src/main/java/com/ccsens/common/persist/dao/ProRoleMemberDao.java @@ -0,0 +1,21 @@ +package com.ccsens.common.persist.dao; + +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @author AUSU + */ +@Repository +public interface ProRoleMemberDao { + + /** + * 查找成员所属的所有角色 + * @param memberId 成员id + * @return 所有所属角色id + */ + List findMemberOfRoleIds(@Param("memberId") Long memberId); + +} diff --git a/common/src/main/java/com/ccsens/common/persist/dao/ProRoleRepulsionDao.java b/common/src/main/java/com/ccsens/common/persist/dao/ProRoleRepulsionDao.java new file mode 100644 index 00000000..0010f6c1 --- /dev/null +++ b/common/src/main/java/com/ccsens/common/persist/dao/ProRoleRepulsionDao.java @@ -0,0 +1,21 @@ +package com.ccsens.common.persist.dao; + +import com.ccsens.common.persist.mapper.ProRoleRepulsionMapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @author AUSU + */ +@Repository +public interface ProRoleRepulsionDao extends ProRoleRepulsionMapper { + + /** + * 查看该角色排斥的所有角色 + * @param roleId 角色id + * @return 排斥的角色id + */ + List findRepulsionByRoleId(@Param("roleId") Long roleId); +} diff --git a/common/src/main/java/com/ccsens/common/persist/dao/ProTaskDetailDao.java b/common/src/main/java/com/ccsens/common/persist/dao/ProTaskDetailDao.java new file mode 100644 index 00000000..1e637fb6 --- /dev/null +++ b/common/src/main/java/com/ccsens/common/persist/dao/ProTaskDetailDao.java @@ -0,0 +1,29 @@ +package com.ccsens.common.persist.dao; + +import com.ccsens.common.bean.vo.TaskVo; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @author AUSU + */ +@Repository +public interface ProTaskDetailDao { + /** + * 根据角色查找永久日常任务 + * @param roleId 角色id + * @return 永久日常任务列表 + */ + List queryPermanentGlobalTask(@Param("roleId") Long roleId); + + /** + * 根据角色和时间节点查找日常任务 + * @param roleId 角色id + * @param timeNode 时间节点 + * @param timeUnit 时间颗粒度 + * @return 日常任务列表 + */ + List queryGlobalTask(@Param("roleId") Long roleId,@Param("timeNode") Long timeNode,@Param("timeUnit") int timeUnit); +} diff --git a/common/src/main/java/com/ccsens/common/persist/dao/ProTaskPluginDao.java b/common/src/main/java/com/ccsens/common/persist/dao/ProTaskPluginDao.java new file mode 100644 index 00000000..c055d5ba --- /dev/null +++ b/common/src/main/java/com/ccsens/common/persist/dao/ProTaskPluginDao.java @@ -0,0 +1,21 @@ +package com.ccsens.common.persist.dao; + +import com.ccsens.common.bean.vo.TaskVo; +import com.ccsens.common.persist.mapper.ProTaskPluginMapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @author AUSU + */ +@Repository +public interface ProTaskPluginDao extends ProTaskPluginMapper { + /** + * 根据任务id查询已配置的插件 + * @param detailTaskId 任务详情id + * @return 插件列表 + */ + List queryTaskOfPlugin(@Param("detailTaskId") Long detailTaskId); +} diff --git a/common/src/main/java/com/ccsens/common/service/CommonService.java b/common/src/main/java/com/ccsens/common/service/CommonService.java new file mode 100644 index 00000000..d8db55e4 --- /dev/null +++ b/common/src/main/java/com/ccsens/common/service/CommonService.java @@ -0,0 +1,19 @@ +package com.ccsens.common.service; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +/** + * 可复用方法 + * @author AUSU + */ + +@Slf4j +@Service +@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class) +public class CommonService { + + +} diff --git a/common/src/main/java/com/ccsens/common/service/IProjectService.java b/common/src/main/java/com/ccsens/common/service/IProjectService.java new file mode 100644 index 00000000..d469e4c3 --- /dev/null +++ b/common/src/main/java/com/ccsens/common/service/IProjectService.java @@ -0,0 +1,17 @@ +package com.ccsens.common.service; + +import com.ccsens.common.bean.dto.ProjectDto; +import com.ccsens.common.bean.vo.ProjectVo; + +/** + * @author ma + */ +public interface IProjectService { + /** + * 根据id查询项目信息 + * @param param 项目id + * @param userId 当前用户id + * @return 返回项目信息 + */ + ProjectVo.ProjectInfo findProjectById(ProjectDto.ProjectById param, Long userId); +} diff --git a/common/src/main/java/com/ccsens/common/service/ITaskService.java b/common/src/main/java/com/ccsens/common/service/ITaskService.java new file mode 100644 index 00000000..e8a11a1d --- /dev/null +++ b/common/src/main/java/com/ccsens/common/service/ITaskService.java @@ -0,0 +1,27 @@ +package com.ccsens.common.service; + +import com.ccsens.common.bean.dto.TaskDto; +import com.ccsens.common.bean.vo.TaskVo; + +import java.util.List; + +/** + * @author ma + */ +public interface ITaskService { + /** + * 根据角色查找永久的日常任务 + * @param param 角色id + * @param userId 用户id + * @return 永久日常任务列表 + */ + List queryPermanentGlobalTask(TaskDto.QueryPermanentGlobalTask param, Long userId); + + /** + * 根据时间和角色查找日常任务 + * @param param 角色id,时间基准点,时间颗粒度 + * @param userId 用户id + * @return 日常任务列表 + */ + List queryGlobalTask(TaskDto.QueryGlobalTask param, Long userId); +} diff --git a/common/src/main/java/com/ccsens/common/service/ProjectService.java b/common/src/main/java/com/ccsens/common/service/ProjectService.java new file mode 100644 index 00000000..f1abe60b --- /dev/null +++ b/common/src/main/java/com/ccsens/common/service/ProjectService.java @@ -0,0 +1,36 @@ +package com.ccsens.common.service; + +import cn.hutool.core.util.ObjectUtil; +import com.ccsens.common.bean.dto.ProjectDto; +import com.ccsens.common.bean.po.ProTaskDetail; +import com.ccsens.common.bean.vo.ProjectVo; +import com.ccsens.common.persist.dao.ProProjectDao; +import com.ccsens.common.persist.mapper.ProTaskDetailMapper; +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; + +/** + * @author ma + */ +@Slf4j +@Service +@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class) +public class ProjectService implements IProjectService{ + + @Resource + private ProProjectDao projectDao; + + @Override + public ProjectVo.ProjectInfo findProjectById(ProjectDto.ProjectById param, Long userId) { + ProjectVo.ProjectInfo projectById = projectDao.findProjectById(param.getProjectId()); + if (ObjectUtil.isNull(projectById)){ + throw new BaseException("项目不存在,请检查后再试"); + } + return projectById; + } +} diff --git a/common/src/main/java/com/ccsens/common/service/TaskService.java b/common/src/main/java/com/ccsens/common/service/TaskService.java new file mode 100644 index 00000000..93a023bf --- /dev/null +++ b/common/src/main/java/com/ccsens/common/service/TaskService.java @@ -0,0 +1,138 @@ +package com.ccsens.common.service; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.BooleanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.ccsens.common.bean.dto.TaskDto; +import com.ccsens.common.bean.vo.TaskVo; +import com.ccsens.common.persist.dao.*; +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 ma + */ +@Slf4j +@Service +@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class) +public class TaskService implements ITaskService{ + + @Resource + private ProRoleRepulsionDao roleRepulsionDao; + @Resource + private ProRoleDao roleDao; + @Resource + private ProRoleMemberDao roleMemberDao; + @Resource + private ProMemberDao memberDao; + @Resource + private ProTaskDetailDao taskDetailDao; + @Resource + private ProTaskPluginDao taskPluginDao; + + /** + * 判断当前用户的角色是否被设置不可见(是否有权限查看任务) + * @param roleId 查看的角色id + * @param userId 用户id + * @return 是否可见(true可见,false不可见) + */ + public Boolean queryRoleIsLook(Long roleId,Long userId){ + byte visitor = 0; + Long projectId = roleDao.findRoleOfProjectId(roleId); + if (ObjectUtil.isNull(projectId)){ + throw new BaseException("角色信息错误!"); + } + Long memberId = memberDao.findUserOfMemberId(projectId,userId); + //不是项目成员则为游客 + if (ObjectUtil.isNull(memberId)){ + visitor = 1; + } + //查看角色互斥表是否有对所属角色不可见 + List repulsionRoleIds = roleRepulsionDao.findRepulsionByRoleId(roleId); + //如果为游客 + if (1 == visitor) { + return !CollectionUtil.isNotEmpty(repulsionRoleIds); + } + //查找成员所属的所有角色 + List roleIds = roleMemberDao.findMemberOfRoleIds(memberId); + if (CollectionUtil.isEmpty(roleIds)){ + if (CollectionUtil.isNotEmpty(repulsionRoleIds)){ + return false; + } + } + //排斥角色包含所有所属角色则不可见 + if (CollectionUtil.isNotEmpty(repulsionRoleIds) && CollectionUtil.isNotEmpty(roleIds)){ + boolean isLook = repulsionRoleIds.containsAll(roleIds); + return !isLook; + } + return true; + } + + /** + * 查询任务的插件相关信息 + * @param taskList 任务列表 + */ + public void queryPluginForTask(List taskList){ + if (CollectionUtil.isNotEmpty(taskList)){ + List> plugins = new ArrayList<>(); + for (TaskVo.QueryTask queryTask : taskList) { + if (ObjectUtil.isNotNull(queryTask.getPanel())){ + int panelRow = queryTask.getPanel().getRow(); + int panelCol = queryTask.getPanel().getCol(); + for (int i = 0; i < panelRow; i++) { + List pluginInfoList = new ArrayList<>(); + for (int j = 0; j < panelCol; j++) { + pluginInfoList.add(null); + } + plugins.add(pluginInfoList); + } + List taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(queryTask.getDetailId()); + for (TaskVo.TaskPluginInfo taskPlugin : taskPluginInfoList) { + int pluginCol = taskPlugin.getCol(); + int pluginRow = taskPlugin.getRow(); + plugins.get(pluginRow - 1).set(pluginCol-1,taskPlugin); + } + }else { + List taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(queryTask.getDetailId()); + plugins.add(taskPluginInfoList); + } + queryTask.setPlugins(plugins); + } + } + } + + + @Override + public List queryPermanentGlobalTask(TaskDto.QueryPermanentGlobalTask param, Long userId) { + //查找角色权限 + Boolean isLook = queryRoleIsLook(param.getRoleId(),userId); + if (BooleanUtil.isFalse(isLook)){ + throw new BaseException("没有查看权限!"); + } + List permanentGlobalTask = taskDetailDao.queryPermanentGlobalTask(param.getRoleId()); + //查找项目面板和插件信息 + queryPluginForTask(permanentGlobalTask); + + return permanentGlobalTask; + } + + @Override + public List queryGlobalTask(TaskDto.QueryGlobalTask param, Long userId) { + //查找角色权限 + Boolean isLook = queryRoleIsLook(param.getRoleId(),userId); + if (BooleanUtil.isFalse(isLook)){ + throw new BaseException("没有查看权限!"); + } + List globalTask = taskDetailDao.queryGlobalTask(param.getRoleId(),param.getTimeNode(),param.getTimeUnit()); + queryPluginForTask(globalTask); + return globalTask; + } + +} diff --git a/common/src/main/resources/mapper_dao/ProMemberDao.xml b/common/src/main/resources/mapper_dao/ProMemberDao.xml new file mode 100644 index 00000000..9332e1b5 --- /dev/null +++ b/common/src/main/resources/mapper_dao/ProMemberDao.xml @@ -0,0 +1,16 @@ + + + + + + + diff --git a/common/src/main/resources/mapper_dao/ProProjectDao.xml b/common/src/main/resources/mapper_dao/ProProjectDao.xml new file mode 100644 index 00000000..3222f180 --- /dev/null +++ b/common/src/main/resources/mapper_dao/ProProjectDao.xml @@ -0,0 +1,28 @@ + + + + + + \ No newline at end of file diff --git a/common/src/main/resources/mapper_dao/ProRoleDao.xml b/common/src/main/resources/mapper_dao/ProRoleDao.xml index 6bdf0401..f43ed0e8 100644 --- a/common/src/main/resources/mapper_dao/ProRoleDao.xml +++ b/common/src/main/resources/mapper_dao/ProRoleDao.xml @@ -13,4 +13,14 @@ + + \ No newline at end of file diff --git a/common/src/main/resources/mapper_dao/ProRoleMemberDao.xml b/common/src/main/resources/mapper_dao/ProRoleMemberDao.xml new file mode 100644 index 00000000..704ca08b --- /dev/null +++ b/common/src/main/resources/mapper_dao/ProRoleMemberDao.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/common/src/main/resources/mapper_dao/ProRoleRepulsionDao.xml b/common/src/main/resources/mapper_dao/ProRoleRepulsionDao.xml new file mode 100644 index 00000000..3f913e25 --- /dev/null +++ b/common/src/main/resources/mapper_dao/ProRoleRepulsionDao.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml b/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml new file mode 100644 index 00000000..a8d02051 --- /dev/null +++ b/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/resources/mapper_dao/ProTaskPluginDao.xml b/common/src/main/resources/mapper_dao/ProTaskPluginDao.xml new file mode 100644 index 00000000..0e7b6934 --- /dev/null +++ b/common/src/main/resources/mapper_dao/ProTaskPluginDao.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/common/src/main/resources/mapper_raw/ProTaskPanelInfoMapper.xml b/common/src/main/resources/mapper_raw/ProTaskPanelInfoMapper.xml index 3904ca1c..a453a963 100644 --- a/common/src/main/resources/mapper_raw/ProTaskPanelInfoMapper.xml +++ b/common/src/main/resources/mapper_raw/ProTaskPanelInfoMapper.xml @@ -13,6 +13,8 @@ + + @@ -74,7 +76,7 @@ id, task_detail_id, back_color, round_corner, border, shadow, width, height, created_at, - updated_at, rec_status + updated_at, rec_status, row, col @@ -231,6 +247,12 @@ rec_status = #{record.recStatus,jdbcType=TINYINT}, + + row = #{record.row,jdbcType=INTEGER}, + + + col = #{record.col,jdbcType=INTEGER}, + @@ -248,7 +270,9 @@ height = #{record.height,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}, + row = #{record.row,jdbcType=INTEGER}, + col = #{record.col,jdbcType=INTEGER} @@ -286,6 +310,12 @@ rec_status = #{recStatus,jdbcType=TINYINT}, + + row = #{row,jdbcType=INTEGER}, + + + col = #{col,jdbcType=INTEGER}, + where id = #{id,jdbcType=BIGINT} @@ -300,7 +330,9 @@ height = #{height,jdbcType=VARCHAR}, created_at = #{createdAt,jdbcType=TIMESTAMP}, updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - rec_status = #{recStatus,jdbcType=TINYINT} + rec_status = #{recStatus,jdbcType=TINYINT}, + row = #{row,jdbcType=INTEGER}, + col = #{col,jdbcType=INTEGER} where id = #{id,jdbcType=BIGINT} \ No newline at end of file diff --git a/common/src/main/resources/mapper_raw/ProTaskPluginMapper.xml b/common/src/main/resources/mapper_raw/ProTaskPluginMapper.xml index 491136cb..ae1bcdb1 100644 --- a/common/src/main/resources/mapper_raw/ProTaskPluginMapper.xml +++ b/common/src/main/resources/mapper_raw/ProTaskPluginMapper.xml @@ -11,6 +11,8 @@ + + @@ -72,7 +74,7 @@ id, param, plgin_row, plgin_col, task_detail_id, plugin_id, created_at, updated_at, - rec_status + rec_status, colspan, rowspan @@ -211,6 +225,12 @@ rec_status = #{record.recStatus,jdbcType=TINYINT}, + + colspan = #{record.colspan,jdbcType=INTEGER}, + + + rowspan = #{record.rowspan,jdbcType=INTEGER}, + @@ -226,7 +246,9 @@ plugin_id = #{record.pluginId,jdbcType=BIGINT}, created_at = #{record.createdAt,jdbcType=TIMESTAMP}, updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, - rec_status = #{record.recStatus,jdbcType=TINYINT} + rec_status = #{record.recStatus,jdbcType=TINYINT}, + colspan = #{record.colspan,jdbcType=INTEGER}, + rowspan = #{record.rowspan,jdbcType=INTEGER} @@ -258,6 +280,12 @@ rec_status = #{recStatus,jdbcType=TINYINT}, + + colspan = #{colspan,jdbcType=INTEGER}, + + + rowspan = #{rowspan,jdbcType=INTEGER}, + where id = #{id,jdbcType=BIGINT} @@ -270,7 +298,9 @@ plugin_id = #{pluginId,jdbcType=BIGINT}, created_at = #{createdAt,jdbcType=TIMESTAMP}, updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - rec_status = #{recStatus,jdbcType=TINYINT} + rec_status = #{recStatus,jdbcType=TINYINT}, + colspan = #{colspan,jdbcType=INTEGER}, + rowspan = #{rowspan,jdbcType=INTEGER} where id = #{id,jdbcType=BIGINT} \ No newline at end of file