|
@@ -1,6 +1,9 @@
|
|
|
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.client.SysUserFeignService;
|
|
|
+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 +16,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 +75,15 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
|
|
|
@Resource
|
|
|
private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SysUserFeignService sysUserFeignService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private StudentStarService studentStarService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TeacherService teacherService;
|
|
|
+
|
|
|
@Override
|
|
|
public ImGroupDao getDao() {
|
|
|
return this.baseMapper;
|
|
@@ -194,5 +228,65 @@ 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) {
|
|
|
+
|
|
|
+ // 已经有群的不操作
|
|
|
+ Integer count = this.lambdaQuery()
|
|
|
+ .eq(ImGroup::getCreateBy, teacher.getUserId())
|
|
|
+ .eq(ImGroup::getAutoPassFlag, true)
|
|
|
+ .eq(ImGroup::getType, ImGroupType.FAN)
|
|
|
+ .count();
|
|
|
+ if (count > 0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 老师用户信息
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserById(teacher.getUserId());
|
|
|
+ if (sysUser == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 查询老师的粉丝,添加到群
|
|
|
+ List<StudentStar> list = studentStarService.lambdaQuery()
|
|
|
+ .eq(StudentStar::getTeacherId, teacher.getUserId())
|
|
|
+ .list();
|
|
|
+ Set<Long> studentIdList = list.stream().map(StudentStar::getStudentId).collect(Collectors.toSet());
|
|
|
+
|
|
|
+
|
|
|
+ //创建群聊
|
|
|
+ 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);
|
|
|
+ if (!CollectionUtils.isEmpty(studentIdList)) {
|
|
|
+ groupMembers.addAll(imGroupMemberService.initGroupMembers(imGroupId, studentIdList, ImGroupMemberRoleType.STUDENT));
|
|
|
+ }
|
|
|
+ //创建融云群
|
|
|
+ this.rtcCreate(sysUser.getId(), imGroupId, imGroup.getName());
|
|
|
+ //加入融云群
|
|
|
+ imGroupMemberService.join(groupMembers, imGroupId);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|