liujunchi пре 2 година
родитељ
комит
53e44335ab

+ 43 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EAnchorStatus.java

@@ -0,0 +1,43 @@
+package com.ym.mec.biz.dal.enums;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2023-03-20
+ */
+public enum EAnchorStatus {
+
+    /**
+     * 主讲人状态
+     */
+    ONLINE("在线"),
+    OFFLINE("离线"),
+
+
+    ;
+    private String code;
+
+    private String msg;
+
+    EAnchorStatus(String msg) {
+        this.msg = msg;
+        this.code = this.name();
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+}

+ 40 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EOnOffStatus.java

@@ -0,0 +1,40 @@
+package com.ym.mec.biz.dal.enums;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2023-03-20
+ */
+public enum EOnOffStatus {
+
+
+    ON("是"),
+    OFF("否"),
+
+    ;
+    private String code;
+
+    private String msg;
+
+    EOnOffStatus(String msg) {
+        this.msg = msg;
+        this.code = this.name();
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+}

+ 95 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -34,7 +34,9 @@ import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomData;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomMember;
 import com.ym.mec.biz.dal.entity.ImLiveRoomBlack;
 import com.ym.mec.biz.dal.entity.ImLiveRoomVideo;
+import com.ym.mec.biz.dal.enums.EAnchorStatus;
 import com.ym.mec.biz.dal.enums.EGroupDefinedDataType;
+import com.ym.mec.biz.dal.enums.EOnOffStatus;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.page.LiveRoomGoodsOrderQueryInfo;
 import com.ym.mec.biz.dal.vo.*;
@@ -422,7 +424,15 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
 
 
         ImLiveBroadcastRoomVo roomVo = getImLiveBroadcastRoomVo(obj.getRoomUid());
-        setGroupDefinedData(roomVo,EGroupDefinedDataType.GLOBAL_BAN,whetherChat.toString());
+        setWhetherChatDefinedData(roomVo, whetherChat);
+    }
+
+    private void setWhetherChatDefinedData(ImLiveBroadcastRoomVo roomVo, Integer whetherChat){
+        if (whetherChat == null) {
+            return;
+        }
+        setGroupDefinedData(roomVo,EGroupDefinedDataType.GLOBAL_BAN,whetherChat == 1?
+            EOnOffStatus.ON.getCode() :EOnOffStatus.OFF.getCode());
     }
 
     /**
@@ -907,13 +917,6 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             //从在线人员列表删除该人员
             onlineUserInfo.fastRemove(userId);
 
-            log.info("opsRoom>>>> looker userInfo: {}", JSONObject.toJSONString(userInfo));
-            // 在线用户消息同步
-            sendOnlineUserCount(roomVo, userId, onlineUserInfo.size());
-
-            // 直播间统计数据
-            sendLiveRoomStatMessage(userid, roomVo);
-
             // 更新用户离线状态
             ImLiveBroadcastRoomMember roomMember = new ImLiveBroadcastRoomMember();
             roomMember.setOnlineStatus(0);
@@ -934,6 +937,12 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
                     .eq(ImLiveBroadcastRoomMember::getUserId, userId)
                     .update(roomMember);
 
+            log.info("opsRoom>>>> looker userInfo: {}", JSONObject.toJSONString(userInfo));
+            // 在线用户消息同步
+            sendOnlineUserCount(roomVo, userId, onlineUserInfo.size());
+
+            // 直播间统计数据
+            sendLiveRoomStatMessage(userid, roomVo);
         });
     }
 
@@ -1191,7 +1200,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
                 .update(room);
 
         // 设置直播群组自定义数据
-        setGroupDefinedData(roomVo,EGroupDefinedDataType.ANCHOR_STATUS,"OFFLINE");
+        setGroupDefinedData(roomVo,EGroupDefinedDataType.ANCHOR_STATUS,EAnchorStatus.OFFLINE.getCode());
 
         return true;
     }
@@ -1238,7 +1247,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
                 .update();
 
         // 设置直播群组自定义数据
-        setGroupDefinedData(roomVo,EGroupDefinedDataType.ANCHOR_STATUS,"ONLINE");
+        setGroupDefinedData(roomVo,EGroupDefinedDataType.ANCHOR_STATUS,EAnchorStatus.ONLINE.getCode());
 
         return roomVo;
     }
@@ -1538,7 +1547,8 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         imLiveBroadcastRoom.setId(imLiveBroadcastRoomVo.getId());
         imLiveBroadcastRoom.setPushStatus(status);
         this.updateById(imLiveBroadcastRoom);
-        setGroupDefinedData(imLiveBroadcastRoomVo,EGroupDefinedDataType.LIVE_STATUS,status == 1?"ON":"OFF");
+        setGroupDefinedData(imLiveBroadcastRoomVo,EGroupDefinedDataType.LIVE_STATUS,status == 1?
+            EOnOffStatus.ON.getCode():EOnOffStatus.OFF.getCode());
 
     }
 
@@ -1667,11 +1677,76 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
                     imLiveRoomBlackService.setBlack(black.getUserId(),roomVo);
                 }
             }
+
+            // 设置直播间房间属性默认值
+            setDefaultRoomDefinedInfo(roomVo);
         } catch (Exception e) {
             log.error(">>>>>>>>>> createLiveRoom error roomUid:{} msg:{}", room.getRoomUid(), e.getMessage());
         }
     }
 
+    private void setDefaultRoomDefinedInfo(ImLiveBroadcastRoomVo roomVo) {
+        List<TencentRequest.ChatRoomGroupDefinedData> appDefinedData = new ArrayList<>();
+        Arrays.stream(EGroupDefinedDataType.values()).forEach(key -> {
+            switch (key) {
+                case ANCHOR_STATUS:
+                    appDefinedData.add(TencentRequest.ChatRoomGroupDefinedData.builder()
+                                                                              .key(key.getCode())
+                                                                              .value("OFFLINE")
+                                                                              .build());
+                    break;
+                case GLOBAL_BAN:
+                    appDefinedData.add(TencentRequest.ChatRoomGroupDefinedData.builder()
+                                                                              .key(key.getCode())
+                                                                              .value(getRoomConfig(roomVo.getRoomConfig())
+                                                                                         .map(o -> o.getWhether_chat() == 0 ? "OFF" : "ON")
+                                                                                         .orElse("OFF"))
+                                                                              .build());
+                    break;
+                case LIKES:
+                    appDefinedData.add(TencentRequest.ChatRoomGroupDefinedData.builder()
+                                                                              .key(key.getCode())
+                                                                              .value("0")
+                                                                              .build());
+                    break;
+
+                case MEMBER_ONLINE:
+                    appDefinedData.add(TencentRequest.ChatRoomGroupDefinedData.builder()
+                                                                              .key(key.getCode())
+                                                                              .value("0")
+                                                                              .build());
+                    break;
+                case MEMBER_TOTAL:
+                    appDefinedData.add(TencentRequest.ChatRoomGroupDefinedData.builder()
+                                                                              .key(key.getCode())
+                                                                              .value("0")
+                                                                              .build());
+                    break;
+                case LIVE_STATUS:
+                    appDefinedData.add(TencentRequest.ChatRoomGroupDefinedData.builder()
+                                                                              .key(key.getCode())
+                                                                              .value("OFF")
+                                                                              .build());
+                    break;
+                case ANCHOR_CAMERA:
+                    appDefinedData.add(TencentRequest.ChatRoomGroupDefinedData.builder()
+                                                                              .key(key.getCode())
+                                                                              .value("OFF")
+                                                                              .build());
+                    break;
+            }
+        });
+        try {
+            livePluginContext.getPluginService(roomVo.getServiceProvider())
+                             .chatRoomGroupDefinedData(TencentRequest.ChatRoomGroup.builder()
+                                                                                   .groupId(roomVo.getRoomUid())
+                                                                                   .appDefinedData(appDefinedData)
+                                                                                   .build());
+        } catch (Exception e) {
+            log.error("设置直播群配置失败", e);
+        }
+    }
+
     //生成主讲人信息
     private void createSpeakerInfo(ImLiveBroadcastRoom room, SysUser sysUser) {
         Date now = new Date();
@@ -2038,17 +2113,23 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         ImLiveBroadcastRoom imLiveBroadcastRoom = new ImLiveBroadcastRoom();
         imLiveBroadcastRoom.setId(room.getId());
         imLiveBroadcastRoom.setSpeakerStatus(liveRoom.getSpeakerStatus());
+        // 设置直播群组自定义数据
+        setGroupDefinedData(room,EGroupDefinedDataType.ANCHOR_STATUS,liveRoom.getSpeakerStatus() == 0?
+            EAnchorStatus.OFFLINE.getCode():EAnchorStatus.ONLINE.getCode());
+
         imLiveBroadcastRoom.setPushStatus(liveRoom.getPushStatus());
+        // 设置推流状态
+        setPushStatus(room.getRoomUid(), liveRoom.getPushStatus());
+
         imLiveBroadcastRoom.setBanStatus(liveRoom.getBanStatus());
         whetherChat(room.getId(), liveRoom.getBanStatus());
         // 不用前端传时间
         // imLiveBroadcastRoom.setLiveTotalTime(liveRoom.getLiveTotalTime());
         // 设置摄像头状态
         if (liveRoom.getCameraStatus() != null) {
-            setGroupDefinedData(room,EGroupDefinedDataType.ANCHOR_CAMERA,liveRoom.getCameraStatus() == 1?"ON":"OFF");
+            setGroupDefinedData(room,EGroupDefinedDataType.ANCHOR_CAMERA,liveRoom.getCameraStatus() == 1?
+                EOnOffStatus.ON.getCode():EOnOffStatus.OFF.getCode());
         }
-        // 设置推流状态
-        setPushStatus(room.getRoomUid(), liveRoom.getPushStatus());
 
         return this.updateById(imLiveBroadcastRoom);
     }