Przeglądaj źródła

fix删除重复功能

Eric 1 rok temu
rodzic
commit
a55438c160

+ 2 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -11,7 +11,6 @@ import com.microsvc.toolkit.middleware.im.ImPluginContext;
 import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
 import com.microsvc.toolkit.middleware.im.message.MessageWrapper;
 import com.microsvc.toolkit.middleware.im.message.TencentRequest;
-import com.microsvc.toolkit.middleware.im.properties.ImConfigProperties;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
@@ -60,14 +59,12 @@ import com.ym.mec.common.page.PageUtil;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.tenant.TenantContextHolder;
-import com.yonge.log.dal.dao.HistoryMessageDao;
 import com.yonge.log.dal.model.HistoryMessage;
 import com.yonge.log.service.HistoryMessageService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.joda.time.DateTime;
-import org.joda.time.LocalDateTime;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -78,7 +75,6 @@ import java.awt.image.BufferedImage;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.net.URL;
-import java.text.MessageFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -129,9 +125,6 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
     private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
 
     @Autowired
-    private ImConfigProperties imConfig;
-
-    @Autowired
     private TeacherService teacherService;
 
     @Autowired
@@ -147,8 +140,6 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
     private UploadFileService uploadFileService;
 
     @Autowired
-    private HistoryMessageDao historyMessageDao;
-    @Autowired
     private HistoryMessageService historyMessageService;
 
     @Resource
@@ -460,7 +451,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
             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(","));
+                    String idList = nameDtos.stream().map(NameDto::getId).collect(Collectors.joining(","));
                     if(integer.equals(3)){
                         dtos.addAll(imGroupDao.queryNameByIds(idList));
                     }else if (integer.equals(1)){
@@ -626,7 +617,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 
         List<Integer> teacherIds = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(teacherMapperList)) {
-            teacherIds.addAll(teacherMapperList.stream().map( o -> o.getUserId()).collect(Collectors.toSet()));
+            teacherIds.addAll(teacherMapperList.stream().map(ClassGroupTeacherMapper::getUserId).collect(Collectors.toSet()));
         }
 
         List<GroupMemberWrapper.ImGroupMember> imGroupMembers = new ArrayList<>();

+ 0 - 191
mec-im/src/main/java/com/ym/service/GroupCoreService.java

@@ -1,191 +0,0 @@
-package com.ym.service;
-
-import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
-import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginService;
-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.ImGroup;
-import com.ym.mec.biz.dal.enums.im.RoleEnum;
-import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
-import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-
-public interface GroupCoreService {
-
-	/**
-	 * 创建群组
-	 * @param id 群编号
-	 * @param userId 创建人编号
-	 * @param name 群名称
-	 * @param introduce 群介绍
-	 * @param memo 群备注
-	 * @param tags 群标签
-	 * @param img 群图像
-	 * @param type 群类型
-	 * @return
-	 */
-	ImGroup create(String id, Integer userId, String name, String introduce, String memo, String tags, String img, String type, ImGroup.GroupTypeEnum groupType);
-
-	/**
-	* @description: 创建非课程类型的业务群组
-	* @return java.lang.String
-	* @author zx
-	* @date 2022/6/7 15:20
-	*/
-	String createGroup(ImGroupDto imGroupDto);
-
-	/**
-	 * 解散群组
-	 * @param imGroupId
-	 * @return
-	 */
-	boolean cancel(String imGroupId);
-
-	/**
-	 * 查询用户所在的群列表
-	 * @param userId
-	 * @param search
-	 * @return
-	 */
-	List<ImGroup> queryByUserId(Integer userId, String search,String groupType);
-
-	/**
-	 * 查询群成员列表
-	 * @param imGroupId
-	 * @return
-	 */
-	List<ImGroupMemberDto> queryMemberById(String imGroupId);
-	List<ImGroupMemberDto> queryMemberById(String imGroupId,String search);
-
-	/**
-	 * 查询指定用户在群众的信息
-	 * @param imGroupId 群编号
-	 * @param userId 指定的用户编号
-	 * @return
-	 */
-	ImGroupMemberDto queryMember(String imGroupId, Integer userId);
-
-	/**
-	 * 修改用户在群、通讯录的备注
-	 * @param userId
-	 * @param nickName
-	 * @return
-	 */
-    int updateNickName(Integer userId, String nickName);
-
-	/**
-	 * 修改用户在群、通讯录的备注
-	 * @param userId
-	 * @param nickName
-	 * @return
-	 */
-	void updateNickName1(Integer userId, String nickName);
-
-	void updateImGroup(ImGroup imGroup);
-
-	//解散群组
-	void dismissGroup(String imGroupId);
-
-	/**
-	* @description: 获取群聊、用户详情
-	 * @param nameDto
-	* @return java.lang.Object
-	* @author zx
-	* @date 2022/8/8 10:10
-	*/
-	List<NameDto> queryDetail(List<NameDto> nameDto);
-
-    List<ImGroup> queryByUserIdV2(Integer userId, String search, String groupType, String musicGroupId, String classType);
-
-    List<ImGroupMemberDto> queryMemberByIdV2(String imGroupId,String search,Integer subjectId,Boolean vipFlag);
-
-    /**
-     * 用户退出所有群
-     *
-     * @param userId 用户id
-     */
-    void quitAllGroup(Long userId);
-
-    /**
-     * 用户加入群
-     *
-     * @param schoolId 学校id
-     * @param userId 用户id
-     * @param leader 是否是群主
-     */
-    void addSchoolStaffGroup(Long schoolId, Integer userId,String name,String avatar, ESchoolStaffType leader) throws Exception;
-
-    @Transactional(rollbackFor = Exception.class)
-    void addSchoolGroup(Long schoolId, List<GroupMemberWrapper.ImGroupMember> imGroupMembers);
-
-    @Transactional(rollbackFor = Exception.class)
-    void quitSchoolGroup(Long schoolId, List<GroupMemberWrapper.ImGroupMember> imGroupMembers);
-
-    /**
-     * 群主移交
-     * @param userId 用户id
-     * @param imGroupId     群组id
-     */
-    @Transactional(rollbackFor = Exception.class)
-    Boolean  groupChangeOwner(Integer userId, String imGroupId) throws Exception;
-
-    /**
-     * 加群
-     *
-     * @param musicGroupIds 群组ID
-     * @param userId          用户信息
-     * @param roleType
-     */
-    void addImGroup(List<String> musicGroupIds, Long  userId,  String roleType);
-
-    /**
-     * 查询群组
-     *
-     * @param query 查询条件
-     * @return 群组列表
-     */
-    List<ImGroup> queryByUserId(ImGroupWrapper.ImQuery query);
-
-    /**
-     * 退出群组
-     *
-     * @param imGroupIds 群组ID
-     * @param userId    用户ID
-     */
-    void quitGroup(List<String> imGroupIds, Integer userId);
-
-    /**
-     * 学校人员加入群组
-     *
-     * @param cooperationOrganId 合作机构id
-     * @param imGroupId 群组id
-     */
-    void schoolJoinGroup(Integer cooperationOrganId, String imGroupId);
-
-
-	/**
-	 * 解析IM用户规则
-	 * @param imUserId IM用户Id
-	 * @return String
-	 */
-	String analysisImUserId(String imUserId);
-
-	/**
-	 * IM 用户注册
-	 * @param userId 用户Id
-	 * @return String
-	 */
-	String getImUserId(String userId,String clientType);
-
-	String getImUserId(Long userId, RoleEnum userRole);
-
-	String analysisImUserClient(String imUserId);
-
-	void joinImGroup(String roomId, BasicUserInfo userInfo, String serverProvider, List<Long> studentIds) throws Exception;
-
-	RTCRoomPluginService getRTCRoomPluginService(String serviceProvider);
-}

+ 0 - 902
mec-im/src/main/java/com/ym/service/Impl/GroupCoreServiceImpl.java

@@ -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);
-    }
-
-}