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 f0c029e5..381b1fa4 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 @@ -17,4 +17,13 @@ public interface ProRoleDao extends ProRoleMapper { */ Long findRoleOfProjectId(@Param("roleId") Long roleId); + /** + * 查看当前用户所属角色的标签等级(权限) + */ + Integer isPmByUserId(@Param("userId")Long userId, @Param("projectId")Long projectId); + + /** + * 查看当前用户是否是任务的负责人 + */ + Integer isExecutorByUserId(@Param("userId")Long userId, @Param("taskDetailId")Long taskDetailId); } 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 index 481672d0..8d4e086f 100644 --- a/common/src/main/java/com/ccsens/common/persist/dao/ProTaskDetailDao.java +++ b/common/src/main/java/com/ccsens/common/persist/dao/ProTaskDetailDao.java @@ -53,4 +53,9 @@ public interface ProTaskDetailDao extends ProTaskDetailMapper { */ List continueQueryTask(@Param("roleId") Long roleId,@Param("timeUnit") int timeUnit,@Param("timeNode") Long timeNode ,@Param("queryType") int queryType,@Param("query") String query,@Param("timeFormat") String timeFormat); + + /** + * 根据任务详情id查找项目id + */ + Long projectIdByTaskDetailId(@Param("taskDetailId") Long taskDetailId); } diff --git a/common/src/main/java/com/ccsens/common/service/TaskService.java b/common/src/main/java/com/ccsens/common/service/TaskService.java index c12331f2..b8489cb0 100644 --- a/common/src/main/java/com/ccsens/common/service/TaskService.java +++ b/common/src/main/java/com/ccsens/common/service/TaskService.java @@ -4,6 +4,7 @@ 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.po.ProTaskDetail; import com.ccsens.common.bean.po.ProTaskSub; import com.ccsens.common.bean.vo.TaskVo; import com.ccsens.common.persist.dao.*; @@ -202,7 +203,18 @@ public class TaskService implements ITaskService{ if(ObjectUtil.isNull(proTaskSub)){ throw new BaseException(CommonCodeError.NOT_TASK); } + //根据任务查找项目id + Long projectId = taskDetailDao.projectIdByTaskDetailId(proTaskSub.getTaskDetailId()); + if(ObjectUtil.isNull(projectId)){ + throw new BaseException(CommonCodeError.NOT_TASK); + } //验证当前成员的权限(是该任务的负责人,或是项目经理,可以修改) + Integer pm = roleDao.isPmByUserId(userId,projectId); + //验证是否是任务负责人 + Integer executor = roleDao.isExecutorByUserId(userId,proTaskSub.getTaskDetailId()); + if(pm < 2 && executor == 0){ + throw new BaseException(CommonCodeError.NOT_TASK); + } //根据状态修改信息 //开始 添加操作记录 修改任务的状态为进行中,实际开始时间为当前时间,实际时长清空 //暂停 判断任务是否是进行中, 修改任务的状态为暂停,计算实际时长 添加操作记录 diff --git a/common/src/main/resources/mapper_dao/ProRoleDao.xml b/common/src/main/resources/mapper_dao/ProRoleDao.xml index f43ed0e8..ba281a89 100644 --- a/common/src/main/resources/mapper_dao/ProRoleDao.xml +++ b/common/src/main/resources/mapper_dao/ProRoleDao.xml @@ -22,5 +22,38 @@ rec_status = 0 AND id = #{roleId} + + \ 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 index 02826fee..1d7bcfda 100644 --- a/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml +++ b/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml @@ -271,5 +271,26 @@ AND llbb.business_type = 0 AND ll.`level` >= #{timeUnit} + \ No newline at end of file