Browse Source

Merge remote-tracking branch 'origin/dev_20230222_live' into dev_20230222_live

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java
Eric 2 years ago
parent
commit
cccd75670c

+ 15 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -288,7 +288,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             param.put("clientType", SysUserType.TEACHER.getCode());
         }
         Page<ImLiveBroadcastRoomVo> pageInfo = PageUtil.concatTimePage(param, "startTime", "endTime");
-        pageInfo.setDesc("a.created_time_");
+        // pageInfo.setDesc("a.created_time_");
         param.put("tenantId", TenantContextHolder.getTenantId());
         IPage<ImLiveBroadcastRoomVo> page = baseMapper.queryPage(pageInfo, param);
 
@@ -662,16 +662,19 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             pluginService.sendChatRoomMessage(message);
             log.info("roomDestroy>>>> FORCED_OFFLINE {}", JSONObject.toJSONString(message));
 
+            //销毁直播间
+            pluginService.chatRoomDestroy(roomUid);
+
+            // 录制任务Id
             if (room.getServiceProvider().equals(TencentCloudLivePlugin.PLUGIN_NAME)) {
 
-                // 录制任务Id
                 List<String> collect = imLiveRoomVideoService.lambdaQuery()
                         .eq(ImLiveRoomVideo::getRoomUid, roomUid).list().stream()
                         .map(ImLiveRoomVideo::getRecordId).distinct().collect(Collectors.toList());
 
                 for (String taskId : collect) {
-                    //销毁直播间
-                    pluginService.chatRoomDestroy(taskId);
+                    // 删除录制任务
+                    pluginService.rtcRoomRecordStop(taskId);
                 }
             }
 
@@ -682,6 +685,10 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         }
     }
 
+    private String getStreamId(String roomUid, Integer speakerId) {
+        return roomUid + "_" + speakerId;
+    }
+
     //获取该直播间所有数据写入数据库-并清理缓存
     private void insertAndCleanLiveData(String roomUid, Integer speakerId) {
         log.info("insertAndCleanLiveData >>>> roomUid : {}", roomUid);
@@ -1745,7 +1752,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         sysMessageService.batchSendImGroupMessage(MessageTypeEnum.IM_SHARE_LIVE_URL, sysUser.getId().toString(), "liveRoom?" + roomUid, groupIds.split(","), null,
                 imLiveBroadcastRoomVo.getTenantName(), imLiveBroadcastRoomVo.getRoomTitle(), imLiveBroadcastRoomVo.getSpeakerName(),
                 DateUtil.format(imLiveBroadcastRoomVo.getLiveStartTime(), DateUtil.CHINESE_DATA_FORMAT_1),
-                imLiveBroadcastRoomVo.getLiveRemark(), HttpUtil.getSortUrl(baseApiUrl + "/#/liveClassTransfer?roomUid=" + roomUid));
+                imLiveBroadcastRoomVo.getLiveRemark(), baseApiUrl + "/#/liveClassTransfer?roomUid=" + roomUid);
     }
 
     /**
@@ -2032,12 +2039,13 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             LivePluginService pluginService = livePluginContext.getPluginService(
                 imLiveBroadcastRoom.getServiceProvider());
             try {
-                TencentWrapper.LiveStreamState liveStreamState = pluginService.liveStreamState(
-                    imLiveBroadcastRoom.getRoomUid() + imLiveBroadcastRoom.getSpeakerId());
+                TencentWrapper.LiveStreamState liveStreamState = pluginService
+                    .liveStreamState(getStreamId(imLiveBroadcastRoom.getRoomUid(),imLiveBroadcastRoom.getSpeakerId()));
                 if (liveStreamState == null) {
                     log.error("查询直播间流失败,返回结果为空");
                     continue;
                 }
+                log.info("查询直播间流状态:{},roomUid:{}", JSON.toJSONString(liveStreamState), imLiveBroadcastRoom.getRoomUid());
                 if (!"active".equals(liveStreamState.getStreamState())) {
                     roomDestroy(imLiveBroadcastRoom.getRoomUid());
                 }

+ 9 - 0
mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMapper.xml

@@ -104,6 +104,15 @@
                 and  a.client_type_ = #{param.clientType}
             </if>
         </where>
+        order by
+        <choose>
+            <when test="param.sort == null or param.sort == ''">
+                a.created_time_ desc
+            </when>
+            <when test="param.sort == 1">
+                field(a.live_state_, 1, 0, 2) asc, a.live_start_time_ desc
+            </when>
+        </choose>
     </select>
 
     <select id="queryBaseUserInfo" resultType="com.ym.mec.biz.dal.vo.BaseRoomUserVo">

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMemberMapper.xml

@@ -53,6 +53,9 @@
             OR su.username_ LIKE CONCAT('%', #{param.search},'%')
             )
         </if>
+        <if test="param.onlineStatus != null">
+            AND a.online_status_ = #{param.onlineStatus}
+        </if>
         group by a.user_id_
     </select>
 

+ 2 - 1
mec-web/src/main/java/com/ym/mec/web/controller/ImLiveBroadcastRoomController.java

@@ -59,7 +59,8 @@ public class ImLiveBroadcastRoomController extends BaseController {
             @ApiImplicitParam(name = "startTime", dataType = "String", value = "开始时间"),
             @ApiImplicitParam(name = "endTime", dataType = "String", value = "结束时间"),
             @ApiImplicitParam(name = "popularize", dataType = "Integer", value = "是否在首页推广 0否 1是"),
-            @ApiImplicitParam(name = "clientType", dataType = "String", value = "用户类型 TEACHER 老师 EDUCATION 教务端"),
+            @ApiImplicitParam(name = "sort", dataType = "String", value = "用户类型 TEACHER 老师 EDUCATION 教务端"),
+            @ApiImplicitParam(name = "sortType", dataType = "String", value = "不传是默认web端排序  1:直播中--未开始--已结束(状态相同时,根据直播时间倒序)"),
             @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
             @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
     })

+ 1 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ImLiveBroadcastRoomMemberController.java

@@ -46,6 +46,7 @@ public class ImLiveBroadcastRoomMemberController extends BaseController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "search", dataType = "String", value = "模糊搜索 学员编号姓名"),
             @ApiImplicitParam(name = "roomUid", dataType = "String", value = "房间uid"),
+            @ApiImplicitParam(name = "onlineStatus", dataType = "String 0:离线 1:在线  不传是全部", value = "在线状态"),
             @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
             @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
     })