From 9d54d10b08c725a9e8039d1582965aae61bbff38 Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Mon, 29 Jun 2020 14:26:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=B9=E7=9B=AE=E5=92=8C?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=9A=84=E9=85=8D=E7=BD=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ccsens/tall/bean/dto/ProjectDto.java | 37 ++++++ .../com/ccsens/tall/bean/dto/RoleDto.java | 3 + .../com/ccsens/tall/bean/dto/TaskDto.java | 24 ++++ .../com/ccsens/tall/bean/vo/ProjectVo.java | 2 +- .../ccsens/tall/persist/dao/ProRoleDao.java | 7 ++ .../tall/service/IProTaskDetailService.java | 13 ++- .../ccsens/tall/service/IProjectService.java | 8 ++ .../ccsens/tall/service/ProRoleService.java | 58 +++++++++- .../tall/service/ProTaskDetailService.java | 109 +++++++++++------- .../ccsens/tall/service/ProjectService.java | 77 +++++++++---- .../ccsens/tall/web/ProjectController.java | 16 ++- .../com/ccsens/tall/web/TaskController.java | 13 +++ tall/src/main/resources/application.yml | 4 +- .../main/resources/mapper_dao/ProRoleDao.xml | 19 ++- .../main/java/com/ccsens/util/CodeEnum.java | 2 +- .../java/com/ccsens/util/WebConstant.java | 13 +++ 16 files changed, 329 insertions(+), 76 deletions(-) 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 0cd6f7f2..19a06c3b 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 @@ -1,5 +1,7 @@ package com.ccsens.tall.bean.dto; +import cn.hutool.core.util.ObjectUtil; +import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -71,4 +73,39 @@ public class ProjectDto { @ApiModelProperty("项目结束时间") private Long endTime; } + + @Data + @ApiModel("修改项目配置信息") + public static class ProjectConfig{ + @NotNull + @ApiModelProperty("被修改的项目的id") + private Long projectId; + @ApiModelProperty("上下滑动类型 0:上下滑动 1:只支持向下滑 2:只支持上滑 4:上下都不滑动") + private Integer slide; + @ApiModelProperty("筛选框显示 0:都显示 1:都不显示 2.只展示时间轴/清单") + private Integer filter; + @ApiModelProperty("是否展示添加任务按钮 0:不展示 1:展示") + private Integer createTask; + @ApiModelProperty("是否展示MVP 0:不展示 1:展示") + private Integer showMvp; + @JsonIgnore//0日程,1天,2周,3月 + private Integer selectTaskType; + @ApiModelProperty("查询任务类型") + private String selectType; + @ApiModelProperty("第三列展示页面的路径") + private String detailPath; + + public Integer getSelectTaskType(){ + if(ObjectUtil.isNull(selectType)) { + return null; + } + switch (selectType){ + case "日程": return this.selectTaskType = 0; + case "天": return this.selectTaskType = 1; + case "周": return this.selectTaskType = 2; + case "月": return this.selectTaskType = 3; + default: return this.selectTaskType = 0; + } + } + } } 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 bb1cf918..9aff12cc 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 @@ -34,6 +34,9 @@ public class RoleDto { @Data @ApiModel("给角色添加成员") public static class SaveMember{ + @NotNull(message = "角色Id不能为空") + @ApiModelProperty("角色id") + private Long roleId; @ApiModelProperty("成员Id") private Long memberId; } diff --git a/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java b/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java index 7b35bd5a..c3d421d1 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java +++ b/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java @@ -188,4 +188,28 @@ public class TaskDto { private Integer type; } + @Data + @ApiModel("修改任务配置") + public static class UpdateTaskConfig{ + @NotNull(message = "任务id不能为空") + @ApiModelProperty("任务id") + private Long taskId; + @ApiModelProperty("开始时间显示样式(默认 MM-DD HH:mm) 为空时不展示时间") + private String timeShow; + @ApiModelProperty("时长展示单位 0:根据时长转换成对应分钟或小时 1:不展示 2:转化成分钟 3:转化成小时") + private Integer duration; + @ApiModelProperty("是否显示新建任务按钮 0不展示 1展示") + private Integer createTask; + @ApiModelProperty("是否展示硬件按钮 0不展示 1展示") + private Integer showHardware; + @ApiModelProperty("是否展示交付物按钮 0不展示 1展示") + private Integer showDeliver; + @ApiModelProperty("是否展示奖惩金额按钮 0不展示 1展示") + private Integer showMoney; + @ApiModelProperty("时间轴上显示计划时间还是实际时间 0计划时间,1实际时间") + private Integer showRealTime; + @ApiModelProperty("是否展示完成按钮 0不展示 1展示") + private Integer showFinish; + } + } diff --git a/tall/src/main/java/com/ccsens/tall/bean/vo/ProjectVo.java b/tall/src/main/java/com/ccsens/tall/bean/vo/ProjectVo.java index 63764b78..f8b2a74c 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/vo/ProjectVo.java +++ b/tall/src/main/java/com/ccsens/tall/bean/vo/ProjectVo.java @@ -103,7 +103,7 @@ public class ProjectVo { } } - @ApiModel + @ApiModel("返回的项目配置信息") @Data public static class ProjectConfig{ @ApiModelProperty("上下滑动类型 0:上下滑动 1:只支持向下滑 2:只支持上滑 4:上下都不滑动") diff --git a/tall/src/main/java/com/ccsens/tall/persist/dao/ProRoleDao.java b/tall/src/main/java/com/ccsens/tall/persist/dao/ProRoleDao.java index 46f9bdba..e21c1770 100644 --- a/tall/src/main/java/com/ccsens/tall/persist/dao/ProRoleDao.java +++ b/tall/src/main/java/com/ccsens/tall/persist/dao/ProRoleDao.java @@ -35,4 +35,11 @@ public interface ProRoleDao extends ProRoleMapper{ List selectByProjectAndName(MemberRoleDto.Assign assign); List selectSecondRoleName(@Param("projectId")Long projectId); + + /** + * 通过角色id判断角色是否是项目经理 + * @param roleId + * @return + */ + Integer isPmByRoleId(@Param("roleId")Long roleId); } diff --git a/tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java b/tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java index 1ce1a321..eee9a30b 100644 --- a/tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java @@ -33,6 +33,17 @@ public interface IProTaskDetailService { TaskVo.NormalTask updateTaskInfo(Long currentUserId, TaskDto.UpdateTaskInfo updateTaskInfo) throws Exception; TaskVo.TaskInfoWithFeign getProjectIdByTaskId(Long taskId); - + /** + * 处理任务的插件 + */ void managePlugin(Long userId,Long roleId,TaskVo.NormalTask normalTask) throws Exception; + + /** + * 修改任务的配置信息 + * @param userId userId + * @param updateTaskConfig 任务的配置信息 + * @return 返回修改后的配置信息 + * @throws Exception 异常 + */ + TaskVo.NormalTask updateTaskConfig(Long userId,TaskDto.UpdateTaskConfig updateTaskConfig) throws Exception; } 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 be84e811..e222791a 100644 --- a/tall/src/main/java/com/ccsens/tall/service/IProjectService.java +++ b/tall/src/main/java/com/ccsens/tall/service/IProjectService.java @@ -36,4 +36,12 @@ public interface IProjectService { ProjectVo.ProjectAllDetailed selectByLabelName(Long currentUserId, String labelName,Integer pageSize,Integer page); List selectRelevanceProject(Long currentUserId, Long projectId); + + /** + * 修改项目配置信息 + * @param currentUserId userId + * @param projectConfig 项目配置信息 + * @return 返回修改后的项目信息 + */ + ProjectVo.ProjectInfo updateProjectConfig(Long currentUserId, ProjectDto.ProjectConfig projectConfig); } 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 7151d6ce..13b5ae5b 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java @@ -4,6 +4,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.RoleDto; import com.ccsens.tall.bean.po.*; import com.ccsens.tall.bean.vo.ProjectVo; @@ -184,7 +185,7 @@ public class ProRoleService implements IProRoleService { @Override public List getRealMemberRolesByProjectId(Long projectId) { //查询二级角色 - List memberRoleList = null; + List memberRoleList; memberRoleList = proRoleDao.selectSecondRolesByProjectId(projectId); return memberRoleList; } @@ -192,8 +193,8 @@ public class ProRoleService implements IProRoleService { /** * 获取此用户不可见的角色 * - * @param projectId - * @param currentUserId + * @param projectId 项目id + * @param currentUserId userId * @return */ public List getCareLessRoleByProjectIdAndUserId(Long projectId, Long currentUserId) { @@ -256,6 +257,14 @@ public class ProRoleService implements IProRoleService { return role; } + private boolean isPmByRoleId(Long roleId) { + Integer i = proRoleDao.isPmByRoleId(roleId); + if(ObjectUtil.isNull(i)){ + throw new BaseException(CodeEnum.NOT_ROLE); + } + return i == 1; + } + //======================================================================= /** @@ -376,11 +385,50 @@ public class ProRoleService implements IProRoleService { @Override public void saveMemberByRole(Long currentUserId, RoleDto.SaveMember saveMember) { - + //检查成员是否为空 + ProMember member = proMemberDao.selectByPrimaryKey(saveMember.getMemberId()); + if(ObjectUtil.isNull(member)){ + throw new BaseException(CodeEnum.NOT_MEMBER); + } + //检查角色是否为PM 是的话则需要更高权限 + boolean isPm = isPmByRoleId(saveMember.getRoleId()); + //检查当前用户的权限是否可以修改 + int power = selectPowerByRoleName(currentUserId, member.getProjectId()); + if ((isPm && power < WebConstant.ROLE_POWER.ADMIN_POWER.value) || (!isPm && power < WebConstant.ROLE_POWER.OPERATION_POWER.value)) { + throw new BaseException(CodeEnum.NOT_POWER); + } + //添加成员与角色关联信息 + ProMemberRole proMemberRole = new MemberRoleDto(); + proMemberRole.setId(snowflake.nextId()); + proMemberRole.setRoleId(saveMember.getRoleId()); + proMemberRole.setMemberId(member.getId()); + memberRoleDao.insertSelective(proMemberRole); } @Override public void deleteMemberByRole(Long currentUserId, RoleDto.SaveMember saveMember) { - + //检查参数是否正确 + ProMember member = proMemberDao.selectByPrimaryKey(saveMember.getMemberId()); + if(ObjectUtil.isNull(member)){ + throw new BaseException(CodeEnum.NOT_MEMBER); + } + //检查被操作的角色是否是项目PM + boolean isPm = isPmByRoleId(saveMember.getRoleId()); + //检查当前用户的权限是否可以修改 + int power = selectPowerByRoleName(currentUserId, member.getProjectId()); + if ((isPm && power < WebConstant.ROLE_POWER.ADMIN_POWER.value) || (!isPm && power < WebConstant.ROLE_POWER.OPERATION_POWER.value)) { + throw new BaseException(CodeEnum.NOT_POWER); + } + //删除角色与成员的关联信息 + ProMemberRoleExample memberRoleExample = new ProMemberRoleExample(); + memberRoleExample.createCriteria().andRoleIdEqualTo(saveMember.getRoleId()).andMemberIdEqualTo(member.getId()); + List memberRoleList = memberRoleDao.selectByExample(memberRoleExample); + if(CollectionUtil.isEmpty(memberRoleList)){ + throw new BaseException(CodeEnum.NOT_MEMBER); + } + for(ProMemberRole memberRole : memberRoleList){ + memberRole.setRecStatus((byte)2); + memberRoleDao.updateByPrimaryKeySelective(memberRole); + } } } 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 be51869c..670557c8 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java @@ -22,7 +22,6 @@ import com.ccsens.util.cron.CronConstant; import com.ccsens.util.cron.NatureToDate; import com.ccsens.util.exception.BaseException; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -36,43 +35,41 @@ import java.util.*; @Service @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) public class ProTaskDetailService implements IProTaskDetailService { - @Autowired + @Resource private IProRoleService proRoleService; - @Autowired + @Resource private ITaskDeliverService taskDeliverService; - @Autowired + @Resource private IUserAttentionService attentionService; - @Autowired + @Resource private ITaskPluginService pluginService; - @Autowired + @Resource private IProMemberService proMemberService; - @Autowired - private IUserService userService; - @Autowired + @Resource private ProTaskShowDao proTaskShowDao; - @Autowired + @Resource private TaskDetailDao taskDetailDao; - @Autowired + @Resource private TaskSubTimeDao taskSubTimeDao; - @Autowired + @Resource private TaskMemberDao taskMemberDao; - @Autowired + @Resource private ProSubTimeMemberDao proSubTimeMemberDao; - @Autowired + @Resource private ProRoleDao proRoleDao; - @Autowired + @Resource private ProMemberDao proMemberDao; - @Autowired + @Resource private SysProjectDao sysProjectDao; - @Autowired + @Resource private SysPluginDao sysPluginDao; - @Autowired + @Resource private Snowflake snowflake; - @Autowired + @Resource private MtFeignClient mtFeignClient; @Resource private ProPluginConfigMapper proPluginConfigMapper; - @Autowired + @Resource private IRobotService robotService; @Override @@ -117,7 +114,7 @@ public class ProTaskDetailService implements IProTaskDetailService { /** * 查找任务配置 */ - private TaskVo.ProTaskShow getProTaskShow(Long taskId)throws Exception{ + private TaskVo.ProTaskShow getProTaskShow(Long taskId) { TaskVo.ProTaskShow proTaskShow = proTaskShowDao.getProTaskShowByTaskId(taskId); if(ObjectUtil.isNull(proTaskShow)){ proTaskShow = new TaskVo.ProTaskShow(); @@ -141,8 +138,8 @@ public class ProTaskDetailService implements IProTaskDetailService { List globalTaskList = new ArrayList<>(); List normalTaskList = new ArrayList<>(); - TaskVo.GlobalTask globalTask = null; - TaskVo.NormalTask normalTask = null; + TaskVo.GlobalTask globalTask; + TaskVo.NormalTask normalTask; //1、查找一级任务 SysProject project = sysProjectDao.selectByPrimaryKey(projectId); if (endTime < project.getBeginTime() || startTime > project.getEndTime()) { @@ -338,15 +335,14 @@ public class ProTaskDetailService implements IProTaskDetailService { private List sortTaskTime(List commonTask) { List normalTaskList = new ArrayList<>(); - List secondTaskVoList = null; + List secondTaskVoList; Set longSet = new HashSet<>(); - List timeList = new ArrayList<>(); if (CollectionUtil.isNotEmpty(commonTask)) { for (TaskVo.NormalTask secondTaskVo : commonTask) { longSet.add(secondTaskVo.getBeginTime()); longSet.add(secondTaskVo.getEndTime()); } - timeList.addAll(longSet); + List timeList = new ArrayList<>(longSet); for (int i = 0; i < timeList.size(); i++) { for (int j = 0; j < timeList.size() - i - 1; j++) { if (timeList.get(j) > timeList.get(j + 1)) { @@ -358,7 +354,7 @@ public class ProTaskDetailService implements IProTaskDetailService { } int sequence = 1; for (int i = 0; i < timeList.size() - 1; i++) { - TaskVo.NormalTask normalTask = null; + TaskVo.NormalTask normalTask; secondTaskVoList = new ArrayList<>(); Long startTime = timeList.get(i); Long endTime = timeList.get(i + 1); @@ -439,7 +435,7 @@ public class ProTaskDetailService implements IProTaskDetailService { String[] pluginDescription = pluginVo.getDescription().split(","); String[] pluginShowType = pluginVo.getShowType().split(","); - TaskVo.PluginVo plugin = null; + TaskVo.PluginVo plugin; for(int i = 0;i taskDeliverByMVPList = new ArrayList<>(); - TaskVo.TaskDeliverByMVP taskDeliverByMVP = null; + List taskDeliverByMVPList; + TaskVo.TaskDeliverByMVP taskDeliverByMVP; List firstTasks = new ArrayList<>(); - TaskVo.FirstTask firstProTask = null; + TaskVo.FirstTask firstProTask; //查找项目下的一级任务 ProTaskDetailExample firstTaskExample = new ProTaskDetailExample(); firstTaskExample.createCriteria().andProjectIdEqualTo(projectId) @@ -551,6 +547,8 @@ public class ProTaskDetailService implements IProTaskDetailService { taskDetail.setProcess(0); } } + //任务配置 + taskDetail.setProTaskConfig(getProTaskShow(taskDetail.getDetailId())); //添加项目信息和插件信息 normalTaskAddPlugin(currentUserId, subTime.getTaskDetailId(), taskDetail); @@ -655,7 +653,7 @@ public class ProTaskDetailService implements IProTaskDetailService { //获取日期的开始结束时间 Long startMillisTime = null; Long endMillisTime = null; - Map timeMap = null; + Map timeMap; if (StrUtil.isNotEmpty(start)) { timeMap = DateUtil.projectFormatDateTime(start); startMillisTime = timeMap.get("startMillisTime"); @@ -812,7 +810,7 @@ public class ProTaskDetailService implements IProTaskDetailService { //获取日期的开始结束时间 Long startMillisTime = null; Long endMillisTime = null; - Map timeMap = null; + Map timeMap; if (StrUtil.isNotEmpty(start)) { timeMap = DateUtil.projectFormatDateTime(start); startMillisTime = timeMap.get("startMillisTime"); @@ -969,7 +967,7 @@ public class ProTaskDetailService implements IProTaskDetailService { .andMemberIdEqualTo(member.getId()).andComplatedStatusEqualTo((byte) 2); sTimeMemberExample.setOrderByClause("real_finish_time"); List sTimeMemberList = proSubTimeMemberDao.selectByExample(sTimeMemberExample); - if (CollectionUtil.isEmpty(subTimeMemberList)) { + if (CollectionUtil.isEmpty(sTimeMemberList)) { flag = true; break; } @@ -994,7 +992,7 @@ public class ProTaskDetailService implements IProTaskDetailService { @Override public void deleteTask(Long currentUserId, Long taskId) throws Exception { //检查id是详情id还是subTimeId - ProTaskDetail taskDetail = null; + ProTaskDetail taskDetail; ProTaskSubTime subTime = taskSubTimeDao.selectByPrimaryKey(taskId); if (ObjectUtil.isNotNull(subTime)) { taskDetail = taskDetailDao.selectByPrimaryKey(subTime.getTaskDetailId()); @@ -1063,9 +1061,9 @@ public class ProTaskDetailService implements IProTaskDetailService { */ @Override public TaskVo.NormalTask updateTaskInfo(Long currentUserId, TaskDto.UpdateTaskInfo updateTaskInfo) throws Exception { - TaskVo.NormalTask normalTask = null; + TaskVo.NormalTask normalTask; - ProTaskDetail taskDetail = null; + ProTaskDetail taskDetail; ProTaskSubTime taskSubTime = taskSubTimeDao.selectByPrimaryKey(updateTaskInfo.getId()); if(ObjectUtil.isNotNull(taskSubTime)){ taskDetail = taskDetailDao.selectByPrimaryKey(taskSubTime.getTaskDetailId()); @@ -1187,7 +1185,7 @@ public class ProTaskDetailService implements IProTaskDetailService { eTime = groupTask.getEndTime(); } bTime = bTime < groupTask.getBeginTime() ? bTime : groupTask.getBeginTime(); - eTime = eTime > groupTask.getEndTime() ? eTime : groupTask.getEndTime();; + eTime = eTime > groupTask.getEndTime() ? eTime : groupTask.getEndTime(); } } //如果子任务最早最晚时间和父任务不同,则修改父任务时间 @@ -1246,11 +1244,10 @@ public class ProTaskDetailService implements IProTaskDetailService { } } - @Override public TaskVo.TaskInfoWithFeign getProjectIdByTaskId(Long taskId) { TaskVo.TaskInfoWithFeign taskInfo = null; - ProTaskDetail detail = null; + ProTaskDetail detail; ProTaskSubTime subTime = taskSubTimeDao.selectByPrimaryKey(taskId); if(ObjectUtil.isNull(subTime)){ detail = taskDetailDao.selectByPrimaryKey(taskId); @@ -1272,4 +1269,36 @@ public class ProTaskDetailService implements IProTaskDetailService { } return taskInfo; } + + @Override + public TaskVo.NormalTask updateTaskConfig(Long userId, TaskDto.UpdateTaskConfig updateTaskConfig) throws Exception { + //检查任务是否存在 + ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(updateTaskConfig.getTaskId()); + if(ObjectUtil.isNull(taskDetail)){ + ProTaskSubTime taskSubTime = taskSubTimeDao.selectByPrimaryKey(updateTaskConfig.getTaskId()); + if(ObjectUtil.isNull(taskSubTime)) { + throw new BaseException(CodeEnum.NOT_TASK); + } + taskDetail = taskDetailDao.selectByPrimaryKey(taskSubTime.getTaskDetailId()); + } + //查找任务原来的配置 + ProTaskShowExample taskShowExample = new ProTaskShowExample(); + taskShowExample.createCriteria().andTaskDetailIdEqualTo(taskDetail.getId()); + List proTaskShowList = proTaskShowDao.selectByExample(taskShowExample); + if(CollectionUtil.isEmpty(proTaskShowList)){ + //没有则新建配置信息 + ProTaskShow proTaskShow = new ProTaskShow(); + BeanUtil.copyProperties(updateTaskConfig,proTaskShow); + proTaskShow.setId(snowflake.nextId()); + proTaskShow.setProjectId(taskDetail.getProjectId()); + proTaskShow.setTaskDetailId(taskDetail.getId()); + proTaskShowDao.insertSelective(proTaskShow); + }else { + //有则修改 + ProTaskShow proTaskShow = proTaskShowList.get(0); + BeanUtil.copyProperties(updateTaskConfig,proTaskShow); + proTaskShowDao.updateByPrimaryKeySelective(proTaskShow); + } + return getTaskInfoByTaskId(userId,taskDetail.getProjectId(),updateTaskConfig.getTaskId()); + } } 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 201c6f17..52f71cc2 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProjectService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProjectService.java @@ -19,6 +19,7 @@ import com.ccsens.util.exception.BaseException; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -98,7 +99,7 @@ public class ProjectService implements IProjectService { public List haveProjectDay(Long currentUserId, String date) throws Exception { List dateList = new ArrayList<>(); //获取日期的开始结束时间 - Map timeMap = new HashMap<>(); + Map timeMap; timeMap = DateUtil.projectFormatDateTime(date); Long startMillisTime = timeMap.get("startMillisTime"); Long endMillisTime = timeMap.get("endMillisTime"); @@ -137,15 +138,15 @@ public class ProjectService implements IProjectService { /** * 根据用户和日期查找项目 * - * @param currentUserId - * @param date - * @return - * @throws Exception + * @param currentUserId userId + * @param date 日期 + * @return 返回查到的所有项目信息 + * @throws Exception 分解日期时抛错 */ @Override public List getProjectInfo(Long currentUserId, String date,Integer orderType,Integer order) throws Exception { //获取日期的开始结束时间 - Map timeMap = new HashMap<>(); + Map timeMap; timeMap = DateUtil.projectFormatDateTime(date); Long startMillisTime = timeMap.get("startMillisTime"); Long endMillisTime = timeMap.get("endMillisTime") + 1; @@ -217,7 +218,7 @@ public class ProjectService implements IProjectService { private List projectInfoByProject(List projectList, Long currentUserId) { List projectInfoList = new ArrayList<>(); if (CollectionUtil.isNotEmpty(projectList)) { - ProjectVo.ProjectInfo projectInfo = null; + ProjectVo.ProjectInfo projectInfo; for (SysProject project : projectList) { projectInfo = new ProjectVo.ProjectInfo(); BeanUtil.copyProperties(project, projectInfo); @@ -275,8 +276,8 @@ public class ProjectService implements IProjectService { * 通过项目id查询项目 * * @param userId 用户id - * @param projectId - * @return + * @param projectId 项目id + * @return 返回项目信息 */ @Override public ProjectVo.ProjectInfo getProjectInfoById(Long userId, Long projectId) { @@ -333,8 +334,7 @@ public class ProjectService implements IProjectService { /** * 根据类型查项目 项目类型 0普通项目 1模板项目 2常驻项目 - * - * @return + * @return 返回项目信息 */ @Override public List getTemplate() { @@ -363,8 +363,8 @@ public class ProjectService implements IProjectService { if (CollectionUtil.isNotEmpty(domainList)) { SysDomain sysDomain = domainList.get(0); String[] projectIds = sysDomain.getForeverProjectId().split(","); - for(int i = 0; i < projectIds.length; i++){ - SysProject project = sysProjectDao.selectByPrimaryKey(Long.valueOf(projectIds[i])); + for (String projectId : projectIds) { + SysProject project = sysProjectDao.selectByPrimaryKey(Long.valueOf(projectId)); ProjectVo.TemplateStatus templateStatus = new ProjectVo.TemplateStatus(); templateStatus.setId(project.getId()); templateStatus.setName(project.getName()); @@ -389,12 +389,12 @@ public class ProjectService implements IProjectService { @Override public ProjectVo.ProjectAllDetailed getProjectList(Long currentUserId, Integer page, Integer pageSize, String key, String start, String end, String role) throws Exception { ProjectVo.ProjectAllDetailed projectAllDetailed = new ProjectVo.ProjectAllDetailed(); - List projectInfoList = new ArrayList<>(); + List projectInfoList; //获取日期的开始结束时间 Long startMillisTime = null; Long endMillisTime = null; - Map timeMap = null; + Map timeMap; if (StrUtil.isNotEmpty(start)) { timeMap = DateUtil.projectFormatDateTime(start); startMillisTime = timeMap.get("startMillisTime"); @@ -465,7 +465,7 @@ public class ProjectService implements IProjectService { * 通过名字模糊查询项目 */ @Override - public List getProjectByKey(Long currentUserId, String key) throws Exception { + public List getProjectByKey(Long currentUserId, String key) { return sysProjectDao.getProjectByKey(currentUserId, key); } @@ -521,7 +521,7 @@ public class ProjectService implements IProjectService { */ @Override public ProjectVo.ProjectInfo copyProject(Long userId, ProjectDto.ProjectIdDto projectDto) { - ProjectVo.ProjectInfo projectInfo = new ProjectVo.ProjectInfo(); +// ProjectVo.ProjectInfo projectInfo = new ProjectVo.ProjectInfo(); SysProject oldProject = sysProjectDao.selectByPrimaryKey(projectDto.getProjectId()); SysProject newProject = new SysProject(); @@ -542,8 +542,7 @@ public class ProjectService implements IProjectService { throw new BaseException(CodeEnum.NOT_PROJECT); } //返回参数 - projectInfo = getProjectInfoById(userId, newProject.getId()); -// projectInfo.setId(newProject.getId()); + // projectInfo.setId(newProject.getId()); // projectInfo.setName(newProject.getName()); // projectInfo.setAddress(newProject.getAddress()); // projectInfo.setBeginTime(newProject.getBeginTime()); @@ -553,7 +552,7 @@ public class ProjectService implements IProjectService { // projectInfo.setCreator(true); // } - return projectInfo; + return getProjectInfoById(userId, newProject.getId()); } /** @@ -795,7 +794,7 @@ public class ProjectService implements IProjectService { * 根据标签查找项目 * @param currentUserId userId * @param labelName 标签名 - * @return + * @return 返回根据标签查找出的所有项目 */ @Override public ProjectVo.ProjectAllDetailed selectByLabelName(Long currentUserId, String labelName,Integer pageSize ,Integer page) { @@ -818,7 +817,39 @@ public class ProjectService implements IProjectService { @Override public List selectRelevanceProject(Long currentUserId, Long projectId) { - List projectInfoList = sysProjectDao.selectRelevanceProject(projectId); - return projectInfoList; + return sysProjectDao.selectRelevanceProject(projectId); + } + + @Override + public ProjectVo.ProjectInfo updateProjectConfig(Long currentUserId, ProjectDto.ProjectConfig projectConfig) { + //检查项目id是否正确 + SysProject project = sysProjectDao.selectByPrimaryKey(projectConfig.getProjectId()); + if(ObjectUtil.isNull(project)){ + throw new BaseException(CodeEnum.NOT_PROJECT); + } + //查找项目配置 + ProShowExample proShowExample = new ProShowExample(); + proShowExample.createCriteria().andProjectIdEqualTo(projectConfig.getProjectId()); + List proShowList = proShowDao.selectByExample(proShowExample); + if(CollectionUtil.isEmpty(proShowList)){ + //没有则新加一条记录 + ProShow proShow = new ProShow(); + BeanUtil.copyProperties(projectConfig,proShow); + proShow.setId(snowflake.nextId()); + proShow.setProjectId(project.getId()); + if(ObjectUtil.isNotNull(projectConfig.getShowMvp())) { + proShow.setIsShowMvp(projectConfig.getShowMvp().byteValue()); + } + proShowDao.insertSelective(proShow); + }else { + //有则修改原来的配置信息 + ProShow proShow = proShowList.get(0); + BeanUtil.copyProperties(projectConfig,proShow); + if(ObjectUtil.isNotNull(projectConfig.getShowMvp())) { + proShow.setIsShowMvp(projectConfig.getShowMvp().byteValue()); + } + proShowDao.updateByPrimaryKeySelective(proShow); + } + return getProjectInfoById(currentUserId,projectConfig.getProjectId()); } } 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 5eaa1e82..b312f88f 100644 --- a/tall/src/main/java/com/ccsens/tall/web/ProjectController.java +++ b/tall/src/main/java/com/ccsens/tall/web/ProjectController.java @@ -210,7 +210,7 @@ public class ProjectController { @ApiOperation(value = "根据模板复制项目", notes = "") @ApiImplicitParams({ }) - @RequestMapping(value = "copy", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + @RequestMapping(value = "/copy", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public JsonResponse addProject(HttpServletRequest request, @Validated @RequestBody ProjectDto.ProjectIdDto projectDto) throws Exception { Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject()); @@ -221,7 +221,7 @@ public class ProjectController { @ApiOperation(value = "修改项目信息", notes = "") @ApiImplicitParams({ }) - @RequestMapping(value = "change", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + @RequestMapping(value = "/change", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public JsonResponse updateProject(HttpServletRequest request, @Validated @RequestBody ProjectDto.ProjectInfoDto projectInfoDto) throws Exception { Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject()); @@ -254,4 +254,16 @@ public class ProjectController { return JsonResponse.newInstance().ok(projectInfoList); } + + @ApiOperation(value = "修改项目配置信息", notes = "") + @ApiImplicitParams({ + }) + @RequestMapping(value = "/config", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse updateProjectConfig(HttpServletRequest request, + @Validated @RequestBody ProjectDto.ProjectConfig projectConfig) throws Exception { + Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject()); + ProjectVo.ProjectInfo projectInfo = projectService.updateProjectConfig(currentUserId,projectConfig); + return JsonResponse.newInstance().ok(projectInfo); + } + } diff --git a/tall/src/main/java/com/ccsens/tall/web/TaskController.java b/tall/src/main/java/com/ccsens/tall/web/TaskController.java index 06cf237e..69432e55 100644 --- a/tall/src/main/java/com/ccsens/tall/web/TaskController.java +++ b/tall/src/main/java/com/ccsens/tall/web/TaskController.java @@ -214,4 +214,17 @@ public class TaskController { TaskVo.TaskInfoWithFeign taskInfo= taskDetailService.getProjectIdByTaskId(taskId); return taskInfo; } + + + @ApiOperation(value = "修改任务配置信息",notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(name = "taskId", value = "任务id", required = true, paramType = "query") + }) + @RequestMapping(value = "config", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse updateTaskConfig(HttpServletRequest request, + @Validated @RequestBody TaskDto.UpdateTaskConfig updateTaskConfig) throws Exception { + Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject()); + TaskVo.NormalTask taskInfo = taskDetailService.updateTaskConfig(currentUserId,updateTaskConfig); + return JsonResponse.newInstance().ok(taskInfo); + } } diff --git a/tall/src/main/resources/application.yml b/tall/src/main/resources/application.yml index c88e995d..b2acd365 100644 --- a/tall/src/main/resources/application.yml +++ b/tall/src/main/resources/application.yml @@ -1,4 +1,4 @@ spring: profiles: - active: test - include: util-test,common + active: dev + include: util-dev,common diff --git a/tall/src/main/resources/mapper_dao/ProRoleDao.xml b/tall/src/main/resources/mapper_dao/ProRoleDao.xml index 3e2f1a57..57089ddc 100644 --- a/tall/src/main/resources/mapper_dao/ProRoleDao.xml +++ b/tall/src/main/resources/mapper_dao/ProRoleDao.xml @@ -75,7 +75,8 @@ pr.name not IN ('全体成员','观众') AND pr.rec_status = 0 - + AND (mr.rec_status = 0 or mr.rec_status is null) + AND (m.rec_status = 0 or m.rec_status is null) + SELECT + if(name = 'PM',1,0) + FROM + t_pro_role + WHERE + id in ( + SELECT + parent_id as parentId + FROM + `t_pro_role` + WHERE + id = #{roleId} + ) + \ No newline at end of file diff --git a/util/src/main/java/com/ccsens/util/CodeEnum.java b/util/src/main/java/com/ccsens/util/CodeEnum.java index c42252e0..e3469063 100644 --- a/util/src/main/java/com/ccsens/util/CodeEnum.java +++ b/util/src/main/java/com/ccsens/util/CodeEnum.java @@ -118,7 +118,7 @@ public enum CodeEnum { NOT_LABEL(100,"标签不存在,请检查后操作",true), REPEAT_LABEL(101,"标签已存在,请勿重复添加",true), - NICKNAME_REPEAT(102,"改名字已经存在,请换一个再试",true), + NICKNAME_REPEAT(102,"该名字已经存在,请换一个再试",true), NEW_PASSWORD_REPEAT_OLD(103,"新密码不能和旧密码相同",true), PASSWORD_ERROR(104,"密码错误",true), NOT_ACCOUNT(105,"未找到该账号",true), diff --git a/util/src/main/java/com/ccsens/util/WebConstant.java b/util/src/main/java/com/ccsens/util/WebConstant.java index 82ac379b..b4aceccd 100644 --- a/util/src/main/java/com/ccsens/util/WebConstant.java +++ b/util/src/main/java/com/ccsens/util/WebConstant.java @@ -196,6 +196,18 @@ public class WebConstant { this.phase = thePhase; } } + public enum ROLE_POWER { + NOT_POWER((byte) 0,"只能查看"), LOOK_POWER((byte) 1,"只能查看"), + OPERATION_POWER((byte) 2,"操作权限"),ADMIN_POWER((byte)3,"管理权限"),MAX_POWER((byte)4,"最高权限"); + + public byte value; + public String phase; + ROLE_POWER(byte value,String thePhase){ + this.value =value; + this.phase = thePhase; + } + } + public enum TASK_VIRTUAL { Normal(0,"普通任务"), Virtual(1,"虚拟任务"); public int value; @@ -243,6 +255,7 @@ public class WebConstant { } } + public enum CLIENT_TYPE { Wxmp(0,"微信小程序"), H5(1,"网页"),Android(2 ,"安卓客户端"),IOS(3,"苹果客户端"),