Browse Source

直播课群聊

cy 3 years ago
parent
commit
b29fdcea53

+ 25 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java

@@ -86,6 +86,8 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
     private UserOrderService userOrderService;
     @Autowired
     private SysMessageService sysMessageService;
+    @Autowired
+    private ImGroupMemberService imGroupMemberService;
 
     @Autowired
     private UserOrderRefundService userOrderRefundService;
@@ -359,7 +361,7 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         timeList.forEach(o -> {
             boolean checkDataTime = courseScheduleService.checkStudentCourseTime(studentId, startTimeFun.apply(o), endTimeFun.apply(o));
             if (checkDataTime) {
-                throw new BizException("学生id:"+studentId+",预计安排在" + DateUtil.dateToString(startTimeFun.apply(o), "yyyy年MM月dd号 HH点mm分") + "的课程时间存在冲突!");
+                throw new BizException("学生id:" + studentId + ",预计安排在" + DateUtil.dateToString(startTimeFun.apply(o), "yyyy年MM月dd号 HH点mm分") + "的课程时间存在冲突!");
             }
         });
     }
@@ -541,7 +543,7 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         // 获取课程组声部
         List<LiveCourseGroupVo> subjectList = baseMapper.selectCourseGroupSubject(courseGroupIdList);
         Map<Long, List<LiveCourseGroupVo>> collect = subjectList.stream()
-                                .collect(Collectors.groupingBy( LiveCourseGroupVo::getCourseGroupId));
+                .collect(Collectors.groupingBy(LiveCourseGroupVo::getCourseGroupId));
         for (LiveCourseGroupVo record : records) {
             List<LiveCourseGroupVo> liveCourseGroupVos = collect.get(record.getCourseGroupId());
             if (CollectionUtils.isEmpty(liveCourseGroupVos)) {
@@ -740,6 +742,21 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         log.info("buyLiveCourseSuccess ok");
         //课程购买成功后进行消息推送
         buyLiveSendMessage(studentPayment, courseGroup);
+
+        //创建群聊
+        try {
+            ImGroup imGroup = imGroupService.getDao().selectOne(Wrappers.<ImGroup>lambdaQuery().eq(ImGroup::getCourseGroupId, courseGroup.getId()));
+            if (imGroup == null) {//群组不存在->创建群组
+                imGroupService.autoCreate(courseGroup.getId(), CourseScheduleEnum.LIVE.getCode());
+            } else {//存在->加入当前学员
+                String imGroupId = imGroup.getId();
+                Set<Long> userIds = new HashSet<>(Arrays.asList(studentPayment.getUserId()));
+                imGroupMemberService.initGroupMembers(imGroupId, userIds, ImGroupMemberRoleType.STUDENT);
+            }
+        } catch (Exception e) {
+            log.error("直播课程组id:{},创建群聊失败:{}", courseGroup.getId(), e);
+            e.printStackTrace();
+        }
     }
 
     /**
@@ -923,32 +940,32 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
 
     @Override
     public IPage<CourseGroupLiveVo> selectLiveGroup(IPage<CourseGroupLiveVo> page, CourseGroupSearch search) {
-        return baseMapper.selectLiveGroup(page,search);
+        return baseMapper.selectLiveGroup(page, search);
     }
 
     @Override
     public IPage<CourseSchedulePaymentVo> selectLiveGroupStudent(IPage<CourseSchedulePaymentVo> page, CourseGroupSearch search) {
-        return baseMapper.selectLiveGroupStudent(page,search);
+        return baseMapper.selectLiveGroupStudent(page, search);
     }
 
     @Override
     public IPage<CourseSchedulePlanVo> selectLiveGroupPlan(IPage<CourseSchedulePlanVo> page, CourseGroupSearch search) {
-        return baseMapper.selectLiveGroupPlan(page,search);
+        return baseMapper.selectLiveGroupPlan(page, search);
     }
 
     @Override
     public IPage<CourseGroupVideoVo> selectVideoGroup(IPage<CourseGroupVideoVo> page, CourseGroupSearch search) {
-        return baseMapper.selectVideoGroup(page,search);
+        return baseMapper.selectVideoGroup(page, search);
     }
 
     @Override
     public IPage<CourseGroupStudentVo> selectVideoGroupStudent(IPage<CourseGroupStudentVo> page, CourseGroupSearch search) {
-        return baseMapper.selectVideoGroupStudent(page,search);
+        return baseMapper.selectVideoGroupStudent(page, search);
     }
 
     @Override
     public IPage<VideoLessonGroupDetail> selectVideoGroupPlan(IPage<VideoLessonGroupDetail> page, CourseGroupSearch search) {
-        return baseMapper.selectVideoGroupPlan(page,search);
+        return baseMapper.selectVideoGroupPlan(page, search);
     }
 
     @Override

+ 5 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -320,12 +320,14 @@
             g.subject_id_ AS subjectId,
             sb.name_ AS subjectName,
             (r.student_replied_ IS NOT NULL) AS studentReplied,
-            (r.teacher_replied_ IS NOT NULL) AS teacherReplied
+            (r.teacher_replied_ IS NOT NULL) AS teacherReplied,
+            i.id_ AS imGroupId
         FROM course_schedule cs
         LEFT JOIN course_group g ON cs.course_group_id_ = g.id_
         LEFT JOIN (SELECT course_id_ AS pid,count(*) AS payCount FROM course_schedule_student_payment GROUP BY course_id_ ) p ON cs.id_=p.pid
         LEFT JOIN `subject` sb ON g.subject_id_=sb.id_
         LEFT JOIN course_schedule_replied r ON cs.id_ = r.course_schedule_id_
+        LEFT JOIN im_group i ON g.id_ = i.course_group_id_
         WHERE cs.lock_=0
         AND cs.status_ IN ('ING','COMPLETE','NOT_START')
         AND cs.type_ IN ('LIVE','PIANO_ROOM_CLASS')
@@ -357,7 +359,8 @@
             g.subject_id_ AS subjectId,
             sb.name_ AS subjectName,
             (r.student_replied_ IS NOT NULL) AS studentReplied,
-            (r.teacher_replied_ IS NOT NULL) AS teacherReplied
+            (r.teacher_replied_ IS NOT NULL) AS teacherReplied,
+            NULL AS imGroupId
         FROM course_schedule_student_payment p
         LEFT JOIN sys_user u ON p.user_id_ =u.id_
         LEFT JOIN course_schedule cs ON p.course_id_=cs.id_