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 3455861b..eb4f9623 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 @@ -7,7 +7,6 @@ import com.mdp.core.service.BaseService; import com.mdp.mybatis.PageUtils; import com.mdp.safe.client.entity.User; import com.mdp.safe.client.utils.LoginUtils; -import com.xm.core.QxTool; import com.xm.core.entity.*; import com.xm.core.service.cache.XmGroupCacheService; import com.xm.core.service.client.SysClient; @@ -151,206 +150,6 @@ public class XmGroupService extends BaseService { } - List getProjectGroupsFromLocalCache(Map> groupsMap,String projectId){ - List groupVoList=null; - if(groupsMap!=null && groupsMap.containsKey(projectId)){ - groupVoList=groupsMap.get(projectId); - }else{ - groupVoList=xmGroupService.getProjectGroupVoList(projectId); - if(groupsMap!=null){ - groupsMap.put(projectId,groupVoList); - } - } - return groupVoList; - } - /** - * - * @param xmProject - * @param head - * @return - */ - public Tips checkProjectQx(XmProject xmProject,User head){ - Tips tips=new Tips("成功"); - boolean headIsPm=this.checkUserIsProjectAdm(xmProject,head.getUserid()); - if(headIsPm){ - return tips; - } - tips=this.checkProjectScopeQx(xmProject,head); - if(!tips.isOk()){ - return tips; - } - return this.checkProjectTransmitQx(xmProject,head.getUserid(),head.getUserid()); - } - 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; - } - return this.checkProjectTransmitQx(xmProject,head.getUserid(),memUserids); - } - public Tips checkProjectScopeQx(XmProject xmProject,User head,String ...memUserids){ - Tips tips=new Tips("成功"); - - if(memUserids==null || memUserids.length==0){ - return this.checkProjectScopeQx(xmProject,head.getUserid(),head.getUsername(),head.getBranchId()); - } - Set memUseridSet= Arrays.stream(memUserids).filter(k->StringUtils.hasText(k)&&!k.equals(head.getUserid())).collect(Collectors.toSet()); - if(memUseridSet.size()==0){ - return this.checkProjectScopeQx(xmProject,head.getUserid(),head.getUsername(),head.getBranchId()); - } - String username=head.getUsername(); - String scopeQx= QxTool.getProjectScopeQx(xmProject.getQxCode()); - boolean headIsPm=xmGroupService.checkUserIsProjectAdm(xmProject,head.getUserid()); - if("1".equals(scopeQx)){//同组织 - if( !headIsPm && !head.getBranchId().equals(xmProject.getBranchId())){ - tips.setFailureMsg("prjqx-scope-branch-0",String.format("项目【%s】只开放给同企业人员,【%s】不在企业【%s】中。",xmProject.getId(),username,xmProject.getBranchId())); - return tips; - } - boolean isAllNull=true; - for (String memUserid : memUseridSet) {//只要有一个满足条件即可 - if(this.checkUserIsProjectAdm(xmProject,memUserid)){ - return tips; - } - User sysU=sysClient.getUserByUserid(memUserid); - if(sysU==null || StringUtils.isEmpty(sysU.getUserid())){ - continue; - } - isAllNull=false; - if(sysU.getBranchId().equals(xmProject.getBranchId())){ - return tips; - } - } - if(isAllNull){ - return tips; - }else{ - tips.setFailureMsg("prjqx-scope-branch-1",String.format("项目【%s】只开放给同企业人员,【%s】不在企业【%s】中。",xmProject.getId(),memUseridSet.stream().collect(Collectors.joining(",")),xmProject.getBranchId())); - return tips; - } - - - }else if("2".equals(scopeQx)){//同项目 - List groups=this.getProjectGroupVoList(xmProject.getId()); - if( !headIsPm && !this.checkUserExistsGroup(groups, head.getUserid())){ - tips.setFailureMsg("prjqx-scope-project-0",String.format("项目【%s】只开放给同项目团队人员,【%s】不在项目团队中。",xmProject.getId(),username)); - return tips; - }; - for (String memUserid : memUseridSet) { - if(this.checkUserIsProjectAdm(xmProject,memUserid)){ - return tips; - } - if( this.checkUserExistsGroup(groups,memUserid) ){ - return tips; - }; - } - tips.setFailureMsg("prjqx-scope-project-1",String.format("项目【%s】只开放给同项目团队人员,【%s】不在项目团队中。",xmProject.getId(),memUseridSet.stream().collect(Collectors.joining(",")))); - return tips; - }else if("3".equals(scopeQx)){//同小组 - List groups=this.getProjectGroupVoList(xmProject.getId()); - List headGroups=groups; - - if( !headIsPm ){ - headGroups=this.getUserGroups(groups,head.getUserid()); - if( headGroups==null || headGroups.size()==0 ){ - tips.setFailureMsg("prjqx-scope-team-1",String.format("项目【%s】只开放给同项目同小组人员,【%s】不在项目团队中。",xmProject.getId(),username)); - return tips; - } - } - for (String memUserid : memUseridSet) { - if(this.checkUserIsProjectAdm(xmProject,memUserid)){ - return tips; - } - List memGroups=this.getUserGroups(headGroups,memUserid); - if( memGroups!=null && memGroups.size()>0 ){ - return tips; - } - } - tips.setFailureMsg("prjqx-scope-team-2",String.format("项目【%s】只开放给同项目同小组人员,【%s】不在项目团队中。",xmProject.getId(),memUseridSet.stream().collect(Collectors.joining(",")))); - return tips; - } - return tips; - } - - /** - * 检查用户是否满足项目权限控制要求 - * @param xmProject - * @param userid - * @param username 只用于显示 - * @param ubranchId - * @return - */ - public Tips checkProjectScopeQx(XmProject xmProject,String userid,String username,String ubranchId){ - Tips tips=new Tips("成功"); - String scopeQx= QxTool.getProjectScopeQx(xmProject.getQxCode()); - boolean isPm=this.checkUserIsProjectAdm(xmProject,userid); - if(isPm){ - return tips; - } - username=StringUtils.hasText(username)?username:userid; - if("1".equals(scopeQx)){//同组织 - if(!StringUtils.hasText(ubranchId)){ - User sysUser=sysClient.getUserByUserid(userid); - if(sysUser==null || StringUtils.isEmpty(sysUser.getUserid())){ - //如果账户不存在,可能已注销,再判断没有意义,会导致企业无法操作遗留数据问题 - //tips.setFailureMsg("no-qx-branchId","项目【"+xmProject.getId()+"】只开放给同企业人员。"); - return tips; - } - ubranchId=sysUser.getBranchId(); - if(!sysUser.getBranchId().equals(xmProject.getBranchId())){ - tips.setFailureMsg("prjqx-scope-branch-0",String.format("项目【%s】只开放给同企业人员,【%s】不在企业【%s】中。",xmProject.getId(),username,xmProject.getBranchId())); - return tips; - } - }else{ - if(!ubranchId.equals(xmProject.getBranchId())){ - tips.setFailureMsg("prjqx-scope-branch-0",String.format("项目【%s】只开放给同企业人员,【%s】不在企业【%s】中。",xmProject.getId(),username,xmProject.getBranchId())); - return tips; - } - } - - }else if("2".equals(scopeQx)){//同项目 - if(!this.checkUserExistsGroup(this.getProjectGroupVoList(xmProject.getId()), userid)){ - tips.setFailureMsg("prjqx-scope-project-0",String.format("项目【%s】只开放给同项目团队人员,【%s】不在项目团队中。",xmProject.getId(),username)); - return tips; - }; - }else if("3".equals(scopeQx)){//同小组 - if(!this.checkUserExistsProjectGroup(xmProject.getId(), userid)){ - tips.setFailureMsg("prjqx-scope-team-0",String.format("项目【%s】只开放给同项目同小组人员,【%s】不在项目团队中。",xmProject.getId(),username)); - return tips; - } - } - return tips; - } - - public Tips checkProjectTransmitQx(XmProject xmProject,String headUserid,String ...memUserids){ - Tips tips=new Tips("成功"); - String transmitQx= QxTool.getProjectTransmitQx(xmProject.getQxCode()); - if("0".equals(transmitQx)){//不检查上下级关系 - return tips; - }else if("1".equals(transmitQx)){//检查上下级关系 - if(memUserids==null || memUserids.length==0){ - return tips; - } - Set memUseridSet= Arrays.stream(memUserids).filter(k->StringUtils.hasText(k) && !k.equals(headUserid)).collect(Collectors.toSet()); - if(memUseridSet.size()==0){ - return tips; - } - List groups=this.getProjectGroupVoList(xmProject.getId()); - for (String memUserid : memUseridSet) { - if(this.checkUserIsOtherUserTeamHeadOrAss(groups,headUserid,memUserid)){ - return tips; - } - } - tips.setFailureMsg("prjqx-transmit-0", - String.format("项目【%s】开启了上下级关系检查,您当前账户不属于【%s】中任意账户的上级,无权操作。",xmProject.getId(),memUseridSet.stream().collect(Collectors.joining(",")))); - - - } - return tips; - } /** 请在此类添加自定义函数 */ public List getProjectGroupVoList(String projectId) {