Browse Source

添加节点类型、标签等

master
陈裕财 4 years ago
parent
commit
a63ea10331
  1. 203
      xm-core/src/main/java/com/xm/core/ctrl/XmProjectGroupUserController.java
  2. 20
      xm-core/src/main/java/com/xm/core/service/XmProjectGroupService.java
  3. 8
      xm-core/src/main/java/com/xm/core/service/XmProjectGroupUserService.java
  4. 18
      xm-core/src/main/java/com/xm/core/vo/XmProjectGroupUserVo.java

203
xm-core/src/main/java/com/xm/core/ctrl/XmProjectGroupUserController.java

@ -14,7 +14,6 @@ import com.xm.core.entity.XmProjectGroupUser;
import com.xm.core.service.*; import com.xm.core.service.*;
import com.xm.core.service.cache.XmProjectGroupCacheService; import com.xm.core.service.cache.XmProjectGroupCacheService;
import com.xm.core.service.push.XmPushMsgService; import com.xm.core.service.push.XmPushMsgService;
import com.xm.core.vo.XmProjectGroupUserVo;
import com.xm.core.vo.XmProjectGroupVo; import com.xm.core.vo.XmProjectGroupVo;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
@ -23,10 +22,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import static com.mdp.core.utils.BaseUtils.map;
/** /**
* url编制采用rest风格,如对XM.xm_project_group_user xm_project_group_user的操作有增删改查,对应的url分别为:<br> * url编制采用rest风格,如对XM.xm_project_group_user xm_project_group_user的操作有增删改查,对应的url分别为:<br>
@ -110,7 +109,7 @@ public class XmProjectGroupUserController {
@ApiResponse(code = 200,response=XmProjectGroupUser.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") @ApiResponse(code = 200,response=XmProjectGroupUser.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}")
}) })
@RequestMapping(value="/add",method=RequestMethod.POST) @RequestMapping(value="/add",method=RequestMethod.POST)
public Map<String,Object> addXmProjectGroupUser(@RequestBody XmProjectGroupUserVo gu) {
public Map<String,Object> addXmProjectGroupUser(@RequestBody XmProjectGroupUser gu) {
Map<String,Object> m = new HashMap<>(); Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增一条数据"); Tips tips=new Tips("成功新增一条数据");
try{ try{
@ -175,8 +174,8 @@ public class XmProjectGroupUserController {
List<Map<String,Object>> users=new ArrayList<>(); List<Map<String,Object>> users=new ArrayList<>();
users.add(usermap); users.add(usermap);
pushMsgService.pushJoinChannelGroupMsg(user.getBranchId(), gu.getGroupId(), users); pushMsgService.pushJoinChannelGroupMsg(user.getBranchId(), gu.getGroupId(), users);
if("1".equals(0)){
xmRecordService.addXmGroupRecord("",gu.getGroupId(), "产品-团队-新增小组成员", "增加组员["+gu.getUsername()+"]",gu.getUserid(),null);
if("1".equals(pgClass)){
xmRecordService.addXmGroupRecord(gu.getProductId(),gu.getGroupId(), "产品-团队-新增小组成员", "增加组员["+gu.getUsername()+"]",gu.getUserid(),null);
}else{ }else{
xmRecordService.addXmGroupRecord(gu.getProjectId(),gu.getGroupId(), "项目-团队-新增小组成员", "增加组员["+gu.getUsername()+"]",gu.getUserid(),null); xmRecordService.addXmGroupRecord(gu.getProjectId(),gu.getGroupId(), "项目-团队-新增小组成员", "增加组员["+gu.getUsername()+"]",gu.getUserid(),null);
} }
@ -198,7 +197,7 @@ public class XmProjectGroupUserController {
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}") @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}")
}) })
@RequestMapping(value="/del",method=RequestMethod.POST) @RequestMapping(value="/del",method=RequestMethod.POST)
public Map<String,Object> delXmProjectGroupUser(@RequestBody XmProjectGroupUserVo gu){
public Map<String,Object> delXmProjectGroupUser(@RequestBody XmProjectGroupUser gu){
Map<String,Object> m = new HashMap<>(); Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功删除一条数据"); Tips tips=new Tips("成功删除一条数据");
try{ try{
@ -206,7 +205,10 @@ public class XmProjectGroupUserController {
return ResponseHelper.failed("pk-0","请上送小组编号,用户编号groupId,userid"); return ResponseHelper.failed("pk-0","请上送小组编号,用户编号groupId,userid");
} }
gu=this.xmProjectGroupUserService.selectOneObject(gu); gu=this.xmProjectGroupUserService.selectOneObject(gu);
if(gu==null){
return ResponseHelper.failed("data-0","小组已不存在");
}
String pgClass=gu.getPgClass();
User user=LoginUtils.getCurrentUserInfo(); User user=LoginUtils.getCurrentUserInfo();
if("1".equals(pgClass)){ if("1".equals(pgClass)){
@ -224,7 +226,7 @@ public class XmProjectGroupUserController {
} }
boolean isHead=xmProjectGroupService.checkUserIsTeamHeadOrAss(xmProjectGroupVo,user.getUserid()); boolean isHead=xmProjectGroupService.checkUserIsTeamHeadOrAss(xmProjectGroupVo,user.getUserid());
if(isHead==false){ if(isHead==false){
return ResponseHelper.failed("not-leader-ass","组长、副组长、组长助理以上人员可以添加小组成员。");
return ResponseHelper.failed("not-leader-ass","组长、副组长、组长助理以上人员可以删除小组成员。");
} }
} }
}else{ }else{
@ -243,11 +245,24 @@ public class XmProjectGroupUserController {
} }
boolean isHead=xmProjectGroupService.checkUserIsTeamHeadOrAss(xmProjectGroupVo,user.getUserid()); boolean isHead=xmProjectGroupService.checkUserIsTeamHeadOrAss(xmProjectGroupVo,user.getUserid());
if(isHead==false){ if(isHead==false){
return ResponseHelper.failed("not-leader-ass","组长、副组长、组长助理以上人员可以添加小组成员。");
return ResponseHelper.failed("not-leader-ass","组长、副组长、组长助理以上人员可以删除小组成员。");
} }
} }
} }
xmProjectGroupUserService.deleteByPk(gu); xmProjectGroupUserService.deleteByPk(gu);
Map<String,Object> usermap=new HashMap<>();
usermap.put("userid", gu.getUserid());
usermap.put("username", gu.getUsername());
List<Map<String,Object>> users=new ArrayList<>();
users.add(usermap);
pushMsgService.pushLeaveChannelGroupMsg(user.getBranchId(), gu.getGroupId(), users);
if("1".equals(pgClass)){
xmRecordService.addXmGroupRecord(gu.getProductId(),gu.getGroupId(), "项目-团队-删除小组成员", "删除组员["+gu.getUsername()+"]",gu.getUserid(),null);
}else{
xmRecordService.addXmGroupRecord(gu.getProjectId(),gu.getGroupId(), "项目-团队-删除小组成员", "删除组员["+gu.getUsername()+"]",gu.getUserid(),null);
}
}catch (BizException e) { }catch (BizException e) {
tips=e.getTips(); tips=e.getTips();
logger.error("",e); logger.error("",e);
@ -264,12 +279,66 @@ public class XmProjectGroupUserController {
@ApiResponse(code = 200,response=XmProjectGroupUser.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") @ApiResponse(code = 200,response=XmProjectGroupUser.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}")
}) })
@RequestMapping(value="/edit",method=RequestMethod.POST) @RequestMapping(value="/edit",method=RequestMethod.POST)
public Map<String,Object> editXmProjectGroupUser(@RequestBody XmProjectGroupUser xmProjectGroupUser) {
public Map<String,Object> editXmProjectGroupUser(@RequestBody XmProjectGroupUser gu0) {
Map<String,Object> m = new HashMap<>(); Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功更新一条数据"); Tips tips=new Tips("成功更新一条数据");
try{ try{
xmProjectGroupUserService.updateByPk(xmProjectGroupUser);
m.put("data",xmProjectGroupUser);
if(!StringUtils.hasText(gu0.getGroupId())||!StringUtils.hasText(gu0.getUserid())){
return ResponseHelper.failed("pk-0","请上送小组编号,用户编号groupId,userid");
}
XmProjectGroupUser gu=this.xmProjectGroupUserService.selectOneObject(gu0);
if(gu==null){
return ResponseHelper.failed("data-0","小组已不存在");
}
String pgClass=gu.getPgClass();
User user=LoginUtils.getCurrentUserInfo();
if("1".equals(pgClass)){
if(!StringUtils.hasText(gu.getProductId())){
return ResponseHelper.failed("productId-0","请上送小组归属产品编号");
}
XmProduct xmProduct=this.xmProductService.getProductFromCache(gu.getProductId());
if(xmProduct==null){
return ResponseHelper.failed("product-0","产品已不存在");
}
if(!xmProjectGroupService.checkUserIsProductAdm(xmProduct, user.getUserid())){
XmProjectGroupVo xmProjectGroupVo=this.xmProjectGroupService.getProductGroupFromCache(xmProduct.getId(),gu.getGroupId());
if(xmProjectGroupVo==null){
return ResponseHelper.failed("group-0","小组已不存在");
}
boolean isHead=xmProjectGroupService.checkUserIsTeamHeadOrAss(xmProjectGroupVo,user.getUserid());
if(isHead==false){
return ResponseHelper.failed("not-leader-ass","组长、副组长、组长助理以上人员可以修改小组成员。");
}
}
}else{
if(!StringUtils.hasText(gu.getProjectId())){
return ResponseHelper.failed("projectId-0","请上送小组归属项目编号");
}
XmProject xmProject=this.xmProjectService.getProjectFromCache(gu.getProjectId());
if(xmProject==null){
return ResponseHelper.failed("product-0","产品已不存在");
}
if(!xmProjectGroupService.checkUserIsProjectAdm(xmProject, user.getUserid())){
XmProjectGroupVo xmProjectGroupVo=this.xmProjectGroupService.getProductGroupFromCache(xmProject.getId(),gu.getGroupId());
if(xmProjectGroupVo==null){
return ResponseHelper.failed("group-0","小组已不存在");
}
boolean isHead=xmProjectGroupService.checkUserIsTeamHeadOrAss(xmProjectGroupVo,user.getUserid());
if(isHead==false){
return ResponseHelper.failed("not-leader-ass","组长、副组长、组长助理以上人员可以修改小组成员。");
}
}
}
xmProjectGroupUserService.updateSomeFieldByPk(gu0);
if("0".equals(pgClass)){
xmRecordService.addXmGroupRecord(gu.getProjectId(), gu.getGroupId(),"项目-团队-修改小组成员信息", "变更["+gu.getUsername()+"]");
}else {
xmRecordService.addXmGroupRecord(gu.getProductId(), gu.getGroupId(),"项目-团队-修改小组成员信息", "变更["+gu.getUsername()+"]");
}
m.put("data",gu);
}catch (BizException e) { }catch (BizException e) {
tips=e.getTips(); tips=e.getTips();
logger.error("",e); logger.error("",e);
@ -288,11 +357,109 @@ public class XmProjectGroupUserController {
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}") @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
}) })
@RequestMapping(value="/batchDel",method=RequestMethod.POST) @RequestMapping(value="/batchDel",method=RequestMethod.POST)
public Map<String,Object> batchDelXmProjectGroupUser(@RequestBody List<XmProjectGroupUser> xmProjectGroupUsers) {
public Map<String,Object> batchDelXmProjectGroupUser(@RequestBody List<XmProjectGroupUser> gus) {
Map<String,Object> m = new HashMap<>(); Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功删除"+xmProjectGroupUsers.size()+"条数据");
if(gus==null || gus.size()==0){
return ResponseHelper.failed("data-0","请上送要删除的小组成员");
}
Tips tips=new Tips("成功删除"+gus.size()+"条数据");
try{ try{
xmProjectGroupUserService.batchDelete(xmProjectGroupUsers);
List<XmProjectGroupUser> gusDb=this.xmProjectGroupUserService.selectListByIds(gus);
if(gusDb.size()==0){
return ResponseHelper.failed("data-0","要删除的数据已不存在。");
}
User user=LoginUtils.getCurrentUserInfo();
XmProjectGroupUser gu=gusDb.get(0);
String productId=gu.getProductId();
String projectId=gu.getProjectId();
String pgClass=gu.getPgClass();
List<XmProjectGroupUser> gus2=new ArrayList<>();
XmProduct xmProduct=null;
XmProject xmProject=null;
if("1".equals(pgClass)){
xmProduct=this.xmProductService.getProductFromCache(gu.getProductId());
if(xmProduct==null){
return ResponseHelper.failed("product-0","产品已不存在");
}
gus2=gusDb.stream().filter(i->productId.equals(i.getProductId())).collect(Collectors.toList());
if(gus2.size()<gusDb.size()){
return ResponseHelper.failed("data-0","批量删除只能删除同一个产品的成员。");
}
}else {
xmProject=this.xmProjectService.getProjectFromCache(gu.getProjectId());
if(xmProject==null){
return ResponseHelper.failed("project-0","项目已不存在");
}
gus2=gusDb.stream().filter(i->projectId.equals(i.getProductId())).collect(Collectors.toList());
if(gus2.size()<gusDb.size()){
return ResponseHelper.failed("data-0","批量删除只能删除同一个项目的成员。");
}
}
Set<String> groupIds=gusDb.stream().map(i->i.getGroupId()).collect(Collectors.toSet());
List<XmProjectGroupUser> canDelUsers=new ArrayList<>();
Map<String,List<XmProjectGroupUser>> groupUsersMap=new HashMap<>();
for (String groupId : groupIds) {
if("1".equals(pgClass)){
boolean isPm=xmProjectGroupService.checkUserIsProductAdm(xmProduct,user.getUserid());
if(!isPm){
XmProjectGroupVo xmProjectGroupVo=this.xmProjectGroupService.getProductGroupFromCache(xmProduct.getId(),groupId);
if(xmProjectGroupVo==null){
continue;
}
boolean isHead=xmProjectGroupService.checkUserIsTeamHeadOrAss(xmProjectGroupVo,user.getUserid());
if(isHead==false){
continue;
}
}
}else {
boolean isPm=xmProjectGroupService.checkUserIsProjectAdm(xmProject,user.getUserid());
if(!isPm){
XmProjectGroupVo xmProjectGroupVo=this.xmProjectGroupService.getProjectGroupFromCache(xmProduct.getId(),groupId);
if(xmProjectGroupVo==null){
continue;
}
boolean isHead=xmProjectGroupService.checkUserIsTeamHeadOrAss(xmProjectGroupVo,user.getUserid());
if(isHead==false){
continue;
}
}
}
List<XmProjectGroupUser> cdus=gus2.stream().filter(i->groupId.equals(i.getGroupId())).collect(Collectors.toList());
canDelUsers.addAll(cdus);
groupUsersMap.put(groupId,cdus);
}
List<String> msg=new ArrayList<>();
msg.add("成功删除"+canDelUsers.size()+"个小组用户.");
if(canDelUsers.size()>0){
xmProjectGroupUserService.doBatchDelete(canDelUsers);
}
List<String> noDelUsers=new ArrayList<>();
if(canDelUsers.size()<gus.size()){
for (XmProjectGroupUser gu0 : gus) {
if(!canDelUsers.stream().filter(i->i.getUserid().equals(gu0.getUserid())&&i.getGroupId().equals(gu0.getGroupId())).findAny().isPresent()){
noDelUsers.add(gu0.getUsername());
}
}
msg.add("以下"+noDelUsers.size()+"个小组用户无权限删除。【"+noDelUsers.stream().collect(Collectors.toSet()).stream().collect(Collectors.joining(","))+"】");
}
if(canDelUsers.size()!=0){
tips.setOkMsg(msg.stream().collect(Collectors.joining("\n")));
}else{
tips.setFailureMsg(msg.stream().collect(Collectors.joining("\n")));
}
groupUsersMap.forEach((groupId,groupUsers)->{
List<Map<String,Object>> users=groupUsers.stream().map(i->map("userid",i.getUserid(),"username",i.getUsername())).collect(Collectors.toList());
pushMsgService.pushLeaveChannelGroupMsg(user.getBranchId(),groupId, users);
if("0".equals(pgClass)){
xmRecordService.addXmGroupRecord(projectId,groupId, "项目-团队-删除小组成员", "删除组员["+groupUsers.stream().map(i->i.getUsername()).collect(Collectors.joining(","))+"]",user.getUserid(),null);
}else{
xmRecordService.addXmGroupRecord(productId,groupId, "产品-团队-删除小组成员", "删除组员["+groupUsers.stream().map(i->i.getUsername()).collect(Collectors.joining(","))+"]",user.getUserid(),null);
}
});
}catch (BizException e) { }catch (BizException e) {
tips=e.getTips(); tips=e.getTips();
logger.error("",e); logger.error("",e);

20
xm-core/src/main/java/com/xm/core/service/XmProjectGroupService.java

@ -878,5 +878,25 @@ public class XmProjectGroupService extends BaseService {
return groupVo; return groupVo;
} }
} }
public XmProjectGroupVo getProjectGroupFromCache(String projectId, String groupId) {
XmProjectGroupVo groupVo=groupCacheService.getProjectGroup(projectId,groupId);
if(groupVo==null){
XmProjectGroup group=this.selectOneObject(new XmProjectGroup(groupId));
if(group==null){
return null;
}else{
XmProjectGroupUser xmProjectGroupUser=new XmProjectGroupUser();
xmProjectGroupUser.setGroupId(groupId);
List<XmProjectGroupUser> users=this.xmProjectGroupUserService.selectListByWhere(xmProjectGroupUser);
XmProjectGroupVo xmProjectGroupVo=new XmProjectGroupVo();
BeanUtils.copyProperties(group,xmProjectGroupVo);
xmProjectGroupVo.setGroupUsers(users);
this.groupCacheService.putProjectGroup(xmProjectGroupVo);
return xmProjectGroupVo;
}
}else {
return groupVo;
}
}
} }

8
xm-core/src/main/java/com/xm/core/service/XmProjectGroupUserService.java

@ -26,6 +26,14 @@ public class XmProjectGroupUserService extends BaseService {
return this.selectList("selectGroupUserListByProductId", productId); return this.selectList("selectGroupUserListByProductId", productId);
} }
public List<XmProjectGroupUser> selectListByIds(List<XmProjectGroupUser> gus) {
return super.selectList("selectListByIds",gus);
}
public void doBatchDelete(List<XmProjectGroupUser> canDelUsers) {
super.batchDelete(canDelUsers);
}
/** 请在此类添加自定义函数 */ /** 请在此类添加自定义函数 */
} }

18
xm-core/src/main/java/com/xm/core/vo/XmProjectGroupUserVo.java

@ -1,18 +0,0 @@
package com.xm.core.vo;
import com.xm.core.entity.XmProjectGroupUser;
public class XmProjectGroupUserVo extends XmProjectGroupUser {
String pgClass;
public String getPgClass() {
return pgClass;
}
public void setPgClass(String pgClass) {
this.pgClass = pgClass;
}
}
Loading…
Cancel
Save