Forráskód Böngészése

定时任务-销毁直播间

liujunchi 2 éve
szülő
commit
0611ede972

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImLiveBroadcastRoomService.java

@@ -151,5 +151,10 @@ public interface ImLiveBroadcastRoomService extends IService<ImLiveBroadcastRoom
      * 新成员入群之后回调
      */
     void callbackAfterNewMemberJoin(TencentData.CallbackAfterNewMemberJoin callbackAfterNewMemberJoin);
+
+    /**
+     * 直播间销毁定时任务
+     */
+    void destroyLiveRoom();
 }
 

+ 32 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -16,6 +16,7 @@ import com.microsvc.toolkit.middleware.live.message.LiveRoomMessage;
 import com.microsvc.toolkit.middleware.live.message.LiveRoomUser;
 import com.microsvc.toolkit.middleware.live.message.RTCRequest;
 import com.microsvc.toolkit.middleware.live.message.RTCRoom;
+import com.microsvc.toolkit.middleware.live.message.TencentWrapper;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.SysUserType;
@@ -1987,6 +1988,37 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         liveBroadcastRoomMemberDao.updateLiveRoomStatus(userIds, callbackAfterNewMemberJoin.getGroupId(),liveRoomStatus);
     }
 
+    @Override
+    public void destroyLiveRoom() {
+        //查询状态是 未开始和已开始 的直播间
+        List<ImLiveBroadcastRoom> list = this.list(Wrappers.<ImLiveBroadcastRoom>lambdaQuery()
+                                                           .in(ImLiveBroadcastRoom::getLiveState,  1)
+                                                           .eq(ImLiveBroadcastRoom::getRoomState, 0));
+        if (CollectionUtils.isEmpty(list)) {
+            return;
+        }
+        for (ImLiveBroadcastRoom imLiveBroadcastRoom : list) {
+
+            LivePluginService pluginService = livePluginContext.getPluginService(
+                imLiveBroadcastRoom.getServiceProvider());
+            try {
+                TencentWrapper.LiveStreamState liveStreamState = pluginService.liveStreamState(
+                    imLiveBroadcastRoom.getRoomUid() + imLiveBroadcastRoom.getSpeakerId());
+                if (liveStreamState == null) {
+                    log.error("查询直播间流失败,返回结果为空");
+                    continue;
+                }
+                if (!"active".equals(liveStreamState.getStreamState())) {
+                    roomDestroy(imLiveBroadcastRoom.getRoomUid());
+                }
+            } catch (Exception e) {
+
+                log.error("查询直播间流失败", e);
+            }
+
+        }
+    }
+
 
     /**
      * 查询直播间所有用户信息

+ 6 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -264,6 +264,12 @@ public interface TaskRemoteService {
     void destroyExpiredLiveRoom();
 
     /**
+     * 每日凌晨执行定时任务
+     */
+    @GetMapping("task/destroyLiveRoom")
+    void destroyLiveRoom();
+
+    /**
      * 学员小课统计
      */
     @GetMapping("task/studentSmallClassStatistics")

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -306,6 +306,11 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
     }
 
     @Override
+    public void destroyLiveRoom() {
+        logger.error("销毁直播间失败");
+    }
+
+    @Override
     public void studentSmallClassStatistics() {
         logger.error("学员小课统计失败");
     }

+ 24 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/DestroyLiveRoomTask.java

@@ -0,0 +1,24 @@
+package com.ym.mec.task.jobs;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author hgw
+ * Created by 2022-03-04
+ */
+@Service
+public class DestroyLiveRoomTask extends BaseTask {
+
+    @Autowired
+    private TaskRemoteService taskRemoteService;
+
+    @Override
+    public void execute() throws TaskException {
+        taskRemoteService.destroyLiveRoom();
+    }
+
+}

+ 6 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ImLiveBroadcastRoomController.java

@@ -223,6 +223,12 @@ public class ImLiveBroadcastRoomController extends BaseController {
         return succeed();
     }
 
+    @GetMapping("/destroyLiveRoom")
+    public Object destroyLiveRoom() {
+        imLiveBroadcastRoomService.destroyLiveRoom();
+        return succeed();
+    }
+
     @GetMapping("/shareGroup")
     public HttpResponseResult<Object> shareGroup(@ApiParam(value = "房间uid", required = true) String roomUid,
                                                  @ApiParam(value = "群编号", required = true) String groupIds) {

+ 8 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -626,4 +626,12 @@ public class TaskController extends BaseController {
     public void  pushStartTrain(){
         tempLittleArtistTrainingCampService.pushStartTrain();
     }
+
+	@ApiOperation("每天凌晨2点钟-直播间销毁定时任务")
+	@GetMapping("/destroyLiveRoom")
+	public Object destroyLiveRoom() {
+		imLiveBroadcastRoomService.destroyLiveRoom();
+		return succeed();
+	}
+
 }