Browse Source

团队重构

master
陈裕财 3 years ago
parent
commit
ec1121e9aa
  1. 5
      xm-core/src/main/java/com/xm/core/QxTool.java
  2. 346
      xm-core/src/main/java/com/xm/core/service/XmGroupService.java

5
xm-core/src/main/java/com/xm/core/QxTool.java

@ -23,7 +23,7 @@ public class QxTool {
* @param qxCode * @param qxCode
* @return * @return
*/ */
public static String getTaskScopeQx(String qxCode){
public static String getProjectScopeQx(String qxCode){
String def="2"; String def="2";
if(StringUtils.isEmpty(qxCode)){ if(StringUtils.isEmpty(qxCode)){
return def; return def;
@ -46,7 +46,7 @@ public class QxTool {
* @param qxCode * @param qxCode
* @return * @return
*/ */
public static String getTaskTransmitQx(String qxCode){
public static String getProjectTransmitQx(String qxCode){
String def="0"; String def="0";
if(StringUtils.isEmpty(qxCode)){ if(StringUtils.isEmpty(qxCode)){
return def; return def;
@ -125,4 +125,5 @@ public class QxTool {
} }
} }
} }
} }

346
xm-core/src/main/java/com/xm/core/service/XmGroupService.java

@ -155,7 +155,7 @@ public class XmGroupService extends BaseService {
/** /**
* *
* @param xmProduct * @param xmProduct
* @param teamType 1-需求人员 2-测试人员
* @param teamType 1-需求人员 2-测试人员,3-迭代人员
* @param head * @param head
* @return * @return
*/ */
@ -165,7 +165,7 @@ public class XmGroupService extends BaseService {
if(headIsPm){ if(headIsPm){
return tips; return tips;
} }
tips=this.checkProductScopeQx(xmProduct,teamType,head,head.getUserid());
tips=this.checkProductScopeQx(xmProduct,teamType,head);
if(!tips.isOk()){ if(!tips.isOk()){
return tips; return tips;
} }
@ -187,17 +187,18 @@ public class XmGroupService extends BaseService {
Tips tips=new Tips(); Tips tips=new Tips();
if(memUserids==null || memUserids.length==0){ if(memUserids==null || memUserids.length==0){
return this.checkProductScopeQx(xmProduct,teamType,head.getUserid(),head.getBranchId());
return this.checkProductScopeQx(xmProduct,teamType,head.getUserid(),head.getUsername(),head.getBranchId());
} }
Set<String> memUseridSet= Arrays.stream(memUserids).filter(k->StringUtils.hasText(k)&&!k.equals(head.getUserid())).collect(Collectors.toSet()); Set<String> memUseridSet= Arrays.stream(memUserids).filter(k->StringUtils.hasText(k)&&!k.equals(head.getUserid())).collect(Collectors.toSet());
if(memUseridSet.size()==0){ if(memUseridSet.size()==0){
return this.checkProductScopeQx(xmProduct,teamType,head.getUserid(),head.getBranchId());
return this.checkProductScopeQx(xmProduct,teamType,head.getUserid(),head.getUsername(),head.getBranchId());
} }
String username=head.getUsername();
String scopeQx= QxTool.getProductScopeQx(xmProduct.getQxCode(),teamType); String scopeQx= QxTool.getProductScopeQx(xmProduct.getQxCode(),teamType);
boolean headIsPm=xmGroupService.checkUserIsProductAdm(xmProduct,head.getUserid());
if("1".equals(scopeQx)){//同组织 if("1".equals(scopeQx)){//同组织
if( !head.getBranchId().equals(xmProduct.getBranchId())){
tips.setFailureMsg("no-qx-no-same-branchId","产品【"+xmProduct.getId()+"】只开放给同企业人员。");
if( !headIsPm && !head.getBranchId().equals(xmProduct.getBranchId())){
tips.setFailureMsg("pdqx-scope-branch-0",String.format("产品【%s】只开放给同企业人员,【%s】不在企业【%s】中。",xmProduct.getId(),username,xmProduct.getBranchId()));
return tips; return tips;
} }
boolean isAllNull=true; boolean isAllNull=true;
@ -217,15 +218,15 @@ public class XmGroupService extends BaseService {
if(isAllNull){ if(isAllNull){
return tips; return tips;
}else{ }else{
tips.setFailureMsg("no-qx-no-same-branchId","产品【"+xmProduct.getId()+"】只开放给同企业人员。");
tips.setFailureMsg("pdqx-scope-branch-1",String.format("产品【%s】只开放给同企业人员,【%s】不在企业【%s】中。",xmProduct.getId(),memUseridSet.stream().collect(Collectors.joining(",")),xmProduct.getBranchId()));
return tips; return tips;
} }
}else if("2".equals(scopeQx)){//同产品 }else if("2".equals(scopeQx)){//同产品
List<XmGroupVo> groups=this.getProductGroupVoList(xmProduct.getId()); List<XmGroupVo> groups=this.getProductGroupVoList(xmProduct.getId());
if( !this.checkUserExistsGroup(groups, head.getUserid())){
tips.setFailureMsg("no-qx-no-same-project","产品【"+xmProduct.getId()+"】只开放给同产品组人员。请先加入产品团队再操作。");
if( !headIsPm && !this.checkUserExistsGroup(groups, head.getUserid())){
tips.setFailureMsg("pdqx-scope-product-0",String.format("产品【%s】只开放给同产品团队人员,【%s】不在产品团队中。",xmProduct.getId(),username));
return tips; return tips;
}; };
for (String memUserid : memUseridSet) { for (String memUserid : memUseridSet) {
@ -236,18 +237,19 @@ public class XmGroupService extends BaseService {
return tips; return tips;
}; };
} }
tips.setFailureMsg("no-qx-no-same-project","产品【"+xmProduct.getId()+"】只开放给同产品组人员。请先加入产品团队再操作。");
tips.setFailureMsg("pdqx-scope-product-1",String.format("产品【%s】只开放给同产品团队人员,【%s】不在产品团队中。",xmProduct.getId(),memUseridSet.stream().collect(Collectors.joining(","))));
return tips; return tips;
}else if("3".equals(scopeQx)){//同小组 }else if("3".equals(scopeQx)){//同小组
List<XmGroupVo> groups=this.getProductGroupVoList(xmProduct.getId()); List<XmGroupVo> groups=this.getProductGroupVoList(xmProduct.getId());
List<XmGroupVo> headGroups=groups; List<XmGroupVo> headGroups=groups;
headGroups=this.getUserGroups(groups,head.getUserid());
if( headGroups==null || headGroups.size()==0 ){
tips.setFailureMsg("no-qx-no-same-team","产品【"+xmProduct.getId()+"】只开放给同产品同小组人员。请先加入产品团队再操作。");
return tips;
}
if( !headIsPm ){
headGroups=this.getUserGroups(groups,head.getUserid());
if( headGroups==null || headGroups.size()==0 ){
tips.setFailureMsg("pdqx-scope-team-1",String.format("产品【%s】只开放给同产品同小组人员,【%s】不在产品团队中。",xmProduct.getId(),username));
return tips;
}
}
for (String memUserid : memUseridSet) { for (String memUserid : memUseridSet) {
if(this.checkUserIsProductAdm(xmProduct,memUserid)){ if(this.checkUserIsProductAdm(xmProduct,memUserid)){
return tips; return tips;
@ -257,88 +259,103 @@ public class XmGroupService extends BaseService {
return tips; return tips;
} }
} }
tips.setFailureMsg("no-qx-no-same-team","产品【"+xmProduct.getId()+"】只开放给同产品同小组人员。请先加入产品团队再操作。");
tips.setFailureMsg("pdqx-scope-team-2",String.format("产品【%s】只开放给同产品同小组人员,【%s】不在产品团队中。",xmProduct.getId(),memUseridSet.stream().collect(Collectors.joining(","))));
return tips; return tips;
} }
return tips; return tips;
} }
public Tips checkProductTransmitQx(XmProduct xmProduct,int teamType,String headUserid,String ...memUserids){
Tips tips=new Tips();
String transmitQx= QxTool.getProductTransmitQx(xmProduct.getQxCode(),teamType);
if("0".equals(transmitQx)){//不检查上下级关系
return tips;
}else if("1".equals(transmitQx)){//检查上下级关系
if(memUserids==null || memUserids.length==0){
return tips;
}
Set<String> memUseridSet= Arrays.stream(memUserids).filter(k->StringUtils.hasText(k) && !k.equals(headUserid)).collect(Collectors.toSet());
if(memUseridSet.size()==0){
return tips;
}
List<XmGroupVo> groups=this.getProductGroupVoList(xmProduct.getId());
for (String memUserid : memUseridSet) {
if(this.checkUserIsOtherUserTeamHeadOrAss(groups,headUserid,memUserid)){
return tips;
}
}
tips.setFailureMsg("no-qx-transmit-0","产品【"+xmProduct.getId()+"】开启了上下级关系检查,您当前账户不属于【"+memUseridSet.stream().collect(Collectors.joining(","))+"】中任意账户的上级,无权操作。");
}
return tips;
}
public Tips checkProductScopeQx(XmProduct xmProduct,int teamType,String userid,String ubranchId){
/**
* 检查用户是否满足产品权限控制要求
* @param xmProduct
* @param teamType
* @param userid
* @param username 只用于显示
* @param ubranchId
* @return
*/
public Tips checkProductScopeQx(XmProduct xmProduct,int teamType,String userid,String username,String ubranchId){
Tips tips=new Tips(); Tips tips=new Tips();
String scopeQx= QxTool.getTaskScopeQx(xmProduct.getQxCode());
String scopeQx= QxTool.getProductScopeQx(xmProduct.getQxCode(),teamType);
boolean isPm=this.checkUserIsProductAdm(xmProduct,userid); boolean isPm=this.checkUserIsProductAdm(xmProduct,userid);
if(isPm){ if(isPm){
return tips; return tips;
} }
username=StringUtils.hasText(username)?username:userid;
if("1".equals(scopeQx)){//同组织 if("1".equals(scopeQx)){//同组织
if(!StringUtils.hasText(ubranchId)){ if(!StringUtils.hasText(ubranchId)){
User sysUser=sysClient.getUserByUserid(userid); User sysUser=sysClient.getUserByUserid(userid);
if(sysUser==null || StringUtils.isEmpty(sysUser.getUserid())){ if(sysUser==null || StringUtils.isEmpty(sysUser.getUserid())){
//如果账户不存在可能已注销再判断没有意义会导致企业无法操作遗留数据问题 //如果账户不存在可能已注销再判断没有意义会导致企业无法操作遗留数据问题
//tips.setFailureMsg("no-qx-no-same-branchId","产品【"+xmProduct.getId()+"】只开放给同企业人员。");
//tips.setFailureMsg("no-qx-branchId","产品【"+xmProduct.getId()+"】只开放给同企业人员。");
return tips; return tips;
} }
ubranchId=sysUser.getBranchId();
if(!sysUser.getBranchId().equals(xmProduct.getBranchId())){ if(!sysUser.getBranchId().equals(xmProduct.getBranchId())){
tips.setFailureMsg("no-qx-no-same-branchId","产品【"+xmProduct.getId()+"】只开放给同企业人员。");
tips.setFailureMsg("pdqx-scope-branch-0",String.format("产品【%s】只开放给同企业人员,【%s】不在企业【%s】中。",xmProduct.getId(),username,xmProduct.getBranchId()));
return tips; return tips;
} }
}else{ }else{
if(!ubranchId.equals(xmProduct.getBranchId())){ if(!ubranchId.equals(xmProduct.getBranchId())){
tips.setFailureMsg("no-qx-no-same-branchId","产品【"+xmProduct.getId()+"】只开放给同企业人员。");
tips.setFailureMsg("pdqx-scope-branch-0",String.format("产品【%s】只开放给同企业人员,【%s】不在企业【%s】中。",xmProduct.getId(),username,xmProduct.getBranchId()));
return tips; return tips;
} }
} }
}else if("2".equals(scopeQx)){//同产品 }else if("2".equals(scopeQx)){//同产品
if(!this.checkUserExistsGroup(this.getProductGroupVoList(xmProduct.getId()), userid)){ if(!this.checkUserExistsGroup(this.getProductGroupVoList(xmProduct.getId()), userid)){
tips.setFailureMsg("no-qx-no-same-project","产品【"+xmProduct.getId()+"】只开放给同产品组人员。请先加入产品团队再操作。");
tips.setFailureMsg("pdqx-scope-product-0",String.format("产品【%s】只开放给同产品团队人员,【%s】不在产品团队中。",xmProduct.getId(),username));
return tips; return tips;
}; };
}else if("3".equals(scopeQx)){//同小组 }else if("3".equals(scopeQx)){//同小组
if(!this.checkUserExistsProductGroup(xmProduct.getId(), userid)){ if(!this.checkUserExistsProductGroup(xmProduct.getId(), userid)){
tips.setFailureMsg("no-qx-no-same-team","产品【"+xmProduct.getId()+"】只开放给同产品同小组人员。请先加入产品团队再操作。");
tips.setFailureMsg("pdqx-scope-team-0",String.format("产品【%s】只开放给同产品同小组人员,【%s】不在产品团队中。",xmProduct.getId(),username));
return tips;
}
}
return tips;
}
public Tips checkProductTransmitQx(XmProduct xmProduct,int teamType,String headUserid,String ...memUserids){
Tips tips=new Tips();
String transmitQx= QxTool.getProductTransmitQx(xmProduct.getQxCode(),teamType);
if("0".equals(transmitQx)){//不检查上下级关系
return tips;
}else if("1".equals(transmitQx)){//检查上下级关系
if(memUserids==null || memUserids.length==0){
return tips; return tips;
} }
Set<String> memUseridSet= Arrays.stream(memUserids).filter(k->StringUtils.hasText(k) && !k.equals(headUserid)).collect(Collectors.toSet());
if(memUseridSet.size()==0){
return tips;
}
List<XmGroupVo> groups=this.getProductGroupVoList(xmProduct.getId());
for (String memUserid : memUseridSet) {
if(this.checkUserIsOtherUserTeamHeadOrAss(groups,headUserid,memUserid)){
return tips;
}
}
tips.setFailureMsg("pdqx-transmit-0",
String.format("产品【%s】开启了上下级关系检查,您当前账户不属于【%s】中任意账户的上级,无权操作。",xmProduct.getId(),memUseridSet.stream().collect(Collectors.joining(","))));
} }
return tips; return tips;
} }
/**
*
* @param xmProject
* @param head
* @return
*/
public Tips checkProjectQx(XmProject xmProject,User head){ public Tips checkProjectQx(XmProject xmProject,User head){
Tips tips=new Tips(); Tips tips=new Tips();
boolean headIsPm=this.checkUserIsProjectAdm(xmProject,head.getUserid()); boolean headIsPm=this.checkUserIsProjectAdm(xmProject,head.getUserid());
if(headIsPm){ if(headIsPm){
return tips; return tips;
} }
tips=this.checkProjectScopeQx(xmProject,head,head.getUserid());
tips=this.checkProjectScopeQx(xmProject,head);
if(!tips.isOk()){ if(!tips.isOk()){
return tips; return tips;
} }
@ -346,103 +363,153 @@ public class XmGroupService extends BaseService {
} }
public Tips checkProjectQx(XmProject xmProject,User head,String ...memUserids){ public Tips checkProjectQx(XmProject xmProject,User head,String ...memUserids){
Tips tips=new Tips("成功"); Tips tips=new Tips("成功");
boolean headIsPm=this.checkUserIsProjectAdm(xmProject,head.getUserid());
if(headIsPm){
return tips;
}
tips=this.checkProjectScopeQx(xmProject,head,memUserids); tips=this.checkProjectScopeQx(xmProject,head,memUserids);
if(!tips.isOk()){ if(!tips.isOk()){
return tips; return tips;
} }
return this.checkProjectTransmitQx(xmProject,head.getUserid(),memUserids); return this.checkProjectTransmitQx(xmProject,head.getUserid(),memUserids);
} }
public Tips checkProjectScopeQx(XmProject xmProject,User head,String ...memUserids){
public Tips checkProjectScopeQx(XmProject xmProject,User head,String ...memUserids){
Tips tips=new Tips(); Tips tips=new Tips();
boolean headIsPm=this.checkUserIsProjectAdm(xmProject,head.getUserid());
if(headIsPm){
return tips;
}
if(memUserids==null || memUserids.length==0){ if(memUserids==null || memUserids.length==0){
return this.checkProjectScopeQx(xmProject,head.getUserid(),head.getBranchId());
return this.checkProjectScopeQx(xmProject,head.getUserid(),head.getUsername(),head.getBranchId());
} }
Set<String> memUseridSet= Arrays.stream(memUserids).filter(k->StringUtils.hasText(k)&&!k.equals(head.getUserid())).collect(Collectors.toSet()); Set<String> memUseridSet= Arrays.stream(memUserids).filter(k->StringUtils.hasText(k)&&!k.equals(head.getUserid())).collect(Collectors.toSet());
if(memUseridSet.size()==0){ if(memUseridSet.size()==0){
return this.checkProjectScopeQx(xmProject,head.getUserid(),head.getBranchId());
return this.checkProjectScopeQx(xmProject,head.getUserid(),head.getUsername(),head.getBranchId());
} }
String scopeQx= QxTool.getTaskScopeQx(xmProject.getQxCode());
if("1".equals(scopeQx)){//同组织
if( !head.getBranchId().equals(xmProject.getBranchId())){
tips.setFailureMsg("no-qx-no-same-branchId","项目【"+xmProject.getId()+"】只开放给同企业人员。");
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; 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;
}
User sysU=sysClient.getUserByUserid(memUserid);
if(sysU==null || StringUtils.isEmpty(sysU.getUserid())){
continue;
} }
if(isAllNull){
return tips;
}else{
tips.setFailureMsg("no-qx-no-same-branchId","项目【"+xmProject.getId()+"】只开放给同企业人员。");
isAllNull=false;
if(sysU.getBranchId().equals(xmProject.getBranchId())){
return tips; 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<XmGroupVo> groups=this.getProjectGroupVoList(xmProject.getId());
if(!this.checkUserExistsGroup(groups, head.getUserid())){
tips.setFailureMsg("no-qx-no-same-project","项目【"+xmProject.getId()+"】只开放给同项目组人员。请先加入项目团队再操作。");
}else if("2".equals(scopeQx)){//同项目
List<XmGroupVo> 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; return tips;
};
for (String memUserid : memUseridSet) {
if(this.checkUserIsProjectAdm(xmProject,memUserid)){
return tips;
}
if( this.checkUserExistsGroup(groups,memUserid) ){
return tips;
};
} }
tips.setFailureMsg("no-qx-no-same-project","项目【"+xmProject.getId()+"】只开放给同项目组人员。请先加入项目团队再操作。");
return tips;
}else if("3".equals(scopeQx)){//同小组
List<XmGroupVo> groups=this.getProjectGroupVoList(xmProject.getId());
List<XmGroupVo> headGroups=groups;
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<XmGroupVo> groups=this.getProjectGroupVoList(xmProject.getId());
List<XmGroupVo> headGroups=groups;
if( !headIsPm ){
headGroups=this.getUserGroups(groups,head.getUserid()); headGroups=this.getUserGroups(groups,head.getUserid());
if( headGroups==null || headGroups.size()==0 ){ if( headGroups==null || headGroups.size()==0 ){
tips.setFailureMsg("no-qx-no-same-team","项目【"+xmProject.getId()+"】只开放给同项目同小组人员。请先加入项目团队再操作。");
tips.setFailureMsg("prjqx-scope-team-1",String.format("项目【%s】只开放给同项目同小组人员,【%s】不在项目团队中。",xmProject.getId(),username));
return tips; return tips;
} }
for (String memUserid : memUseridSet) {
if(this.checkUserIsProjectAdm(xmProject,memUserid)){
return tips;
}
List<XmGroupVo> memGroups=this.getUserGroups(headGroups,memUserid);
if( memGroups!=null && memGroups.size()>0 ){
return tips;
}
}
for (String memUserid : memUseridSet) {
if(this.checkUserIsProjectAdm(xmProject,memUserid)){
return tips;
} }
tips.setFailureMsg("no-qx-no-same-team","项目【"+xmProject.getId()+"】只开放给同项目同小组人员。请先加入项目团队再操作。");
return tips;
List<XmGroupVo> 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; return tips;
} }
public Tips checkProjectTransmitQx(XmProject xmProject,String headUserid,String ...memUserids){ public Tips checkProjectTransmitQx(XmProject xmProject,String headUserid,String ...memUserids){
Tips tips=new Tips(); Tips tips=new Tips();
String transmitQx= QxTool.getTaskTransmitQx(xmProject.getQxCode());
String transmitQx= QxTool.getProjectTransmitQx(xmProject.getQxCode());
if("0".equals(transmitQx)){//不检查上下级关系 if("0".equals(transmitQx)){//不检查上下级关系
return tips;
return tips;
}else if("1".equals(transmitQx)){//检查上下级关系 }else if("1".equals(transmitQx)){//检查上下级关系
if(memUserids==null || memUserids.length==0){ if(memUserids==null || memUserids.length==0){
return tips; return tips;
@ -453,53 +520,18 @@ public class XmGroupService extends BaseService {
} }
List<XmGroupVo> groups=this.getProjectGroupVoList(xmProject.getId()); List<XmGroupVo> groups=this.getProjectGroupVoList(xmProject.getId());
for (String memUserid : memUseridSet) { for (String memUserid : memUseridSet) {
if(this.checkUserIsOtherUserTeamHeadOrAss(groups,headUserid,memUserid)){
return tips;
}
if(this.checkUserIsOtherUserTeamHeadOrAss(groups,headUserid,memUserid)){
return tips;
}
} }
tips.setFailureMsg("no-qx-transmit-0","项目【"+xmProject.getId()+"】开启了上下级关系检查,您当前账户不属于【"+memUseridSet.stream().collect(Collectors.joining(","))+"】中任意账户的上级,无权操作。");
tips.setFailureMsg("prjqx-transmit-0",
String.format("项目【%s】开启了上下级关系检查,您当前账户不属于【%s】中任意账户的上级,无权操作。",xmProject.getId(),memUseridSet.stream().collect(Collectors.joining(","))));
} }
return tips; return tips;
} }
public Tips checkProjectScopeQx(XmProject xmProject,String userid,String ubranchId){
Tips tips=new Tips();
String scopeQx= QxTool.getTaskScopeQx(xmProject.getQxCode());
if("1".equals(scopeQx)){//同组织
if(!StringUtils.hasText(ubranchId)){
User sysUser=sysClient.getUserByUserid(userid);
if(sysUser==null || StringUtils.isEmpty(sysUser.getUserid())){
//如果账户不存在可能已注销再判断没有意义会导致企业无法操作遗留数据问题
//tips.setFailureMsg("no-qx-no-same-branchId","项目【"+xmProject.getId()+"】只开放给同企业人员。");
return tips;
}
if(!sysUser.getBranchId().equals(xmProject.getBranchId())){
tips.setFailureMsg("no-qx-no-same-branchId","项目【"+xmProject.getId()+"】只开放给同企业人员。");
return tips;
}
}else{
if(!ubranchId.equals(xmProject.getBranchId())){
tips.setFailureMsg("no-qx-no-same-branchId","项目【"+xmProject.getId()+"】只开放给同企业人员。");
return tips;
}
}
}else if("2".equals(scopeQx)){//同项目
if(!this.checkUserExistsGroup(this.getProjectGroupVoList(xmProject.getId()), userid)){
tips.setFailureMsg("no-qx-no-same-project","项目【"+xmProject.getId()+"】只开放给同项目组人员。请先加入项目团队再操作。");
return tips;
};
}else if("3".equals(scopeQx)){//同小组
if(!this.checkUserExistsProjectGroup(xmProject.getId(), userid)){
tips.setFailureMsg("no-qx-no-same-team","项目【"+xmProject.getId()+"】只开放给同项目同小组人员。请先加入项目团队再操作。");
return tips;
}
}
return tips;
}
/** 请在此类添加自定义函数 */ /** 请在此类添加自定义函数 */
public List<XmGroupVo> getProjectGroupVoList(String projectId) { public List<XmGroupVo> getProjectGroupVoList(String projectId) {
List<XmGroupVo> groupVoList=new ArrayList<>(); List<XmGroupVo> groupVoList=new ArrayList<>();

Loading…
Cancel
Save