| 
					
				 | 
			
			
				@@ -1,902 +0,0 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-package com.ym.service.Impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.baomidou.mybatisplus.core.toolkit.IdWorker; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.google.common.collect.Lists; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.microsvc.toolkit.middleware.im.properties.ImConfigProperties; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.microsvc.toolkit.middleware.rtc.impl.TencentCloudRTCPlugin; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.microsvc.toolkit.middleware.rtc.message.ImGroupMemberWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.auth.api.entity.SysUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.auth.api.enums.SysUserType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.dao.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.dto.ImGroupDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.dto.ImGroupMemberDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.dto.NameDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-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.MusicGroupStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.enums.im.RoleEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.enums.school.ESchoolStaffType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.mapper.SchoolStaffMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.wrapper.ImGroupWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.service.CooperationOrganService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.service.ImGroupMemberService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.service.SysConfigService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.service.SysUserService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.service.im.ImGroupCoreService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.common.exception.BizException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.common.tenant.TenantContextHolder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.im.IMHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.service.GroupCoreService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import lombok.extern.slf4j.Slf4j; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.apache.commons.collections.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.data.redis.core.RedisTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import javax.annotation.Resource; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.text.MessageFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.concurrent.TimeUnit; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.function.Function; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@Slf4j 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class GroupCoreServiceImpl implements GroupCoreService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private ImGroupDao imGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private ImGroupMemberDao imGroupMemberDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private ImGroupMemberService imGroupMemberService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private SysUserService sysUserService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private ImUserFriendDao imUserFriendDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private SysConfigService sysConfigService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private CooperationOrganService cooperationOrganService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private MusicGroupDao musicGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private ClassGroupTeacherMapperDao classGroupTeacherMapperDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private SchoolStaffMapper schoolStaffMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private RedisTemplate<String,Object> redisTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private RTCRoomPluginContext rtcRoomPluginContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private IMHelper imHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private ImGroupCoreService imGroupCoreService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private ImConfigProperties imConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private TeacherDao teacherDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public ImGroup create(String id, Integer userId, String name, String introduce, String memo, String tags, String img, String type, ImGroup.GroupTypeEnum groupType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ImGroup imGroup = imGroupDao.get(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (imGroup != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return imGroup; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup = new ImGroup(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date date = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setId(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setCreateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setIntroduce(introduce); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(userId != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup.setMemberNum(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup.setMemberNum(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setMemo(memo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setName(name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setTags(tags); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setImg(img); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setType(type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setGroupType(groupType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setUpdateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String imGroupId = createImGroup(imGroup, userId, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup.setId(imGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("群组创建失败",e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("群组创建失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return imGroup; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private String createImGroup(ImGroup imGroup, Integer userId, String roleType) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ImGroupWrapper.ImGroup group = ImGroupWrapper.ImGroup.from(JSON.toJSONString(imGroup)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //记录群成员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember groupMember = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (userId != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SysUser sysUser = teacherDao.getUser(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SysUserType sysUserType = EFriendRoleType.getByName(roleType).toSysUserType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            groupMember = com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .userId(userId.longValue()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .clientType(sysUserType.name()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .avatar(sysUser.getAvatar()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .nickname(sysUserType == SysUserType.STUDENT?sysUser.getUsername():sysUser.getRealName()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .roleType(roleType) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .isAdmin(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return imGroupCoreService.groupCreate(groupMember, group); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public String createGroup(ImGroupDto imGroupDto){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<String> userIdList = imGroupDto.getUserIdList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Integer currentUserId = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (CollectionUtils.isEmpty(userIdList)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            userIdList.add(sysUserService.getUserId().toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String groupName = imGroupDto.getGroupName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String type = imGroupDto.getType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Optional.ofNullable(groupName).filter(StringUtils::isNotBlank).orElseThrow(() -> new BizException("群名称不能为空")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Optional.ofNullable(type).filter(StringUtils::isNotBlank).orElseThrow(() -> new BizException("群类型不能为空")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Date date = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ImGroup imGroup = new ImGroup(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String groupId = UUID.randomUUID().toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setId(groupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setCreateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setIntroduce(groupName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setMemo(groupName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setMemberNum(userIdList.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setName(groupName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setType(type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setGroupType(imGroupDto.getGroupType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setUpdateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String imGroupId = createImGroup(imGroup, null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup.setId(imGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("群组创建失败",e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("群组创建失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<ImGroupMember> groupMemberList = imGroupMemberDao.queryMembers(groupId, userIdList, TenantContextHolder.getTenantId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(currentUserId != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            groupMemberList.get(0).setRoleType("乐团主管"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        addImGroupMember(groupId, groupMemberList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return groupId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void addImGroupMember(String groupId, List<ImGroupMember> groupMemberList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember> imGroupMembers = Lists.newArrayList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (ImGroupMember groupMember : groupMemberList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SysUserType sysUserType = EFriendRoleType.getByName(groupMember.getRoleType()).toSysUserType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMembers.add(com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .groupId(groupMember.getImGroupId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .userId(groupMember.getUserId().longValue()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .clientType(sysUserType.name()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .avatar(groupMember.getAvatar()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .nickname(groupMember.getNickname()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .isAdmin(groupMember.getIsAdmin()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .imUserId(getImUserId(groupMember.getUserId().toString(), sysUserType.name())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .roleType(groupMember.getRoleType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .build()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupCoreService.saveImGroupMemberList(groupId, imGroupMembers); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("添加群成员用户失败",e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("添加群成员用户失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean cancel(String imGroupId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupCoreService.groupDismiss(imGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("解散群组失败",e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("解散群组失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public List<ImGroup> queryByUserId(Integer userId, String search,String groupType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return imGroupDao.queryByUserId(userId, search,groupType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public List<ImGroupMemberDto> queryMemberById(String imGroupId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return  queryMemberById(imGroupId,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public List<ImGroupMemberDto> queryMemberById(String imGroupId,String search) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<ImGroupMemberDto> imGroupMemberDtos = imGroupDao.queryMemberById(imGroupId,search); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (ImGroupMemberDto imGroupMemberDto : imGroupMemberDtos) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMemberDto.setType(EFriendRoleType.getByName(imGroupMemberDto.getRoleType()).name()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMemberDto.getUser().setUsername(imGroupMemberDto.getGroupNickname()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMemberDto.setNickname(imGroupMemberDto.getGroupNickname()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String roleType = imGroupMemberDto.getRoleType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            /*if (StringUtils.isEmpty(roleType)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                throw new BizException("roleType为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //根据角色不同 配置imUserId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (EFriendRoleType.SCHOOLMASTER.getMsg().equals(roleType) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    EFriendRoleType.ORCHESTRA_LEADER.getMsg().equals(roleType) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    EFriendRoleType.SCHOOL_LEADER.getMsg().equals(roleType) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    EFriendRoleType.SCHOOL_TEACHER.getMsg().equals(roleType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                imGroupMemberDto.setImUserId( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        imGroupCoreService.getImUserId(String.valueOf(imGroupMemberDto.getUserId()), SysUserType.SCHOOL.getCode() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else if (EFriendRoleType.ORCHESTRA_TEACHER.getMsg().equals(roleType)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                imGroupMemberDto.setImUserId(imGroupCoreService.getImUserId(String.valueOf(imGroupMemberDto.getUserId()),SysUserType.TEACHER.getCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else if (EFriendRoleType.ORCHESTRA_MANAGER.getMsg().equals(roleType) || EFriendRoleType.MAINTENANCE_TECHNICIAN.getMsg().equals(roleType)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                imGroupMemberDto.setImUserId(imGroupCoreService.getImUserId(String.valueOf(imGroupMemberDto.getUserId()),SysUserType.EDUCATION.getCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else if (EFriendRoleType.STUDENT.getMsg().equals(roleType)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                imGroupMemberDto.setImUserId(imGroupCoreService.getImUserId(String.valueOf(imGroupMemberDto.getUserId()),SysUserType.STUDENT.getCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                imGroupMemberDto.setImUserId(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return imGroupMemberDtos; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public ImGroupMemberDto queryMember(String imGroupId, Integer userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ImGroupMemberDto imGroupMemberDto = imGroupDao.queryMember(imGroupId, userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(Objects.isNull(imGroupMemberDto)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMemberDto = imGroupDao.queryMember(null, userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (Objects.nonNull(imGroupMemberDto)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                imGroupMemberDto.setRoleType(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String roleType = imGroupMemberDto.getRoleType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /*if (StringUtils.isEmpty(roleType)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("roleType为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //根据角色不同 配置imUserId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (EFriendRoleType.SCHOOLMASTER.getMsg().equals(roleType) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                EFriendRoleType.ORCHESTRA_LEADER.getMsg().equals(roleType) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                EFriendRoleType.SCHOOL_LEADER.getMsg().equals(roleType) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                EFriendRoleType.SCHOOL_TEACHER.getMsg().equals(roleType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMemberDto.setImUserId( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    imGroupCoreService.getImUserId(String.valueOf(imGroupMemberDto.getUserId()), SysUserType.SCHOOL.getCode() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (EFriendRoleType.ORCHESTRA_TEACHER.getMsg().equals(roleType)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMemberDto.setImUserId(imGroupCoreService.getImUserId(String.valueOf(imGroupMemberDto.getUserId()),SysUserType.TEACHER.getCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (EFriendRoleType.ORCHESTRA_MANAGER.getMsg().equals(roleType) || EFriendRoleType.MAINTENANCE_TECHNICIAN.getMsg().equals(roleType)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMemberDto.setImUserId(imGroupCoreService.getImUserId(String.valueOf(imGroupMemberDto.getUserId()),SysUserType.EDUCATION.getCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (EFriendRoleType.STUDENT.getMsg().equals(roleType)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMemberDto.setImUserId(imGroupCoreService.getImUserId(String.valueOf(imGroupMemberDto.getUserId()),SysUserType.STUDENT.getCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMemberDto.setImUserId(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return imGroupMemberDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public int updateNickName(Integer userId, String nickName) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //修改群成员备注 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        int i = imGroupDao.updateNickname(userId, nickName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupDao.updateUserFriendNickname(userId, nickName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void updateNickName1(Integer userId, String nickName) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //修改群成员备注 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupDao.updateNickname(userId, nickName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupDao.updateUserFriendNickname(userId, nickName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //修改sysUser名称,如果包含学员的角色,那么修改userName。否则修改realName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysUser sysUser = sysUserService.queryUserById(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(sysUser.getUserType().contains("STUDENT")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            sysUser.setUsername(nickName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            sysUser.setRealName(nickName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        sysUserService.updateSysUser(sysUser); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // IM用户信息更新 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupCoreService.register(userId.toString(),"",nickName,sysUser.getAvatar()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("更新用户信息失败",e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("更新用户信息失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void updateImGroup(ImGroup imGroup) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setMemberNum(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupDao.update(imGroup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupCoreService.modifyGroupInfo(imGroup.getId(),imGroup.getName(),imGroup.getImg()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("群信息修改失败",e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("群信息修改失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void dismissGroup(String imGroupId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupCoreService.groupDismiss(imGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("解散群组失败",e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("解散群组失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public List<NameDto> queryDetail(List<NameDto> nameDto) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<NameDto> dtos = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(CollectionUtils.isNotEmpty(nameDto)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Map<Integer, List<NameDto>> collect = nameDto.stream().collect(Collectors.groupingBy(NameDto::getType)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (Integer integer : collect.keySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                List<NameDto> nameDtos = collect.get(integer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(CollectionUtils.isNotEmpty(nameDtos)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    String idList = nameDtos.stream().map(e -> e.getId()).collect(Collectors.joining(",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if(integer.equals(3)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        dtos.addAll(imGroupDao.queryNameByIds(idList)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }else if (integer.equals(1)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Integer userId = sysUserService.getUserId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        dtos.addAll(imUserFriendDao.queryNameByIds(idList,userId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return dtos; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public List<ImGroup> queryByUserIdV2(Integer userId, String search, String groupType, String musicGroupId, String classType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return imGroupDao.queryByUserIdV2(userId, search, groupType, musicGroupId, classType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public List<ImGroupMemberDto> queryMemberByIdV2(String imGroupId, String search, Integer subjectId, Boolean vipFlag) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return imGroupDao.queryMemberByIdV2(imGroupId,search,subjectId,vipFlag); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 用户退出所有群 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * <p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 删除时判断是否群主, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 如果是,则随机分配一个群主, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 如果删除的是最后一个群成员,那么解散群 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param userId 用户id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void quitAllGroup(Long userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<ImGroupMember> imGroupMembers = imGroupMemberDao.queryMembersByUserId(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (CollectionUtils.isEmpty(imGroupMembers)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (ImGroupMember imGroupMember : imGroupMembers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 如果是群主,随机分配一个群主 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (imGroupMember.getIsAdmin()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // 获取一个群成员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ImGroupMember imGroupMember1 = imGroupMemberDao.queryOneByGroupIdAndNotUser(imGroupMember.getImGroupId(), userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (Objects.nonNull(imGroupMember1)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        groupChangeOwner(imGroupMember1.getUserId(),imGroupMember.getImGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    log.error("更换群主失败{},{}", userId, imGroupMember.getImGroupId(), e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                imGroupCoreService.groupQuit(userId,"",imGroupMember.getImGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                log.error("用户退出群失败{},{}", userId, imGroupMember.getImGroupId(), e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<String> imGroupIds = imGroupMembers.stream().map(ImGroupMember::getImGroupId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 群组没人,删除群组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<ImGroup> imGroups = imGroupDao.queryByUserId(userId.intValue(),null, ImGroup.GroupTypeEnum.SCHOOL.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupMemberDao.deleteByUserId(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 更新群组人员数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupDao.addMemberNum(imGroupIds,-1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (CollectionUtils.isEmpty(imGroups)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<ImGroup> groups = imGroups.stream().filter(imGroup -> imGroup.getMemberNum().equals(1)).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (ImGroup group : groups) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                dismissGroup(group.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                log.error("解散群组失败{},{}", userId, group.getId(), e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupDao.delete(group.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 用户加入群 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param schoolId 学校id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param userId   用户id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param schoolStaffType   是否是群主 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void addSchoolStaffGroup(Long schoolId, Integer userId,String name,String avatar, ESchoolStaffType schoolStaffType) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 查询群是否存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ImGroup imGroup = imGroupDao.queryBySchoolId(schoolId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 注册主播用户信息到三方平台 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupCoreService.register(userId.toString(),"", name, avatar); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 群组不存在,先创建群组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (Objects.isNull(imGroup)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CooperationOrgan cooperationOrgan = cooperationOrganService.get(schoolId.intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup = new ImGroup(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup.setSchoolId(schoolId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup.setId(IdWorker.getIdStr()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup.setName("教学团队衔接群"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup.setIntroduce(imGroup.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup.setMemo(imGroup.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup.setMemberNum(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup.setImg(sysConfigService.findByParamName(SysConfigService.SCHOOL_IM_GROUP_IMG).getParanValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup.setType(ImGroup.GroupTypeEnum.SCHOOL.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup.setGroupType(ImGroup.GroupTypeEnum.SCHOOL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroup.setTenantId(cooperationOrgan.getTenantId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            createImGroup(imGroup,userId,""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            initSchoolGroup(imGroup.getSchoolId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (schoolStaffType.equals(ESchoolStaffType.ORCHESTRA_LEADER)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            groupChangeOwner(userId, imGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ImGroupMember imGroupMember = new ImGroupMember(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupMember.setImGroupId(imGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupMember.setUserId(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupMember.setIsAdmin(schoolStaffType.equals(ESchoolStaffType.ORCHESTRA_LEADER)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupMember.setRoleType(schoolStaffType.getDescribe()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupMember.setType(EFriendRoleType.getByName(schoolStaffType.getDescribe()).name()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupMember.setTenantId(imGroup.getTenantId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupMemberDao.insert(imGroupMember); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        updateImGroupUserNumber(imGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void initSchoolGroup(Long schoolId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 查询乐团主管 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<MusicGroup> musicGroupList = musicGroupDao.findByCooperationId(schoolId.intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (CollectionUtils.isEmpty(musicGroupList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        musicGroupList = musicGroupList.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .filter(o -> o.getStatus().equals(MusicGroupStatusEnum.PROGRESS)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (CollectionUtils.isEmpty(musicGroupList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 乐团主管 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Integer> groupLeaderIds = musicGroupList.stream().map(MusicGroup::getEducationalTeacherId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 乐团ID集合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<String> musicGroupIds = musicGroupList.stream().map(MusicGroup::getId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 班级列表主教/助教老师 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<ClassGroupTeacherMapper> teacherMapperList = classGroupTeacherMapperDao.findAllByMusicGroupIds(musicGroupIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Integer> teacherIds = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (CollectionUtils.isNotEmpty(teacherMapperList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            teacherIds.addAll(teacherMapperList.stream().map( o -> o.getUserId()).collect(Collectors.toSet())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<GroupMemberWrapper.ImGroupMember> imGroupMembers = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (Integer groupLeaderId : groupLeaderIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMembers.add(GroupMemberWrapper.ImGroupMember.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .userId(groupLeaderId.longValue()).roleType(EFriendRoleType.ORCHESTRA_MANAGER.getMsg()).imUserIdFormat(false).build()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (Integer teacherId : teacherIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMembers.add(GroupMemberWrapper.ImGroupMember.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .userId(teacherId.longValue()).roleType(EFriendRoleType.ORCHESTRA_TEACHER.getMsg()).imUserIdFormat(false).build()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        addSchoolGroup(schoolId, imGroupMembers); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 加入学校群聊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param schoolId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param imGroupMembers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void addSchoolGroup(Long schoolId, List<GroupMemberWrapper.ImGroupMember> imGroupMembers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 添加乐团领队,班级老师 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<ImGroupMember> imGroupMemberList =new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 查询群是否存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ImGroup imGroup = imGroupDao.queryBySchoolId(schoolId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (imGroup == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (CollectionUtils.isEmpty(imGroupMembers)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (GroupMemberWrapper.ImGroupMember groupMember : imGroupMembers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ImGroupMember imGroupMember = new ImGroupMember(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMember.setImGroupId(imGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMember.setUserId(groupMember.getUserId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMember.setIsAdmin(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMember.setRoleType(groupMember.getRoleType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMember.setType(EFriendRoleType.getByName(groupMember.getRoleType()).name()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMember.setTenantId(imGroup.getTenantId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMemberList.add(imGroupMember); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            groupMember.setImUserIdFormat(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        addImGroupMember(imGroup.getId(), imGroupMemberList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        updateImGroupUserNumber(imGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void quitSchoolGroup(Long schoolId, List<GroupMemberWrapper.ImGroupMember> imGroupMembers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 添加乐团领队,班级老师 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 查询群是否存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ImGroup imGroup = imGroupDao.queryBySchoolId(schoolId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (imGroup == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (CollectionUtils.isEmpty(imGroupMembers)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Integer> userIds = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (GroupMemberWrapper.ImGroupMember imGroupMember : imGroupMembers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMember.setImUserIdFormat(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            userIds.add(imGroupMember.getUserId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupCoreService.groupQuit(imGroupMembers,imGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("退出群成员失败{}", imGroup.getId(), e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        updateImGroupUserNumber(imGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void updateImGroupUserNumber(String imGroupId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ImGroup imGroup = new ImGroup(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setId(imGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroup.setMemberNum(imGroupMemberDao.getByGroupId(Lists.newArrayList(imGroupId)).size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupDao.updateMember(imGroup.getId(),imGroup.getMemberNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 群主移交 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param userId 用户id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param imGroupId     群组id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public Boolean groupChangeOwner(Integer userId, String imGroupId) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ImGroupMember imGroupMember = imGroupMemberDao.getAdmin(imGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Integer adminId = userId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (Objects.nonNull(imGroupMember)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            adminId = imGroupMember.getUserId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMember.setIsAdmin(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMemberDao.update(imGroupMember); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupCoreService.changeGroupOwner(imGroupId, userId.toString(), adminId.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupMemberDao.updateAdmin(imGroupId, userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 加群 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param imGroupIds    群组ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param userId          用户信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param roleType      用户类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void addImGroup(List<String> imGroupIds, Long  userId, String roleType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (CollectionUtils.isEmpty(imGroupIds)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<ImGroup> groupList = imGroupDao.getByIds(imGroupIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // id 分组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<String, ImGroup> map = groupList.stream().collect(Collectors.toMap(ImGroup::getId, Function.identity())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (String musicGroupId : imGroupIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ImGroup imGroup = map.get(musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (imGroup == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                imGroupCoreService.groupJoin(userId,"",imGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                updateImGroupUserNumber(imGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                log.error("加入群聊失败",e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 查询群组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param query 查询条件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @return 群组列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public List<ImGroup> queryByUserId(ImGroupWrapper.ImQuery query) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return imGroupDao.getByUserId(query); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 退出群组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param imGroupIds 群组ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param userId     用户ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void quitGroup(List<String> imGroupIds, Integer userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (CollectionUtils.isEmpty(imGroupIds)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<ImGroup> groupList = imGroupDao.getByIds(imGroupIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<ImGroupMember> imGroupMemberList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (ImGroup imGroup : groupList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                imGroupCoreService.groupQuit(userId.longValue(), "",imGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                log.error("退出群聊失败",e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ImGroupMember imGroupMember = new ImGroupMember(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMember.setImGroupId(imGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMember.setUserId(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imGroupMemberList.add(imGroupMember); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        imGroupMemberService.batchDeleteByGroupIdAndUserId(imGroupMemberList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (String imGroupId : imGroupIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            updateImGroupUserNumber(imGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 学校人员加入群组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param cooperationOrganId 合作机构id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param imGroupId 群组id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void schoolJoinGroup(Integer cooperationOrganId, String imGroupId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        CooperationOrgan cooperationOrgan = cooperationOrganService.get(cooperationOrganId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (cooperationOrgan == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<SchoolStaff> schoolStaffs = schoolStaffMapper.getByCoopIdAndType(cooperationOrganId, ESchoolStaffType.ORCHESTRA_LEADER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (CollectionUtils.isEmpty(schoolStaffs)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 查询群是否存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ImGroup imGroup = imGroupDao.get(imGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (imGroup == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SchoolStaff schoolStaff = schoolStaffs.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        addImGroup(Lists.newArrayList(imGroup.getId()),schoolStaff.getUserId(),ESchoolStaffType.ORCHESTRA_LEADER.getDescribe()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 解析IM用户规则 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param imUserId IM用户Id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @return String 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public String analysisImUserId(String imUserId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (StringUtils.isNotBlank(imConfig.getAppPrefix()) && imUserId.startsWith(imConfig.getAppPrefix())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return imUserId.replace(imConfig.getAppPrefix() + "_", "").split("_")[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return imUserId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * IM 用户注册 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param userId 用户Id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @return String 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public String getImUserId(String userId, String clientType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /*if (StringUtils.isNotBlank(imConfig.getAppPrefix()) && !userId.startsWith(imConfig.getAppPrefix())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imUserId = MessageFormat.format("{0}_{1}_{2}", imConfig.getAppPrefix(), userId, clientType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return userId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public String getImUserId(Long userId, RoleEnum userRole) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /*String clientType = "STUDENT"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(userRole.RoleTeacher == userRole){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            clientType = "TEACHER"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (StringUtils.isNotBlank(imConfig.getAppPrefix()) && !imUserId.startsWith(imConfig.getAppPrefix())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imUserId = MessageFormat.format("{0}_{1}_{2}", imConfig.getAppPrefix(), userId, clientType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return String.valueOf(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public String analysisImUserClient(String imUserId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (StringUtils.isNotBlank(imConfig.getAppPrefix()) && imUserId.startsWith(imConfig.getAppPrefix())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imUserId =  imUserId.replace(imConfig.getAppPrefix() + "_", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String[] s = imUserId.split("_"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (s.length > 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return imUserId.replace(s[0] + "_", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return imUserId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void joinImGroup(String roomId, BasicUserInfo userInfo, String serverProvider, List<Long> studentIds) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String joinImGroupKey = "joinImGroup:" + roomId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // VIP课或网络课,IM群聊已创建标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Boolean exists = redisTemplate.opsForValue().setIfAbsent(joinImGroupKey, roomId, 1L, TimeUnit.DAYS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(serverProvider); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (Optional.ofNullable(exists).orElse(false)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 群组老师信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<ImGroupMemberWrapper.ImGroupMember> groupMembers = Lists.newArrayList(ImGroupMemberWrapper.ImGroupMember 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .userId(userInfo.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .imUserId(this.getImUserId(userInfo.getUserId().toString(), "TEACHER")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .imUserIdFormat(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .build()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (Long studentId : studentIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                groupMembers.add(ImGroupMemberWrapper.ImGroupMember 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .userId(studentId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .imUserId(this.getImUserId(studentId.toString(),"STUDENT")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .imUserIdFormat(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .build()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // 创建群组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                log.info("createImGroup: roomId = {}, userId = {}", roomId, userInfo.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(pluginService.pluginName())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // 群组帐号注册 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        pluginService.register(userInfo.getImUserId(), userInfo.getRealName(), userInfo.getAvatar()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        log.error("直播房间群主注册失败: userId={}",userInfo.getUserId(), e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // 生成群组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    pluginService.chatRoomCreate(roomId, roomId, userInfo.getImUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // 加入群组成员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                    log.info("joinImGroup: roomId = {}, serviceProvider={}, userIds = {}", roomId,serverProvider, groupMembers); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                    pluginService.chatRoomGroupJoin(roomId, roomId, groupMembers); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    String[] integers = groupMembers.stream().map(e->e.getImUserId()).collect(Collectors.toList()).toArray(new String[]{}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    imHelper.joinGroup(integers, roomId, roomId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                redisTemplate.delete(joinImGroupKey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // 异常抛出,删除缓存标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                throw e; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public RTCRoomPluginService getRTCRoomPluginService(String serviceProvider) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return rtcRoomPluginContext.getPluginService(serviceProvider); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 |