|
|
|
@ -14,7 +14,6 @@ import com.xm.core.entity.XmProjectGroupUser; |
|
|
|
import com.xm.core.service.*; |
|
|
|
import com.xm.core.service.cache.XmProjectGroupCacheService; |
|
|
|
import com.xm.core.service.push.XmPushMsgService; |
|
|
|
import com.xm.core.vo.XmProjectGroupUserVo; |
|
|
|
import com.xm.core.vo.XmProjectGroupVo; |
|
|
|
import io.swagger.annotations.*; |
|
|
|
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.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> |
|
|
|
@ -110,7 +109,7 @@ public class XmProjectGroupUserController { |
|
|
|
@ApiResponse(code = 200,response=XmProjectGroupUser.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") |
|
|
|
}) |
|
|
|
@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<>(); |
|
|
|
Tips tips=new Tips("成功新增一条数据"); |
|
|
|
try{ |
|
|
|
@ -175,8 +174,8 @@ public class XmProjectGroupUserController { |
|
|
|
List<Map<String,Object>> users=new ArrayList<>(); |
|
|
|
users.add(usermap); |
|
|
|
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{ |
|
|
|
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:'失败时错误码'}}") |
|
|
|
}) |
|
|
|
@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<>(); |
|
|
|
Tips tips=new Tips("成功删除一条数据"); |
|
|
|
try{ |
|
|
|
@ -206,7 +205,10 @@ public class XmProjectGroupUserController { |
|
|
|
return ResponseHelper.failed("pk-0","请上送小组编号,用户编号groupId,userid"); |
|
|
|
} |
|
|
|
gu=this.xmProjectGroupUserService.selectOneObject(gu); |
|
|
|
|
|
|
|
if(gu==null){ |
|
|
|
return ResponseHelper.failed("data-0","小组已不存在"); |
|
|
|
} |
|
|
|
String pgClass=gu.getPgClass(); |
|
|
|
User user=LoginUtils.getCurrentUserInfo(); |
|
|
|
if("1".equals(pgClass)){ |
|
|
|
|
|
|
|
@ -224,7 +226,7 @@ public class XmProjectGroupUserController { |
|
|
|
} |
|
|
|
boolean isHead=xmProjectGroupService.checkUserIsTeamHeadOrAss(xmProjectGroupVo,user.getUserid()); |
|
|
|
if(isHead==false){ |
|
|
|
return ResponseHelper.failed("not-leader-ass","组长、副组长、组长助理以上人员可以添加小组成员。"); |
|
|
|
return ResponseHelper.failed("not-leader-ass","组长、副组长、组长助理以上人员可以删除小组成员。"); |
|
|
|
} |
|
|
|
} |
|
|
|
}else{ |
|
|
|
@ -243,11 +245,24 @@ public class XmProjectGroupUserController { |
|
|
|
} |
|
|
|
boolean isHead=xmProjectGroupService.checkUserIsTeamHeadOrAss(xmProjectGroupVo,user.getUserid()); |
|
|
|
if(isHead==false){ |
|
|
|
return ResponseHelper.failed("not-leader-ass","组长、副组长、组长助理以上人员可以添加小组成员。"); |
|
|
|
return ResponseHelper.failed("not-leader-ass","组长、副组长、组长助理以上人员可以删除小组成员。"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
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) { |
|
|
|
tips=e.getTips(); |
|
|
|
logger.error("",e); |
|
|
|
@ -264,12 +279,66 @@ public class XmProjectGroupUserController { |
|
|
|
@ApiResponse(code = 200,response=XmProjectGroupUser.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") |
|
|
|
}) |
|
|
|
@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<>(); |
|
|
|
Tips tips=new Tips("成功更新一条数据"); |
|
|
|
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) { |
|
|
|
tips=e.getTips(); |
|
|
|
logger.error("",e); |
|
|
|
@ -288,11 +357,109 @@ public class XmProjectGroupUserController { |
|
|
|
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}") |
|
|
|
}) |
|
|
|
@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<>(); |
|
|
|
Tips tips=new Tips("成功删除"+xmProjectGroupUsers.size()+"条数据"); |
|
|
|
try{ |
|
|
|
xmProjectGroupUserService.batchDelete(xmProjectGroupUsers); |
|
|
|
if(gus==null || gus.size()==0){ |
|
|
|
return ResponseHelper.failed("data-0","请上送要删除的小组成员"); |
|
|
|
} |
|
|
|
Tips tips=new Tips("成功删除"+gus.size()+"条数据"); |
|
|
|
try{ |
|
|
|
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) { |
|
|
|
tips=e.getTips(); |
|
|
|
logger.error("",e); |
|
|
|
|