Просмотр исходного кода

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

Eric 2 лет назад
Родитель
Сommit
b4bb580e58

+ 61 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/ImLiveBroadcastRoomMemberVo.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.vo;
 
+import com.alibaba.fastjson.JSON;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -54,6 +55,66 @@ public class ImLiveBroadcastRoomMemberVo implements java.io.Serializable {
     @ApiModelProperty(value = "是否黑名单")
     private boolean blackFlag;
 
+    public ImLiveBroadcastRoomSimpleMemberVo getSimpleMemberVo(ImLiveBroadcastRoomMemberVo memberVo) {
+        return JSON.parseObject(JSON.toJSONString(memberVo), ImLiveBroadcastRoomSimpleMemberVo.class);
+    }
+
+    public static class ImLiveBroadcastRoomSimpleMemberVo {
+
+        @ApiModelProperty(value = "学生头像")
+        private String avatar;
+        @ApiModelProperty(value = "是否黑名单")
+        private boolean blackFlag;
+        @ApiModelProperty(value = "进入房间时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private Date joinTime;
+        @ApiModelProperty(value = "学生编号")
+        private Integer studentId;
+
+        @ApiModelProperty(value = "学生姓名")
+        private String studentName;
+
+        public String getAvatar() {
+            return avatar;
+        }
+
+        public void setAvatar(String avatar) {
+            this.avatar = avatar;
+        }
+
+        public boolean isBlackFlag() {
+            return blackFlag;
+        }
+
+        public void setBlackFlag(boolean blackFlag) {
+            this.blackFlag = blackFlag;
+        }
+
+        public Date getJoinTime() {
+            return joinTime;
+        }
+
+        public void setJoinTime(Date joinTime) {
+            this.joinTime = joinTime;
+        }
+
+        public Integer getStudentId() {
+            return studentId;
+        }
+
+        public void setStudentId(Integer studentId) {
+            this.studentId = studentId;
+        }
+
+        public String getStudentName() {
+            return studentName;
+        }
+
+        public void setStudentName(String studentName) {
+            this.studentName = studentName;
+        }
+    }
+
     public boolean isBlackFlag() {
         return blackFlag;
     }

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

@@ -8,6 +8,7 @@ import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomDetailVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo;
 import com.ym.mec.common.page.PageInfo;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -30,5 +31,9 @@ public interface ImLiveBroadcastRoomMemberService extends IService<ImLiveBroadca
      */
     PageInfo<ImLiveBroadcastRoomMemberVo> queryRoomMember(Map<String, Object> param);
 
+    /**
+     * 查询在房间人员
+     */
+    List<Integer> getLiveRoomMember(String roomUid);
 }
 

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomMemberServiceImpl.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.service.impl;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ym.mec.biz.dal.dao.ImLiveBroadcastRoomMemberDao;
+import com.ym.mec.biz.dal.dto.LiveRoomStatus;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomMember;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomDetailVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo;
@@ -17,7 +18,10 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 直播间人员关系表(ImLiveBroadcastRoomMember)表服务实现类
@@ -57,5 +61,22 @@ public class ImLiveBroadcastRoomMemberServiceImpl extends ServiceImpl<ImLiveBroa
         return PageUtil.pageInfo(baseMapper.queryMemberPage(pageInfo, param));
     }
 
+    /**
+     * 查询在房间人员
+     *
+     * @param roomUid
+     */
+    @Override
+    public List<Integer> getLiveRoomMember(String roomUid) {
+        List<ImLiveBroadcastRoomMember> list = this.lambdaQuery()
+                                                   .eq(ImLiveBroadcastRoomMember::getRoomUid, roomUid)
+                                                   .eq(ImLiveBroadcastRoomMember::getLiveRoomStatus, true)
+                                                   .list();
+        if (list == null || list.isEmpty())
+            return new ArrayList<>();
+
+        return list.stream().map(ImLiveBroadcastRoomMember::getUserId).collect(Collectors.toList());
+    }
+
 }
 

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -736,7 +736,19 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
                     pluginService.rtcRoomRecordStop(taskId);
                 }
             }
-//            imFeignService.destroyLiveRoom(roomUid);
+            // 将在房间人员退出房间
+            List<Integer> liveRoomMember = liveBroadcastRoomMemberService.getLiveRoomMember(roomUid);
+            List<ImUserState> imUserStates = liveRoomMember.stream().map(userId1 -> {
+                ImUserState imUserState = new ImUserState();
+                imUserState.setUserid(userId1.toString());
+                imUserState.setRoomUid(roomUid);
+                imUserState.setStatus("3");
+                return imUserState;
+            }).collect(Collectors.toList());
+
+            opsRoom(imUserStates);
+
+            //            imFeignService.destroyLiveRoom(roomUid);
             log.info("roomDestroy>>>> destroyLiveRoom {}", JSONObject.toJSONString(message));
         } catch (Exception e) {
             log.error("roomDestroy>>>> errorMsg{}", e.getMessage(), e.getCause());

+ 29 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherImLiveBroadcastRoomMemberController.java

@@ -1,11 +1,13 @@
 package com.ym.mec.teacher.controller;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomDetailVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo;
 import com.ym.mec.biz.service.ImLiveBroadcastRoomMemberService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -16,7 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 直播间人员关系表(ImLiveBroadcastRoomMember)表控制层
@@ -57,5 +61,30 @@ public class TeacherImLiveBroadcastRoomMemberController extends BaseController {
         return succeed(imLiveBroadcastRoomMemberService.queryRoomMember(param));
     }
 
+
+
+
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "search", dataType = "String", value = "模糊搜索 学员编号姓名"),
+        @ApiImplicitParam(name = "roomUid", dataType = "String", value = "房间uid"),
+        @ApiImplicitParam(name = "onlineStatus", dataType = "String ", value = "0:离线 1:在线  不传是全部"),
+        @ApiImplicitParam(name = "whetherMicStatus", dataType = "String", value = "连麦状态 0:未申请1:申请连麦中2:连麦中"),
+        @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
+        @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
+    })
+    @ApiOperation("分页查询直播间人员列表")
+    @PostMapping("/queryRoomSimpleMember")
+    public HttpResponseResult<PageInfo<ImLiveBroadcastRoomMemberVo.ImLiveBroadcastRoomSimpleMemberVo>> queryRoomSimpleMember(@RequestBody Map<String, Object> param) {
+        PageInfo<ImLiveBroadcastRoomMemberVo> roomMember = imLiveBroadcastRoomMemberService.queryRoomMember(
+            param);
+
+        List<ImLiveBroadcastRoomMemberVo.ImLiveBroadcastRoomSimpleMemberVo> simpleMemberVos = roomMember.getRows().stream().map(
+            o -> o.getSimpleMemberVo(o)).collect(Collectors.toList());
+
+
+        Page<ImLiveBroadcastRoomMemberVo.ImLiveBroadcastRoomSimpleMemberVo> pageInfo = PageUtil.getPageInfo(param);
+        pageInfo.setRecords(simpleMemberVos);
+        return succeed(PageUtil.pageInfo(pageInfo));
+    }
 }
 

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

@@ -1,11 +1,13 @@
 package com.ym.mec.web.controller;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomDetailVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo;
 import com.ym.mec.biz.service.ImLiveBroadcastRoomMemberService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -16,7 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 直播间人员关系表(ImLiveBroadcastRoomMember)表控制层
@@ -57,5 +61,29 @@ public class ImLiveBroadcastRoomMemberController extends BaseController {
         return succeed(imLiveBroadcastRoomMemberService.queryRoomMember(param));
     }
 
+
+
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "search", dataType = "String", value = "模糊搜索 学员编号姓名"),
+        @ApiImplicitParam(name = "roomUid", dataType = "String", value = "房间uid"),
+        @ApiImplicitParam(name = "onlineStatus", dataType = "String ", value = "0:离线 1:在线  不传是全部"),
+        @ApiImplicitParam(name = "whetherMicStatus", dataType = "String", value = "连麦状态 0:未申请1:申请连麦中2:连麦中"),
+        @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
+        @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
+    })
+    @ApiOperation("分页查询直播间人员列表")
+    @PostMapping("/queryRoomSimpleMember")
+    public HttpResponseResult<PageInfo<ImLiveBroadcastRoomMemberVo.ImLiveBroadcastRoomSimpleMemberVo>> queryRoomSimpleMember(@RequestBody Map<String, Object> param) {
+        PageInfo<ImLiveBroadcastRoomMemberVo> roomMember = imLiveBroadcastRoomMemberService.queryRoomMember(
+            param);
+
+        List<ImLiveBroadcastRoomMemberVo.ImLiveBroadcastRoomSimpleMemberVo> simpleMemberVos = roomMember.getRows().stream().map(
+            o -> o.getSimpleMemberVo(o)).collect(Collectors.toList());
+
+
+        Page<ImLiveBroadcastRoomMemberVo.ImLiveBroadcastRoomSimpleMemberVo> pageInfo = PageUtil.getPageInfo(param);
+        pageInfo.setRecords(simpleMemberVos);
+        return succeed(PageUtil.pageInfo(pageInfo));
+    }
 }