From 680f25b9d635b64ca640e9468d2941ba520f1bfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sat, 21 Jan 2023 13:14:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=A2=E9=98=9F=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xm/core/ctrl/XmMenuController.java | 10 ++-- .../xm/core/ctrl/XmQuestionController.java | 14 ++++++ .../com/xm/core/service/XmGroupService.java | 48 +++++++++++++++++++ 3 files changed, 69 insertions(+), 3 deletions(-) diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java index b047560b..a3f40959 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java @@ -478,7 +478,7 @@ public class XmMenuController { return ResponseHelper.failed("product-data-0","产品已不存在"); } Map> groupsMap=new HashMap<>(); - tips=groupService.checkProductQx(groupsMap,xmProduct,1,user); + tips=groupService.checkProductQx(groupsMap,xmProduct,0,user); if(!tips.isOk()){ return failed(tips); } @@ -486,7 +486,11 @@ public class XmMenuController { String mmUserid= (String) xmMenuMap.get("mmUserid"); String mmUsername= (String) xmMenuMap.get("mmUsername"); if(!user.getUserid().equals(mmUserid)){ - tips=groupService.checkProductQx(groupsMap,xmProduct,1,user,mmUserid); + tips=groupService.checkProductScopeQx(groupsMap,xmProduct,0,user,mmUserid,mmUsername,null); + if(!tips.isOk()){ + return failed(tips); + } + tips=groupService.checkProductTransmitQx(groupsMap,xmProduct,0,user,mmUserid,mmUsername); if(!tips.isOk()){ return failed(tips); } @@ -496,7 +500,7 @@ public class XmMenuController { List noOper=new ArrayList<>(); Map noOperTips=new HashMap<>(); for (XmMenu xm : xmMenusDb) { - tips=groupService.checkProductQx(groupsMap,xmProduct,1,user,xm.getMmUserid()); + tips=groupService.checkProductQx(groupsMap,xmProduct,0,user,xm.getMmUserid()); if(tips.isOk()){ canOper.add(xm); }else{ diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmQuestionController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmQuestionController.java index c994dcd1..1164e635 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmQuestionController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmQuestionController.java @@ -334,6 +334,20 @@ public class XmQuestionController { return ResponseHelper.failed(fieldName+"-no-edit",fieldName+"不允许修改"); } } + if(xmQuestionMap.containsKey("handlerUserid")){ + String handlerUserid= (String) xmQuestionMap.get("handlerUserid"); + String handlerUsername= (String) xmQuestionMap.get("handlerUsername"); + XmQuestion xmQuedb=canOper.get(0); + Tips tips1=groupService.checkProductScopeQx(null,productService.getProductFromCache(xmQuedb.getProductId()),1,handlerUserid,handlerUsername,null); + if(!tips1.isOk()){ + if(StringUtils.hasText(xmQuedb.getProjectId())){ + tips1=groupService.checkProjectScopeQx(projectService.getProjectFromCache(xmQuedb.getProjectId()),handlerUserid,handlerUsername,null); + } + if(!tips1.isOk()){ + return failed(tips1); + } + } + } xmQuestionService.editSomeFields(xmQuestionMap); String remarks= (String) xmQuestionMap.get("remarks"); String description= (String) xmQuestionMap.get("description"); 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 bb1807a1..5eccbf98 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 @@ -173,6 +173,9 @@ public class XmGroupService extends BaseService { } public Tips checkProductQx(XmProduct xmProduct,int teamType,User head,String ...memUserids){ Tips tips=new Tips("成功"); + if(checkUserIsProductAdm(xmProduct,head.getUserid())){ + return tips; + } Map> groupsMap=new HashMap<>(); tips=this.checkProductScopeQx(groupsMap,xmProduct,teamType,head,memUserids); if(!tips.isOk()){ @@ -200,6 +203,26 @@ public class XmGroupService extends BaseService { } return this.checkProductTransmitQx(groupsMap,xmProduct,teamType,head.getUserid(),head.getUserid()); } + /** + * + * @param groupsMap 产品组缓存数据,当需要循环执行时,避免多次查询缓存与数据库 + * @param xmProduct + * @param teamType 0-需求人员 1-测试人员,2-迭代人员 + * @param head + * @return + */ + public Tips checkProductQx(Map> groupsMap,XmProduct xmProduct,int teamType,User head,String userid,String username,String branchId){ + Tips tips=new Tips("成功"); + boolean headIsPm=this.checkUserIsProductAdm(xmProduct,head.getUserid()); + if(headIsPm){ + return tips; + } + tips=this.checkProductScopeQx(groupsMap,xmProduct,teamType,userid,username,branchId); + if(!tips.isOk()){ + return tips; + } + return this.checkProductTransmitQx(groupsMap,xmProduct,teamType,head.getUserid(),head.getUserid()); + } public Tips checkProductQx(Map> groupsMap,XmProduct xmProduct,int teamType,User head,String ...memUserids){ Tips tips=new Tips("成功"); tips=this.checkProductScopeQx(groupsMap,xmProduct,teamType,head,memUserids); @@ -367,6 +390,27 @@ public class XmGroupService extends BaseService { return groupVoList; } + public Tips checkProductTransmitQx(Map> groupsMap,XmProduct xmProduct,int teamType,User head,String memUserid,String memUsername){ + Tips tips=new Tips("成功"); + String transmitQx= QxTool.getProductTransmitQx(xmProduct.getQxCode(),teamType); + if("0".equals(transmitQx)){//不检查上下级关系 + return tips; + }else if("1".equals(transmitQx)){//检查上下级关系 + if(StringUtils.isEmpty(memUserid)||head.getUserid().equals(memUserid)){ + return tips; + } + + List groups=getProductGroupsFromLocalCache(groupsMap,xmProduct.getId()); + if(this.checkUserIsOtherUserTeamHeadOrAss(groups, head.getUserid(), memUserid)){ + return tips; + } + tips.setFailureMsg("pdqx-transmit-0", + String.format("产品【%s】开启了上下级关系检查,您当前账户【%s】不属于账户【%s】的上级,无权操作。",xmProduct.getId(),head.getUsername(),memUsername)); + + + } + return tips; + } public Tips checkProductTransmitQx(Map> groupsMap,XmProduct xmProduct,int teamType,String headUserid,String ...memUserids){ Tips tips=new Tips("成功"); String transmitQx= QxTool.getProductTransmitQx(xmProduct.getQxCode(),teamType); @@ -414,6 +458,10 @@ public class XmGroupService extends BaseService { } public Tips checkProjectQx(XmProject xmProject,User head,String ...memUserids){ Tips tips=new Tips("成功"); + boolean headIsPm=this.checkUserIsProjectAdm(xmProject,head.getUserid()); + if(headIsPm){ + return tips; + } tips=this.checkProjectScopeQx(xmProject,head,memUserids); if(!tips.isOk()){ return tips;