From d549ddc20dd60f0e46c936084aee99bed6107b20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sun, 22 Jan 2023 17:07:40 +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 | 139 ++++++++++++++++-- 1 file changed, 124 insertions(+), 15 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 7f0190a6..89db6078 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 @@ -13,10 +13,7 @@ import com.mdp.swagger.ApiEntityParams; import com.xm.core.entity.XmGroup; import com.xm.core.entity.XmProduct; import com.xm.core.entity.XmProject; -import com.xm.core.service.XmGroupService; -import com.xm.core.service.XmProductService; -import com.xm.core.service.XmProjectService; -import com.xm.core.service.XmRecordService; +import com.xm.core.service.*; import com.xm.core.service.cache.XmGroupCacheService; import com.xm.core.service.push.XmPushMsgService; import com.xm.core.vo.XmGroupVo; @@ -64,6 +61,13 @@ public class XmGroupController { @Autowired private XmProductService xmProductService; + + @Autowired + private XmProjectQxService projectQxService; + + + @Autowired + private XmProductQxService productQxService; @Autowired XmPushMsgService pushMsgService; @@ -98,6 +102,66 @@ public class XmGroupController { if(groupDb==null){ return ResponseHelper.failed("data-0","小组已不存在。"); } + if("0".equals(groupDb.getPgClass())){ + XmProject project=xmProjectService.getProjectFromCache(groupDb.getProjectId()); + boolean isPm=xmGroupService.checkUserIsProjectAdm(project, user.getUserid()); + if(!isPm){ + tips = projectQxService.checkProjectQx(project,0,user); + if(!tips.isOk()){ + return ResponseHelper.failed(tips); + } + } + if(StringUtils.hasText(group.getLeaderUserid()) && !group.getLeaderUserid().equals(groupDb.getLeaderUserid())){ + tips = projectQxService.checkProjectQx(null,project,0,user, groupDb.getLeaderUserid(),groupDb.getLeaderUsername(),null); + if(!tips.isOk()){ + return ResponseHelper.failed(tips); + } + tips=projectQxService.checkProjectScopeQx(null,project,0,group.getLeaderUserid(),group.getLeaderUsername(),null); + if(!tips.isOk()){ + return ResponseHelper.failed(tips); + } + } + if(StringUtils.hasText(group.getAssUserid()) && !group.getAssUserid().equals(groupDb.getAssUserid())){ + tips = projectQxService.checkProjectQx(null,project,0,user, groupDb.getAssUserid(),groupDb.getAssUsername(),null); + if(!tips.isOk()){ + return ResponseHelper.failed(tips); + } + tips=projectQxService.checkProjectScopeQx(null,project,0,group.getAssUserid(),group.getAssUsername(),null); + if(!tips.isOk()){ + return ResponseHelper.failed(tips); + } + } + }else { + XmProduct product=xmProductService.getProductFromCache(groupDb.getProductId()); + boolean isPm=xmGroupService.checkUserIsProductAdm(product, user.getUserid()); + if(!isPm){ + tips = productQxService.checkProductQx(product,0,user); + if(!tips.isOk()){ + return ResponseHelper.failed(tips); + } + } + if(StringUtils.hasText(group.getLeaderUserid()) && !group.getLeaderUserid().equals(groupDb.getLeaderUserid())){ + tips = productQxService.checkProductQx(null,product,0,user, groupDb.getLeaderUserid(),groupDb.getLeaderUsername(),null); + if(!tips.isOk()){ + return ResponseHelper.failed(tips); + } + tips=productQxService.checkProductScopeQx(null,product,0,group.getLeaderUserid(),group.getLeaderUsername(),null); + if(!tips.isOk()){ + return ResponseHelper.failed(tips); + } + } + if(StringUtils.hasText(group.getAssUserid()) && !group.getAssUserid().equals(groupDb.getAssUserid())){ + tips = productQxService.checkProductQx(null,product,0,user, groupDb.getAssUserid(),groupDb.getAssUsername(),null); + if(!tips.isOk()){ + return ResponseHelper.failed(tips); + } + tips=productQxService.checkProductScopeQx(null,product,0,group.getAssUserid(),group.getAssUsername(),null); + if(!tips.isOk()){ + return ResponseHelper.failed(tips); + } + } + } + xmGroupService.parentIdPathsCalcBeforeSave(group); tips= xmGroupService.updateGroup(group,groupDb); //列出XmProjectGroup列表 if("0".equals(groupDb.getPgClass())){ @@ -215,9 +279,9 @@ public class XmGroupController { if(!tips.isOk()){ return ResponseHelper.failed(tips); } - Map projectAdmMap=xmGroupService.getProjectAdmUsers(project); - if(!projectAdmMap.containsKey(u.getUserid())) { - return ResponseHelper.failed("not-project-adm","您不是项目管理人员,不能创建小组。项目级助理以上人员可以创建小组。"); + tips=checkProjectGroupQxForAdd(project,u,xmGroup); + if(!tips.isOk()){ + return ResponseHelper.failed(tips); } xmGroup.setProductId(null); @@ -234,11 +298,10 @@ public class XmGroupController { if(!tips.isOk()){ return ResponseHelper.failed(tips); } - Map productAdmUsers=xmGroupService.getProductAdmUsers(xmProduct); - if(!productAdmUsers.containsKey(u.getUserid())) { - return ResponseHelper.failed("not-product-adm","您不是产品管理人员,不能创建小组。产品级助理以上人员可以创建小组。"); + tips=checkProductGroupQxForAdd(xmProduct,u,xmGroup); + if(!tips.isOk()){ + return ResponseHelper.failed(tips); } - xmGroup.setBranchId(xmProduct.getBranchId()); }else{ return ResponseHelper.failed("pgClass-err","小组类型数值不正确"); @@ -281,6 +344,46 @@ public class XmGroupController { return m; } + + public Tips checkProductGroupQxForAdd(XmProduct xmProduct,User u,XmGroup xmGroup){ + Tips tips=new Tips(); + Map> groupsMap=new HashMap<>(); + tips=productQxService.checkProductQx(groupsMap,xmProduct,0,u); + if(!tips.isOk()){ + return tips; + } + if(StringUtils.hasText(xmGroup.getLeaderUserid()) && !xmGroup.getLeaderUserid().equals(u.getUserid())){ + tips=productQxService.checkProductScopeQx(groupsMap,xmProduct,0,xmGroup.getLeaderUserid(),xmGroup.getLeaderUsername(),null); + } + if(!tips.isOk()){ + return tips; + } + if(StringUtils.hasText(xmGroup.getAssUserid()) && !xmGroup.getAssUserid().equals(u.getUserid())){ + tips=productQxService.checkProductScopeQx(groupsMap,xmProduct,0,xmGroup.getAssUserid(),xmGroup.getAssUsername(),null); + } + return tips; + } + + + public Tips checkProjectGroupQxForAdd(XmProject project,User u,XmGroup xmGroup){ + Tips tips=new Tips(); + Map> groupsMap=new HashMap<>(); + tips=projectQxService.checkProjectQx(groupsMap,project,0,u); + if(!tips.isOk()){ + return tips; + } + if(StringUtils.hasText(xmGroup.getLeaderUserid()) && !xmGroup.getLeaderUserid().equals(u.getUserid())){ + tips=projectQxService.checkProjectScopeQx(groupsMap,project,0,xmGroup.getLeaderUserid(),xmGroup.getLeaderUsername(),null); + } + if(!tips.isOk()){ + return tips; + } + if(StringUtils.hasText(xmGroup.getAssUserid()) && !xmGroup.getAssUserid().equals(u.getUserid())){ + tips=projectQxService.checkProjectScopeQx(groupsMap,project,0,xmGroup.getAssUserid(),xmGroup.getAssUsername(),null); + } + return tips; + } + @ApiOperation( value = "删除一条xm_group信息",notes="delXmProjectGroup,仅需要上传主键字段") @ApiResponses({ @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}") @@ -305,8 +408,11 @@ public class XmGroupController { } Map projectAdmMap=xmGroupService.getProjectAdmUsers(project); if(!projectAdmMap.containsKey(u.getUserid())) { - return ResponseHelper.failed("not-project-adm","您不是项目管理人员,不能删除小组。项目级助理以上人员可以删除小组。"); - } + 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()); if(product==null){ @@ -314,8 +420,11 @@ public class XmGroupController { } Map productAdmUsers=xmGroupService.getProductAdmUsers(product); if(!productAdmUsers.containsKey(u.getUserid())) { - return ResponseHelper.failed("not-product-adm","您不是产品管理人员,不能删除小组。产品级助理以上人员可以删除小组。"); - } + tips=productQxService.checkProductQx(null,product,0,u,groupDb.getLeaderUserid(),groupDb.getLeaderUsername(), null); + if(!tips.isOk()){ + return ResponseHelper.failed(tips); + } + } } XmGroup childrenGroupQuery=new XmGroup(); childrenGroupQuery.setPgroupId(xmGroup.getId());