Browse Source

分布式本地缓存

master
陈裕财 3 years ago
parent
commit
507bcd9b59
  1. 6
      xm-core/src/main/java/com/xm/core/ctrl/XmGroupController.java
  2. 10
      xm-core/src/main/java/com/xm/core/ctrl/XmIterationController.java
  3. 6
      xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java
  4. 12
      xm-core/src/main/java/com/xm/core/ctrl/XmTestCaseController.java
  5. 14
      xm-core/src/main/java/com/xm/core/ctrl/XmTestCasedbController.java
  6. 102
      xm-core/src/main/java/com/xm/core/ctrl/XmTestPlanCaseController.java
  7. 10
      xm-core/src/main/java/com/xm/core/ctrl/XmTestPlanController.java
  8. 84
      xm-core/src/main/java/com/xm/core/service/XmProductQxService.java
  9. 87
      xm-core/src/main/java/com/xm/core/service/XmProjectQxService.java

6
xm-core/src/main/java/com/xm/core/ctrl/XmGroupController.java

@ -141,7 +141,7 @@ public class XmGroupController {
} }
} }
if(StringUtils.hasText(group.getLeaderUserid()) && !group.getLeaderUserid().equals(groupDb.getLeaderUserid())){ if(StringUtils.hasText(group.getLeaderUserid()) && !group.getLeaderUserid().equals(groupDb.getLeaderUserid())){
tips = productQxService.checkProductQx(null,product,0,user, groupDb.getLeaderUserid(),groupDb.getLeaderUsername(),null);
tips = productQxService.checkProductQx(product,0,user, groupDb.getLeaderUserid(),groupDb.getLeaderUsername(),null);
if(!tips.isOk()){ if(!tips.isOk()){
return ResponseHelper.failed(tips); return ResponseHelper.failed(tips);
} }
@ -151,7 +151,7 @@ public class XmGroupController {
} }
} }
if(StringUtils.hasText(group.getAssUserid()) && !group.getAssUserid().equals(groupDb.getAssUserid())){ if(StringUtils.hasText(group.getAssUserid()) && !group.getAssUserid().equals(groupDb.getAssUserid())){
tips = productQxService.checkProductQx(null,product,0,user, groupDb.getAssUserid(),groupDb.getAssUsername(),null);
tips = productQxService.checkProductQx(product,0,user, groupDb.getAssUserid(),groupDb.getAssUsername(),null);
if(!tips.isOk()){ if(!tips.isOk()){
return ResponseHelper.failed(tips); return ResponseHelper.failed(tips);
} }
@ -420,7 +420,7 @@ public class XmGroupController {
} }
boolean isPm=xmGroupService.checkUserIsProductAdm(product,u.getUserid()); boolean isPm=xmGroupService.checkUserIsProductAdm(product,u.getUserid());
if(!isPm) { if(!isPm) {
tips=productQxService.checkProductQx(null,product,0,u,groupDb.getLeaderUserid(),groupDb.getLeaderUsername(), null);
tips=productQxService.checkProductQx(product,0,u,groupDb.getLeaderUserid(),groupDb.getLeaderUsername(), null);
if(!tips.isOk()){ if(!tips.isOk()){
return ResponseHelper.failed(tips); return ResponseHelper.failed(tips);
} }

10
xm-core/src/main/java/com/xm/core/ctrl/XmIterationController.java

@ -217,7 +217,7 @@ public class XmIterationController {
}else if(!xmIteration.getAdminUserid().equals(user.getUserid())){ }else if(!xmIteration.getAdminUserid().equals(user.getUserid())){
boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid()); boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid());
if( !isPm ){ if( !isPm ){
tips = productQxService.checkProductQx(null,xmProductDb,3,user,xmIteration.getAdminUserid(),xmIteration.getAdminUsername(),null);
tips = productQxService.checkProductQx(xmProductDb,3,user,xmIteration.getAdminUserid(),xmIteration.getAdminUsername(),null);
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -265,7 +265,7 @@ public class XmIterationController {
XmProduct xmProductDb=xmProductService.getProductFromCache(iterationDb.getProductId()); XmProduct xmProductDb=xmProductService.getProductFromCache(iterationDb.getProductId());
boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid()); boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid());
if( !isPm ){ if( !isPm ){
tips = productQxService.checkProductQx(null,xmProductDb,3,user,iterationDb.getAdminUserid(),iterationDb.getAdminUsername(),null);
tips = productQxService.checkProductQx(xmProductDb,3,user,iterationDb.getAdminUserid(),iterationDb.getAdminUsername(),null);
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -309,7 +309,7 @@ public class XmIterationController {
XmProduct xmProductDb=xmProductService.getProductFromCache(iterationDb.getProductId()); XmProduct xmProductDb=xmProductService.getProductFromCache(iterationDb.getProductId());
boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid()); boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid());
if( !isPm ){ if( !isPm ){
tips = productQxService.checkProductQx(null,xmProductDb,3,user,iterationDb.getAdminUserid(),iterationDb.getAdminUsername(),null);
tips = productQxService.checkProductQx(xmProductDb,3,user,iterationDb.getAdminUserid(),iterationDb.getAdminUsername(),null);
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -380,7 +380,7 @@ public class XmIterationController {
String adminUserid= (String) xmIterationMap.get("adminUserid"); String adminUserid= (String) xmIterationMap.get("adminUserid");
String adminUsername= (String) xmIterationMap.get("adminUsername"); String adminUsername= (String) xmIterationMap.get("adminUsername");
if(StringUtils.hasText(adminUserid)){ if(StringUtils.hasText(adminUserid)){
tips=productQxService.checkProductQx(null,xmProductDb,3,user,adminUserid,adminUsername,null);
tips=productQxService.checkProductQx(xmProductDb,3,user,adminUserid,adminUsername,null);
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -390,7 +390,7 @@ public class XmIterationController {
boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid()); boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid());
for (XmIteration iterationDb2 : xmIterationsDb) { for (XmIteration iterationDb2 : xmIterationsDb) {
if( !isPm ){ if( !isPm ){
tips=productQxService.checkProductQx(null,xmProductDb,3,user,iterationDb2.getAdminUserid(),iterationDb2.getAdminUsername(),null);
tips=productQxService.checkProductQx(xmProductDb,3,user,iterationDb2.getAdminUserid(),iterationDb2.getAdminUsername(),null);
if(!tips.isOk()){ if(!tips.isOk()){
no.add(iterationDb2); no.add(iterationDb2);
noTipsMap.put(tips.getMsg(),tips); noTipsMap.put(tips.getMsg(),tips);

6
xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java

@ -285,7 +285,7 @@ public class XmMenuController {
return failed(tips); return failed(tips);
} }
if(StringUtils.hasText(xmMenu.getMmUserid()) && !xmMenu.getMmUserid().equals(user.getUserid())){ if(StringUtils.hasText(xmMenu.getMmUserid()) && !xmMenu.getMmUserid().equals(user.getUserid())){
tips=productQxService.checkProductQx(null,xmProduct,2,user,xmMenu.getMmUserid(),xmMenu.getMmUsername(),null);
tips=productQxService.checkProductQx(xmProduct,2,user,xmMenu.getMmUserid(),xmMenu.getMmUsername(),null);
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -357,7 +357,7 @@ public class XmMenuController {
return ResponseHelper.failed("product-data-0","产品已不存在"); return ResponseHelper.failed("product-data-0","产品已不存在");
} }
if(!groupService.checkUserIsProductAdm(xmProduct, user.getUserid())){ if(!groupService.checkUserIsProductAdm(xmProduct, user.getUserid())){
tips=productQxService.checkProductQx(null,xmProduct,2,user,xmMenuDb.getMmUserid(),xmMenuDb.getMmUsername(),null);
tips=productQxService.checkProductQx(xmProduct,2,user,xmMenuDb.getMmUserid(),xmMenuDb.getMmUsername(),null);
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -399,7 +399,7 @@ public class XmMenuController {
if(xmProduct==null){ if(xmProduct==null){
return ResponseHelper.failed("product-data-0","产品已不存在"); return ResponseHelper.failed("product-data-0","产品已不存在");
} }
tips=productQxService.checkProductQx(null,xmProduct,2,user,xmMenuDb.getMmUserid(),xmMenuDb.getMmUsername(),null);
tips=productQxService.checkProductQx(xmProduct,2,user,xmMenuDb.getMmUserid(),xmMenuDb.getMmUsername(),null);
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }

12
xm-core/src/main/java/com/xm/core/ctrl/XmTestCaseController.java

@ -129,7 +129,7 @@ public class XmTestCaseController {
} }
User user=LoginUtils.getCurrentUserInfo(); User user=LoginUtils.getCurrentUserInfo();
XmProduct xmProductDb=productService.getProductFromCache(xmTestCase.getProductId()); XmProduct xmProductDb=productService.getProductFromCache(xmTestCase.getProductId());
tips=productQxService.checkProductQx(null,xmProductDb,1,user,xmTestCase.getCuserid(),xmTestCase.getCusername(),xmTestCase.getCbranchId());
tips=productQxService.checkProductQx(xmProductDb,1,user,xmTestCase.getCuserid(),xmTestCase.getCusername(),xmTestCase.getCbranchId());
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -179,7 +179,7 @@ public class XmTestCaseController {
XmProduct xmProductDb=productService.getProductFromCache(xmTestCaseDb.getProductId()); XmProduct xmProductDb=productService.getProductFromCache(xmTestCaseDb.getProductId());
boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid()); boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid());
if(!isPm){ if(!isPm){
tips=productQxService.checkProductQx(null,xmProductDb,1,user,xmTestCaseDb.getCuserid(),xmTestCaseDb.getCusername(),xmTestCaseDb.getCbranchId());
tips=productQxService.checkProductQx(xmProductDb,1,user,xmTestCaseDb.getCuserid(),xmTestCaseDb.getCusername(),xmTestCaseDb.getCbranchId());
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -216,7 +216,7 @@ public class XmTestCaseController {
XmProduct xmProductDb=productService.getProductFromCache(xmTestCaseDb.getProductId()); XmProduct xmProductDb=productService.getProductFromCache(xmTestCaseDb.getProductId());
boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid()); boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid());
if(!isPm){ if(!isPm){
tips=productQxService.checkProductQx(null,xmProductDb,1,user,xmTestCaseDb.getCuserid(),xmTestCaseDb.getCusername(),null);
tips=productQxService.checkProductQx(xmProductDb,1,user,xmTestCaseDb.getCuserid(),xmTestCaseDb.getCusername(),null);
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -284,7 +284,7 @@ public class XmTestCaseController {
} }
XmProduct xmProductDb=productService.getProductFromCache(xmTestCaseDb2.getProductId()); XmProduct xmProductDb=productService.getProductFromCache(xmTestCaseDb2.getProductId());
if( StringUtils.hasText(xmTestCase.getCuserid()) ){ if( StringUtils.hasText(xmTestCase.getCuserid()) ){
tips=this.productQxService.checkProductQx(null,xmProductDb,1,user,xmTestCase.getCuserid(),xmTestCase.getCusername(),null);
tips=this.productQxService.checkProductQx(xmProductDb,1,user,xmTestCase.getCuserid(),xmTestCase.getCusername(),null);
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -295,7 +295,7 @@ public class XmTestCaseController {
}else{ }else{
for (XmTestCase xmTestCaseDb : xmTestCasesDb) { for (XmTestCase xmTestCaseDb : xmTestCasesDb) {
Tips tips2 = new Tips("检查通过"); Tips tips2 = new Tips("检查通过");
tips2=productQxService.checkProductQx(null,xmProductDb,1,user,xmTestCaseDb.getCuserid(),xmTestCaseDb.getCusername(),null);
tips2=productQxService.checkProductQx(xmProductDb,1,user,xmTestCaseDb.getCuserid(),xmTestCaseDb.getCusername(),null);
if(!tips2.isOk()){ if(!tips2.isOk()){
no.add(xmTestCaseDb); no.add(xmTestCaseDb);
noTipsMap.put(tips2.getMsg(),tips2); noTipsMap.put(tips2.getMsg(),tips2);
@ -361,7 +361,7 @@ public class XmTestCaseController {
can=datasDb; can=datasDb;
}else { }else {
for (XmTestCase data : datasDb) { for (XmTestCase data : datasDb) {
tips=productQxService.checkProductQx(null,xmProductDb,1,user,data.getCuserid(),data.getCusername(),data.getCbranchId());
tips=productQxService.checkProductQx(xmProductDb,1,user,data.getCuserid(),data.getCusername(),data.getCbranchId());
if(tips.isOk()){ if(tips.isOk()){
can.add(data); can.add(data);
}else { }else {

14
xm-core/src/main/java/com/xm/core/ctrl/XmTestCasedbController.java

@ -111,7 +111,7 @@ public class XmTestCasedbController {
XmProduct xmProductDb=productService.getProductFromCache(xmTestCasedb.getProductId()); XmProduct xmProductDb=productService.getProductFromCache(xmTestCasedb.getProductId());
boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid()); boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid());
if(!isPm){ if(!isPm){
tips=productQxService.checkProductQx(null,xmProductDb,1,user,xmTestCasedb.getCuserid(),xmTestCasedb.getCusername(),xmTestCasedb.getCbranchId());
tips=productQxService.checkProductQx(xmProductDb,1,user,xmTestCasedb.getCuserid(),xmTestCasedb.getCusername(),xmTestCasedb.getCbranchId());
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -154,7 +154,7 @@ public class XmTestCasedbController {
XmProduct xmProductDb=productService.getProductFromCache(xmTestCasedbDb.getProductId()); XmProduct xmProductDb=productService.getProductFromCache(xmTestCasedbDb.getProductId());
boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid()); boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid());
if(!isPm){ if(!isPm){
tips=productQxService.checkProductQx(null,xmProductDb,1,user,xmTestCasedbDb.getCuserid(),xmTestCasedbDb.getCusername(),xmTestCasedbDb.getCbranchId());
tips=productQxService.checkProductQx(xmProductDb,1,user,xmTestCasedbDb.getCuserid(),xmTestCasedbDb.getCusername(),xmTestCasedbDb.getCbranchId());
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -192,13 +192,13 @@ public class XmTestCasedbController {
XmProduct xmProductDb=productService.getProductFromCache(xmTestCasedbDb.getProductId()); XmProduct xmProductDb=productService.getProductFromCache(xmTestCasedbDb.getProductId());
boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid()); boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid());
if(StringUtils.hasText(xmTestCasedb.getCuserid())){ if(StringUtils.hasText(xmTestCasedb.getCuserid())){
tips=productQxService.checkProductQx(null,xmProductDb,1,user,xmTestCasedb.getCuserid(),xmTestCasedb.getCusername(),xmTestCasedb.getCbranchId());
tips=productQxService.checkProductQx(xmProductDb,1,user,xmTestCasedb.getCuserid(),xmTestCasedb.getCusername(),xmTestCasedb.getCbranchId());
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
} }
if(!isPm){ if(!isPm){
tips=productQxService.checkProductQx(null,xmProductDb,1,user,xmTestCasedbDb.getCuserid(),xmTestCasedbDb.getCusername(),xmTestCasedbDb.getCbranchId());
tips=productQxService.checkProductQx(xmProductDb,1,user,xmTestCasedbDb.getCuserid(),xmTestCasedbDb.getCusername(),xmTestCasedbDb.getCbranchId());
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -257,7 +257,7 @@ public class XmTestCasedbController {
User user = LoginUtils.getCurrentUserInfo(); User user = LoginUtils.getCurrentUserInfo();
XmProduct xmProductDb=productService.getProductFromCache(xmTestCasedbDb.getProductId()); XmProduct xmProductDb=productService.getProductFromCache(xmTestCasedbDb.getProductId());
if(StringUtils.hasText(xmTestCasedb.getCuserid())){ if(StringUtils.hasText(xmTestCasedb.getCuserid())){
tips=productQxService.checkProductQx(null,xmProductDb,1,user,xmTestCasedb.getCuserid(),xmTestCasedb.getCusername(),xmTestCasedb.getCbranchId());
tips=productQxService.checkProductQx(xmProductDb,1,user,xmTestCasedb.getCuserid(),xmTestCasedb.getCusername(),xmTestCasedb.getCbranchId());
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -271,7 +271,7 @@ public class XmTestCasedbController {
can=xmTestCasedbsDb; can=xmTestCasedbsDb;
}else { }else {
for (XmTestCasedb data : xmTestCasedbsDb) { for (XmTestCasedb data : xmTestCasedbsDb) {
tips=productQxService.checkProductQx(null,xmProductDb,1,user,data.getCuserid(),data.getCusername(),data.getCbranchId());
tips=productQxService.checkProductQx(xmProductDb,1,user,data.getCuserid(),data.getCusername(),data.getCbranchId());
if(!tips.isOk()){ if(!tips.isOk()){
no.add(data); no.add(data);
noTips.add(tips.getMsg()); noTips.add(tips.getMsg());
@ -340,7 +340,7 @@ public class XmTestCasedbController {
can=datasDb; can=datasDb;
}else { }else {
for (XmTestCasedb data : datasDb) { for (XmTestCasedb data : datasDb) {
tips=productQxService.checkProductQx(null,xmProductDb,1,user,data.getCuserid(),data.getCusername(),data.getCbranchId());
tips=productQxService.checkProductQx(xmProductDb,1,user,data.getCuserid(),data.getCusername(),data.getCbranchId());
if(!tips.isOk()){ if(!tips.isOk()){
no.add(data); no.add(data);
noTips.add(tips.getMsg()); noTips.add(tips.getMsg());

102
xm-core/src/main/java/com/xm/core/ctrl/XmTestPlanCaseController.java

@ -186,41 +186,6 @@ public class XmTestPlanCaseController {
return m; return m;
} }
@ApiOperation( value = "新增一条测试计划与用例关系表信息",notes=" ")
@ApiResponses({
@ApiResponse(code = 200,response=XmTestPlanCase.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}")
})
@RequestMapping(value="/add",method=RequestMethod.POST)
public Map<String,Object> addXmTestPlanCase(@RequestBody XmTestPlanCase xmTestPlanCase) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增一条数据");
try{
boolean createPk=false;
if(!StringUtils.hasText(xmTestPlanCase.getCaseId())) {
createPk=true;
xmTestPlanCase.setCaseId(xmTestPlanCaseService.createKey("caseId"));
}
if(!StringUtils.hasText(xmTestPlanCase.getPlanId())) {
createPk=true;
xmTestPlanCase.setPlanId(xmTestPlanCaseService.createKey("planId"));
}
if(createPk==false){
if(xmTestPlanCaseService.selectOneObject(xmTestPlanCase) !=null ){
return failed("pk-exists","编号重复,请修改编号再提交");
}
}
xmTestPlanCaseService.insert(xmTestPlanCase);
m.put("data",xmTestPlanCase);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
@ -276,6 +241,7 @@ public class XmTestPlanCaseController {
xmTestPlanCase.setExecUsername(user.getUsername()); xmTestPlanCase.setExecUsername(user.getUsername());
xmTestPlanCase.setPriority(xmTestCase.getCpriority()); xmTestPlanCase.setPriority(xmTestCase.getCpriority());
xmTestPlanCase.setProjectId(xmTestPlanDb.getProjectId()); xmTestPlanCase.setProjectId(xmTestPlanDb.getProjectId());
xmTestPlanCase.setProductId(xmProductDb.getId());
planCases.add(xmTestPlanCase); planCases.add(xmTestPlanCase);
} }
this.xmTestPlanCaseService.batchInsert(planCases); this.xmTestPlanCaseService.batchInsert(planCases);
@ -310,6 +276,15 @@ public class XmTestPlanCaseController {
if( xmTestPlanCaseDb == null ){ if( xmTestPlanCaseDb == null ){
return failed("data-not-exists","数据不存在,无法删除"); return failed("data-not-exists","数据不存在,无法删除");
} }
XmProduct xmProductDb=productService.getProductFromCache(xmTestPlanCaseDb.getProductId());
if(xmProductDb==null){
return failed("product-not-exists","产品已不存在");
}
User user=LoginUtils.getCurrentUserInfo();
tips=productQxService.checkProductQx(xmProductDb,1,user);
if(!tips.isOk()){
return failed(tips);
}
xmTestPlanCaseService.deleteByPk(xmTestPlanCase); xmTestPlanCaseService.deleteByPk(xmTestPlanCase);
}catch (BizException e) { }catch (BizException e) {
tips=e.getTips(); tips=e.getTips();
@ -341,6 +316,15 @@ public class XmTestPlanCaseController {
if( xmTestPlanCaseDb == null ){ if( xmTestPlanCaseDb == null ){
return failed("data-not-exists","数据不存在,无法修改"); return failed("data-not-exists","数据不存在,无法修改");
} }
XmProduct xmProductDb=productService.getProductFromCache(xmTestPlanCaseDb.getProductId());
if(xmProductDb==null){
return failed("product-not-exists","产品已不存在");
}
User user=LoginUtils.getCurrentUserInfo();
tips=productQxService.checkProductQx(xmProductDb,1,user);
if(!tips.isOk()){
return failed(tips);
}
xmTestPlanCaseService.updateSomeFieldByPk(xmTestPlanCase); xmTestPlanCaseService.updateSomeFieldByPk(xmTestPlanCase);
m.put("data",xmTestPlanCase); m.put("data",xmTestPlanCase);
}catch (BizException e) { }catch (BizException e) {
@ -394,18 +378,27 @@ public class XmTestPlanCaseController {
} }
List<XmTestPlanCase> can=new ArrayList<>(); List<XmTestPlanCase> can=new ArrayList<>();
List<XmTestPlanCase> no=new ArrayList<>(); List<XmTestPlanCase> no=new ArrayList<>();
Set<String> noTipsSet=new HashSet<>();
XmTestPlanCase xmTestPlanCaseDb=xmTestPlanCasesDb.get(0); XmTestPlanCase xmTestPlanCaseDb=xmTestPlanCasesDb.get(0);
if(xmTestPlanCasesDb.stream().filter(k->!k.getPlanId().equals(xmTestPlanCaseDb.getPlanId())).findAny().isPresent()){ if(xmTestPlanCasesDb.stream().filter(k->!k.getPlanId().equals(xmTestPlanCaseDb.getPlanId())).findAny().isPresent()){
return failed("planId-0","批量操作只能操作同一个测试计划的用例"); return failed("planId-0","批量操作只能操作同一个测试计划的用例");
} }
User user = LoginUtils.getCurrentUserInfo(); User user = LoginUtils.getCurrentUserInfo();
productService.getProductFromCache(xm)
productQxService.checkProductQx(xm)
for (XmTestPlanCase xmTestPlanCaseDb : xmTestPlanCasesDb) {
Tips tips2 = new Tips("检查通过");
productQxService.
XmProduct xmProductDb=productService.getProductFromCache(xmTestPlanCaseDb.getProductId());
if(xmProductDb==null){
return failed("product-not-exists","产品已不存在");
}
tips=productQxService.checkProductQx(xmProductDb,1,user);
if(!tips.isOk()){
return failed(tips);
}
for (XmTestPlanCase pcDb : xmTestPlanCasesDb) {
Tips tips2 = new Tips("成功");
tips2=productQxService.checkProductQx(xmProductDb,1,user,pcDb.getExecUserid(),pcDb.getExecUsername(),null);
if(!tips2.isOk()){ if(!tips2.isOk()){
no.add(xmTestPlanCaseDb); no.add(xmTestPlanCaseDb);
noTipsSet.add(tips2.getMsg());
}else{ }else{
can.add(xmTestPlanCaseDb); can.add(xmTestPlanCaseDb);
} }
@ -419,7 +412,7 @@ public class XmTestPlanCaseController {
msgs.add(String.format("成功更新以下%s条数据",can.size())); msgs.add(String.format("成功更新以下%s条数据",can.size()));
} }
if(no.size()>0){ if(no.size()>0){
msgs.add(String.format("以下%s个数据无权限更新",no.size()));
msgs.add(String.format("以下%s个数据无权限更新,原因【%s】",no.size(),noTipsSet.stream().collect(Collectors.joining(";"))));
} }
if(can.size()>0){ if(can.size()>0){
tips.setOkMsg(msgs.stream().collect(Collectors.joining())); tips.setOkMsg(msgs.stream().collect(Collectors.joining()));
@ -454,11 +447,28 @@ public class XmTestPlanCaseController {
List<XmTestPlanCase> can=new ArrayList<>(); List<XmTestPlanCase> can=new ArrayList<>();
List<XmTestPlanCase> no=new ArrayList<>(); List<XmTestPlanCase> no=new ArrayList<>();
for (XmTestPlanCase data : datasDb) {
if(true){
can.add(data);
Set<String> noTipsSet=new HashSet<>();
XmTestPlanCase xmTestPlanCaseDb=datasDb.get(0);
if(datasDb.stream().filter(k->!k.getPlanId().equals(xmTestPlanCaseDb.getPlanId())).findAny().isPresent()){
return failed("planId-0","批量操作只能操作同一个测试计划的用例");
}
User user = LoginUtils.getCurrentUserInfo();
XmProduct xmProductDb=productService.getProductFromCache(xmTestPlanCaseDb.getProductId());
if(xmProductDb==null){
return failed("product-not-exists","产品已不存在");
}
tips=productQxService.checkProductQx(xmProductDb,1,user);
if(!tips.isOk()){
return failed(tips);
}
for (XmTestPlanCase pcDb : datasDb) {
Tips tips1=productQxService.checkProductQx(xmProductDb,1,user,pcDb.getExecUserid(),pcDb.getExecUsername(),null);
if(tips1.isOk()){
can.add(pcDb);
}else{ }else{
no.add(data);
no.add(pcDb);
noTipsSet.add(tips1.getMsg());
} }
} }
List<String> msgs=new ArrayList<>(); List<String> msgs=new ArrayList<>();
@ -468,7 +478,7 @@ public class XmTestPlanCaseController {
} }
if(no.size()>0){ if(no.size()>0){
msgs.add(String.format("以下%s条数据不能删除.【%s】",no.size(),no.stream().map(i-> i.getCaseId() +" "+ i.getPlanId() ).collect(Collectors.joining(","))));
msgs.add(String.format("以下%s条数据不能删除.原因【%s】",no.size(),noTipsSet.stream().collect(Collectors.joining(";"))));
} }
if(can.size()>0){ if(can.size()>0){
tips.setOkMsg(msgs.stream().collect(Collectors.joining())); tips.setOkMsg(msgs.stream().collect(Collectors.joining()));

10
xm-core/src/main/java/com/xm/core/ctrl/XmTestPlanController.java

@ -144,7 +144,7 @@ public class XmTestPlanController {
XmProduct xmProductDb=productService.getProductFromCache(xmTestPlan.getProductId()); XmProduct xmProductDb=productService.getProductFromCache(xmTestPlan.getProductId());
boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid()); boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid());
if(!isPm){ if(!isPm){
tips=productQxService.checkProductQx(null,xmProductDb,1,user,xmTestPlan.getCuserid(),xmTestPlan.getCusername(),xmTestPlan.getCbranchId());
tips=productQxService.checkProductQx(xmProductDb,1,user,xmTestPlan.getCuserid(),xmTestPlan.getCusername(),xmTestPlan.getCbranchId());
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -188,7 +188,7 @@ public class XmTestPlanController {
XmProduct xmProductDb=productService.getProductFromCache(xmTestPlanDb.getProductId()); XmProduct xmProductDb=productService.getProductFromCache(xmTestPlanDb.getProductId());
boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid()); boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid());
if(!isPm){ if(!isPm){
tips=productQxService.checkProductQx(null,xmProductDb,1,user,xmTestPlanDb.getCuserid(),xmTestPlanDb.getCusername(),xmTestPlanDb.getCbranchId());
tips=productQxService.checkProductQx(xmProductDb,1,user,xmTestPlanDb.getCuserid(),xmTestPlanDb.getCusername(),xmTestPlanDb.getCbranchId());
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -227,7 +227,7 @@ public class XmTestPlanController {
XmProduct xmProductDb=productService.getProductFromCache(xmTestPlanDb.getProductId()); XmProduct xmProductDb=productService.getProductFromCache(xmTestPlanDb.getProductId());
boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid()); boolean isPm=groupService.checkUserIsProductAdm(xmProductDb,user.getUserid());
if(!isPm){ if(!isPm){
tips=productQxService.checkProductQx(null,xmProductDb,1,user,xmTestPlanDb.getCuserid(),xmTestPlanDb.getCusername(),xmTestPlanDb.getCbranchId());
tips=productQxService.checkProductQx(xmProductDb,1,user,xmTestPlanDb.getCuserid(),xmTestPlanDb.getCusername(),xmTestPlanDb.getCbranchId());
if(!tips.isOk()){ if(!tips.isOk()){
return failed(tips); return failed(tips);
} }
@ -292,7 +292,7 @@ public class XmTestPlanController {
can=xmTestPlansDb; can=xmTestPlansDb;
}else { }else {
for (XmTestPlan xmTestPlanDb : xmTestPlansDb) { for (XmTestPlan xmTestPlanDb : xmTestPlansDb) {
Tips tips2 =productQxService.checkProductQx(null,xmProductDb,1,user,xmTestPlanDb.getCuserid(),xmTestPlanDb.getCusername(),xmTestPlanDb.getCbranchId());
Tips tips2 =productQxService.checkProductQx(xmProductDb,1,user,xmTestPlanDb.getCuserid(),xmTestPlanDb.getCusername(),xmTestPlanDb.getCbranchId());
if(!tips2.isOk()){ if(!tips2.isOk()){
no.add(xmTestPlanDb); no.add(xmTestPlanDb);
noTips.add(tips2.getMsg()); noTips.add(tips2.getMsg());
@ -356,7 +356,7 @@ public class XmTestPlanController {
can=datasDb; can=datasDb;
}else { }else {
for (XmTestPlan xmTestPlanDb : datasDb) { for (XmTestPlan xmTestPlanDb : datasDb) {
Tips tips2 =productQxService.checkProductQx(null,xmProductDb,1,user,xmTestPlanDb.getCuserid(),xmTestPlanDb.getCusername(),xmTestPlanDb.getCbranchId());
Tips tips2 =productQxService.checkProductQx(xmProductDb,1,user,xmTestPlanDb.getCuserid(),xmTestPlanDb.getCusername(),xmTestPlanDb.getCbranchId());
if(!tips2.isOk()){ if(!tips2.isOk()){
no.add(xmTestPlanDb); no.add(xmTestPlanDb);
noTips.add(tips2.getMsg()); noTips.add(tips2.getMsg());

84
xm-core/src/main/java/com/xm/core/service/XmProductQxService.java

@ -47,45 +47,31 @@ public class XmProductQxService {
* @return * @return
*/ */
public Tips checkProductQx(XmProduct xmProduct, int teamType, User head){ public Tips checkProductQx(XmProduct xmProduct, int teamType, User head){
return this.checkProductQx(null,xmProduct,teamType,head);
}
/**
*
* @param groupsMap 产品组缓存数据当需要循环执行时避免多次查询缓存与数据库
* @param xmProduct
* @param teamType 0-需求人员 1-测试人员,2-迭代人员
* @param head
* @return
*/
public Tips checkProductQx(Map<String,List<XmGroupVo>> groupsMap,XmProduct xmProduct,int teamType,User head){
Tips tips=this.checkProductScopeQx(groupsMap,xmProduct,teamType,head.getUserid(),head.getUsername(),head.getBranchId());
return tips;
return this.checkProductQx(xmProduct,teamType,head);
} }
/** /**
* *
* @param groupsMap 产品组缓存数据当需要循环执行时避免多次查询缓存与数据库
* @param xmProduct * @param xmProduct
* @param teamType 0-需求人员 1-测试人员,2-迭代人员 * @param teamType 0-需求人员 1-测试人员,2-迭代人员
* @param head * @param head
* @return * @return
*/ */
public Tips checkProductQx(Map<String,List<XmGroupVo>> groupsMap,XmProduct xmProduct,int teamType,User head,String memUserid,String memUsername,String memBranchId){
public Tips checkProductQx(XmProduct xmProduct,int teamType,User head,String memUserid,String memUsername,String memBranchId){
Tips tips=new Tips("成功"); Tips tips=new Tips("成功");
tips=this.checkProductScopeQx(groupsMap,xmProduct,teamType,head,memUserid,memUsername,memBranchId);
tips=this.checkProductScopeQx(xmProduct,teamType,head,memUserid,memUsername,memBranchId);
if(!tips.isOk()){ if(!tips.isOk()){
return tips; return tips;
} }
return this.checkProductTransmitQx(groupsMap,xmProduct,teamType,head,memUserid,memUsername);
return this.checkProductTransmitQx(xmProduct,teamType,head,memUserid,memUsername);
} }
public Tips checkProductScopeQx(Map<String,List<XmGroupVo>> groupsMap,XmProduct xmProduct,int teamType,User head,String memUserid,String memUsername,String memBranchId){
public Tips checkProductScopeQx(XmProduct xmProduct,int teamType,User head,String memUserid,String memUsername,String memBranchId){
Tips tips=new Tips("成功"); Tips tips=new Tips("成功");
if(!StringUtils.hasText(memUserid)|| memUserid.equals(head.getUserid())){ if(!StringUtils.hasText(memUserid)|| memUserid.equals(head.getUserid())){
return this.checkProductScopeQx(groupsMap,xmProduct,teamType,head.getUserid(),head.getUsername(),head.getBranchId());
return this.checkProductScopeQx(xmProduct,teamType,head.getUserid(),head.getUsername(),head.getBranchId());
} }
String headUsername=StringUtils.hasText(head.getUsername())?head.getUsername():head.getUserid(); String headUsername=StringUtils.hasText(head.getUsername())?head.getUsername():head.getUserid();
String scopeQx= QxTool.getProductScopeQx(xmProduct.getQxCode(),teamType); String scopeQx= QxTool.getProductScopeQx(xmProduct.getQxCode(),teamType);
@ -116,7 +102,7 @@ public class XmProductQxService {
}else if("2".equals(scopeQx)){//同产品 }else if("2".equals(scopeQx)){//同产品
List<XmGroupVo> groups=this.getProductGroupsFromLocalCache(groupsMap,xmProduct.getId());
List<XmGroupVo> groups=this.getProductGroupsFromLocalCache(xmProduct.getId());
if( !headIsPm && !xmGroupService.checkUserExistsGroup(groups, head.getUserid())){ if( !headIsPm && !xmGroupService.checkUserExistsGroup(groups, head.getUserid())){
tips.setFailureMsg("pdqx-scope-product-0",String.format("产品【%s】只开放给同一个产品团队人员,【%s】不在产品团队中。",xmProduct.getId(),headUsername)); tips.setFailureMsg("pdqx-scope-product-0",String.format("产品【%s】只开放给同一个产品团队人员,【%s】不在产品团队中。",xmProduct.getId(),headUsername));
return tips; return tips;
@ -130,7 +116,7 @@ public class XmProductQxService {
tips.setFailureMsg("pdqx-scope-product-1",String.format("产品【%s】只开放给同一个产品团队人员,【%s】不在产品团队中。",xmProduct.getId(),memUsername)); tips.setFailureMsg("pdqx-scope-product-1",String.format("产品【%s】只开放给同一个产品团队人员,【%s】不在产品团队中。",xmProduct.getId(),memUsername));
return tips; return tips;
}else if("3".equals(scopeQx)){//同小组 }else if("3".equals(scopeQx)){//同小组
List<XmGroupVo> groups=this.getProductGroupsFromLocalCache(groupsMap,xmProduct.getId());
List<XmGroupVo> groups=this.getProductGroupsFromLocalCache(xmProduct.getId());
List<XmGroupVo> headGroups=groups; List<XmGroupVo> headGroups=groups;
if( !headIsPm ){ if( !headIsPm ){
@ -163,7 +149,7 @@ public class XmProductQxService {
* @param memBranchId * @param memBranchId
* @return * @return
*/ */
public Tips checkProductScopeQx(Map<String,List<XmGroupVo>> groupsMap,XmProduct xmProduct,int teamType,String memUserid,String memUsername,String memBranchId){
public Tips checkProductScopeQx(XmProduct xmProduct,int teamType,String memUserid,String memUsername,String memBranchId){
Tips tips=new Tips("成功"); Tips tips=new Tips("成功");
String scopeQx= QxTool.getProductScopeQx(xmProduct.getQxCode(),teamType); String scopeQx= QxTool.getProductScopeQx(xmProduct.getQxCode(),teamType);
boolean isPm=xmGroupService.checkUserIsProductAdm(xmProduct,memUserid); boolean isPm=xmGroupService.checkUserIsProductAdm(xmProduct,memUserid);
@ -192,13 +178,13 @@ public class XmProductQxService {
} }
}else if("2".equals(scopeQx)){//同产品 }else if("2".equals(scopeQx)){//同产品
if(!xmGroupService.checkUserExistsGroup(getProductGroupsFromLocalCache(groupsMap,xmProduct.getId()), memUserid)){
if(!xmGroupService.checkUserExistsGroup(getProductGroupsFromLocalCache(xmProduct.getId()), memUserid)){
tips.setFailureMsg("pdqx-scope-product-0",String.format("产品【%s】只开放给同一个产品团队人员,【%s】不在产品团队中。",xmProduct.getId(),memUsername)); tips.setFailureMsg("pdqx-scope-product-0",String.format("产品【%s】只开放给同一个产品团队人员,【%s】不在产品团队中。",xmProduct.getId(),memUsername));
return tips; return tips;
}; };
}else if("3".equals(scopeQx)){//同小组 }else if("3".equals(scopeQx)){//同小组
if(!xmGroupService.checkUserExistsGroup(getProductGroupsFromLocalCache(groupsMap,xmProduct.getId()), memUserid)){
if(!xmGroupService.checkUserExistsGroup(getProductGroupsFromLocalCache(xmProduct.getId()), memUserid)){
tips.setFailureMsg("pdqx-scope-team-0",String.format("产品【%s】只开放给同一个产品团队下同一个小组人员,【%s】不在产品团队中。",xmProduct.getId(),memUsername)); tips.setFailureMsg("pdqx-scope-team-0",String.format("产品【%s】只开放给同一个产品团队下同一个小组人员,【%s】不在产品团队中。",xmProduct.getId(),memUsername));
return tips; return tips;
} }
@ -207,10 +193,10 @@ public class XmProductQxService {
} }
public Tips checkProductTransmitQx(Map<String,List<XmGroupVo>> groupsMap,XmProduct xmProduct,int teamType,User head){
return checkProductTransmitQx(groupsMap,xmProduct,teamType,head,null,null);
public Tips checkProductTransmitQx(XmProduct xmProduct,int teamType,User head){
return checkProductTransmitQx(xmProduct,teamType,head,null,null);
} }
public Tips checkProductTransmitQx(Map<String,List<XmGroupVo>> groupsMap,XmProduct xmProduct,int teamType,User head,String memUserid,String memUsername){
public Tips checkProductTransmitQx(XmProduct xmProduct,int teamType,User head,String memUserid,String memUsername){
Tips tips=new Tips("成功"); Tips tips=new Tips("成功");
if(!StringUtils.hasText(memUserid) || memUserid.equals(head.getUserid())){ if(!StringUtils.hasText(memUserid) || memUserid.equals(head.getUserid())){
return tips; return tips;
@ -223,7 +209,7 @@ public class XmProductQxService {
return tips; return tips;
} }
List<XmGroupVo> groups=getProductGroupsFromLocalCache(groupsMap,xmProduct.getId());
List<XmGroupVo> groups=getProductGroupsFromLocalCache(xmProduct.getId());
if(xmGroupService.checkUserIsOtherUserTeamHeadOrAss(groups, head.getUserid(), memUserid)){ if(xmGroupService.checkUserIsOtherUserTeamHeadOrAss(groups, head.getUserid(), memUserid)){
return tips; return tips;
} }
@ -235,34 +221,24 @@ public class XmProductQxService {
return tips; return tips;
} }
public Tips checkProductQxBatch(Map<String,List<XmGroupVo>> groupsMap,XmProduct xmProduct,int teamType,User head,String ...memUserids){
Tips tips=new Tips("成功");
tips=this.checkProductScopeQxBatch(groupsMap,xmProduct,teamType,head,memUserids);
if(!tips.isOk()){
return tips;
}
return this.checkProductTransmitQxBatch(groupsMap,xmProduct,teamType,head.getUserid(),memUserids);
}
public Tips checkProductQxBatch(XmProduct xmProduct,int teamType,User head,String ...memUserids){ public Tips checkProductQxBatch(XmProduct xmProduct,int teamType,User head,String ...memUserids){
Tips tips=new Tips("成功"); Tips tips=new Tips("成功");
Map<String,List<XmGroupVo>> groupsMap=new HashMap<>();
tips=this.checkProductScopeQxBatch(groupsMap,xmProduct,teamType,head,memUserids);
tips=this.checkProductScopeQxBatch(xmProduct,teamType,head,memUserids);
if(!tips.isOk()){ if(!tips.isOk()){
return tips; return tips;
} }
return this.checkProductTransmitQxBatch(groupsMap,xmProduct,teamType,head.getUserid(),memUserids);
return this.checkProductTransmitQxBatch(xmProduct,teamType,head.getUserid(),memUserids);
} }
public Tips checkProductScopeQxBatch(Map<String,List<XmGroupVo>> groupsMap,XmProduct xmProduct,int teamType,User head,String ...memUserids){
public Tips checkProductScopeQxBatch(XmProduct xmProduct,int teamType,User head,String ...memUserids){
Tips tips=new Tips("成功"); Tips tips=new Tips("成功");
if(memUserids==null || memUserids.length==0){ if(memUserids==null || memUserids.length==0){
return this.checkProductScopeQx(groupsMap,xmProduct,teamType,head.getUserid(),head.getUsername(),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(groupsMap,xmProduct,teamType,head.getUserid(),head.getUsername(),head.getBranchId());
return this.checkProductScopeQx(xmProduct,teamType,head.getUserid(),head.getUsername(),head.getBranchId());
} }
String username=head.getUsername(); String username=head.getUsername();
String scopeQx= QxTool.getProductScopeQx(xmProduct.getQxCode(),teamType); String scopeQx= QxTool.getProductScopeQx(xmProduct.getQxCode(),teamType);
@ -295,7 +271,7 @@ public class XmProductQxService {
}else if("2".equals(scopeQx)){//同产品 }else if("2".equals(scopeQx)){//同产品
List<XmGroupVo> groups=this.getProductGroupsFromLocalCache(groupsMap,xmProduct.getId());
List<XmGroupVo> groups=this.getProductGroupsFromLocalCache(xmProduct.getId());
if( !headIsPm && !xmGroupService.checkUserExistsGroup(groups, head.getUserid())){ if( !headIsPm && !xmGroupService.checkUserExistsGroup(groups, head.getUserid())){
tips.setFailureMsg("pdqx-scope-product-0",String.format("产品【%s】只开放给同一个产品团队人员,【%s】不在产品团队中。",xmProduct.getId(),username)); tips.setFailureMsg("pdqx-scope-product-0",String.format("产品【%s】只开放给同一个产品团队人员,【%s】不在产品团队中。",xmProduct.getId(),username));
return tips; return tips;
@ -311,7 +287,7 @@ public class XmProductQxService {
tips.setFailureMsg("pdqx-scope-product-1",String.format("产品【%s】只开放给同一个产品团队人员,【%s】不在产品团队中。",xmProduct.getId(),memUseridSet.stream().collect(Collectors.joining(",")))); 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.getProductGroupsFromLocalCache(groupsMap,xmProduct.getId());
List<XmGroupVo> groups=this.getProductGroupsFromLocalCache(xmProduct.getId());
List<XmGroupVo> headGroups=groups; List<XmGroupVo> headGroups=groups;
if( !headIsPm ){ if( !headIsPm ){
@ -337,21 +313,13 @@ public class XmProductQxService {
} }
List<XmGroupVo> getProductGroupsFromLocalCache(Map<String,List<XmGroupVo>> groupsMap,String productId){
List<XmGroupVo> groupVoList=null;
if(groupsMap!=null && groupsMap.containsKey(productId)){
groupVoList=groupsMap.get(productId);
}else{
groupVoList=xmGroupService.getProductGroupVoList(productId);
if(groupsMap!=null){
groupsMap.put(productId,groupVoList);
}
}
List<XmGroupVo> getProductGroupsFromLocalCache(String productId){
List<XmGroupVo> groupVoList =xmGroupService.getProductGroupVoList(productId);
return groupVoList; return groupVoList;
} }
public Tips checkProductTransmitQxBatch(Map<String,List<XmGroupVo>> groupsMap,XmProduct xmProduct,int teamType,String headUserid,String ...memUserids){
public Tips checkProductTransmitQxBatch(XmProduct xmProduct,int teamType,String headUserid,String ...memUserids){
Tips tips=new Tips("成功"); Tips tips=new Tips("成功");
String transmitQx= QxTool.getProductTransmitQx(xmProduct.getQxCode(),teamType); String transmitQx= QxTool.getProductTransmitQx(xmProduct.getQxCode(),teamType);
if("0".equals(transmitQx)){//不检查上下级关系 if("0".equals(transmitQx)){//不检查上下级关系
@ -364,7 +332,7 @@ public class XmProductQxService {
if(memUseridSet.size()==0){ if(memUseridSet.size()==0){
return tips; return tips;
} }
List<XmGroupVo> groups=getProductGroupsFromLocalCache(groupsMap,xmProduct.getId());
List<XmGroupVo> groups=getProductGroupsFromLocalCache(xmProduct.getId());
for (String memUserid : memUseridSet) { for (String memUserid : memUseridSet) {
if(xmGroupService.checkUserIsOtherUserTeamHeadOrAss(groups,headUserid,memUserid)){ if(xmGroupService.checkUserIsOtherUserTeamHeadOrAss(groups,headUserid,memUserid)){
return tips; return tips;

87
xm-core/src/main/java/com/xm/core/service/XmProjectQxService.java

@ -37,61 +37,49 @@ public class XmProjectQxService {
SysClient sysClient; SysClient sysClient;
/**
*
* @param xmProject
* @param teamType 0-团队相关 1-测试相关2-任务相关
* @param head
* @return
*/
public Tips checkProjectQx(XmProject xmProject, int teamType, User head){
return this.checkProjectQx(null,xmProject,teamType,head);
}
/** /**
* *
* @param xmProject * @param xmProject
* @param teamType 0-任务相关 1-测试相关,2-迭代相关 * @param teamType 0-任务相关 1-测试相关,2-迭代相关
* @return * @return
*/ */
public Tips checkProjectQx(Map<String,List<XmGroupVo>> groupsMap,XmProject xmProject, int teamType, String userid,String username,String branchId){
return this.checkProjectScopeQx( groupsMap,xmProject,teamType,userid,username,branchId);
public Tips checkProjectQx(XmProject xmProject, int teamType, String userid,String username,String branchId){
return this.checkProjectScopeQx( xmProject,teamType,userid,username,branchId);
} }
/** /**
* *
* @param groupsMap 项目组缓存数据当需要循环执行时避免多次查询缓存与数据库
* @param xmProject * @param xmProject
* @param teamType 0-任务相关 1-测试相关,2-迭代相关 * @param teamType 0-任务相关 1-测试相关,2-迭代相关
* @param head * @param head
* @return * @return
*/ */
public Tips checkProjectQx(Map<String,List<XmGroupVo>> groupsMap,XmProject xmProject,int teamType,User head){
Tips tips=this.checkProjectScopeQx(groupsMap,xmProject,teamType,head.getUserid(),head.getUsername(),head.getBranchId());
public Tips checkProjectQx(XmProject xmProject,int teamType,User head){
Tips tips=this.checkProjectScopeQx(xmProject,teamType,head.getUserid(),head.getUsername(),head.getBranchId());
return tips; return tips;
} }
/** /**
* *
* @param groupsMap 项目组缓存数据当需要循环执行时避免多次查询缓存与数据库
* @param xmProject * @param xmProject
* @param teamType 0-任务相关 1-测试相关,2-迭代相关 * @param teamType 0-任务相关 1-测试相关,2-迭代相关
* @param head * @param head
* @return * @return
*/ */
public Tips checkProjectQx(Map<String,List<XmGroupVo>> groupsMap,XmProject xmProject,int teamType,User head,String memUserid,String memUsername,String memBranchId){
public Tips checkProjectQx(XmProject xmProject,int teamType,User head,String memUserid,String memUsername,String memBranchId){
Tips tips=new Tips("成功"); Tips tips=new Tips("成功");
tips=this.checkProjectScopeQx(groupsMap,xmProject,teamType,head,memUserid,memUsername,memBranchId);
tips=this.checkProjectScopeQx(xmProject,teamType,head,memUserid,memUsername,memBranchId);
if(!tips.isOk()){ if(!tips.isOk()){
return tips; return tips;
} }
return this.checkProjectTransmitQx(groupsMap,xmProject,teamType,head,memUserid,memUsername);
return this.checkProjectTransmitQx(xmProject,teamType,head,memUserid,memUsername);
} }
public Tips checkProjectScopeQx(Map<String,List<XmGroupVo>> groupsMap,XmProject xmProject,int teamType,User head,String memUserid,String memUsername,String memBranchId){
public Tips checkProjectScopeQx(XmProject xmProject,int teamType,User head,String memUserid,String memUsername,String memBranchId){
Tips tips=new Tips("成功"); Tips tips=new Tips("成功");
if(!StringUtils.hasText(memUserid)|| memUserid.equals(head.getUserid())){ if(!StringUtils.hasText(memUserid)|| memUserid.equals(head.getUserid())){
return this.checkProjectScopeQx(groupsMap,xmProject,teamType,head.getUserid(),head.getUsername(),head.getBranchId());
return this.checkProjectScopeQx(xmProject,teamType,head.getUserid(),head.getUsername(),head.getBranchId());
} }
String headUsername=StringUtils.hasText(head.getUsername())?head.getUsername():head.getUserid(); String headUsername=StringUtils.hasText(head.getUsername())?head.getUsername():head.getUserid();
String scopeQx= QxTool.getProjectScopeQx(xmProject.getQxCode(),teamType); String scopeQx= QxTool.getProjectScopeQx(xmProject.getQxCode(),teamType);
@ -122,7 +110,7 @@ public class XmProjectQxService {
}else if("2".equals(scopeQx)){//同项目 }else if("2".equals(scopeQx)){//同项目
List<XmGroupVo> groups=this.getProjectGroupsFromLocalCache(groupsMap,xmProject.getId());
List<XmGroupVo> groups=this.getProjectGroupsFromLocalCache(xmProject.getId());
if( !headIsPm && !xmGroupService.checkUserExistsGroup(groups, head.getUserid())){ if( !headIsPm && !xmGroupService.checkUserExistsGroup(groups, head.getUserid())){
tips.setFailureMsg("pdqx-scope-product-0",String.format("项目【%s】只开放给同一个项目团队人员,【%s】不在项目团队中。",xmProject.getId(),headUsername)); tips.setFailureMsg("pdqx-scope-product-0",String.format("项目【%s】只开放给同一个项目团队人员,【%s】不在项目团队中。",xmProject.getId(),headUsername));
return tips; return tips;
@ -136,7 +124,7 @@ public class XmProjectQxService {
tips.setFailureMsg("pdqx-scope-product-1",String.format("项目【%s】只开放给同一个项目团队人员,【%s】不在项目团队中。",xmProject.getId(),memUsername)); tips.setFailureMsg("pdqx-scope-product-1",String.format("项目【%s】只开放给同一个项目团队人员,【%s】不在项目团队中。",xmProject.getId(),memUsername));
return tips; return tips;
}else if("3".equals(scopeQx)){//同小组 }else if("3".equals(scopeQx)){//同小组
List<XmGroupVo> groups=this.getProjectGroupsFromLocalCache(groupsMap,xmProject.getId());
List<XmGroupVo> groups=this.getProjectGroupsFromLocalCache(xmProject.getId());
List<XmGroupVo> headGroups=groups; List<XmGroupVo> headGroups=groups;
if( !headIsPm ){ if( !headIsPm ){
@ -169,7 +157,7 @@ public class XmProjectQxService {
* @param memBranchId * @param memBranchId
* @return * @return
*/ */
public Tips checkProjectScopeQx(Map<String,List<XmGroupVo>> groupsMap,XmProject xmProject,int teamType,String memUserid,String memUsername,String memBranchId){
public Tips checkProjectScopeQx(XmProject xmProject,int teamType,String memUserid,String memUsername,String memBranchId){
Tips tips=new Tips("成功"); Tips tips=new Tips("成功");
String scopeQx= QxTool.getProjectScopeQx(xmProject.getQxCode(),teamType); String scopeQx= QxTool.getProjectScopeQx(xmProject.getQxCode(),teamType);
boolean isPm=xmGroupService.checkUserIsProjectAdm(xmProject,memUserid); boolean isPm=xmGroupService.checkUserIsProjectAdm(xmProject,memUserid);
@ -198,13 +186,13 @@ public class XmProjectQxService {
} }
}else if("2".equals(scopeQx)){//同项目 }else if("2".equals(scopeQx)){//同项目
if(!xmGroupService.checkUserExistsGroup(getProjectGroupsFromLocalCache(groupsMap,xmProject.getId()), memUserid)){
if(!xmGroupService.checkUserExistsGroup(getProjectGroupsFromLocalCache(xmProject.getId()), memUserid)){
tips.setFailureMsg("pdqx-scope-product-0",String.format("项目【%s】只开放给同一个项目团队人员,【%s】不在项目团队中。",xmProject.getId(),memUsername)); tips.setFailureMsg("pdqx-scope-product-0",String.format("项目【%s】只开放给同一个项目团队人员,【%s】不在项目团队中。",xmProject.getId(),memUsername));
return tips; return tips;
}; };
}else if("3".equals(scopeQx)){//同小组 }else if("3".equals(scopeQx)){//同小组
if(!xmGroupService.checkUserExistsGroup(getProjectGroupsFromLocalCache(groupsMap,xmProject.getId()), memUserid)){
if(!xmGroupService.checkUserExistsGroup(getProjectGroupsFromLocalCache(xmProject.getId()), memUserid)){
tips.setFailureMsg("pdqx-scope-team-0",String.format("项目【%s】只开放给同一个项目团队下同一个小组人员,【%s】不在项目团队中。",xmProject.getId(),memUsername)); tips.setFailureMsg("pdqx-scope-team-0",String.format("项目【%s】只开放给同一个项目团队下同一个小组人员,【%s】不在项目团队中。",xmProject.getId(),memUsername));
return tips; return tips;
} }
@ -213,10 +201,10 @@ public class XmProjectQxService {
} }
public Tips checkProjectTransmitQx(Map<String,List<XmGroupVo>> groupsMap,XmProject xmProject,int teamType,User head){
return checkProjectTransmitQx(groupsMap,xmProject,teamType,head,null,null);
public Tips checkProjectTransmitQx(XmProject xmProject,int teamType,User head){
return checkProjectTransmitQx(xmProject,teamType,head,null,null);
} }
public Tips checkProjectTransmitQx(Map<String,List<XmGroupVo>> groupsMap,XmProject xmProject,int teamType,User head,String memUserid,String memUsername){
public Tips checkProjectTransmitQx(XmProject xmProject,int teamType,User head,String memUserid,String memUsername){
Tips tips=new Tips("成功"); Tips tips=new Tips("成功");
if(!StringUtils.hasText(memUserid) || memUserid.equals(head.getUserid())){ if(!StringUtils.hasText(memUserid) || memUserid.equals(head.getUserid())){
return tips; return tips;
@ -229,7 +217,7 @@ public class XmProjectQxService {
return tips; return tips;
} }
List<XmGroupVo> groups=getProjectGroupsFromLocalCache(groupsMap,xmProject.getId());
List<XmGroupVo> groups=getProjectGroupsFromLocalCache(xmProject.getId());
if(xmGroupService.checkUserIsOtherUserTeamHeadOrAss(groups, head.getUserid(), memUserid)){ if(xmGroupService.checkUserIsOtherUserTeamHeadOrAss(groups, head.getUserid(), memUserid)){
return tips; return tips;
} }
@ -241,14 +229,6 @@ public class XmProjectQxService {
return tips; return tips;
} }
public Tips checkProjectQxBatch(Map<String,List<XmGroupVo>> groupsMap,XmProject xmProject,int teamType,User head,String ...memUserids){
Tips tips=new Tips("成功");
tips=this.checkProjectScopeQxBatch(groupsMap,xmProject,teamType,head,memUserids);
if(!tips.isOk()){
return tips;
}
return this.checkProjectTransmitQxBatch(groupsMap,xmProject,teamType,head.getUserid(),memUserids);
}
public Tips checkProjectQxBatch(XmProject xmProject,int teamType,User head,String ...memUserids){ public Tips checkProjectQxBatch(XmProject xmProject,int teamType,User head,String ...memUserids){
Tips tips=new Tips("成功"); Tips tips=new Tips("成功");
@ -256,22 +236,22 @@ public class XmProjectQxService {
return tips; return tips;
} }
Map<String,List<XmGroupVo>> groupsMap=new HashMap<>(); Map<String,List<XmGroupVo>> groupsMap=new HashMap<>();
tips=this.checkProjectScopeQxBatch(groupsMap,xmProject,teamType,head,memUserids);
tips=this.checkProjectScopeQxBatch(xmProject,teamType,head,memUserids);
if(!tips.isOk()){ if(!tips.isOk()){
return tips; return tips;
} }
return this.checkProjectTransmitQxBatch(groupsMap,xmProject,teamType,head.getUserid(),memUserids);
return this.checkProjectTransmitQxBatch(xmProject,teamType,head.getUserid(),memUserids);
} }
public Tips checkProjectScopeQxBatch(Map<String,List<XmGroupVo>> groupsMap,XmProject xmProject,int teamType,User head,String ...memUserids){
public Tips checkProjectScopeQxBatch(XmProject xmProject,int teamType,User head,String ...memUserids){
Tips tips=new Tips("成功"); Tips tips=new Tips("成功");
if(memUserids==null || memUserids.length==0){ if(memUserids==null || memUserids.length==0){
return this.checkProjectScopeQx(groupsMap,xmProject,teamType,head.getUserid(),head.getUsername(),head.getBranchId());
return this.checkProjectScopeQx(xmProject,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.checkProjectScopeQx(groupsMap,xmProject,teamType,head.getUserid(),head.getUsername(),head.getBranchId());
return this.checkProjectScopeQx(xmProject,teamType,head.getUserid(),head.getUsername(),head.getBranchId());
} }
String username=head.getUsername(); String username=head.getUsername();
String scopeQx= QxTool.getProjectScopeQx(xmProject.getQxCode(),teamType); String scopeQx= QxTool.getProjectScopeQx(xmProject.getQxCode(),teamType);
@ -304,7 +284,7 @@ public class XmProjectQxService {
}else if("2".equals(scopeQx)){//同项目 }else if("2".equals(scopeQx)){//同项目
List<XmGroupVo> groups=this.getProjectGroupsFromLocalCache(groupsMap,xmProject.getId());
List<XmGroupVo> groups=this.getProjectGroupsFromLocalCache(xmProject.getId());
if( !headIsPm && !xmGroupService.checkUserExistsGroup(groups, head.getUserid())){ if( !headIsPm && !xmGroupService.checkUserExistsGroup(groups, head.getUserid())){
tips.setFailureMsg("pdqx-scope-product-0",String.format("项目【%s】只开放给同一个项目团队人员,【%s】不在项目团队中。",xmProject.getId(),username)); tips.setFailureMsg("pdqx-scope-product-0",String.format("项目【%s】只开放给同一个项目团队人员,【%s】不在项目团队中。",xmProject.getId(),username));
return tips; return tips;
@ -320,7 +300,7 @@ public class XmProjectQxService {
tips.setFailureMsg("pdqx-scope-product-1",String.format("项目【%s】只开放给同一个项目团队人员,【%s】不在项目团队中。",xmProject.getId(),memUseridSet.stream().collect(Collectors.joining(",")))); tips.setFailureMsg("pdqx-scope-product-1",String.format("项目【%s】只开放给同一个项目团队人员,【%s】不在项目团队中。",xmProject.getId(),memUseridSet.stream().collect(Collectors.joining(","))));
return tips; return tips;
}else if("3".equals(scopeQx)){//同小组 }else if("3".equals(scopeQx)){//同小组
List<XmGroupVo> groups=this.getProjectGroupsFromLocalCache(groupsMap,xmProject.getId());
List<XmGroupVo> groups=this.getProjectGroupsFromLocalCache(xmProject.getId());
List<XmGroupVo> headGroups=groups; List<XmGroupVo> headGroups=groups;
if( !headIsPm ){ if( !headIsPm ){
@ -346,21 +326,14 @@ public class XmProjectQxService {
} }
List<XmGroupVo> getProjectGroupsFromLocalCache(Map<String,List<XmGroupVo>> groupsMap,String projectId){
List<XmGroupVo> groupVoList=null;
if(groupsMap!=null && groupsMap.containsKey(projectId)){
groupVoList=groupsMap.get(projectId);
}else{
groupVoList=xmGroupService.getProjectGroupVoList(projectId);
if(groupsMap!=null){
groupsMap.put(projectId,groupVoList);
}
}
List<XmGroupVo> getProjectGroupsFromLocalCache(String projectId){
List<XmGroupVo> groupVoList= xmGroupService.getProjectGroupVoList(projectId);
return groupVoList; return groupVoList;
} }
public Tips checkProjectTransmitQxBatch(Map<String,List<XmGroupVo>> groupsMap,XmProject xmProject,int teamType,String headUserid,String ...memUserids){
public Tips checkProjectTransmitQxBatch(XmProject xmProject,int teamType,String headUserid,String ...memUserids){
Tips tips=new Tips("成功"); Tips tips=new Tips("成功");
String transmitQx= QxTool.getProjectTransmitQx(xmProject.getQxCode(),teamType); String transmitQx= QxTool.getProjectTransmitQx(xmProject.getQxCode(),teamType);
if("0".equals(transmitQx)){//不检查上下级关系 if("0".equals(transmitQx)){//不检查上下级关系
@ -373,7 +346,7 @@ public class XmProjectQxService {
if(memUseridSet.size()==0){ if(memUseridSet.size()==0){
return tips; return tips;
} }
List<XmGroupVo> groups=getProjectGroupsFromLocalCache(groupsMap,xmProject.getId());
List<XmGroupVo> groups=getProjectGroupsFromLocalCache(xmProject.getId());
for (String memUserid : memUseridSet) { for (String memUserid : memUseridSet) {
if(xmGroupService.checkUserIsOtherUserTeamHeadOrAss(groups,headUserid,memUserid)){ if(xmGroupService.checkUserIsOtherUserTeamHeadOrAss(groups,headUserid,memUserid)){
return tips; return tips;

Loading…
Cancel
Save