浏览代码

Merge remote-tracking branch 'origin/feature/0626-live' into feature/0626-live

Eric 1 年之前
父节点
当前提交
0b59938c1e

+ 23 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/GYMFeignService.java

@@ -0,0 +1,23 @@
+package com.yonge.cooleshow.api.feign;
+
+import com.yonge.cooleshow.api.feign.dto.RoomMemberNumDto;
+import com.yonge.cooleshow.api.feign.fallback.CmsFeignServiceFallback;
+import com.yonge.cooleshow.api.feign.fallback.GYMFeignServiceFallback;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.feign.config.FeignConfiguration;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+
+@FeignClient(value = "${app-config.open-feign.gym-server.name:gym-server}", url = "${app-config.open-feign.gym-server.url:}",
+        configuration = FeignConfiguration.class, fallback = GYMFeignServiceFallback.class)
+public interface GYMFeignService {
+
+    /**
+     * 直播间人数
+     */
+    @GetMapping("/open/live/queryRoomInfo")
+    HttpResponseResult<RoomMemberNumDto> queryRoomInfo(@RequestParam("roomUid") String roomUid);
+
+}

+ 19 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/dto/RoomMemberNumDto.java

@@ -0,0 +1,19 @@
+package com.yonge.cooleshow.api.feign.dto;
+
+import lombok.Data;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2023-03-29
+ */
+@Data
+public class RoomMemberNumDto {
+
+    private String roomUid;
+
+    private Integer onlineNum;
+
+    private Integer totalNum;
+}

+ 25 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/GYMFeignServiceFallback.java

@@ -0,0 +1,25 @@
+package com.yonge.cooleshow.api.feign.fallback;
+
+import com.yonge.cooleshow.api.feign.CmsFeignService;
+import com.yonge.cooleshow.api.feign.GYMFeignService;
+import com.yonge.cooleshow.api.feign.dto.RoomMemberNumDto;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-04-29
+ */
+public class GYMFeignServiceFallback implements GYMFeignService {
+
+    /**
+     * 直播间人数
+     *
+     * @param roomUid
+     */
+    @Override
+    public HttpResponseResult<RoomMemberNumDto> queryRoomInfo(String roomUid) {
+        return null;
+    }
+}

+ 54 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/open/OpenLiveController.java

@@ -0,0 +1,54 @@
+package com.yonge.cooleshow.admin.controller.open;
+
+import com.yonge.cooleshow.biz.dal.service.ImLiveBroadcastRoomMemberService;
+import com.yonge.cooleshow.biz.dal.service.LiveRoomService;
+import com.yonge.cooleshow.biz.dal.wrapper.liveroom.ImLiveBroadcastRoomMemberWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.liveroom.LiveRoomWrapper;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.page.PageInfo;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("${app-config.url.admin:}/open/live")
+@Slf4j
+public class OpenLiveController extends BaseController {
+
+    @Autowired
+    private LiveRoomService liveRoomService;
+
+    @Autowired
+    private ImLiveBroadcastRoomMemberService imLiveBroadcastRoomMemberService;
+
+    @ApiOperation("查询房间人数")
+    @GetMapping("/queryRoomInfo")
+    public HttpResponseResult<ImLiveBroadcastRoomMemberWrapper.RoomMemberNumDto> queryRoomInfo(@ApiParam(value = "房间uid", required = true) String roomUid) {
+        return succeed(liveRoomService.getRoomMemberNumDto(roomUid));
+    }
+
+
+    @ApiOperation("分页查询直播间人员列表")
+    @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 = "每页数量"),
+    })
+    @PostMapping("/queryRoomMember")
+    public HttpResponseResult<List<ImLiveBroadcastRoomMemberWrapper.ImLiveBroadcastRoomMember>> queryRoomMember(@RequestBody Map<String, Object> param) {
+        param.put("page",1);
+        param.put("rows",-1);
+        return succeed(imLiveBroadcastRoomMemberService.queryRoomMember(param).getRows());
+    }
+}

+ 3 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/redisson/RedissonMessageService.java

@@ -14,10 +14,10 @@ import org.springframework.stereotype.Service;
 public class RedissonMessageService {
 
     // 订阅消息通知
-    public static final String TOPIC_MESSAGE = "topic:message";
+    public static final String TOPIC_MESSAGE = "klx:topic:message";
     // 直播在线人数
-    public static final String LIVE_ROOM_MEMBER = "delayQueue:liveRoomMember:";
-    public static final String LIVE_ROOM_MEMBER_LOCK = "LOCK:liveRoomMember:";
+    public static final String LIVE_ROOM_MEMBER = "klx:delayQueue:liveRoomMember:";
+    public static final String LIVE_ROOM_MEMBER_LOCK = "klx:LOCK:liveRoomMember:";
 
     private final RedissonClient redissonClient;
 

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/LiveRoomService.java

@@ -12,6 +12,7 @@ import com.yonge.cooleshow.biz.dal.dto.TencentData;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.RoomTypeEnum;
 import com.yonge.cooleshow.biz.dal.vo.TeacherLivingInfoVo;
+import com.yonge.cooleshow.biz.dal.wrapper.liveroom.ImLiveBroadcastRoomMemberWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.liveroom.LiveRoomWrapper;
 import com.yonge.toolset.base.page.PageInfo;
 
@@ -200,6 +201,9 @@ public interface LiveRoomService extends IService<LiveRoom> {
      */
     LiveRoomWrapper.LiveRoomVo queryRoomInfo(String roomUid);
 
+
+    ImLiveBroadcastRoomMemberWrapper.RoomMemberNumDto getRoomMemberNumDto(String roomUid);
+
     /**
      * 同步直播间点赞数
      *

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

@@ -13,13 +13,11 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.function.BiFunction;
 import java.util.function.BiPredicate;
-import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import com.alibaba.fastjson.JSON;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.google.common.collect.Lists;
 import com.microsvc.toolkit.middleware.live.LivePluginContext;
 import com.microsvc.toolkit.middleware.live.LivePluginService;
 import com.microsvc.toolkit.middleware.live.impl.RongCloudLivePlugin;
@@ -2171,12 +2169,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
         roomVo.setTotalLookNum(0);
         roomVo.setLookNum(0);
 
-        ImLiveBroadcastRoomMemberWrapper.RoomMemberNumDto roomMemberNumDto = imLiveBroadcastRoomMemberMapper.queryMemberNum(roomVo.getRoomUid());
-        if (roomMemberNumDto == null) {
-            roomMemberNumDto = new ImLiveBroadcastRoomMemberWrapper.RoomMemberNumDto();
-            roomMemberNumDto.setTotalNum(0);
-            roomMemberNumDto.setOnlineNum(0);
-        }
+        ImLiveBroadcastRoomMemberWrapper.RoomMemberNumDto roomMemberNumDto = getRoomMemberNumDto(roomVo.getRoomUid());
         roomVo.setTotalLookNum(roomMemberNumDto.getTotalNum() == null? 0 : roomMemberNumDto.getTotalNum());
         roomVo.setLookNum(roomMemberNumDto.getOnlineNum() == null? 0 : roomMemberNumDto.getOnlineNum());
 
@@ -2200,6 +2193,18 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
     }
 
 
+    @Override
+    public ImLiveBroadcastRoomMemberWrapper.RoomMemberNumDto getRoomMemberNumDto(String roomUid) {
+        ImLiveBroadcastRoomMemberWrapper.RoomMemberNumDto roomMemberNumDto = imLiveBroadcastRoomMemberMapper.queryMemberNum(roomUid);
+        if (roomMemberNumDto == null) {
+            roomMemberNumDto = new ImLiveBroadcastRoomMemberWrapper.RoomMemberNumDto();
+            roomMemberNumDto.setTotalNum(0);
+            roomMemberNumDto.setOnlineNum(0);
+        }
+        return roomMemberNumDto;
+    }
+
+
     /**
      * 同步直播间点赞数
      *

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/redisson/RedissonTopicListener.java

@@ -1,8 +1,11 @@
 package com.yonge.redisson;
 
+import com.yonge.cooleshow.api.feign.GYMFeignService;
+import com.yonge.cooleshow.api.feign.dto.RoomMemberNumDto;
 import com.yonge.cooleshow.biz.dal.redisson.RedissonMessageService;
 import com.yonge.cooleshow.biz.dal.service.LiveRoomService;
 import com.yonge.cooleshow.biz.dal.wrapper.liveroom.LiveRoomWrapper;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import lombok.extern.slf4j.Slf4j;
 import org.redisson.api.RBucket;
 import org.redisson.api.RLock;
@@ -30,6 +33,9 @@ public class RedissonTopicListener implements ApplicationRunner, Ordered {
 
     @Autowired
     private LiveRoomService liveRoomService;
+
+    @Autowired
+    private GYMFeignService gymFeignService;
  
     @Override
     public void run(ApplicationArguments args) {
@@ -60,6 +66,11 @@ public class RedissonTopicListener implements ApplicationRunner, Ordered {
                             return;
                         }
                         try {
+                            HttpResponseResult<RoomMemberNumDto> roomMemberNumDtoHttpResponseResult = gymFeignService.queryRoomInfo(message);
+                            if (roomMemberNumDtoHttpResponseResult.getStatus()) {
+                                liveRoomVo.setLookNum(roomMemberNumDtoHttpResponseResult.getData().getOnlineNum() + liveRoomVo.getTotalLookNum());
+                                liveRoomVo.setTotalLookNum(roomMemberNumDtoHttpResponseResult.getData().getTotalNum() + liveRoomVo.getTotalLookNum());
+                            }
                             liveRoomService.setGroupMemberDefinedData(liveRoomVo,liveRoomVo.getLookNum(),liveRoomVo.getTotalLookNum());
                         } catch (Exception e) {
                             log.error("RedissonMessageService subscribe setGroupMemberDefinedData error", e);