Explorar el Código

自动创建粉丝群

liujunchi hace 2 años
padre
commit
f84f25229f

+ 18 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherController.java

@@ -5,6 +5,7 @@ import com.yonge.cooleshow.admin.io.request.TeacherBindingUserVo;
 import com.yonge.cooleshow.admin.io.request.coupon.CouponIssueVo;
 import com.yonge.cooleshow.biz.dal.queryInfo.TeacherBindingUserQueryInfo;
 import com.yonge.cooleshow.biz.dal.queryInfo.TeacherQueryInfo;
+import com.yonge.cooleshow.biz.dal.service.ImGroupService;
 import com.yonge.cooleshow.biz.dal.service.UserBindingTeacherService;
 import com.yonge.cooleshow.biz.dal.vo.userBindingTeacher.UserBindingCourseWrapper;
 import com.yonge.cooleshow.biz.dal.vo.userBindingTeacher.UserBindingTeacherWrapper;
@@ -37,6 +38,7 @@ import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -91,6 +93,9 @@ public class TeacherController extends BaseController {
     @Autowired
     private UserBindingTeacherService userBindingTeacherService;
 
+    @Autowired
+    private ImGroupService imGroupService;
+
     /**
      * 查询单条
      */
@@ -333,4 +338,17 @@ public class TeacherController extends BaseController {
 
         return succeed(PageUtil.getPageInfo(pages, responses));
     }
+
+
+    /**
+     * 老师粉丝信息查询
+     * @return HttpResponseResult<PageInfo<MyFens>>
+     */
+    @ApiOperation(value = "旧数据创建粉丝群接口")
+    @PutMapping(value = "/createFansImGroup")
+    public HttpResponseResult createFansImGroup() throws Exception {
+
+        imGroupService.setTeacherFansGroup();
+        return succeed();
+    }
 }

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupService.java

@@ -71,5 +71,11 @@ public interface ImGroupService extends IService<ImGroup> {
 
     //退群
     void quit(String groupId,Long userId) throws Exception;
+
+    /**
+     * 旧数据创建粉丝群
+     */
+    void setTeacherFansGroup() throws Exception;
+
 }
 

+ 83 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java

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