| 
					
				 | 
			
			
				@@ -3,13 +3,14 @@ package com.ym.mec.biz.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.google.common.collect.Lists; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.microsvc.toolkit.middleware.im.ImPluginContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.microsvc.toolkit.middleware.im.ImPluginService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.microsvc.toolkit.middleware.im.impl.RongCloudImPlugin; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.auth.api.entity.SysUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dao.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dto.ImGroupMemberDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.dto.im.BasicUserInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.entity.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.EFriendRoleType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.enums.GroupType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.page.GroupMemberQueryInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -26,12 +27,13 @@ import com.ym.mec.im.entity.GroupMember; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.im.entity.GroupModel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.util.collection.MapUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import lombok.extern.slf4j.Slf4j; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.collections.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.joda.time.DateTime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.annotation.Resource; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.Map.Entry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.stream.Collectors; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -39,41 +41,40 @@ import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Slf4j 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMember> implements ImGroupMemberService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private ImGroupMemberDao imGroupMemberDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private ImGroupDao imGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private ImGroupService imGroupService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private TeacherDao teacherDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private ClassGroupDao classGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private MusicGroupDao musicGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private PracticeGroupDao practiceGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private VipGroupDao vipGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private ClassGroupTeacherMapperDao classGroupTeacherMapperDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private ClassGroupStudentMapperDao classGroupStudentMapperDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private ImFeignService imFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private ImGroupCoreService imGroupCoreService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private ImPluginContext imPluginContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private SysUserService sysUserService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public BaseDAO<Long, ImGroupMember> getDAO() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return imGroupMemberDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public ImGroup joinGroup(String imGroupId, Integer userId, String roleType, boolean isAdmin,Map<Integer,String> userRoleMap){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void joinGroup(String imGroupId, Integer userId, String roleType, boolean isAdmin, Map<Integer,String> userRoleMap){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		int groupId = Integer.parseInt(imGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		ClassGroup classGroup = classGroupDao.get(groupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		String tags = classGroup.getName(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -119,13 +120,17 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			tags = vipGroup.getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		ImGroup imGroup = imGroupService.create(imGroupId, null, classGroup.getName(), tags, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		imGroupService.create(imGroupId, null, classGroup.getName(), tags, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				tags, tags, null, classGroup.getGroupType().getCode(), ImGroup.GroupTypeEnum.valueOf(classGroup.getType().getCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if(userId != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			join(imGroupId,userId,roleType,isAdmin); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		join(imGroupId,userRoleMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return imGroup; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public ImGroupMemberDao getDao() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return imGroupMemberDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -137,27 +142,28 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//检查用户是否已存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userId.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(imGroupMemberList != null && imGroupMemberList.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId, userId.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(CollectionUtils.isNotEmpty(imGroupMemberList)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		ImGroupMember imGroupMember = new ImGroupMember(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Date date = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		imGroupMember.setGroupType(imGroup.getGroupType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupMember.setCreateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupMember.setImGroupId(imGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupMember.setIsAdmin(isAdmin); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		SysUser user = teacherDao.getUser(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupMember.setRoleType(roleType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(StringUtils.isNotEmpty(roleType)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			imGroupMember.setType(EFriendRoleType.getByName(roleType).name()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			imGroupMember.setNickname(StringUtils.isEmpty(user.getRealName())?user.getUsername():user.getRealName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			imGroupMember.setNickname(StringUtils.isEmpty(user.getUsername())?user.getRealName():user.getUsername()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupMember.setUpdateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupMember.setUserId(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//		if (StringUtils.isBlank(roleType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//			imGroupMember.setNickname(user.getUsername()==null?user.getRealName():user.getUsername()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//			imGroupMember.setNickname(user.getRealName()==null?user.getUsername():user.getRealName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysUser user = teacherDao.getUser(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupMember.setNickname(sysUserService.getImName(user)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//初始化群主数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.initImGroupMember(imGroupMember,imGroup.getGroupType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupMemberDao.insert(imGroupMember); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -177,11 +183,13 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				groupMembers.add(ImGroupMemberWrapper.ImGroupMember.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						.groupId(groupId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.isAdmin(isAdmin) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.roleType(roleType) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						.isAdmin(imGroupMember.getIsAdmin()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						.roleType(imGroupMember.getRoleType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						.type(imGroupMember.getType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						.nickname(imGroupMember.getNickname()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						.userId(userId.longValue()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						.imUserId(userId.toString()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						.groupRoleType(imGroupMember.getGroupRoleType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						.avatar(sysUserService.getImAvatar(user)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						.updateTime(DateTime.now().toDate()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						.createTime(DateTime.now().toDate()) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -196,6 +204,133 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void initImGroupMember(ImGroupMember imGroupMember, ImGroup.GroupTypeEnum groupType){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			List<GroupMemberWrapper.Member> members = imPluginContext.getPluginService().groupUserGagList(imGroupMember.getImGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(CollectionUtils.isNotEmpty(members)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				List<String> imGroupUserIds = members.stream().map(e -> e.getId()).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(CollectionUtils.isNotEmpty(imGroupUserIds)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if(imGroupUserIds.contains(imGroupMember.getUserId().toString())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						imGroupMember.setMuteFlag(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new RuntimeException(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//是否有群主 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(!imGroupMember.getIsAdmin()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ImGroupMember admin = imGroupMemberDao.getAdmin(imGroupMember.getImGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(Objects.nonNull(admin)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			switch (groupType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case NORMAL: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case MIX: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case HIGH: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case SNAP: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case HIGH_ONLINE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case MUSIC_NETWORK: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case PARENT_MEETING: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if("乐团主管".equals(imGroupMember.getRoleType())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						imGroupMember.setIsAdmin(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case VIP: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case DEMO: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case PRACTICE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case COMM: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case REPERTOIRE_PLAY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case LIVE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if("指导老师".equals(imGroupMember.getRoleType())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						imGroupMember.setIsAdmin(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case TRAINING: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if("分部经理".equals(imGroupMember.getRoleType())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						imGroupMember.setIsAdmin(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case SCHOOL: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if("乐团领队".equals(imGroupMember.getRoleType())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						imGroupMember.setIsAdmin(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void initImGroupMembers(List<ImGroupMember> imGroupMembers, ImGroup.GroupTypeEnum groupType){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (CollectionUtils.isEmpty(imGroupMembers)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String imGroupId = imGroupMembers.get(0).getImGroupId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			List<GroupMemberWrapper.Member> members = imPluginContext.getPluginService().groupUserGagList(imGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(CollectionUtils.isNotEmpty(members)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				List<String> imGroupUserIds = members.stream().map(e -> e.getId()).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(CollectionUtils.isNotEmpty(imGroupUserIds)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					for (ImGroupMember imGroupMember : imGroupMembers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if(imGroupUserIds.contains(imGroupMember.getUserId().toString())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							imGroupMember.setMuteFlag(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new RuntimeException(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//是否有群主 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		long count = imGroupMembers.stream().filter(e -> e.getIsAdmin()).count(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(count > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ImGroupMember admin = imGroupMemberDao.getAdmin(imGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(Objects.nonNull(admin)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (ImGroupMember imGroupMember : imGroupMembers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			switch (groupType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case NORMAL: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case MIX: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case HIGH: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case SNAP: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case HIGH_ONLINE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case MUSIC_NETWORK: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case PARENT_MEETING: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if("乐团主管".equals(imGroupMember.getRoleType())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						imGroupMember.setIsAdmin(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case VIP: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case DEMO: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case PRACTICE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case COMM: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case REPERTOIRE_PLAY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case LIVE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if("指导老师".equals(imGroupMember.getRoleType())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						imGroupMember.setIsAdmin(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case TRAINING: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if("分部经理".equals(imGroupMember.getRoleType())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						imGroupMember.setIsAdmin(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case SCHOOL: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if("乐团领队".equals(imGroupMember.getRoleType())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						imGroupMember.setIsAdmin(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public boolean join(String imGroupId,String roleType, boolean isAdmin,ImGroup imGroup,SysUser user) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (imGroup == null) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -206,8 +341,8 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//检查用户是否已存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), user.getId().toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(imGroupMemberList != null && imGroupMemberList.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId, user.getId().toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(CollectionUtils.isNotEmpty(imGroupMemberList)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -218,23 +353,22 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupMember.setImGroupId(imGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupMember.setIsAdmin(isAdmin); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupMember.setRoleType(roleType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(StringUtils.isNotEmpty(roleType)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			imGroupMember.setType(EFriendRoleType.getByName(roleType).name()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			imGroupMember.setNickname(StringUtils.isEmpty(user.getRealName())?user.getUsername():user.getRealName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			imGroupMember.setNickname(StringUtils.isEmpty(user.getUsername())?user.getRealName():user.getUsername()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupMember.setUpdateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupMember.setUserId(user.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//		if (StringUtils.isBlank(roleType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//			imGroupMember.setNickname(user.getUsername()==null?user.getRealName():user.getUsername()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//			imGroupMember.setNickname(user.getRealName()==null?user.getUsername():user.getRealName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupMember.setNickname(sysUserService.getImName(user)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.initImGroupMember(imGroupMember,imGroup.getGroupType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupMemberDao.insert(imGroupMember); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroup.setMemberNum(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroup.setUpdateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupDao.update(imGroup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		String groupId = imGroup.getId().toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String groupId = imGroup.getId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// 融云IM用户加群 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -251,7 +385,9 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						.imUserId(imGroupMember.getUserId().toString()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						.nickname(imGroupMember.getNickname()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						.isAdmin(imGroupMember.getIsAdmin()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						.groupRoleType(imGroupMember.getGroupRoleType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						.roleType(imGroupMember.getRoleType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						.type(imGroupMember.getType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						.avatar(sysUserService.getImAvatar(user)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					.build()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				// 腾讯云IM用户加群 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -299,11 +435,12 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if(StringUtils.isEmpty(entry.getValue())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				usernameIds.add(entry.getKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			}else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				imGroupMember.setType(EFriendRoleType.getByName(entry.getValue()).name()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				realNameIds.add(entry.getKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			imGroupMember.setUpdateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			imGroupMember.setUserId(entry.getKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//			imGroupMember.setNickname(nameIdMap.get(imGroupMember.getUserId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.initImGroupMember(imGroupMember,imGroup.getGroupType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			imGroupMemberList.add(imGroupMember); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			groupMemberList.add(new GroupMember(imGroupMember.getUserId().toString(), groupId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -313,20 +450,23 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					.userId(imGroupMember.getUserId().longValue()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					.imUserId(imGroupMember.getUserId().toString()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					.isAdmin(imGroupMember.getIsAdmin()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.nickname(imGroupMember.getNickname()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.groupRoleType(imGroupMember.getGroupRoleType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					.roleType(imGroupMember.getRoleType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.type(imGroupMember.getType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					.updateTime(imGroupMember.getUpdateTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					.createTime(imGroupMember.getCreateTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				.build()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (imGroupMemberList.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (CollectionUtils.isNotEmpty(imGroupMemberList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			Map<Integer, String> usernameMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			Map<Integer, String> realNameMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if(usernameIds.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(CollectionUtils.isNotEmpty(usernameIds)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				usernameMap = MapUtil.convertIntegerMap(teacherDao.queryUserNameByIdList(usernameIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if(realNameIds.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(CollectionUtils.isNotEmpty(realNameIds)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				realNameMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(realNameIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			for (ImGroupMember imGroupMember : imGroupMemberList) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -336,6 +476,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					imGroupMember.setNickname(realNameMap.get(imGroupMember.getUserId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.initImGroupMembers(imGroupMemberList,imGroup.getGroupType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			imGroupMemberDao.batchInsert(imGroupMemberList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			imGroup.setMemberNum(imGroupMemberList.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			imGroup.setUpdateTime(date); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -346,19 +487,19 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				imFeignService.groupJoin(new GroupModel(groupId, groupMemberList.stream().toArray(GroupMember[]::new), imGroup.getName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					List<SysUser> userList = teacherDao.getUserList(groupMembers.stream().map(e -> e.getUserId()).collect(Collectors.toList())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					Map<Integer,SysUser> userMap = userList.stream().collect(Collectors.toMap(SysUser::getId, e -> e)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					for (ImGroupMemberWrapper.ImGroupMember item : groupMembers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						// 用户昵称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//						if (StringUtils.isBlank(item.getRoleType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//							item.setNickname(usernameMap.get(item.getUserId().intValue())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//						} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//							item.setNickname(realNameMap.get(item.getUserId().intValue())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//						item.setImUserId(item.getUserId().toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        SysUser user = teacherDao.getUser(item.getUserId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        // 用户头像 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						item.setAvatar(sysUserService.getImAvatar(user)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						item.setNickname(sysUserService.getImName(user)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        SysUser user = userMap.get(item.getUserId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if (user != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							// 用户头像 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							item.setAvatar(sysUserService.getImAvatar(user)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							if(StringUtils.isNotEmpty(item.getRoleType())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								item.setNickname(StringUtils.isEmpty(user.getRealName())?user.getUsername():user.getRealName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							}else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								item.setNickname(StringUtils.isEmpty(user.getUsername())?user.getRealName():user.getUsername()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					// 腾讯云IM用户加群 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					imGroupCoreService.groupMemberJoin(groupId, groupMembers); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -382,15 +523,6 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public boolean quit(List<String> imGroupIdList, Integer userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		for (String imGroupId : imGroupIdList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			quit(imGroupId, userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public boolean quit(String imGroupId, List<Integer> userIdList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		ImGroup imGroup = imGroupDao.getLocked(imGroupId); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -446,20 +578,31 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public boolean updateRoleType(String imGroupId, Integer userId, String roleType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<Integer> userIdList = new ArrayList<Integer>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		userIdList.add(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userIdList.stream().map(Objects::toString) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId, userIdList.stream().map(Objects::toString) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				.collect(Collectors.joining(","))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (imGroupMemberList == null || imGroupMemberList.size() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (CollectionUtils.isEmpty(imGroupMemberList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("更新失败:找不到用户信息"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Date date = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		for (ImGroupMember imGroupMember : imGroupMemberList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			imGroupMember.setRoleType(roleType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			imGroupMember.setUpdateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ImGroupMember imGroupMember = imGroupMemberList.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		imGroupMember.setGroupRoleType(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		imGroupMember.setRoleType(roleType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		imGroupMember.setType(EFriendRoleType.getByName(roleType).name()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		imGroupMember.setUpdateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ImGroup group = imGroupDao.get(imGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(!imGroupMember.getIsAdmin()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.initImGroupMembers(imGroupMemberList,group.getGroupType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(imGroupMember.getIsAdmin()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					imPluginContext.getPluginService().changeGroupOwner(imGroupId,imGroupMember.getUserId().toString(),null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					log.error(e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new BizException("更新失败:设置群主异常"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		imGroupMemberDao.batchUpdate(imGroupMemberList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		imGroupMemberDao.update(imGroupMember); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -468,33 +611,23 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupMemberDao.batchInsert(imGroupMemberList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public void batchDelete(List<ImGroupMember> imGroupMemberList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		imGroupMemberDao.batchDelete(imGroupMemberList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public void batchDeleteByGroupIdAndUserId(List<ImGroupMember> imGroupMemberList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupMemberDao.batchDeleteByGroupIdAndUserId(imGroupMemberList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public boolean isExit(String groupId, String userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return imGroupMemberDao.isExit(groupId,userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public void delRepeat() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imGroupMemberDao.delRepeat(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public List<ImGroupMember> queryMembers(String groupId, List<String> userIdList, Integer tenantId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return imGroupMemberDao.queryMembers(groupId, userIdList, tenantId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public PageInfo<ImGroupMemberDto> queryGroupMemberPage(GroupMemberQueryInfo queryInfo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(StringUtils.isEmpty(queryInfo.getImGroupId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("参数校验失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		PageInfo<ImGroupMemberDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Map<String, Object> params = new HashMap<String, Object>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		MapUtil.populateMap(params, queryInfo); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -520,4 +653,95 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		userIds.stream().forEach(e->userRoleMap.put(e,roleType)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		this.join(imGroupId,userRoleMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void groupMemberMute(ImGroupMemberWrapper.GroupMemberMute member) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 更新群成员禁言状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			imGroupMemberDao.updateGroupMemberMute(member.getGroupId(), member.getUserIds(), member.getGroupMute()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ImPluginService pluginService = imPluginContext.getPluginService(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (member.getGroupMute()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 群成员禁言 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				pluginService.groupUserGagCreate(member.getUserIds(), member.getGroupId(), -1L); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 群成员解除禁言 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				pluginService.groupUserGagRemove(member.getUserIds(), member.getGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			log.error("群成员禁言失败", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw com.microsvc.toolkit.common.webportal.exception.BizException.from("群成员禁言失败,请联系管理员!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void groupMemberRole(ImGroupMemberWrapper.GroupMemberRole member) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 更新群成员角色 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			imGroupMemberDao.batchUpdateGroupMemberRole(member.getGroupId(), member.getUserIds(), member.getGroupRoleType().getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (List<String> items : Lists.partition(member.getUserIds(), 50)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				items.parallelStream().forEach(item -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						ImPluginService pluginService = imPluginContext.getPluginService(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						switch (member.getGroupRoleType()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							case Owner: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								// 设置群主 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								pluginService.changeGroupOwner(member.getGroupId(), item,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							case Admin: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								// 设置管理员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								pluginService.groupAdminCreate(member.getGroupId(), item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							case Member: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								// 取消管理员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								pluginService.groupAdminRemove(member.getGroupId(), item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						log.error("群成员身份更新异常", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						throw com.microsvc.toolkit.common.webportal.exception.BizException.from("群成员身份更新异常,请联系管理员!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			log.error("群成员身份更新异常", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw com.microsvc.toolkit.common.webportal.exception.BizException.from("群成员身份更新异常,请联系管理员!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void groupMemberRole1(ImGroupMemberWrapper.GroupMemberRole member) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ImPluginService pluginService = imPluginContext.getPluginService(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (String userId : member.getUserIds()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				switch (member.getGroupRoleType()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					case Owner: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						// 设置群主 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						pluginService.changeGroupOwner(member.getGroupId(), userId,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					case Admin: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						// 设置管理员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						pluginService.groupAdminCreate(member.getGroupId(), userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					case Member: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						// 取消管理员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						pluginService.groupAdminRemove(member.getGroupId(), userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			imGroupMemberDao.batchUpdateGroupMemberRole(member.getGroupId(), member.getUserIds(), member.getGroupRoleType().getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			log.error("群成员身份更新异常", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |