瀏覽代碼

fix:直播间开启失败

liujc 2 年之前
父節點
當前提交
d9d9e1fa6a

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleDto.java

@@ -112,6 +112,18 @@ public class CourseScheduleDto extends CourseSchedule {
     @ApiModelProperty(value = "是否有视频回放")
     private Boolean  hasVideoRecord;
 
+
+    @ApiModelProperty("视频数量")
+    private Integer videoNum;
+
+    public Integer getVideoNum() {
+        return videoNum;
+    }
+
+    public void setVideoNum(Integer videoNum) {
+        this.videoNum = videoNum;
+    }
+
     @Override
     public String getLiveRoomId() {
         return liveRoomId;

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java

@@ -460,6 +460,9 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      */
     void liveCourseRemind();
 
+    @Transactional(rollbackFor = Exception.class)
+    void createVipGroupLiveRoom(String roomId, CourseSchedule courseSchedule);
+
     /**
      * 删除直播课
      *

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -17,6 +17,7 @@ import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.dal.school.dto.ClassesForDayDto;
 import com.ym.mec.biz.dal.school.dto.CourseStudentDto;
 import com.ym.mec.biz.dal.vo.CourseScheduleWrapper;
+import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.dal.vo.ImLiveRoomVideoVo;
 import com.ym.mec.biz.dal.wrapper.DailySummaryOfClassesForTheCurrentSemesterWrapper;
 import com.ym.mec.biz.dal.wrapper.LiveGroupWrapper;
@@ -196,6 +197,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	@Autowired
 	private ImLiveBroadcastRoomService imLiveBroadcastRoomService;
 
+    @Autowired
+    private ImLiveRoomVideoService imLiveRoomVideoService;
 
     @Autowired
     private ImLiveRoomVideoDao imLiveRoomVideoDao;
@@ -5910,6 +5913,19 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         List<CourseScheduleDto> teacherCourseFormat = getTeacherCourseFormat(queryInfo.getTeacherId(), new Date(),
                 queryInfo.getTenantId(), new Date(), courseScheduleDtos, courseIds, courseIds);
 
+        // 直播房间id集合
+//        List<String> roomIdList = teacherCourseFormat.stream().map(CourseScheduleDto::getLiveRoomId).collect(Collectors.toList());
+//
+//        // 查询直播间视频数
+//        Map<String, Integer> uidCountMap = imLiveRoomVideoService.queryRoomUidCountMap(roomIdList);
+//        for (CourseScheduleDto record : teacherCourseFormat) {
+//            Integer count = uidCountMap.get(record.getLiveRoomId());
+//            if (count == null) {
+//                record.setVideoNum(0);
+//            }
+//            record.setVideoNum(count);
+//        }
+
         return page.setRecords(teacherCourseFormat);
     }
 

+ 18 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -208,6 +208,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     @Autowired
     private CourseShareService courseShareService;
 
+    @Autowired
+    private VipGroupService vipGroupService;
+
     private static final Logger LOGGER = LoggerFactory.getLogger(VipGroup.class);
 
     @Override
@@ -5021,11 +5024,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         courseScheduleDao.updateRemindStatus(ids);
         CompletableFuture.runAsync(() -> {
             for (CourseSchedule courseSchedule : courseSchedules) {
-                createVipGroupLiveRoom(courseSchedule.getId().toString(), courseSchedule);
+                vipGroupService.createVipGroupLiveRoom(courseSchedule.getId().toString(), courseSchedule);
             }
         });
-
-
     }
 
 
@@ -5033,9 +5034,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
      * 创建网络课直播间
      * @param roomId 课程房间编号
      * @param courseSchedule 课程信息
-     * @return ImLiveBroadcastRoom
      */
-    private void createVipGroupLiveRoom(String roomId, CourseSchedule courseSchedule) {
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void createVipGroupLiveRoom(String roomId, CourseSchedule courseSchedule) {
         //记录用户实际选择的房间
         if (courseSchedule.getGroupType() == GroupType.COMM) {
             roomId = "I" + roomId;
@@ -5066,6 +5068,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         DateTime time = DateTime.parse(liveStartTime, DateTimeFormat.forPattern(DateUtil.DEFAULT_PATTERN + " " + DateUtil.EXPANDED_TIME_FORMAT));
 
         String roomUid = "LIVE-" + roomId + "-" + time.toDate().getTime();
+        ImLiveBroadcastRoom room = imLiveBroadcastRoomService.getByRoomUid(roomUid);
+        if (Objects.nonNull(room)) {
+            return;
+        }
         liveRoom.setTenantId(TenantContextHolder.getTenantId());
         liveRoom.setRoomUid(roomUid);
         //liveRoom.setRoomConfig(liveRoom.getRoomConfig());
@@ -5082,7 +5088,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         imLiveBroadcastRoomService.save(liveRoom);
 
         // 开启直播间
-        imLiveBroadcastRoomService.createLiveRoom(liveRoom);
+        try {
+            imLiveBroadcastRoomService.createLiveRoom(liveRoom);
+
+        } catch (Exception e) {
+            log.error("创建直播间失败", e);
+            imLiveBroadcastRoomService.removeById(liveRoom.getId());
+        }
 
         // 更新课程关联直播间
         CourseSchedule schedule = new CourseSchedule();