|  | @@ -1,6 +1,8 @@
 | 
	
		
			
				|  |  |  package com.yonge.cooleshow.biz.dal.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
	
		
			
				|  |  | +import com.google.common.collect.Lists;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.config.RongCloudConfig;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.dao.CourseScheduleStudentPaymentDao;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.dao.ImGroupDao;
 | 
	
	
		
			
				|  | @@ -13,18 +15,40 @@ import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 | 
	
		
			
				|  |  |  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;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.StudentStarService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.SysUserService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.TeacherService;
 | 
	
		
			
				|  |  |  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;
 | 
	
		
			
				|  |  |  import org.slf4j.Logger;
 | 
	
		
			
				|  |  |  import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  | +import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import javax.annotation.Resource;
 | 
	
		
			
				|  |  | -import java.util.*;
 | 
	
		
			
				|  |  | +import java.text.MessageFormat;
 | 
	
		
			
				|  |  | +import java.util.Collections;
 | 
	
		
			
				|  |  | +import java.util.Date;
 | 
	
		
			
				|  |  | +import java.util.List;
 | 
	
		
			
				|  |  | +import java.util.Objects;
 | 
	
		
			
				|  |  | +import java.util.Optional;
 | 
	
		
			
				|  |  | +import java.util.Set;
 | 
	
		
			
				|  |  | +import java.util.UUID;
 | 
	
		
			
				|  |  | +import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * 即时通讯群组(ImGroup)表服务实现类
 | 
	
	
		
			
				|  | @@ -50,6 +74,12 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
 | 
	
		
			
				|  |  |      @Resource
 | 
	
		
			
				|  |  |      private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private StudentStarService studentStarService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private TeacherService teacherService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public ImGroupDao getDao() {
 | 
	
		
			
				|  |  |          return this.baseMapper;
 | 
	
	
		
			
				|  | @@ -194,5 +224,57 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
 | 
	
		
			
				|  |  |              throw new BizException("退出群聊失败,请联系管理员");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void setTeacherFansGroup() throws Exception {
 | 
	
		
			
				|  |  | +        // 查询所有认证老师
 | 
	
		
			
				|  |  | +        List<Teacher> teacherList = teacherService.lambdaQuery().eq(Teacher::getEntryFlag, 1).list();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 遍历给老师创建粉丝群
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        for (Teacher teacher : teacherList) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 查询老师的粉丝,添加到群
 | 
	
		
			
				|  |  | +            List<StudentStar> list = studentStarService.lambdaQuery()
 | 
	
		
			
				|  |  | +                                                       .eq(StudentStar::getTeacherId, teacher.getUserId())
 | 
	
		
			
				|  |  | +                                                       .list();
 | 
	
		
			
				|  |  | +            Set<Long> studentIdList = list.stream().map(StudentStar::getStudentId).collect(Collectors.toSet());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 老师用户信息
 | 
	
		
			
				|  |  | +            SysUser sysUser = sysUserService.findUserById(teacher.getUserId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            Integer count = this.lambdaQuery()
 | 
	
		
			
				|  |  | +                                .eq(ImGroup::getCreateBy, teacher.getUserId())
 | 
	
		
			
				|  |  | +                                .eq(ImGroup::getAutoPassFlag, true)
 | 
	
		
			
				|  |  | +                                .eq(ImGroup::getType, ImGroupType.FAN)
 | 
	
		
			
				|  |  | +                                .count();
 | 
	
		
			
				|  |  | +            if (count > 0) {
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            //创建群聊
 | 
	
		
			
				|  |  | +            ImGroup imGroup = new ImGroup();
 | 
	
		
			
				|  |  | +            imGroup.setCreateBy(teacher.getUserId());
 | 
	
		
			
				|  |  | +            imGroup.setAutoPassFlag(true);
 | 
	
		
			
				|  |  | +            imGroup.setMemberNum(studentIdList.size() + 1);
 | 
	
		
			
				|  |  | +            imGroup.setName(sysUser.getUsername() + "的粉丝群");
 | 
	
		
			
				|  |  | +            imGroup.setType(ImGroupType.FAN);
 | 
	
		
			
				|  |  | +            imGroup.setCreateTime(new Date());
 | 
	
		
			
				|  |  | +            imGroup.setUpdateTime(new Date());
 | 
	
		
			
				|  |  | +            imGroup.setCreateBy(teacher.getUserId());
 | 
	
		
			
				|  |  | +            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);
 | 
	
		
			
				|  |  | +            groupMembers.addAll(imGroupMemberService.initGroupMembers(imGroupId, studentIdList, ImGroupMemberRoleType.STUDENT));
 | 
	
		
			
				|  |  | +            //创建融云群
 | 
	
		
			
				|  |  | +            this.rtcCreate(sysUser.getId(), imGroupId, imGroup.getName());
 | 
	
		
			
				|  |  | +            //加入融云群
 | 
	
		
			
				|  |  | +            imGroupMemberService.join(groupMembers, imGroupId);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |