diff --git a/xm-core/src/main/java/com/xm/core/service/XmGroupService.java b/xm-core/src/main/java/com/xm/core/service/XmGroupService.java
index 65a64fa3..8bd066f0 100644
--- a/xm-core/src/main/java/com/xm/core/service/XmGroupService.java
+++ b/xm-core/src/main/java/com/xm/core/service/XmGroupService.java
@@ -1,36 +1,45 @@
package com.xm.core.service;
+import com.alibaba.fastjson.JSON;
import com.mdp.core.entity.Tips;
import com.mdp.core.service.BaseService;
-import com.mdp.safe.client.entity.Dept;
import com.mdp.safe.client.entity.User;
-import com.xm.core.entity.XmGroup;
-import com.xm.core.entity.XmProduct;
-import com.xm.core.entity.XmProject;
+import com.mdp.safe.client.utils.LoginUtils;
+import com.xm.core.entity.*;
import com.xm.core.mapper.XmGroupMapper;
+import com.xm.core.service.cache.XmGroupCacheService;
import com.xm.core.service.client.SysClient;
import com.xm.core.service.push.XmPushMsgService;
+import com.xm.core.vo.XmGroupVo;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
/**
- * 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.
+ * 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.
* 组织 com.qqkj 顶级模块 oa 大模块 xm 小模块
- * 实体 XmProjectGroup 表 XM.xm_group 当前主键(包括多主键): id;
+ * 实体 XmProjectGroup 表 XM.xm_group 当前主键(包括多主键): id;
***/
@Service("xm.core.xmGroupService")
-public class XmGroupService extends BaseService {
+public class XmGroupService extends BaseService {
@Autowired
XmRecordService xmRecordService;
-
+ @Autowired
+ XmGroupService xmGroupService;
+
+ @Autowired
+ XmGroupUserService xmGroupUserService;
+
+ @Autowired
+ XmGroupCacheService groupCacheService;
@Autowired
@@ -43,20 +52,32 @@ public class XmGroupService extends BaseService {
@Autowired
private XmProductService xmProductService;
- @Autowired
- XmPushMsgService pushMsgService;
+ @Autowired
+ XmPushMsgService pushMsgService;
@Autowired
SysClient sysClient;
+ public void clearProjectGroup(String projectId){
+ groupCacheService.clearProjectGroups(projectId);
+ }
+ public void clearProductGroup(String productId){
+ groupCacheService.clearProductGroups(productId);
+ }
+
public Tips checkIsProductAdmOrTeamHeadOrAss(User user, String tardgetUserid, String productId){
Tips tips = new Tips("成功");
- boolean isAdm=this.checkUserIsProductAdm(productId, user.getUserid());
- if(!isAdm){
- boolean isHead=false;
+ List pgroups=new ArrayList<>();
+ boolean isAdm=this.checkUserIsProductAdm(productId, user.getUserid());
+ if(!isAdm){
+ pgroups=this.getProductGroupVoList(productId);
+ if(pgroups==null || pgroups.size()==0){
+ return new Tips(false,"group-0","产品【"+productId+"】还未建立产品团队,请先进行团队成员维护");
+ }
+ boolean isHead=this.checkUserIsOtherUserTeamHeadOrAss(pgroups,user.getUserid(),tardgetUserid);
if(!isHead){
return new Tips(false,"not-head","您无权操作!产品经理、组长可以操作。");
}
@@ -67,16 +88,101 @@ public class XmGroupService extends BaseService {
public Tips checkIsProjectAdmOrTeamHeadOrAss(User user, String tardgetUserid, String projectId){
- Tips tips = new Tips("成功");
- boolean isAdm=this.checkUserIsProjectAdm(projectId, user.getUserid());
+ Tips tips = new Tips("成功");
+ List pgroups=new ArrayList<>();
+ boolean isAdm=this.checkUserIsProjectAdm(projectId, user.getUserid());
if(!isAdm){
- return tips.setErrMsg("");
+ pgroups=this.getProjectGroupVoList(projectId);
+ if(pgroups==null || pgroups.size()==0){
+ return new Tips(false,"group-0","项目【"+projectId+"】还未建立项目团队,请先进行团队成员维护");
+ }
+ boolean isHead=this.checkUserIsOtherUserTeamHeadOrAss(pgroups,user.getUserid(),tardgetUserid);
+ if(!isHead){
+ return new Tips(false,"not-head","您无权操作!项目经理、组长可以操作。");
+ }
}
return tips;
}
-
+
+ public List getProductGroupVoList(String productId) {
+ List groupVoList=new ArrayList<>();
+ List groupVoList2 = groupCacheService.getProductGroups(productId);
+ if(groupVoList2==null||groupVoList2.size()==0) {
+
+ XmGroup group = new XmGroup();
+ group.setProductId(productId);
+ List groupList = this.selectListByWhere(group);
+ if(groupList==null || groupList.size()==0) {
+ groupCacheService.putProductGroups(productId, groupVoList);
+ return groupVoList;
+ }
+ List groupUserList=this.xmGroupUserService.selectGroupUserListByProductId(productId);
+ if(groupUserList==null || groupUserList.size()==0) {
+ //groupCacheService.putProjectGroups(productId, groupVoList);
+ //return groupVoList;
+ }
+ groupList.forEach(g -> {
+ XmGroupVo gvo = new XmGroupVo();
+ BeanUtils.copyProperties(g,gvo);
+ List groupUsers=new ArrayList<>();
+ groupUserList.forEach(gu -> {
+ if(g.getId().equals(gu.getGroupId())) {
+ groupUsers.add(gu);
+ }
+ });
+ gvo.setGroupUsers(groupUsers );
+ groupVoList.add(gvo);
+ });
+ groupCacheService.putProductGroups(productId, groupVoList);
+
+ return groupVoList;
+ }else {
+ return groupVoList2;
+ }
+
+ }
+
+
+ /** 请在此类添加自定义函数 */
+ public List getProjectGroupVoList(String projectId) {
+ List groupVoList=new ArrayList<>();
+ List groupVoList2 = groupCacheService.getProjectGroups(projectId);
+ if(groupVoList2==null||groupVoList2.size()==0) {
+
+ XmGroup group = new XmGroup();
+ group.setProjectId(projectId);
+ List groupList = this.selectListByWhere(group);
+ if(groupList==null || groupList.size()==0) {
+ groupCacheService.putProjectGroups(projectId, groupVoList);
+ return groupVoList;
+ }
+ List groupUserList=this.xmGroupUserService.selectGroupUserListByProjectId(projectId);
+ if(groupUserList==null || groupUserList.size()==0) {
+ //groupCacheService.putProjectGroups(projectId, groupVoList);
+ //return groupVoList;
+ }
+ groupList.forEach(g -> {
+ XmGroupVo gvo = new XmGroupVo();
+ BeanUtils.copyProperties(g,gvo);
+ List groupUsers=new ArrayList<>();
+ groupUserList.forEach(gu -> {
+ if(g.getId().equals(gu.getGroupId())) {
+ groupUsers.add(gu);
+ }
+ });
+ gvo.setGroupUsers(groupUsers );
+ groupVoList.add(gvo);
+ });
+ groupCacheService.putProjectGroups(projectId, groupVoList);
+
+ return groupVoList;
+ }else {
+ return groupVoList2;
+ }
+
+ }
public boolean checkUserIsProjectAdm(XmProject xmProject,String userid){
if(xmProject==null){
@@ -88,7 +194,7 @@ public class XmGroupService extends BaseService {
}
return false;
}
- public boolean checkUserIsProjectAdm(String projectId,String userid){
+ public boolean checkUserIsProjectAdm(String projectId,String userid){
XmProject xmProject=xmProjectService.getProjectFromCache(projectId);
if(xmProject==null){
return false;
@@ -122,19 +228,395 @@ public class XmGroupService extends BaseService {
return false;
}
+ /**
+ * 新增项目时,同时新增项目团队及小组组员等
+ * @param projectId
+ * @param xmGroupVoList
+ */
+ @Transactional
+ public void addGroups(String projectId,List xmGroupVoList) {
+ List groups=new ArrayList<>();
+ List groupUsers=new ArrayList<>();
+ for (XmGroupVo xmGroupVo : xmGroupVoList) {
+ XmGroup group=new XmGroup();
+ xmGroupVo.setId(this.createKey("id"));
+ BeanUtils.copyProperties(xmGroupVo, group);
+ groups.add(group);
+ List groupUsersTemp=xmGroupVo.getGroupUsers();
+ if(groupUsersTemp==null || groupUsersTemp.size()==0) {
+ continue;
+ }else {
+ for (XmGroupUser xmGroupUser : groupUsersTemp) {
+ xmGroupUser.setGroupId(group.getId());
+ xmGroupUser.setJoinTime(new Date());
+ xmGroupUser.setStatus("0");
+ groupUsers.add(xmGroupUser);
+ }
+
+ }
+ }
+ if(groups.size()>0) {
+ this.batchInsert(groups);
+ User u=LoginUtils.getCurrentUserInfo();
+
+ for (XmGroupVo group : xmGroupVoList) {
+ List users=group.getGroupUsers();
+ List