Quellcode durchsuchen

同步点赞数

liujunchi vor 2 Jahren
Ursprung
Commit
4c32cfa96e

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

@@ -173,5 +173,12 @@ public interface ImLiveBroadcastRoomService extends IService<ImLiveBroadcastRoom
      * @param whetherMicStatus 连麦状态
      */
     void userWhetherMic(String roomUid, Long userId, Integer whetherMicStatus);
+
+    /**
+     * 同步直播间点赞数
+     *
+     * @param roomUid 直播间uid
+     */
+    void syncLikeCount(String roomUid);
 }
 

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

@@ -1180,6 +1180,8 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         //主讲人退出房间关闭录像
         closeLive(speakerInfo);
 
+        syncLikeCount(roomUid);
+
         //主讲人退出房间
         speakerInfo.setExitRoomTime(now);
         log.info("opsRoom>>>> exit speakerCache {}", JSONObject.toJSONString(speakerInfo));
@@ -2460,6 +2462,44 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         liveBroadcastRoomMemberDao.userWhetherMic(roomUid, userId, whetherMicStatus);
     }
 
+    /**
+     * 同步直播间点赞数
+     *
+     * @param roomUid 直播间uid
+     */
+    @Override
+    @Transactional
+    public void syncLikeCount(String roomUid) {
+        ImLiveBroadcastRoom room = getById(roomUid);
+        if (room == null) {
+            return;
+        }
+        ImLiveBroadcastRoomDetailVo imLiveBroadcastRoomDetailVo = liveBroadcastRoomDataService.getDao()
+                                                                                              .queryByRoomUid(roomUid);
+        if (imLiveBroadcastRoomDetailVo == null) {
+            return;
+        }
+        if (room.getServiceProvider().equals(RongCloudLivePlugin.PLUGIN_NAME)) {
+            return;
+        }
+        LivePluginService pluginService = livePluginContext.getPluginService(room.getServiceProvider());
+        List<TencentWrapper.ChatRoomGroupCounter> chatRoomGroupCounters = null;
+        try {
+            chatRoomGroupCounters = pluginService.chatRoomGroupCounterDataList(
+                room.getRoomUid());
+        } catch (Exception e) {
+            log.error("同步直播间点赞数失败", e);
+        }
+        if (CollectionUtils.isEmpty(chatRoomGroupCounters)) {
+            return;
+        }
+        chatRoomGroupCounters.stream().filter(a -> a.getKey().equals(EGroupDefinedDataType.LIKES.getCode()))
+            .findFirst().ifPresent(a -> {
+                                 imLiveBroadcastRoomDetailVo.setTotalLikeNum(Integer.parseInt(a.getValue()));
+            updateById(room);
+        });
+    }
+
 
     /**
      * 查询直播间所有用户信息

+ 3 - 0
mec-im/src/main/java/com/ym/controller/UserController.java

@@ -158,6 +158,9 @@ public class UserController {
 
             // 自动关闭录制
             imLiveBroadcastRoomService.closeLive(getRoomUid(event.getStreamId()), getSpeakerId(event.getStreamId()));
+
+            // 同步点赞数
+            imLiveBroadcastRoomService.syncLikeCount(getRoomUid(event.getStreamId()));
         }
 
         // 推流事件通知