44 changed files with 1952 additions and 18 deletions
@ -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<ProjectVo.ProjectInfo> findProjectById(@ApiParam @Validated @RequestBody QueryDto<ProjectDto.ProjectById> params) throws Exception{ |
|||
log.info("根据id查询项目信息:{}",params); |
|||
ProjectVo.ProjectInfo projectInfo = projectService.findProjectById(params.getParam(),params.getUserId()); |
|||
log.info("根据id查询项目信息"); |
|||
return JsonResponse.newInstance().ok(projectInfo); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,62 @@ |
|||
package com.ccsens.common.api; |
|||
|
|||
import com.ccsens.cloudutil.annotation.MustLogin; |
|||
import com.ccsens.common.bean.dto.RoleDto; |
|||
import com.ccsens.common.bean.vo.RoleVo; |
|||
import com.ccsens.common.service.IProRoleService; |
|||
import com.ccsens.util.JsonResponse; |
|||
import com.ccsens.util.WebConstant; |
|||
import com.ccsens.util.bean.dto.QueryDto; |
|||
import io.jsonwebtoken.Claims; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiImplicitParams; |
|||
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 javax.servlet.http.HttpServletRequest; |
|||
import java.util.List; |
|||
|
|||
@Api(tags = "角色操作相关api" ) |
|||
@RestController |
|||
@RequestMapping("/roles") |
|||
@Slf4j |
|||
public class RoleController { |
|||
|
|||
@Resource |
|||
private IProRoleService proRoleService; |
|||
|
|||
//@MustLogin
|
|||
@ApiOperation(value = "查询角色栏展示的角色",notes = "") |
|||
@ApiImplicitParams({ |
|||
}) |
|||
@RequestMapping(value = "/QueryRoleShow", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) |
|||
public JsonResponse<RoleVo.QueryRole> queryByProjectVirtualRole( |
|||
@ApiParam @Validated @RequestBody QueryDto<RoleDto.QueryRole> params) throws Exception { |
|||
log.info("查询角色栏展示的角色:{}",params); |
|||
params.setUserId(1373938255183089664L); |
|||
RoleVo.QueryRole list = proRoleService.QueryShowRole(params.getParam(),params.getUserId()); |
|||
log.info("查询角色栏展示的角色成功"); |
|||
return JsonResponse.newInstance().ok(list); |
|||
} |
|||
|
|||
|
|||
@MustLogin |
|||
@ApiOperation(value = "配置角色栏展示的角色",notes = "") |
|||
@ApiImplicitParams({ |
|||
}) |
|||
@RequestMapping(value = "/UpdateRoleShow", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) |
|||
public JsonResponse updateShowRole( |
|||
@ApiParam @Validated @RequestBody QueryDto<RoleDto.UpdateRoleShow> params) throws Exception { |
|||
log.info("配置角色栏展示的角色:{}",params); |
|||
proRoleService.updateShowRole(params.getParam(),params.getUserId()); |
|||
log.info("配置角色栏展示的角色成功"); |
|||
return JsonResponse.newInstance().ok(); |
|||
} |
|||
} |
@ -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<List<TaskVo.QueryTask>> queryPermanentGlobalTask(@ApiParam @Validated @RequestBody QueryDto<TaskDto.QueryPermanentGlobalTask> params) { |
|||
log.info("查找永久日常任务开始{}",params); |
|||
List<TaskVo.QueryTask> 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<List<TaskVo.QueryTask>> queryGlobalTask(@ApiParam @Validated @RequestBody QueryDto<TaskDto.QueryGlobalTask> params) { |
|||
log.info("查找带时间的日常任务开始{}",params); |
|||
List<TaskVo.QueryTask> 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<List<TaskVo.QueryTask>> queryRegularTask(@ApiParam @Validated @RequestBody QueryDto<TaskDto.QueryRegularTask> params) { |
|||
log.info("查找带时间的定期任务开始{}",params); |
|||
|
|||
log.info("查找带时间的定期任务结束{}"); |
|||
return JsonResponse.newInstance().ok(); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,22 @@ |
|||
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 PluginDto { |
|||
|
|||
|
|||
@Data |
|||
@ApiModel("根据插件id查询插件信息入参") |
|||
public static class QueryPlugins{ |
|||
@NotNull(message = "项目id不能为空") |
|||
@ApiModelProperty("插件id") |
|||
private Long pluginId; |
|||
@ApiModelProperty("插件样式(样式类型 (1一行 2两行 3半屏))") |
|||
private byte styleType; |
|||
} |
|||
} |
@ -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; |
|||
} |
|||
} |
@ -0,0 +1,29 @@ |
|||
package com.ccsens.common.bean.dto; |
|||
|
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
import java.util.List; |
|||
|
|||
@Data |
|||
public class RoleDto { |
|||
@Data |
|||
@ApiModel("查看角色栏展示") |
|||
public static class QueryRole{ |
|||
@NotNull(message = "项目id不能为空") |
|||
@ApiModelProperty("项目id") |
|||
private Long projectId; |
|||
} |
|||
|
|||
@Data |
|||
@ApiModel("查看永久日常任务") |
|||
public static class UpdateRoleShow{ |
|||
@NotNull(message = "项目id不能为空") |
|||
@ApiModelProperty("项目id") |
|||
private Long projectId; |
|||
@ApiModelProperty("角色id") |
|||
private List<Long> roleIds; |
|||
} |
|||
} |
@ -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; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,31 @@ |
|||
package com.ccsens.common.bean.vo; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonIgnore; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Data |
|||
public class PluginVo { |
|||
|
|||
@Data |
|||
@ApiModel("根据插件id查询插件信息结果") |
|||
public static class QueryPlugins { |
|||
@ApiModelProperty("插件id") |
|||
private Long id; |
|||
@ApiModelProperty("插件名称") |
|||
private String name; |
|||
@ApiModelProperty("插件简介") |
|||
private String intro; |
|||
@ApiModelProperty(" 插件版本") |
|||
private String version; |
|||
@ApiModelProperty("样式类型 (1一行 2两行 3半屏)") |
|||
private byte styleType; |
|||
@ApiModelProperty("插件样式内容") |
|||
private String html; |
|||
@ApiModelProperty(" 插件的js功能") |
|||
private String js; |
|||
} |
|||
} |
@ -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; |
|||
|
|||
|
|||
} |
|||
} |
@ -0,0 +1,37 @@ |
|||
package com.ccsens.common.bean.vo; |
|||
|
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author 逗 |
|||
*/ |
|||
@Data |
|||
public class RoleVo { |
|||
@Data |
|||
@ApiModel("查看定期任务返回值") |
|||
public static class QueryRole { |
|||
@ApiModelProperty("展示的角色信息") |
|||
private List<RoleInfo> visibleList; |
|||
@ApiModelProperty("不展示的角色信息") |
|||
private List<RoleInfo> invisibleList; |
|||
} |
|||
|
|||
@Data |
|||
@ApiModel("查看定期任务返回值") |
|||
public static class RoleInfo { |
|||
@ApiModelProperty("角色id") |
|||
private Long id; |
|||
@ApiModelProperty("是否是项目经理 0否 1是") |
|||
private Long pm; |
|||
@ApiModelProperty("是否是自己所属的角色 0否 1是") |
|||
private Long mine; |
|||
@ApiModelProperty("角色名") |
|||
private String name; |
|||
@ApiModelProperty("排序") |
|||
private Long sequence; |
|||
} |
|||
} |
@ -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<List<TaskPluginInfo>> 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; |
|||
} |
|||
} |
@ -0,0 +1,13 @@ |
|||
package com.ccsens.common.persist.dao; |
|||
|
|||
import com.ccsens.common.persist.mapper.ProRoleMapper; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.springframework.stereotype.Repository; |
|||
|
|||
@Repository |
|||
public interface LabelDao extends ProRoleMapper { |
|||
|
|||
|
|||
String queryIsPm(Long labelId); |
|||
|
|||
} |
@ -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); |
|||
} |
@ -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); |
|||
} |
@ -0,0 +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); |
|||
|
|||
} |
@ -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<Long> findMemberOfRoleIds(@Param("memberId") Long memberId); |
|||
|
|||
} |
@ -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<Long> findRepulsionByRoleId(@Param("roleId") Long roleId); |
|||
} |
@ -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<TaskVo.QueryTask> queryPermanentGlobalTask(@Param("roleId") Long roleId); |
|||
|
|||
/** |
|||
* 根据角色和时间节点查找日常任务 |
|||
* @param roleId 角色id |
|||
* @param timeNode 时间节点 |
|||
* @param timeUnit 时间颗粒度 |
|||
* @return 日常任务列表 |
|||
*/ |
|||
List<TaskVo.QueryTask> queryGlobalTask(@Param("roleId") Long roleId,@Param("timeNode") Long timeNode,@Param("timeUnit") int timeUnit); |
|||
} |
@ -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<TaskVo.TaskPluginInfo> queryTaskOfPlugin(@Param("detailTaskId") Long detailTaskId); |
|||
} |
@ -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 { |
|||
|
|||
|
|||
} |
@ -0,0 +1,11 @@ |
|||
package com.ccsens.common.service; |
|||
|
|||
import com.ccsens.common.bean.dto.RoleDto; |
|||
import com.ccsens.common.bean.vo.RoleVo; |
|||
|
|||
public interface IProRoleService { |
|||
|
|||
RoleVo.QueryRole QueryShowRole(RoleDto.QueryRole param, Long userId); |
|||
|
|||
void updateShowRole(RoleDto.UpdateRoleShow param, Long userId); |
|||
} |
@ -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); |
|||
} |
@ -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<TaskVo.QueryTask> queryPermanentGlobalTask(TaskDto.QueryPermanentGlobalTask param, Long userId); |
|||
|
|||
/** |
|||
* 根据时间和角色查找日常任务 |
|||
* @param param 角色id,时间基准点,时间颗粒度 |
|||
* @param userId 用户id |
|||
* @return 日常任务列表 |
|||
*/ |
|||
List<TaskVo.QueryTask> queryGlobalTask(TaskDto.QueryGlobalTask param, Long userId); |
|||
} |
@ -0,0 +1,331 @@ |
|||
package com.ccsens.common.service; |
|||
|
|||
import cn.hutool.core.lang.Snowflake; |
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import cn.hutool.core.util.StrUtil; |
|||
import com.ccsens.common.bean.dto.RoleDto; |
|||
import com.ccsens.common.bean.po.*; |
|||
import com.ccsens.common.bean.vo.RoleVo; |
|||
import com.ccsens.common.persist.dao.LabelDao; |
|||
import com.ccsens.common.persist.dao.ProRoleDao; |
|||
import com.ccsens.common.persist.mapper.*; |
|||
import com.ccsens.util.CodeEnum; |
|||
import com.ccsens.util.WebConstant; |
|||
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; |
|||
import java.util.stream.Collectors; |
|||
|
|||
@Slf4j |
|||
@Service |
|||
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) |
|||
public class ProRoleService implements IProRoleService { |
|||
@Resource |
|||
private ProRoleMapper proRoleMapper; |
|||
@Resource |
|||
private ProRoleDao proRoleDao; |
|||
@Resource |
|||
private ProMemberMapper proMemberMapper; |
|||
@Resource |
|||
private ProRoleMemberMapper proRoleMemberMapper; |
|||
@Resource |
|||
private ProRoleRepulsionMapper proRoleRepulsionMapper; |
|||
@Resource |
|||
private ProRoleShowMapper proRoleShowMapper; |
|||
@Resource |
|||
private LabelMapper labelMapper; |
|||
@Resource |
|||
private LabelDao labelDao; |
|||
|
|||
@Resource |
|||
private Snowflake snowflake; |
|||
|
|||
|
|||
@Override |
|||
public RoleVo.QueryRole QueryShowRole(RoleDto.QueryRole param, Long userId) { |
|||
RoleVo.QueryRole role = new RoleVo.QueryRole(); |
|||
//角色显示的角色
|
|||
List<RoleVo.RoleInfo> visibleList = new ArrayList<>(); |
|||
RoleVo.RoleInfo RoleInfo = new RoleVo.RoleInfo(); |
|||
//不显示的角色
|
|||
List<RoleVo.RoleInfo> invisibleList = new ArrayList<>(); |
|||
//查询当前用户所属的角色的list
|
|||
List<Long> roleIds = null; |
|||
//对自己不可见的角色的list
|
|||
List<Long> roleIds1 = null; |
|||
//判断是否是关注者 用户不是项目下的成员 并且 用户是成员但不属于任何角色 就是关注者
|
|||
// 判断用户是成员但是不属于任何角色 在成员表下查询到 成员信息
|
|||
ProMemberExample proMemberExample = new ProMemberExample(); |
|||
proMemberExample.createCriteria().andUserIdEqualTo(userId).andProjectIdEqualTo(param.getProjectId()); |
|||
List<ProMember> proMembers = proMemberMapper.selectByExample(proMemberExample); //默认一个
|
|||
//判断用户是不是项目下的成员
|
|||
List<ProRole> proRoles = null; |
|||
//排序后的
|
|||
List<ProRole> proRoles1 = null; |
|||
if (ObjectUtil.isNotNull(proMembers)) { |
|||
//判断用户是成员是不是有角色 通过成员id来判断
|
|||
ProRoleMemberExample proRoleMemberExample = new ProRoleMemberExample(); |
|||
proRoleMemberExample.createCriteria().andMemberIdEqualTo(proMembers.get(0).getId()); |
|||
List<ProRoleMember> proRoleMembers = proRoleMemberMapper.selectByExample(proRoleMemberExample); |
|||
if (ObjectUtil.isNotNull(proRoleMembers)) { |
|||
//用户不是关注者 否 不是才是关注者
|
|||
//用户有角色 角色是那个 查询当前用户所属的角色
|
|||
Long roleId1 = 0L; |
|||
//List<Long> roleIds =null; //查询当前用户所属的角色
|
|||
for (ProRoleMember proRoleMember : proRoleMembers) { |
|||
Long roleId = proRoleMember.getRoleId();//查询当前用户所属的角色 后端 前端
|
|||
roleIds.add(roleId); |
|||
ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); |
|||
proRoleRepulsionExample.createCriteria().andRoleIdEqualTo(roleId); |
|||
List<ProRoleRepulsion> proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample); |
|||
for (ProRoleRepulsion proRoleRepulsion : proRoleRepulsions) { |
|||
roleId1 = proRoleRepulsion.getRoleId();//对自己不可见的角色
|
|||
//判断对自己不可见的角色是不是我的角色
|
|||
roleIds1.add(roleId1); //前端
|
|||
} |
|||
} |
|||
//查询项目下的所有角色 去除不可见角色 通过项目id查找角色id
|
|||
ProRoleExample proRoleExample = new ProRoleExample(); |
|||
proRoleExample.createCriteria().andProjectIdEqualTo(param.getProjectId()); |
|||
proRoles = proRoleMapper.selectByExample(proRoleExample); //前端 后端 UI
|
|||
//在一个集合里面 去除另外一个集合 1 2 3 1 2
|
|||
for (ProRole proRole : proRoles) { |
|||
if(roleIds1.size()> 0){ //不可见的角色大于0
|
|||
for (int i = 0; i < roleIds1.size(); i++) { |
|||
int size = roleIds.size(); //当前用户只有一个角色
|
|||
if(size == 1){ |
|||
if (proRole.getId().equals(roleIds1.get(i))) { |
|||
proRoles.remove(proRole); //去除不可见角色
|
|||
} |
|||
}else { |
|||
//不可见角色没有
|
|||
} |
|||
} |
|||
} |
|||
} |
|||
//进行排序 把项目经理拿出来
|
|||
for (int i = 0; i < proRoles.size(); i++) { |
|||
String PM = labelDao.queryIsPm(proRoles.get(i).getLabelId()); |
|||
if (StrUtil.isNotEmpty(PM)) { //是项目经理
|
|||
ProRole proRole = proRoles.get(i); |
|||
proRoles1.add(proRole); |
|||
proRoles.remove(proRole); //把项目经理角色拿出去
|
|||
} |
|||
} |
|||
//进行排序 把我的角色拿出来
|
|||
for (int i = 0; i < proRoles.size(); i++) { |
|||
//是否是mine 判断是不是自己的角色// 0否 1是
|
|||
for (Long roleId : roleIds) { |
|||
Long id = proRoles.get(i).getId(); |
|||
if (roleId.equals(id)) { |
|||
proRoles1.add(proRoles.get(i)); |
|||
proRoles.remove(proRoles.get(i)); //把我的角色拿出去
|
|||
} |
|||
} |
|||
} |
|||
//进行排序 把其他角色拿出来
|
|||
for (int i = 0; i < proRoles.size(); i++) { |
|||
proRoles1.add(proRoles.get(i)); |
|||
} |
|||
|
|||
} |
|||
} else { //用户是关注者 是 查询所有 未设置对谁不可见信息 的角色 通过角色id去查找 role_id
|
|||
ProRoleExample proRoleExample = new ProRoleExample(); |
|||
proRoleExample.createCriteria().andProjectIdEqualTo(param.getProjectId()); |
|||
proRoles = proRoleMapper.selectByExample(proRoleExample); |
|||
if (ObjectUtil.isNotNull(proRoles)) { |
|||
for (ProRole proRole : proRoles) { |
|||
ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); |
|||
proRoleRepulsionExample.createCriteria().andRoleIdEqualTo(proRole.getId()); |
|||
List<ProRoleRepulsion> proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample); |
|||
if (ObjectUtil.isNotNull(proRoleRepulsions)) { |
|||
//查到就是设置过了 移除
|
|||
proRoles.remove(proRole); |
|||
} |
|||
} |
|||
|
|||
//进行排序 把项目经理拿出来
|
|||
for (int i = 0; i < proRoles.size(); i++) { |
|||
String PM = labelDao.queryIsPm(proRoles.get(i).getLabelId()); |
|||
if (StrUtil.isNotEmpty(PM)) { //是项目经理
|
|||
ProRole proRole = proRoles.get(i); |
|||
proRoles1.add(proRole); |
|||
proRoles.remove(proRole); //把项目经理角色拿出去
|
|||
} |
|||
} |
|||
//进行排序 把我的角色拿出来
|
|||
for (int i = 0; i < proRoles.size(); i++) { |
|||
//是否是mine 判断是不是自己的角色// 0否 1是
|
|||
for (Long roleId : roleIds) { |
|||
Long id = proRoles.get(i).getId(); |
|||
if (roleId.equals(id)) { |
|||
proRoles1.add(proRoles.get(i)); |
|||
proRoles.remove(proRoles.get(i)); //把我的角色拿出去
|
|||
} |
|||
} |
|||
} |
|||
//进行排序 把其他角色拿出来
|
|||
for (int i = 0; i < proRoles.size(); i++) { |
|||
proRoles1.add(proRoles.get(i)); |
|||
} |
|||
|
|||
} |
|||
} |
|||
//根据项目id和userId查询当前用户配置的角色栏信息
|
|||
ProRoleShowExample proRoleShowExample = new ProRoleShowExample(); |
|||
proRoleShowExample.createCriteria().andProjectIdEqualTo(param.getProjectId()).andUserIdEqualTo(userId); |
|||
List<ProRoleShow> proRoleShows = proRoleShowMapper.selectByExample(proRoleShowExample); |
|||
//循环所有的角色,判断是否在配置信息内 将角色信息放入“显示角色”的数组内 将角色放入“隐藏角色"数组
|
|||
if (ObjectUtil.isNotNull(proRoleShows)) { |
|||
for (int i = 0; i < proRoles1.size(); i++) { |
|||
ProRoleShowExample proRoleShowExample1 = new ProRoleShowExample(); |
|||
proRoleShowExample.createCriteria().andRoleIdEqualTo(proRoles1.get(i).getId()); |
|||
List<ProRoleShow> proRoleShows1 = proRoleShowMapper.selectByExample(proRoleShowExample1); |
|||
if (ObjectUtil.isNotNull(proRoleShows1)) { |
|||
//配置过了 将角色信总放入“显示角色"的数组内
|
|||
RoleInfo.setId(proRoles1.get(i).getId()); |
|||
RoleInfo.setName(proRoles1.get(i).getName()); |
|||
//是否是pm 0否 1 是 //通过标签来定义 5 和 2 34是
|
|||
//通过角色表里面的标签id 去 标签表查询 label_type_id =5 在去标签类型表查5 和 level =2
|
|||
String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId()); |
|||
if (StrUtil.isNotEmpty(PM)) { //是
|
|||
RoleInfo.setPm(1L); |
|||
} else { |
|||
RoleInfo.setPm(0L); |
|||
} |
|||
|
|||
//是否是mine 判断是不是自己的角色// 0否 1是
|
|||
for (Long roleId : roleIds) { |
|||
Long id = proRoles1.get(i).getId(); |
|||
if (roleId.equals(id)) { |
|||
RoleInfo.setMine(1L); |
|||
} else { |
|||
RoleInfo.setMine(0L); |
|||
} |
|||
} |
|||
//排序
|
|||
RoleInfo.setSequence(Long.valueOf(proRoleShows1.get(0).getSequence())); |
|||
visibleList.add(RoleInfo); |
|||
|
|||
} else { |
|||
//未配置过了
|
|||
RoleInfo.setId(proRoles1.get(i).getId()); |
|||
RoleInfo.setName(proRoles1.get(i).getName()); |
|||
//是否是pm
|
|||
String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId()); |
|||
if (StrUtil.isNotEmpty(PM)) { //是
|
|||
RoleInfo.setPm(1L); |
|||
} else { |
|||
RoleInfo.setPm(0L); |
|||
} |
|||
//是否是mine 判断是不是自己的角色// 0否 1是
|
|||
for (Long roleId : roleIds) { |
|||
Long id = proRoles1.get(i).getId(); |
|||
if (roleId.equals(id)) { |
|||
RoleInfo.setMine(1L); |
|||
} else { |
|||
RoleInfo.setMine(0L); |
|||
} |
|||
} |
|||
//排序
|
|||
RoleInfo.setSequence((long) i); |
|||
invisibleList.add(RoleInfo); |
|||
} |
|||
} |
|||
} else { |
|||
//循环查询到的角色,放入“显示角色”的数组内 数组长度大于等于5
|
|||
for (int i = 0; i < 5; i++) { |
|||
RoleInfo.setId(proRoles1.get(i).getId()); |
|||
RoleInfo.setName(proRoles1.get(i).getName()); |
|||
//是否是pm
|
|||
Long index = proRoles1.get(i).getLabelId()+1; |
|||
String PM = labelDao.queryIsPm(index); |
|||
if (StrUtil.isNotEmpty(PM)) { //是
|
|||
RoleInfo.setPm(1L); |
|||
} else { |
|||
RoleInfo.setPm(0L); |
|||
} |
|||
//是否是mine 判断是不是自己的角色// 0否 1是
|
|||
for (Long roleId : roleIds) { |
|||
Long id = proRoles1.get(i).getId(); |
|||
if (roleId.equals(id)) { |
|||
RoleInfo.setMine(1L); |
|||
} else { |
|||
RoleInfo.setMine(0L); |
|||
} |
|||
} |
|||
//排序
|
|||
RoleInfo.setSequence((long) i); |
|||
visibleList.add(RoleInfo); |
|||
} |
|||
if (proRoles1.size() >= 6) { |
|||
//将剩下的角色放入“隐藏角色”数组
|
|||
for (int i = 5; i < proRoles1.size(); i++) { |
|||
RoleInfo.setId(proRoles1.get(i).getId()); |
|||
RoleInfo.setName(proRoles1.get(i).getName()); |
|||
//是否是pm
|
|||
String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId()); |
|||
if (StrUtil.isNotEmpty(PM)) { //是
|
|||
RoleInfo.setPm(1L); |
|||
} else { |
|||
RoleInfo.setPm(0L); |
|||
} |
|||
//是否是mine 判断是不是自己的角色// 0否 1是
|
|||
for (Long roleId : roleIds) { |
|||
Long id = proRoles1.get(i).getId(); |
|||
if (roleId.equals(id)) { |
|||
RoleInfo.setMine(1L); |
|||
} else { |
|||
RoleInfo.setMine(0L); |
|||
} |
|||
} |
|||
//排序
|
|||
RoleInfo.setSequence((long) (i-5)); //6-5
|
|||
invisibleList.add(RoleInfo); |
|||
} |
|||
} |
|||
} |
|||
role.setInvisibleList(invisibleList); |
|||
role.setVisibleList(visibleList); |
|||
return role; |
|||
} |
|||
|
|||
@Override |
|||
public void updateShowRole(RoleDto.UpdateRoleShow param, Long userId) { |
|||
//判断入参内的角色判断入参内的角色id列表是否为空
|
|||
if(ObjectUtil.isNull(param.getRoleIds())){ |
|||
throw new BaseException(CodeEnum.NOT_ROLE); |
|||
} |
|||
//根据token获取到userld和项目id在角色展示表中查看是否有原来的数据
|
|||
ProRoleShowExample proRoleShowExample = new ProRoleShowExample(); |
|||
proRoleShowExample.createCriteria().andUserIdEqualTo(userId).andProjectIdEqualTo(param.getProjectId()); |
|||
List<ProRoleShow> proRoleShows = proRoleShowMapper.selectByExample(proRoleShowExample); |
|||
if(ObjectUtil.isNotNull(proRoleShows)){ |
|||
for (ProRoleShow proRoleShow : proRoleShows) { |
|||
proRoleShow.setRecStatus((byte) 2); |
|||
proRoleShowMapper.updateByPrimaryKeySelective(proRoleShow); |
|||
} |
|||
} |
|||
List<Long> roleIds = param.getRoleIds(); //roleid
|
|||
//去重重复的
|
|||
List roleIdsList=(List) roleIds.stream().distinct().collect(Collectors.toList()); |
|||
for (int i = 0; i < roleIdsList.size(); i++) { |
|||
ProRoleShow proRoleShow = new ProRoleShow(); |
|||
proRoleShow.setId(snowflake.nextId()); |
|||
proRoleShow.setUserId(userId); |
|||
proRoleShow.setProjectId(param.getProjectId()); |
|||
proRoleShow.setRoleId((long)roleIdsList.get(i)); |
|||
proRoleShow.setOperator(userId); |
|||
proRoleShow.setSequence(i); |
|||
proRoleShowMapper.insertSelective(proRoleShow); |
|||
} |
|||
|
|||
|
|||
} |
|||
} |
@ -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; |
|||
} |
|||
} |
@ -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<Long> repulsionRoleIds = roleRepulsionDao.findRepulsionByRoleId(roleId); |
|||
//如果为游客
|
|||
if (1 == visitor) { |
|||
return !CollectionUtil.isNotEmpty(repulsionRoleIds); |
|||
} |
|||
//查找成员所属的所有角色
|
|||
List<Long> 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<TaskVo.QueryTask> taskList){ |
|||
if (CollectionUtil.isNotEmpty(taskList)){ |
|||
List<List<TaskVo.TaskPluginInfo>> 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<TaskVo.TaskPluginInfo> pluginInfoList = new ArrayList<>(); |
|||
for (int j = 0; j < panelCol; j++) { |
|||
pluginInfoList.add(null); |
|||
} |
|||
plugins.add(pluginInfoList); |
|||
} |
|||
List<TaskVo.TaskPluginInfo> 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<TaskVo.TaskPluginInfo> taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(queryTask.getDetailId()); |
|||
plugins.add(taskPluginInfoList); |
|||
} |
|||
queryTask.setPlugins(plugins); |
|||
} |
|||
} |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public List<TaskVo.QueryTask> queryPermanentGlobalTask(TaskDto.QueryPermanentGlobalTask param, Long userId) { |
|||
//查找角色权限
|
|||
Boolean isLook = queryRoleIsLook(param.getRoleId(),userId); |
|||
if (BooleanUtil.isFalse(isLook)){ |
|||
throw new BaseException("没有查看权限!"); |
|||
} |
|||
List<TaskVo.QueryTask> permanentGlobalTask = taskDetailDao.queryPermanentGlobalTask(param.getRoleId()); |
|||
//查找项目面板和插件信息
|
|||
queryPluginForTask(permanentGlobalTask); |
|||
|
|||
return permanentGlobalTask; |
|||
} |
|||
|
|||
@Override |
|||
public List<TaskVo.QueryTask> queryGlobalTask(TaskDto.QueryGlobalTask param, Long userId) { |
|||
//查找角色权限
|
|||
Boolean isLook = queryRoleIsLook(param.getRoleId(),userId); |
|||
if (BooleanUtil.isFalse(isLook)){ |
|||
throw new BaseException("没有查看权限!"); |
|||
} |
|||
List<TaskVo.QueryTask> globalTask = taskDetailDao.queryGlobalTask(param.getRoleId(),param.getTimeNode(),param.getTimeUnit()); |
|||
queryPluginForTask(globalTask); |
|||
return globalTask; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,19 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.common.persist.dao.LabelDao"> |
|||
|
|||
<select id="queryIsPm" resultType="String"> |
|||
select t_label.description |
|||
from t_label,t_label_type |
|||
where t_label.id=#{labelId} |
|||
and t_label.`level` = 2 |
|||
and t_label.label_type_id=t_label_type.id |
|||
</select> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
</mapper> |
@ -0,0 +1,16 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.common.persist.dao.ProMemberDao"> |
|||
|
|||
<select id="findUserOfMemberId" resultType="java.lang.Long"> |
|||
SELECT |
|||
id |
|||
FROM |
|||
t_pro_member |
|||
WHERE |
|||
rec_status = 0 |
|||
AND project_id = #{projectId} |
|||
AND user_id = #{userId} |
|||
</select> |
|||
|
|||
</mapper> |
@ -0,0 +1,28 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.common.persist.dao.ProProjectDao"> |
|||
|
|||
<select id="findProjectById" resultType="com.ccsens.common.bean.vo.ProjectVo$ProjectInfo"> |
|||
SELECT |
|||
d.id, |
|||
d.`name`, |
|||
d.description, |
|||
d.cycle, |
|||
s.plan_start_time, |
|||
s.plan_duration, |
|||
s.plan_end_time, |
|||
s.real_start_time, |
|||
s.real_duration, |
|||
s.real_end_time |
|||
FROM |
|||
t_pro_task_detail AS d |
|||
LEFT JOIN t_pro_task_sub AS s ON d.id = s.task_detail_id |
|||
WHERE |
|||
d.rec_status = 0 |
|||
AND s.rec_status = 0 |
|||
AND d.id = #{projectId} |
|||
ORDER BY |
|||
s.plan_start_time DESC |
|||
LIMIT 1 |
|||
</select> |
|||
</mapper> |
@ -0,0 +1,26 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.common.persist.dao.ProRoleDao"> |
|||
|
|||
<select id="" parameterType="java.util.Map" |
|||
resultType="Long"> |
|||
|
|||
</select> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
<select id="findRoleOfProjectId" resultType="java.lang.Long"> |
|||
SELECT |
|||
project_id |
|||
FROM |
|||
t_pro_role |
|||
WHERE |
|||
rec_status = 0 |
|||
AND id = #{roleId} |
|||
</select> |
|||
|
|||
</mapper> |
@ -0,0 +1,14 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.common.persist.dao.ProRoleMemberDao"> |
|||
|
|||
<select id="findMemberOfRoleIds" resultType="java.lang.Long"> |
|||
SELECT |
|||
role_id |
|||
FROM |
|||
t_pro_role_member |
|||
WHERE |
|||
rec_status = 0 |
|||
AND member_id = #{memberId} |
|||
</select> |
|||
</mapper> |
@ -0,0 +1,15 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.common.persist.dao.ProRoleRepulsionDao"> |
|||
|
|||
<select id="findRepulsionByRoleId" resultType="java.lang.Long"> |
|||
SELECT |
|||
repulsion_role_id |
|||
FROM |
|||
t_pro_role_repulsion |
|||
WHERE |
|||
rec_status = 0 |
|||
AND role_id = #{roleId} |
|||
</select> |
|||
|
|||
</mapper> |
@ -0,0 +1,133 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.common.persist.dao.ProTaskDetailDao"> |
|||
|
|||
<resultMap id="queryTask" type="com.ccsens.common.bean.vo.TaskVo$QueryTask"> |
|||
<id column="id" property="id"/> |
|||
<result column="detailId" property="detailId"/> |
|||
<result column="name" property="name"/> |
|||
<result column="description" property="description"/> |
|||
<result column="planStart" property="planStart"/> |
|||
<result column="plan_duration" property="planDuration"/> |
|||
<result column="real_start_time" property="realStart"/> |
|||
<result column="real_duration" property="realDuration"/> |
|||
<result column="process" property="process"/> |
|||
<result column="skip" property="skip"/> |
|||
<result column="skipTaskId" property="skipTaskId"/> |
|||
<collection property="panel" ofType="com.ccsens.common.bean.vo.TaskVo$PanelInfo"> |
|||
<result column="backgroundColor" property="backgroundColor"/> |
|||
<result column="borderRadius" property="borderRadius"/> |
|||
<result column="border" property="border"/> |
|||
<result column="shadow" property="shadow"/> |
|||
<result column="width" property="width"/> |
|||
<result column="height" property="height"/> |
|||
<result column="row" property="row"/> |
|||
<result column="col" property="col"/> |
|||
</collection> |
|||
</resultMap> |
|||
|
|||
<select id="queryPermanentGlobalTask" resultMap="queryTask"> |
|||
SELECT |
|||
ts.id, |
|||
td.id AS detailId, |
|||
td.`name`, |
|||
td.description, |
|||
ts.plan_start_time AS planStart, |
|||
ts.plan_duration, |
|||
ts.real_start_time AS realStart, |
|||
ts.real_duration, |
|||
ts.task_status AS process, |
|||
tf.flow_type AS skip, |
|||
tf.jump_task_detail_id AS skipTaskId, |
|||
tpi.back_color AS backgroundColor, |
|||
tpi.round_corner AS borderRadius, |
|||
tpi.border AS border, |
|||
tpi.shadow AS shadow, |
|||
tpi.width AS width, |
|||
tpi.height AS height, |
|||
tpi.`row` AS `row`, |
|||
tpi.col AS col |
|||
FROM |
|||
t_pro_task_detail AS td |
|||
LEFT JOIN t_pro_task_sub AS ts ON ts.task_detail_id = td.id |
|||
LEFT JOIN t_pro_task_flow AS tf ON tf.task_detail_id = td.id AND tf.rec_status = 0 |
|||
LEFT JOIN t_pro_role_task AS rt ON rt.task_id = td.id |
|||
LEFT JOIN t_pro_task_panel_info AS tpi ON tpi.task_detail_id = td.id AND tpi.rec_status = 0 |
|||
LEFT JOIN t_label_business AS lb ON td.id = lb.business_id |
|||
LEFT JOIN t_label AS l ON l.id = lb.label_id |
|||
LEFT JOIN t_label_type AS lt ON lt.id = l.label_type_id |
|||
WHERE |
|||
td.rec_status = 0 AND ts.rec_status = 0 AND lb.rec_status = 0 AND l.rec_status = 0 AND lt.rec_status = 0 AND rt.rec_status = 0 |
|||
AND lb.business_type = 0 |
|||
AND l.`level` = 2 |
|||
AND lt.label_type = 1 |
|||
AND ts.plan_start_time = 0 |
|||
AND ts.plan_duration = 0 |
|||
AND rt.role_id = #{roleId} |
|||
</select> |
|||
|
|||
<select id="queryGlobalTask" resultType="com.ccsens.common.bean.vo.TaskVo$QueryTask"> |
|||
SELECT |
|||
alltask.* |
|||
FROM |
|||
( |
|||
SELECT |
|||
ts.id, |
|||
td.id AS detailId, |
|||
td.`name`, |
|||
td.description, |
|||
ts.plan_start_time AS planStart, |
|||
ts.plan_duration, |
|||
ts.real_start_time AS realStart, |
|||
ts.real_duration, |
|||
ts.task_status AS process, |
|||
tf.flow_type AS skip, |
|||
tf.jump_task_detail_id AS skipTaskId, |
|||
tpi.back_color AS backgroundColor, |
|||
tpi.round_corner AS borderRadius, |
|||
tpi.border AS border, |
|||
tpi.shadow AS shadow, |
|||
tpi.width AS width, |
|||
tpi.height AS height, |
|||
tpi.`row` AS `row`, |
|||
tpi.col AS col |
|||
FROM |
|||
t_pro_task_detail AS td |
|||
LEFT JOIN t_pro_task_sub AS ts ON ts.task_detail_id = td.id |
|||
LEFT JOIN t_pro_task_flow AS tf ON tf.task_detail_id = td.id |
|||
AND tf.rec_status = 0 |
|||
LEFT JOIN t_pro_role_task AS rt ON rt.task_id = td.id |
|||
LEFT JOIN t_pro_task_panel_info AS tpi ON tpi.task_detail_id = td.id |
|||
AND tpi.rec_status = 0 |
|||
LEFT JOIN t_label_business AS lb ON td.id = lb.business_id |
|||
LEFT JOIN t_label AS l ON l.id = lb.label_id |
|||
LEFT JOIN t_label_type AS lt ON lt.id = l.label_type_id |
|||
WHERE |
|||
td.rec_status = 0 |
|||
AND ts.rec_status = 0 |
|||
AND lb.rec_status = 0 |
|||
AND l.rec_status = 0 |
|||
AND lt.rec_status = 0 |
|||
AND rt.rec_status = 0 |
|||
AND lb.business_type = 0 |
|||
AND l.`level` = 2 |
|||
AND lt.label_type = 1 |
|||
AND ts.plan_start_time != 0 |
|||
AND ts.plan_duration != 0 |
|||
AND rt.role_id = #{roleId} |
|||
AND ts.plan_start_time <= #{timeNode} |
|||
AND ts.plan_end_time >= #{timeNode} |
|||
) AS alltask |
|||
LEFT JOIN t_label_business AS llbb ON alltask.detailId = llbb.business_id |
|||
LEFT JOIN t_label AS ll ON llbb.label_id = ll.id |
|||
LEFT JOIN t_label_type AS lltt ON ll.label_type_id = lltt.id |
|||
WHERE |
|||
llbb.rec_status = 0 |
|||
AND ll.rec_status = 0 |
|||
AND lltt.rec_status = 0 |
|||
AND lltt.label_type = 0 |
|||
AND llbb.business_type = 0 |
|||
AND ll.`level` >= #{timeUnit} |
|||
</select> |
|||
|
|||
</mapper> |
@ -0,0 +1,20 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.common.persist.dao.ProTaskPluginDao"> |
|||
|
|||
<select id="queryTaskOfPlugin" resultType="com.ccsens.common.bean.vo.TaskVo$TaskPluginInfo"> |
|||
SELECT |
|||
tp.plugin_id AS pluginId, |
|||
tp.param As param, |
|||
tp.plgin_row AS `row`, |
|||
tp.plgin_col AS col, |
|||
tp.colspan AS colspan, |
|||
tp.rowspan AS rowspan |
|||
FROM |
|||
t_pro_task_plugin AS tp |
|||
LEFT JOIN t_pro_task_detail AS td ON td.id = tp.task_detail_id |
|||
WHERE td.rec_status = 0 AND tp.rec_status = 0 |
|||
AND tp.task_detail_id = #{detailTaskId} |
|||
</select> |
|||
|
|||
</mapper> |
Loading…
Reference in new issue