Browse Source

学生关注老师自动加入粉丝群

Eric 2 years ago
parent
commit
02be7f0a37

+ 1 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageTypeEnum.java

@@ -56,6 +56,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     STUDENT_EVALUATE_TEACHER_PRACTICE("学员对老师评价"),
     WITHDRAWAL_SUCCESS("结算成功"),
     STUDENT_JOIN_FANSGROUP("学员申请加入粉丝群"),
+    STUDENT_AUTOJOIN_FANSGROUP("学员自动加入粉丝群"),
 
     VIP_BUY_SUCCESS("会员购买成功"),
     SMS_VIP_BUY_SUCCESS("会员购买成功(短信)"),

+ 77 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentStarServiceImpl.java

@@ -2,12 +2,25 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Maps;
+import com.yonge.cooleshow.biz.dal.entity.ImGroup;
 import com.yonge.cooleshow.biz.dal.entity.StudentTotal;
+import com.yonge.cooleshow.biz.dal.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.entity.TeacherTotal;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
+import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
+import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
+import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
+import com.yonge.cooleshow.biz.dal.service.ImGroupService;
 import com.yonge.cooleshow.biz.dal.service.StudentTotalService;
 import com.yonge.cooleshow.biz.dal.service.TeacherTotalService;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
+import com.yonge.toolset.base.util.ThreadPool;
+import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
+import io.rong.models.group.GroupMember;
+import lombok.extern.slf4j.Slf4j;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -15,7 +28,11 @@ import com.yonge.cooleshow.biz.dal.entity.StudentStar;
 import com.yonge.cooleshow.biz.dal.dao.StudentStarDao;
 import com.yonge.cooleshow.biz.dal.service.StudentStarService;
 
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
+@Slf4j
 @Service
 public class StudentStarServiceImpl extends ServiceImpl<StudentStarDao, StudentStar> implements StudentStarService {
     @Autowired
@@ -24,6 +41,14 @@ public class StudentStarServiceImpl extends ServiceImpl<StudentStarDao, StudentS
     private StudentTotalService studentTotalService;
     @Autowired
     private TeacherTotalService teacherTotalService;
+    @Autowired
+    private ImGroupMemberService imGroupMemberService;
+    @Autowired
+    private ImGroupService imGroupService;
+    @Autowired
+    private SysUserMapper sysUserMapper;
+    @Autowired
+    private SysMessageServiceImpl sysMessageService;
 
     @Override
     public StudentStar getByStudentIdAndTeacherId(Long studentId, Long teacherId) {
@@ -42,6 +67,10 @@ public class StudentStarServiceImpl extends ServiceImpl<StudentStarDao, StudentS
             save(studentStar);
             studentTotal.setStarTeacherNum(studentTotal.getStarTeacherNum() + 1);
             teacherTotal.setFansNum(teacherTotal.getFansNum() + 1);
+
+            // 关注老师,自动加入老师粉丝群
+            studentAutoJoinTeacherFansGroup(studentId, teacherId);
+
         } else if (YesOrNoEnum.NO.equals(starStatus) && null != studentStar) {
             remove(Wrappers.<StudentStar>lambdaQuery()
                     .eq(StudentStar::getStudentId, studentId)
@@ -54,4 +83,52 @@ public class StudentStarServiceImpl extends ServiceImpl<StudentStarDao, StudentS
         teacherTotalService.updateTotalCache(teacherTotal);
         return HttpResponseResult.succeed(true);
     }
+
+    /**
+     * 学生关注老师,自动加入粉丝群
+     * @param studentId 学生ID
+     * @param teacherId 老师ID
+     */
+    private void studentAutoJoinTeacherFansGroup(Long studentId, Long teacherId) {
+        ThreadPool.getExecutor().submit(() -> {
+
+            try {
+
+                // 查询老师粉丝群
+                ImGroup imGroup = imGroupService.lambdaQuery()
+                        .eq(ImGroup::getCreateBy, teacherId)
+                        .eq(ImGroup::getAutoPassFlag, true)
+                        .one();
+
+                if (Objects.nonNull(imGroup)) {
+
+                    //处理本地群成员
+                    List<GroupMember> groupMembers = imGroupMemberService.initGroupMember(imGroup.getId(),
+                            studentId, false, ImGroupMemberRoleType.STUDENT);
+                    //同步群成员数量
+                    imGroupService.getDao().updateMemberNum(imGroup.getId());
+
+                    //加入融云群
+                    imGroupMemberService.join(groupMembers, imGroup.getId());
+
+                    // 发送通知消息
+                    SysUser student = sysUserMapper.selectById(studentId);
+
+                    if (Objects.nonNull(student)) {
+
+                        Map<Long, String> receivers = Maps.newHashMap();
+                        receivers.put(student.getId(), student.getPhone());
+
+                        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_AUTOJOIN_FANSGROUP,
+                                receivers, null, 0, null, ClientEnum.STUDENT.getCode(), imGroup.getName());
+                    }
+
+                }
+
+            } catch (Exception e) {
+                log.error("StudentStar studentId={}, teacherId={}", studentId, teacherId);
+            }
+
+        });
+    }
 }

+ 22 - 13
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherAuthEntryRecordServiceImpl.java

@@ -120,19 +120,7 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
                 userFirstTimeService.recordTime(build.getUserId(), ClientEnum.TEACHER, UserFirstTimeTypeEnum.ENTRY);
 
                 // 老师达人认证成功,自动创建粉丝群
-                ThreadPool.getExecutor().submit(() -> {
-
-                    try {
-                        ImGroup imGroup = new ImGroup();
-                        imGroup.setName(MessageFormat.format("{0}的粉丝群", teacher.getUsername()));
-                        imGroup.setIntroduce("");
-                        imGroup.setCreateBy(teacher.getUserId());
-
-                        imGroupService.create(imGroup);
-                    } catch (Exception e) {
-                        log.error("doAuth teacherId={}", teacher.getUserId(), e);
-                    }
-                });
+                teacherAutoCreateFansGroup(teacher);
             }
             if (null == teacher.getEntryFlag() || YesOrNoEnum.NO.equals(teacher.getEntryFlag())) {
                 teacher.setEntryFlag(authOperaReq.getPass() ? YesOrNoEnum.YES : YesOrNoEnum.NO);
@@ -155,6 +143,27 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
         return HttpResponseResult.succeed(true);
     }
 
+    /**
+     * 老师达人认证通过,自动创建粉丝群
+     * @param teacher TeacherVo
+     */
+    private void teacherAutoCreateFansGroup(TeacherVo teacher) {
+        ThreadPool.getExecutor().submit(() -> {
+
+            try {
+                ImGroup imGroup = new ImGroup();
+                imGroup.setName(MessageFormat.format("{0}的粉丝群", teacher.getUsername()));
+                imGroup.setIntroduce("");
+                imGroup.setAutoPassFlag(true);
+                imGroup.setCreateBy(teacher.getUserId());
+
+                imGroupService.create(imGroup);
+            } catch (Exception e) {
+                log.error("doAuth teacherId={}", teacher.getUserId(), e);
+            }
+        });
+    }
+
     private void setTag(AuthOperaReq authOperaReq, TeacherAuthEntryRecord build, TeacherVo teacher) {
         if (authOperaReq.getPass()) {
             if (!StringUtil.isEmpty(teacher.getTeacherCertificate())) {