| 
					
				 | 
			
			
				@@ -1,13 +1,14 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.yonge.cooleshow.biz.dal.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.core.toolkit.IdWorker; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.google.common.collect.Lists; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.microsvc.toolkit.middleware.im.ImPluginContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.microsvc.toolkit.middleware.im.properties.ImConfigProperties; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.auth.api.client.SysUserFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.auth.api.entity.SysUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.auth.config.AppGlobalServiceConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.cooleshow.biz.dal.config.RongCloudConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleStudentPaymentDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dao.ImGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dao.ImGroupMemberAuditDao; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -22,10 +23,6 @@ import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.enums.ImGroupType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.service.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.entity.StudentStar; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.cooleshow.biz.dal.entity.Teacher; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.cooleshow.biz.dal.enums.ClientEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.cooleshow.biz.dal.enums.ImGroupType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.service.CourseGroupService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.service.ImGroupService; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -36,7 +33,6 @@ import com.yonge.cooleshow.biz.dal.service.TeacherService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.wrapper.im.ImGroupWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.toolset.base.exception.BizException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.toolset.base.util.ThreadPool; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import io.rong.models.Result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import io.rong.models.group.GroupMember; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import io.rong.models.group.GroupModel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.commons.collections.CollectionUtils; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -106,6 +102,9 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private ImConfigProperties imConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private SysConfigService sysConfigService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public ImGroupDao getDao() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return this.baseMapper; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -121,7 +120,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @return IM聊天Token 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public ImGroupWrapper.ImUserInfo register(String userId, String username, String avatar) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public ImGroupWrapper.ImUserInfo register(String userId,ClientEnum clientType, String username, String avatar) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ImGroupWrapper.ImUserInfo userInfo = ImGroupWrapper.ImUserInfo.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .imUserId("").imToken("").build(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -129,7 +128,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 聊天Token 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String imUserId = getImUserId(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String imUserId = getImUserId(userId,clientType.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 生成签名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             userInfo.imUserId(imUserId) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -149,10 +148,10 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @return String 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public String getImUserId(String userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public String getImUserId(String userId,String clientType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String imUserId = userId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (StringUtils.isNotBlank(imConfig.getAppPrefix()) && !userId.startsWith(imConfig.getAppPrefix())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            imUserId = MessageFormat.format("{0}:{1}", imConfig.getAppPrefix(), userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            imUserId = MessageFormat.format("{0}:{1}:{2}", imConfig.getAppPrefix(), userId,clientType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return imUserId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -185,7 +184,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         imGroup.setId(imGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.baseMapper.insert(imGroup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //处理本地群成员列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<GroupMember> groupMembers = imGroupMemberService.initGroupMember(imGroupId, imGroup.getCreateBy(), true, ImGroupMemberRoleType.TEACHER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<ImGroupMember> groupMembers = imGroupMemberService.initGroupMember(imGroupId, imGroup.getCreateBy(), true, ImGroupMemberRoleType.TEACHER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //创建融云群 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.rtcCreate(imGroup.getCreateBy(),imGroupId,imGroup.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //加入融云群 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -225,7 +224,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         imUserFriendService.saveUserFriend(teacherId, studentIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //处理本地群成员列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 添加老师 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<GroupMember> groupMembers = imGroupMemberService.initGroupMember(imGroupId, imGroup.getCreateBy(), true, ImGroupMemberRoleType.TEACHER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<ImGroupMember> groupMembers = imGroupMemberService.initGroupMember(imGroupId, imGroup.getCreateBy(), true, ImGroupMemberRoleType.TEACHER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 添加学生 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         groupMembers.addAll(imGroupMemberService.initGroupMembers(imGroupId, studentIds, ImGroupMemberRoleType.STUDENT)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //创建融云群 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -235,21 +234,101 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return imGroupId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //创建融云群 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private void rtcCreate(Long userId,String imGroupId,String imGroupName) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //创建融云群 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        GroupMember[] groupMembers = new GroupMember[]{new GroupMember(userId.toString(),imGroupId,null)}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        GroupModel groupModel = new GroupModel(imGroupId,0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        groupModel.setMembers(groupMembers); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        groupModel.setName(imGroupName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Result result = RongCloudConfig.rongCloud.group.create(groupModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(!result.code.equals(200)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("创建群聊失败:{}",result.errorMessage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("创建群聊失败,请联系管理员"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rtcCreate(userId,imGroupId,imGroupName,ClientEnum.TEACHER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //创建融云群 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void rtcCreate(Long userId,String imGroupId,String imGroupName,ClientEnum clientType) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //创建群 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SysUser user = sysUserService.findUserById(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 群组默认头象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        String groupDefaultAvatar = sysConfigService.findConfigValue(SysConfigConstant.GROUP_DEFAULT_AVATAR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<GroupMemberWrapper.ImGroupMember> groupMembers = Lists.newArrayList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //记录群成员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        GroupMemberWrapper.ImGroupMember groupMember = GroupMemberWrapper.ImGroupMember 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .id(IdWorker.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .groupId(imGroupId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .userId(userId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .clientType(clientType.getCode()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .avatar(null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .nickname(user.getUsername()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .isAdmin(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .imUserId(getImUserId(userId.toString(),clientType.getCode())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .roleType(clientType.getCode()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 自动激活学生IM帐号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        registerUser(groupMembers); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 创建IM群组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        imPluginContext.getPluginService().groupCreate(imGroupId, imGroupName, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                getImUserId(userId.toString(),clientType.getCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 添加群成员到当前群组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        imPluginContext.getPluginService().groupJoin(imGroupId, imGroupName, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                groupMembers); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 批量导入用户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param groupMembers List<ImGroupMemberWrapper.ImGroupMember> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void registerUser(List<GroupMemberWrapper.ImGroupMember> groupMembers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (GroupMemberWrapper.ImGroupMember member : groupMembers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 激活用户帐号为空 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (StringUtils.isBlank(member.getNickname())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String imUserId = member.getImUserId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (StringUtils.isBlank(imUserId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    imUserId = getImUserId(String.valueOf(member.getUserId()), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            member.getClientType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                imPluginContext.getPluginService().register(getImUserId(imUserId,member.getClientType()), member.getNickname(), member.getAvatar()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                log.error("registerUser member imToken"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public List<GroupMemberWrapper.ImGroupMember> getImGroupMembers(List<ImGroupMember> groupMemberList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return groupMemberList.stream().map(item -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return GroupMemberWrapper.ImGroupMember.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .id(item.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .groupId(item.getGroupId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .userId(item.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .clientType(item.getRoleType().getCode()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .avatar(item.getAvatar()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .nickname(item.getNickname()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .isAdmin(item.getIsAdmin()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .imUserId(item.getImUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .roleType(item.getRoleType().getCode()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 自动注册用户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param groupMembers List<ImGroupMemberWrapper.ImGroupMember> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void asyncRegisterUser(List<GroupMemberWrapper.ImGroupMember> groupMembers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        com.microsvc.toolkit.common.tools.ThreadPool.getExecutor().submit(() -> registerUser(groupMembers)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void dismiss(String groupId) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Long createBy = Optional.ofNullable(this.baseMapper.selectById(groupId)). 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -261,20 +340,21 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //删除入群申请 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         imGroupMemberAuditDao.delByGroupId(groupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //获取所有群成员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<GroupMember> groupMembers = imGroupMemberService.getDao().queryGroupMember(groupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<ImGroupMember> groupMembers = imGroupMemberService.getDao().queryGroupMember(groupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //销毁成功,删除群 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.baseMapper.deleteById(groupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //删除群成员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         imGroupMemberService.delByGroupId(groupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //解散融云群 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        GroupModel groupModel = new GroupModel(groupId,0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        GroupMember[] groupMembersArr = groupMembers.toArray(new GroupMember[groupMembers.size()]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        groupModel.setMembers(groupMembersArr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Result result = RongCloudConfig.rongCloud.group.dismiss(groupModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(!result.code.equals(200)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("解散群聊失败:{}",result.errorMessage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("解散群聊失败,请联系管理员"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 获取群成员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<GroupMemberWrapper.ImGroupMember> imGroupMembers = groupMembers.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .map(x -> GroupMemberWrapper.ImGroupMember.builder().userId(x.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .groupId(x.getGroupId()).clientType(x.getRoleType().getCode()).build()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 解散群 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        imPluginContext.getPluginService().groupDismiss(groupId, imGroupMembers); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -321,14 +401,13 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //修改群成员数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         baseMapper.updateMemberNum(groupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        GroupModel groupModel = new GroupModel(groupId,0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        GroupMember[] groupMembers = new GroupMember[]{new GroupMember(imUserId,groupId,null)}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        groupModel.setMembers(groupMembers); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Result result = RongCloudConfig.rongCloud.group.quit(groupModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(!result.code.equals(200)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("退出群聊失败:{}",result.errorMessage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("退出群聊失败,请联系管理员"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 群主退出 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<ImGroupMember> groupMembers = Lists.newArrayList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        groupMembers.add(groupMember); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        imPluginContext.getPluginService().groupQuit(groupId, getImGroupMembers(groupMembers)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -377,7 +456,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             String imGroupId = UUID.randomUUID() + imGroup.getType().getCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             imGroup.setId(imGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.baseMapper.insert(imGroup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<GroupMember> groupMembers = imGroupMemberService.initGroupMember(imGroupId, imGroup.getCreateBy(), true, ImGroupMemberRoleType.TEACHER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<ImGroupMember> groupMembers = imGroupMemberService.initGroupMember(imGroupId, imGroup.getCreateBy(), true, ImGroupMemberRoleType.TEACHER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!CollectionUtils.isEmpty(studentIdList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 groupMembers.addAll(imGroupMemberService.initGroupMembers(imGroupId, studentIdList, ImGroupMemberRoleType.STUDENT)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -429,7 +508,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         // 自动加入该群组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        imGroupMemberService.join(Lists.newArrayList(new GroupMember(imIdentity, groupId, null)), groupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        imGroupMemberService.join(Lists.newArrayList(groupMember), groupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         Integer numbers = imGroupMemberService.lambdaQuery() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 .eq(ImGroupMember::getGroupId, groupId) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -438,11 +517,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 .count(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         // 拥有老师身份,且非群主时,需要主动退出群聊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (count > 0 && numbers <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            GroupModel groupModel = new GroupModel(groupId,0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            GroupMember[] groupMembers = new GroupMember[]{new GroupMember(String.valueOf(userId), groupId,null)}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            groupModel.setMembers(groupMembers); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            RongCloudConfig.rongCloud.group.quit(groupModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            quit(groupId, userId, ClientEnum.TEACHER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         // 缓存重新入群标识, 默认有效期为120天 
			 |