diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java index 655e8ff3..3c028995 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java @@ -333,13 +333,16 @@ public class XmTaskController { if(xmTasksDb==null ||xmTasksDb.size()==0){ return ResponseHelper.failed("tasks-0","该任务已不存在"); } + Map projectMap=new HashMap<>(); if(xmTaskMap.containsKey("createUserid")){ String createUserid=(String) xmTaskMap.get("createUserid"); - String createUsername=(String) xmTaskMap.get("createUsername"); Set projects=xmTasksDb.stream().map(i->i.getProjectId()).collect(Collectors.toSet()); for (String project : projects) { - if(!groupService.checkUserExistsProjectGroup(project,createUserid)){ - return ResponseHelper.failed("no-qx-0","【"+createUsername+"】不在项目团队中,请先将其拉入项目团队再操作。"); + XmProject xmProject=xmProjectService.getProjectFromCache(project); + projectMap.put(xmProject.getId(),xmProject); + Tips tips1=groupService.checkProjectQx(xmProject,user,createUserid); + if(!tips1.isOk()){ + return ResponseHelper.failed(tips1); }; } @@ -348,13 +351,12 @@ public class XmTaskController { List can=new ArrayList<>(); List no=new ArrayList<>(); for (XmTask xmTaskDb : xmTasksDb) { - if(StringUtils.hasText(xmTaskDb.getCreateUserid())){ - tips=groupService.checkIsProjectAdmOrTeamHeadOrAss(user,xmTaskDb.getCreateUserid(),xmTaskDb.getProjectId()); + XmProject xmProject=projectMap.get(xmTaskDb.getProjectId()); + if(projectMap.containsKey(xmProject.getId())){ + xmProject=xmProjectService.getProjectFromCache(xmProject.getId()); + projectMap.put(xmProject.getId(),xmProject); } - if(!tips.isOk() && StringUtils.hasText(xmTaskDb.getExecutorUserid())){ - tips=groupService.checkIsProjectAdmOrTeamHeadOrAss(user,xmTaskDb.getExecutorUserid(),xmTaskDb.getProjectId()); - } - + tips=groupService.checkProjectQx(xmProject,user,xmTaskDb.getCreateUserid(),xmTaskDb.getExecutorUserid()); if(!tips.isOk()){ no.add(xmTaskDb); }else{ @@ -365,7 +367,7 @@ public class XmTaskController { if(can.size()>0 && fieldKey.contains("budgetAt")){ XmTask taskDb=can.get(0); - XmProject xmProject=xmProjectService.getProjectFromCache(taskDb.getProjectId()); + XmProject xmProject=projectMap.get(taskDb.getProjectId()); BigDecimal budgetAt=NumberUtil.getBigDecimal(xmTaskMap.get("budgetAt"),BigDecimal.ZERO); if(xmProject.getMaxTaskAmt()!=null && xmProject.getMaxTaskAmt().compareTo(BigDecimal.ZERO)>0){ if(budgetAt.compareTo(xmProject.getMaxTaskAmt())>0){ @@ -564,9 +566,7 @@ public class XmTaskController { XmProject xmProject=xmProjectService.getProjectFromCache(xmTaskVo.getProjectId()); Tips tips1=groupService.checkProjectQx(xmProject,user,xmTaskVo.getCreateUserid()); if(!tips1.isOk()){ - if(!tips1.isOk()){ - return ResponseHelper.failed(tips1); - } + return ResponseHelper.failed(tips1); } @@ -709,14 +709,9 @@ public class XmTaskController { return ResponseHelper.failed("existsExecuser","有待验收、待结算的执行人,不能删除"); }; XmProject xmProject=xmProjectService.getProjectFromCache(xmTaskDb.getProjectId()); - Tips tips1=groupService.checkProjectQx(xmProject,user,xmTaskDb.getCreateUserid()); + Tips tips1=groupService.checkProjectQx(xmProject,user,xmTaskDb.getCreateUserid(),xmTaskDb.getExecutorUserid()); if(!tips1.isOk()){ - if(StringUtils.hasText(xmTaskDb.getExecutorUserid()) && !user.getUserid().equals(xmTaskDb.getCreateUserid()) && !xmTaskDb.getCreateUserid().equals(xmTaskDb.getExecutorUserid())){ - tips1=groupService.checkProjectQx(xmProject,user,xmTaskDb.getExecutorUserid()); - } - if(!tips1.isOk()){ - return ResponseHelper.failed(tips1); - } + return ResponseHelper.failed(tips1); } xmTaskService.deleteTask(xmTaskDb); @@ -758,14 +753,9 @@ public class XmTaskController { XmProject xmProject=xmProjectService.getProjectFromCache(xmTaskDb.getProjectId()); - Tips tips1=groupService.checkProjectQx(xmProject,user,xmTaskDb.getCreateUserid()); + Tips tips1=groupService.checkProjectQx(xmProject,user,xmTaskDb.getCreateUserid(),xmTaskDb.getExecutorUserid()); if(!tips1.isOk()){ - if(StringUtils.hasText(xmTaskDb.getExecutorUserid()) && !user.getUserid().equals(xmTaskDb.getCreateUserid()) && !xmTaskDb.getCreateUserid().equals(xmTaskDb.getExecutorUserid())){ - tips1=groupService.checkProjectQx(xmProject,user,xmTaskDb.getExecutorUserid()); - } - if(!tips1.isOk()){ - return ResponseHelper.failed(tips1); - } + return ResponseHelper.failed(tips1); } @@ -818,14 +808,9 @@ public class XmTaskController { } XmProject xmProject=xmProjectService.getProjectFromCache(xmTaskDb.getProjectId()); - Tips tips1=groupService.checkProjectQx(xmProject,user,xmTaskDb.getCreateUserid()); + Tips tips1=groupService.checkProjectQx(xmProject,user,xmTaskDb.getCreateUserid(),xmTaskDb.getExecutorUserid()); if(!tips1.isOk()){ - if(StringUtils.hasText(xmTaskDb.getExecutorUserid()) && !user.getUserid().equals(xmTaskDb.getCreateUserid()) && !xmTaskDb.getCreateUserid().equals(xmTaskDb.getExecutorUserid())){ - tips1=groupService.checkProjectQx(xmProject,user,xmTaskDb.getExecutorUserid()); - } - if(!tips1.isOk()){ - return ResponseHelper.failed(tips1); - } + return ResponseHelper.failed(tips1); } this.xmTaskService.parentIdPathsCalcBeforeSave(xmTaskVo); @@ -876,14 +861,9 @@ public class XmTaskController { return ResponseHelper.failed("data-0","任务已不存在"); } XmProject xmProject=xmProjectService.getProjectFromCache(xmTaskDb.getProjectId()); - Tips tips1=groupService.checkProjectQx(xmProject,user,xmTaskDb.getCreateUserid()); + Tips tips1=groupService.checkProjectQx(xmProject,user,xmTaskDb.getCreateUserid(),xmTaskDb.getExecutorUserid()); if(!tips1.isOk()){ - if(StringUtils.hasText(xmTaskDb.getExecutorUserid()) && !user.getUserid().equals(xmTaskDb.getCreateUserid()) && !xmTaskDb.getCreateUserid().equals(xmTaskDb.getExecutorUserid())){ - tips1=groupService.checkProjectQx(xmProject,user,xmTaskDb.getExecutorUserid()); - } - if(!tips1.isOk()){ - return ResponseHelper.failed(tips1); - } + return ResponseHelper.failed(tips1); } xmTaskService.updateTime(xmTask,xmTaskDb); @@ -1256,14 +1236,9 @@ public class XmTaskController { noAllowTasks.addAll(pt.getValue()); }else{ for (XmTask xmTask : pt.getValue()) { - if(!user.getUserid().equals(xmTask.getCreateUserid()) && !user.getUserid().equals(xmTask.getExecutorUserid())){ - tips1=groupService.checkProjectQx(xmProjectDb,user, xmTask.getCreateUserid()); - if(!tips1.isOk()){ - tips1=groupService.checkProjectQx(xmProjectDb,user, xmTask.getExecutorUserid()); - if(!tips1.isOk()){ - noAllowTasks.add(xmTask); - } - } + tips1=groupService.checkProjectQx(xmProjectDb,user, xmTask.getCreateUserid(),xmTask.getExecutorUserid()); + if(!tips1.isOk()){ + noAllowTasks.add(xmTask); } } } @@ -1347,15 +1322,10 @@ public class XmTaskController { if(!projectId.equals(node.getProjectId()) ){ return ResponseHelper.failed("not-same-project","所有任务必须同属于一个项目"); } - Tips tips1=groupService.checkProjectQx(xmProject,user,node.getCreateUserid()); + Tips tips1=groupService.checkProjectQx(xmProject,user,node.getCreateUserid(),node.getExecutorUserid()); if(!tips1.isOk()){ - tips1=groupService.checkProjectQx(xmProject,user,node.getExecutorUserid()); - if(!tips1.isOk()){ - noAllowNodes.add(node); - }else { - noAllowNodes.add(node); - } + noAllowNodes.add(node); }else { allowDelNodes.add(node); } diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskExecuserController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskExecuserController.java index 728ee0be..d121d696 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskExecuserController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskExecuserController.java @@ -177,35 +177,16 @@ public class XmTaskExecuserController { m.put("tips", tips); return m; } - boolean isBranch=false; if(!xmTaskExecuser.getUserid().equals(user.getUserid())){ User userDb=sysClient.getUserByUserid(xmTaskExecuser.getUserid()); if(userDb==null){ return ResponseHelper.failed("userid-0","候选人不存在"); } - isBranch=!"0".equals(userDb.getMemType()); xmTaskExecuser.setExecUserBranchId(userDb.getBranchId()); }else{ - isBranch=!"0".equals(user.getMemType()); xmTaskExecuser.setExecUserBranchId(user.getBranchId()); } - boolean isPm=groupService.checkUserIsProjectAdm(xmTaskDb.getProjectId(),user.getUserid()); - boolean isTeamHeader=false; - List myGgroups=groupService.getProjectGroupVoList(projectId); - if(!isPm){ - isTeamHeader= groupService.checkUserIsOtherUserTeamHeadOrAss(myGgroups,user.getUserid(),xmTaskDb.getCreateUserid()); - } - if(!user.getUserid().equals(xmTaskExecuser.getUserid()) ){//只有上级可以拉人 - if(!isPm && !isTeamHeader){ - return ResponseHelper.failed("no-qx","您无权操作!只有任务负责人、组长、项目管理者可以给任务分配候选人。"); - } - }else{ - if(!"1".equals(xmTaskDb.getCrowd())){//如果是众包任务,自己可以直接加入,如果不是众包任务,必须任务负责人、组长、经理等拉人作为执行人 - if(!isPm && !isTeamHeader){ - return ResponseHelper.failed("no-qx","您无权操作!只有任务负责人、组长、项目管理者可以给任务分配执行人。"); - } - } - } + if("1".equals(xmTaskDb.getCrowd())){ Map result=sysClient.checkUserInterests(xmTaskExecuser.getUserid(),xmTaskDb.getBudgetAt(),xmTaskDb.getBudgetWorkload(),1); @@ -223,11 +204,10 @@ public class XmTaskExecuserController { xmTaskExecuser.setStatus("0"); //如果是众包,智能添加为候选人 }else { //如果不是众包,需要判断是否已加入项目组组织架构中,如未加入,需要提示其先加入 - boolean exists=groupService.checkUserExistsGroup(myGgroups, xmTaskExecuser.getUserid()); - if(!exists) { - tips.setFailureMsg(xmTaskExecuser.getUsername()+"不在项目组织架构中,请先将其拉入项目组织架构中"); - return ResponseHelper.failed("user-not-in-project",xmTaskExecuser.getUsername()+"不在项目组织架构中,请先将其拉入项目组织架构中"); - } + tips=groupService.checkProjectQx(xmProjectDb,user,xmTaskExecuser.getUserid()); + if(!tips.isOk()){ + return ResponseHelper.failed(tips); + }; //检查是否已经存在执行人 XmTaskExecuser query=new XmTaskExecuser(); query.setTaskId(xmTaskDb.getId()); @@ -288,12 +268,9 @@ public class XmTaskExecuserController { m.put("tips", tips); return m; } - boolean isTaskCreater=user.getUserid().equals(xmTask.getCreateUserid()); - boolean isExe=user.getUserid().equals(xmTask.getExecutorUserid()); List noAllowUsers=new ArrayList<>(); List allowUsers=new ArrayList<>(); List allowUserNames=new ArrayList<>(); - boolean isPm=groupService.checkUserIsProjectAdm(xmTask.getProjectId(),user.getUserid()); for (XmTaskExecuser xmTaskExecuser : xmTaskExecuserListDb) { if(!taskId.equals(xmTaskExecuser.getTaskId())){ @@ -301,16 +278,13 @@ public class XmTaskExecuserController { break; } if(!user.getUserid().equals(xmTaskExecuser.getUserid())) {//只有组长、任务责任人可以请别人请离开任务 - if(isTaskCreater||isExe||isPm){ - allowUsers.add(xmTaskExecuser); - allowUserNames.add(xmTaskExecuser.getUsername()); - }else{ - Tips tips2=groupService.checkIsProjectAdmOrTeamHeadOrAss(user,xmTaskExecuser.getUserid(),xmTask.getProjectId()); - if(tips2.isOk()==false){ - noAllowUsers.add(xmTaskExecuser.getUsername()); - continue; - } - } + tips=groupService.checkProjectQx(xmProjectService.getProjectFromCache(xmTask.getProjectId()), user,xmTaskExecuser.getUserid()); + if(!tips.isOk()){ + return ResponseHelper.failed(tips); + }; + allowUsers.add(xmTaskExecuser); + allowUserNames.add(xmTaskExecuser.getUsername()); + }else {//自己离开任务,可以的 allowUsers.add(xmTaskExecuser); allowUserNames.add(xmTaskExecuser.getUsername()); @@ -375,20 +349,9 @@ public class XmTaskExecuserController { User user=LoginUtils.getCurrentUserInfo(); String projectId=xmTask.getProjectId(); - boolean isTaskCreater=user.getUserid().equals(xmTask.getCreateUserid()); - List pgroups=groupService.getProjectGroupVoList(projectId); - boolean isHead= groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups, user.getUserid(), xmTaskExecuser.getUserid()); - if( isHead || isTaskCreater ) { - //放行,组长和任务责任人可以将候选人变更为执行人 - } else{ - if(user.getUserid().equals(xmTaskExecuser.getUserid())){ - tips.setFailureMsg("您无权将自己变更为执行人"); - }else { - tips.setFailureMsg("权限不足!任务责任人、组长可以变更候选人为执行人"); - } - } + tips=groupService.checkProjectQx(xmProjectService.getProjectFromCache(projectId),user,xmTask.getCreateUserid() ); if(tips.isOk()) { - + List pgroups=groupService.getProjectGroupVoList(projectId); boolean exists=groupService.checkUserExistsGroup(pgroups, xmTaskExecuser.getUserid()); //如果还未加入项目组,自动加入项目组 if(!exists) { @@ -475,15 +438,19 @@ public class XmTaskExecuserController { User user=LoginUtils.getCurrentUserInfo(); String projectId=xmTaskDb.getProjectId(); - boolean isTaskCreater=user.getUserid().equals(xmTaskDb.getCreateUserid()); - boolean isPm=groupService.checkUserIsProjectAdm(projectId,user.getUserid()); - if( !isTaskCreater && !isPm ) { - tips.setFailureMsg("您无权验收该任务!"); + tips=groupService.checkProjectQx(xmProjectService.getProjectFromCache(projectId),user,xmTaskDb.getCreateUserid(),xmTaskDb.getExecutorUserid() ); + if(!tips.isOk()){ return ResponseHelper.failed(tips); } boolean needPay=false; if("1".equals(xmTaskDb.getCrowd())){ + boolean isTaskCreater=user.getUserid().equals(xmTaskDb.getCreateUserid()); + Tips tips1=groupService.checkIsProjectAdmOrTeamHeadOrAss(user,xmTaskDb.getExecutorUserid(),projectId); + if( !isTaskCreater && !tips1.isOk() ) { + tips.setFailureMsg("您无权验收该任务!"); + return ResponseHelper.failed(tips); + } if("2".equals(xmTaskDb.getEstate()) && xmTaskDb.getEfunds()!=null && xmTaskDb.getEfunds().compareTo(BigDecimal.ZERO)>0){ needPay=true; } @@ -558,14 +525,9 @@ public class XmTaskExecuserController { return ResponseHelper.failed("estate-not-0-1-3","当前任务已缴纳保证金,无法再变更报价信息。"); } User user=LoginUtils.getCurrentUserInfo(); - boolean isTaskCreater=user.getUserid().equals(xmTask.getCreateUserid()); - String projectId=xmTaskExecuser.getProjectId(); + String projectId=xmTaskExecuser.getProjectId(); if(!user.getUserid().equals(xmTaskExecuser.getUserid())) { - List pgroups=groupService.getProjectGroupVoList(projectId); - boolean isHead= groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups, user.getUserid(), xmTaskExecuser.getUserid()); - if( !isHead && !isTaskCreater ) { - tips.setFailureMsg("无权操作!自己、任务责任人、组长可以修改任务的报价信息"); - } + tips=groupService.checkProjectQx(xmProjectService.getProjectFromCache(projectId),user,xmTaskExecuser.getUserid() ); } if(tips.isOk()) { XmTaskExecuser xmTaskExecuserDb = xmTaskExecuserService.selectOneObject(new XmTaskExecuser(xmTaskExecuser.getTaskId(),xmTaskExecuser.getUserid())); @@ -613,15 +575,9 @@ public class XmTaskExecuserController { return m; } User user=LoginUtils.getCurrentUserInfo(); - boolean isTaskCreater=user.getUserid().equals(xmTask.getCreateUserid()); - String projectId=xmTaskExecuser.getProjectId(); + String projectId=xmTaskExecuser.getProjectId(); if(!user.getUserid().equals(xmTaskExecuser.getUserid())) { - List pgroups=groupService.getProjectGroupVoList(projectId); - - boolean isHead= groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups, user.getUserid(), xmTaskExecuser.getUserid()); - if( !isHead && !isTaskCreater ) { - tips.setFailureMsg("无权操作!任务责任人、组长可以邀请用户成为任务候选人,普通用户可以自己申请成为候选人"); - } + tips=groupService.checkProjectQx(xmProjectService.getProjectFromCache(projectId),user,xmTaskExecuser.getUserid()); } if(tips.isOk()) { xmTaskExecuserService.becomeCandidate(xmTaskExecuser); @@ -661,14 +617,9 @@ public class XmTaskExecuserController { return m; } User user=LoginUtils.getCurrentUserInfo(); - boolean isTaskCreater=user.getUserid().equals(xmTask.getCreateUserid()); String projectId=xmTaskExecuser.getProjectId(); if(!user.getUserid().equals(xmTaskExecuser.getUserid())) { - List pgroups=groupService.getProjectGroupVoList(projectId); - boolean isHead= groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups, user.getUserid(), xmTaskExecuser.getUserid()); - if( !isHead && !isTaskCreater ) { - tips.setFailureMsg("无权操作!只有自己、任务责任人、组长可以删除任务执行人."); - } + tips=groupService.checkProjectQx(xmProjectService.getProjectFromCache(projectId),user,xmTaskExecuser.getUserid() ); } if(tips.isOk()) { XmTaskExecuser xmTaskExecuserDb = xmTaskExecuserService.selectOneObject(new XmTaskExecuser(xmTaskExecuser.getTaskId(),xmTaskExecuser.getUserid())); diff --git a/xm-core/src/main/java/com/xm/core/service/XmGroupService.java b/xm-core/src/main/java/com/xm/core/service/XmGroupService.java index 7994ee56..769defc9 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmGroupService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmGroupService.java @@ -160,7 +160,7 @@ public class XmGroupService extends BaseService { return this.checkProjectTransmitQx(xmProject,head.getUserid(),head.getUserid()); } public Tips checkProjectQx(XmProject xmProject,User head,String ...memUserids){ - Tips tips=new Tips(); + Tips tips=new Tips("成功"); tips=this.checkProjectScopeQx(xmProject,head,memUserids); if(!tips.isOk()){ return tips;