From ccd1594abe6397c8334c498e3ae330634b4f2f1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Mon, 23 Jan 2023 22:40:34 +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/XmGroupController.java | 10 +-- .../com/xm/core/ctrl/XmMenuController.java | 86 ++++++++++++------- .../xm/core/service/XmProductQxService.java | 7 -- .../xm/core/service/XmProjectQxService.java | 4 - 4 files changed, 58 insertions(+), 49 deletions(-) diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmGroupController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmGroupController.java index 89db6078..712fb2e7 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmGroupController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmGroupController.java @@ -406,20 +406,20 @@ public class XmGroupController { if(project==null){ return ResponseHelper.failed("project-0","项目已不存在"); } - Map projectAdmMap=xmGroupService.getProjectAdmUsers(project); - if(!projectAdmMap.containsKey(u.getUserid())) { + boolean isPm=xmGroupService.checkUserIsProjectAdm(project,u.getUserid()); + if(!isPm) { tips=projectQxService.checkProjectQx(null,project,0,u,groupDb.getLeaderUserid(),groupDb.getLeaderUsername(), null); if(!tips.isOk()){ return ResponseHelper.failed(tips); } } } else if("1".equals(groupDb.getPgClass()) && StringUtils.hasText(groupDb.getProductId())){ - XmProduct product = xmProductService.selectOneById(groupDb.getProductId()); + XmProduct product = xmProductService.getProductFromCache(groupDb.getProductId()); if(product==null){ return ResponseHelper.failed("product-0","产品已不存在"); } - Map productAdmUsers=xmGroupService.getProductAdmUsers(product); - if(!productAdmUsers.containsKey(u.getUserid())) { + boolean isPm=xmGroupService.checkUserIsProductAdm(product,u.getUserid()); + if(!isPm) { tips=productQxService.checkProductQx(null,product,0,u,groupDb.getLeaderUserid(),groupDb.getLeaderUsername(), null); if(!tips.isOk()){ return ResponseHelper.failed(tips); 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 3aa0804d..7db866b6 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 @@ -296,6 +296,12 @@ public class XmMenuController { if(!tips.isOk()){ return failed(tips); } + if(StringUtils.hasText(xmMenu.getMmUserid()) && !xmMenu.getMmUserid().equals(user.getUserid())){ + tips=productQxService.checkProductQx(null,xmProduct,2,user,xmMenu.getMmUserid(),xmMenu.getMmUsername(),null); + if(!tips.isOk()){ + return failed(tips); + } + } xmMenuService.parentIdPathsCalcBeforeSave(xmMenu); @@ -360,10 +366,13 @@ public class XmMenuController { if(xmProduct==null){ return ResponseHelper.failed("product-data-0","产品已不存在"); } - tips=productQxService.checkProductQx(null,xmProduct,2,user,xmMenuDb.getMmUserid(),xmMenuDb.getMmUsername(),null); - if(!tips.isOk()){ - return failed(tips); + if(!groupService.checkUserIsProductAdm(xmProduct, user.getUserid())){ + tips=productQxService.checkProductQx(null,xmProduct,2,user,xmMenuDb.getMmUserid(),xmMenuDb.getMmUsername(),null); + if(!tips.isOk()){ + return failed(tips); + } } + xmMenuService.deleteByPk(xmMenu); xmRecordService.addXmMenuRecord(xmMenuDb.getProductId(),xmMenu.getMenuId(),"删除产品需求","删除需求"+xmMenuDb.getMenuName(),"",JSON.toJSONString(xmMenu)); @@ -380,7 +389,7 @@ public class XmMenuController { } - /***/ + /** @ApiOperation( value = "根据主键修改一条项目菜单表信息",notes="editXmMenu") @ApiResponses({ @ApiResponse(code = 200,response=XmMenu.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") @@ -429,7 +438,7 @@ public class XmMenuController { m.put("tips", tips); return m; } - + */ /***/ @ApiOperation( value = "根据主键修改一条项目菜单表信息",notes="editXmMenu") @ApiResponses({ @@ -488,11 +497,7 @@ public class XmMenuController { String mmUserid= (String) xmMenuMap.get("mmUserid"); String mmUsername= (String) xmMenuMap.get("mmUsername"); if(!user.getUserid().equals(mmUserid)){ - tips=productQxService.checkProductScopeQx(groupsMap,xmProduct,2,user,mmUserid,mmUsername,null); - if(!tips.isOk()){ - return failed(tips); - } - tips=productQxService.checkProductTransmitQx(groupsMap,xmProduct,2,user,mmUserid,mmUsername); + tips=productQxService.checkProductQx(groupsMap,xmProduct,2,user,mmUserid,mmUsername,null); if(!tips.isOk()){ return failed(tips); } @@ -501,15 +506,20 @@ public class XmMenuController { List canOper=new ArrayList<>(); List noOper=new ArrayList<>(); Map noOperTips=new HashMap<>(); - for (XmMenu xm : xmMenusDb) { - tips=productQxService.checkProductQx(groupsMap,xmProduct,2,user,xm.getMmUserid(), xm.getMmUsername(), null); - if(tips.isOk()){ - canOper.add(xm); - }else{ - noOper.add(xm); - noOperTips.put(tips.getMsg(),tips); + if(groupService.checkUserIsProductAdm(xmProduct,user.getUserid())){ + canOper.addAll(xmMenusDb); + }else{ + for (XmMenu xm : xmMenusDb) { + tips=productQxService.checkProductQx(groupsMap,xmProduct,2,user,xm.getMmUserid(), xm.getMmUsername(), null); + if(tips.isOk()){ + canOper.add(xm); + }else{ + noOper.add(xm); + noOperTips.put(tips.getMsg(),tips); + } } } + if(canOper.size()>0){ xmMenuMap.put("ltime",new Date()); xmMenuMap.put("ids",canOper.stream().map(k->k.getMenuId()).collect(Collectors.toList())); @@ -590,16 +600,21 @@ public class XmMenuController { if(xmProduct==null){ return ResponseHelper.failed("product-data-0","产品已不存在"); } - for (XmMenu xm : xmMenusDb) { - tips=productQxService.checkProductQx(groupsMap,xmProduct,2,user,xm.getMmUserid(),xm.getMmUsername(),null); - if(tips.isOk()){ - canOper.add(xm); - }else{ - noOper.add(xm); - noOperTips.put(tips.getMsg(),tips); + if(groupService.checkUserIsProductAdm(xmProduct,user.getUserid())){ + canOper.addAll(xmMenusDb); + }else{ + for (XmMenu xm : xmMenusDb) { + tips=productQxService.checkProductQx(groupsMap,xmProduct,2,user,xm.getMmUserid(),xm.getMmUsername(),null); + if(tips.isOk()){ + canOper.add(xm); + }else{ + noOper.add(xm); + noOperTips.put(tips.getMsg(),tips); + } } } + if(canOper.size()>0){ for (XmMenu xmMenu : canOper) { boolean canDel=this.xmMenuService.checkCanDelAllChild(xmMenu,canOper); @@ -728,19 +743,24 @@ public class XmMenuController { if(xmProduct==null){ return ResponseHelper.failed("product-data-0","产品已不存在"); } - for (XmMenu xm : xmMenusDb) { - tips=productQxService.checkProductQx(groupsMap,xmProduct,2,user,xm.getMmUserid(),xm.getMmUsername(),null); - if(tips.isOk()){ - canOper.add(xm); - }else{ - if(xm.getMenuId().equals(parentDb.getMenuId())){ - return ResponseHelper.failed("pmenu-id-0",String.format("无权限挂接需求到【%s】,原因【%s】",xm.getMenuName(),tips.getMsg())); + if(groupService.checkUserIsProductAdm(xmProduct,user.getUserid())){ + canOper.addAll(xmMenusDb); + }else{ + for (XmMenu xm : xmMenusDb) { + tips=productQxService.checkProductQx(groupsMap,xmProduct,2,user,xm.getMmUserid(),xm.getMmUsername(),null); + if(tips.isOk()){ + canOper.add(xm); + }else{ + if(xm.getMenuId().equals(parentDb.getMenuId())){ + return ResponseHelper.failed("pmenu-id-0",String.format("无权限挂接需求到【%s】,原因【%s】",xm.getMenuName(),tips.getMsg())); + } + noOper.add(xm); + noOperTips.put(tips.getMsg(),tips); } - noOper.add(xm); - noOperTips.put(tips.getMsg(),tips); } } + xmMenusDb=canOper.stream().filter(i->!i.getMenuId().equals(parentDb.getMenuId())).collect(Collectors.toList()); List canOpxmMenus=xmMenusDb.stream().filter(i->!parentDb.getMenuId().equals(i.getPmenuId())).collect(Collectors.toList()); List sameParentMenus=xmMenusDb.stream().filter(i->parentDb.getMenuId().equals(i.getPmenuId())).collect(Collectors.toList()); diff --git a/xm-core/src/main/java/com/xm/core/service/XmProductQxService.java b/xm-core/src/main/java/com/xm/core/service/XmProductQxService.java index b31bdc22..0bb3a42d 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmProductQxService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmProductQxService.java @@ -72,10 +72,6 @@ public class XmProductQxService { */ public Tips checkProductQx(Map> groupsMap,XmProduct xmProduct,int teamType,User head,String memUserid,String memUsername,String memBranchId){ Tips tips=new Tips("成功"); - boolean headIsPm=xmGroupService.checkUserIsProductAdm(xmProduct,head.getUserid()); - if(headIsPm){ - return tips; - } tips=this.checkProductScopeQx(groupsMap,xmProduct,teamType,head,memUserid,memUsername,memBranchId); if(!tips.isOk()){ return tips; @@ -250,9 +246,6 @@ public class XmProductQxService { public Tips checkProductQxBatch(XmProduct xmProduct,int teamType,User head,String ...memUserids){ Tips tips=new Tips("成功"); - if(xmGroupService.checkUserIsProductAdm(xmProduct,head.getUserid())){ - return tips; - } Map> groupsMap=new HashMap<>(); tips=this.checkProductScopeQxBatch(groupsMap,xmProduct,teamType,head,memUserids); if(!tips.isOk()){ diff --git a/xm-core/src/main/java/com/xm/core/service/XmProjectQxService.java b/xm-core/src/main/java/com/xm/core/service/XmProjectQxService.java index 7d627748..f2e1d713 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmProjectQxService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmProjectQxService.java @@ -78,10 +78,6 @@ public class XmProjectQxService { */ public Tips checkProjectQx(Map> groupsMap,XmProject xmProject,int teamType,User head,String memUserid,String memUsername,String memBranchId){ Tips tips=new Tips("成功"); - boolean headIsPm=xmGroupService.checkUserIsProjectAdm(xmProject,head.getUserid()); - if(headIsPm){ - return tips; - } tips=this.checkProjectScopeQx(groupsMap,xmProject,teamType,head,memUserid,memUsername,memBranchId); if(!tips.isOk()){ return tips;