lex-xin преди 3 години
родител
ревизия
919b0e1c7c

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/assets/index-legacy.8f5cf419.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/assets/index-legacy.a26eb9be.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/assets/index-legacy.e840668f.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/assets/index.7562f3f6.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/assets/index.e512504d.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/assets/index.f4186b72.js


+ 2 - 2
dist/index.html

@@ -5,7 +5,7 @@
     <link rel="icon" href="./favicon.ico" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>管乐迷</title>
-    <script type="module" crossorigin src="./assets/index.06da4f66.js"></script>
+    <script type="module" crossorigin src="./assets/index.7562f3f6.js"></script>
     <link rel="modulepreload" href="./assets/vendor.9de3b924.js">
     <link rel="stylesheet" href="./assets/index.fb6968e4.css">
     <script type="module">!function(){try{new Function("m","return import(m)")}catch(o){console.warn("vite: loading legacy build because dynamic import is unsupported, syntax error above should be ignored");var e=document.getElementById("vite-legacy-polyfill"),n=document.createElement("script");n.src=e.src,n.onload=function(){System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))},document.body.appendChild(n)}}();</script>
@@ -15,6 +15,6 @@
     
     <script nomodule>!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script>
     <script nomodule id="vite-legacy-polyfill" src="./assets/polyfills-legacy.68541211.js"></script>
-    <script nomodule id="vite-legacy-entry" data-src="./assets/index-legacy.151c64f1.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+    <script nomodule id="vite-legacy-entry" data-src="./assets/index-legacy.e840668f.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
   </body>
 </html>

+ 11 - 1
src/components/live-broadcast/runtime.ts

@@ -102,6 +102,12 @@ const MessageSeatApply = RongIMLib.registerMessageType('RC:Chatroom:SeatApply',
 // 响应连麦消息
 const MessageSeatResponse = RongIMLib.registerMessageType('RC:Chatroom:SeatResponse', true, true)
 
+// 同步房间观众数量
+const MessageMemberCount = RongIMLib.registerMessageType('RC:Chatroom:MemberCount', true, true)
+
+// 当前连麦人员同步
+const MessageSeatMember = RongIMLib.registerMessageType('RC:Chatroom:SeatMember', true, true)
+
 
 type MessageProps = {
   messageType: 'RC:Chatroom:Welcome' | 'RC:TxtMsg' | 'RC:Chatroom:Barrage' | 'RC:Chatroom:Like' | 'RC:Chatroom:SeatsCtrl' | 'RC:Chatroom:ChatBan' | 'RC:Chatroom:SeatApply',
@@ -466,7 +472,7 @@ export const loopSyncLike = async () => {
   }, 1000 * 30)
 }
 
-type SendMessageType = 'text' | 'image' | 'audio' | 'video' | 'file' | 'SeatsCtrl' | 'ChatBan' | 'SeatApply' | 'SeatResponse'
+type SendMessageType = 'text' | 'image' | 'audio' | 'video' | 'file' | 'SeatsCtrl' | 'ChatBan' | 'SeatApply' | 'SeatResponse' | 'MemberCount' | 'SeatMember'
 
 export const getSendMessageUser = () => {
   return {
@@ -503,6 +509,10 @@ export const sendMessage = async (msg: any, type: SendMessageType = 'text') => {
     message = new MessageSeatApply(msg)
   } else if (type === 'SeatResponse') {
     message = new MessageSeatResponse(msg)
+  } else if(type === 'MemberCount') {
+    message = new MessageMemberCount(msg)
+  } else if(type === 'SeatMember') {
+    message = new MessageSeatMember(msg)
   }
   if (!message) return
   console.log(message)

+ 53 - 5
src/components/live-message/message.tsx

@@ -3,6 +3,7 @@ import { ElButton } from "element-plus";
 import runtime, * as RuntimeUtils from '/src/components/live-broadcast/runtime'
 import styles from './message.module.less';
 import { state } from '/src/state'
+import request from '/src/helpers/request'
 
 
 type optionsType = 'ALL' | 'JOIN'
@@ -21,21 +22,68 @@ export default defineComponent({
   },
   methods: {
     async SeatsCtrl() {
-        await RuntimeUtils.sendMessage({seatBan: runtime.allowSeatsCtrl, ...RuntimeUtils.getSendMessageUser()}, 'SeatsCtrl')
+      try {
+        const users = state.user
+        const roomConfig = users?.roomConfig ? JSON.parse(users?.roomConfig) : {}
+        await request.post('/api-web/imLiveBroadcastRoom/update', {
+          requestType: 'json',
+          data: {
+            id: users.id,
+            liveRemark: users.liveRemark,
+            liveStartTime: users.liveStartTime,
+            preTemplate: users.preTemplate,
+            roomConfig: {
+              whether_chat: runtime.allowChatCtrl ? 1 : 0,
+              whether_like: roomConfig.whether_like,
+              whether_mic: runtime.allowSeatsCtrl ? 1 : 0,
+              whether_video: roomConfig.whether_video
+            },
+            roomTitle: users.roomTitle,
+            speakerId: users.speakerId,
+            tenantId: users.tenantId
+          }
+        })
+        await RuntimeUtils.sendMessage({ seatBan: runtime.allowSeatsCtrl, ...RuntimeUtils.getSendMessageUser() }, 'SeatsCtrl')
         runtime.allowSeatsCtrl = !runtime.allowSeatsCtrl
+      } catch {
+        //
+      }
     },
     async ChatBan() {
-        await RuntimeUtils.sendMessage({chatBan: runtime.allowChatCtrl, ...RuntimeUtils.getSendMessageUser()}, 'ChatBan')
+      try {
+        const users = state.user
+        const roomConfig = users?.roomConfig ? JSON.parse(users?.roomConfig) : {}
+        await request.post('/api-web/imLiveBroadcastRoom/update', {
+          requestType: 'json',
+          data: {
+            id: users.id,
+            liveRemark: users.liveRemark,
+            liveStartTime: users.liveStartTime,
+            preTemplate: users.preTemplate,
+            roomConfig: {
+              whether_chat: runtime.allowChatCtrl ? 1 : 0,
+              whether_like: roomConfig.whether_like,
+              whether_video: roomConfig.whether_video,
+              whether_mic: roomConfig.whether_mic
+            },
+            roomTitle: users.roomTitle,
+            speakerId: users.speakerId,
+            tenantId: users.tenantId
+          }
+        })
+        await RuntimeUtils.sendMessage({ chatBan: runtime.allowChatCtrl, ...RuntimeUtils.getSendMessageUser() }, 'ChatBan')
         runtime.allowChatCtrl = !runtime.allowChatCtrl
+      } catch {
+        //
+      }
     },
   },
   render() {
     return (
       <div class={styles.message}>
         <div class={styles.buttonGroup}>
-        {/* class={[!runtime.allowChatCtrl ? styles.active : null, styles.btn]} */}
-          {this.whetherChat ? <ElButton type={!runtime.allowChatCtrl ? 'primary' : 'info'} onClick={this.ChatBan} >{runtime.allowChatCtrl ? '全体禁言' : '关闭全体禁言'}</ElButton> : null}
-          {/* class={[!runtime.allowSeatsCtrl ? styles.active : null, styles.btn]} */}
+          {/* {this.whetherChat ? <ElButton type={!runtime.allowChatCtrl ? 'primary' : 'info'} onClick={this.ChatBan} >{runtime.allowChatCtrl ? '全体禁言' : '关闭全体禁言'}</ElButton> : null} */}
+          <ElButton type={!runtime.allowChatCtrl ? 'primary' : 'info'} onClick={this.ChatBan} >{runtime.allowChatCtrl ? '全体禁言' : '关闭全体禁言'}</ElButton>
           <ElButton type={!runtime.allowSeatsCtrl ? 'primary' : 'info'} onClick={this.SeatsCtrl}>{runtime.allowSeatsCtrl ? '禁止连麦' : '关闭禁止连麦'}</ElButton>
         </div>
       </div>

+ 3 - 2
src/components/live-message/model/join-model.tsx

@@ -46,7 +46,7 @@ export default defineComponent({
     event.on(LIVE_EVENT_MESSAGE['RC:LookerLoginOut'], this.onLeave); // 后台接收的消息
   },
   methods: {
-    onLeave(value: any) {
+    async onLeave(value: any) {
       // 学生离开时处理
       runtime.lookCount = runtime.lookCount - 1 >= 0 ? runtime.lookCount - 1 : 0
       const userId = value.userId || value.fromUserId
@@ -56,6 +56,8 @@ export default defineComponent({
       if(runtimeModel.lookList[userId]) {
         RuntimeModelUtils.removeLook(userId)
       }
+      // 同步移动端观看人数
+      await RuntimeUtils.sendMessage({ count: runtime.lookCount }, 'MemberCount')
     },
     onSeatApply(evt: any) {
       // console.log(evt, 'onSeatApply joinModel')
@@ -159,7 +161,6 @@ export default defineComponent({
         RuntimeModelUtils.addMessage(tempObj);
         event.emit('MESSAGE:Change')
 
-
         RuntimeModelUtils.removeJoin(evt.userId)
       }
       if (runtimeModel.lookList[evt.userId] && evt.role === 2) {

+ 4 - 1
src/components/live-message/model/look-model.tsx

@@ -66,7 +66,7 @@ export default defineComponent({
         //
       }
     },
-    onWelcome(value: any) {
+    async onWelcome(value: any) {
       // console.log(value)
       if (value && value.user) {
         const sendTime = dayjs(value.$EventMessage.sentTime || new Date()).format('HH:mm:ss')
@@ -83,6 +83,9 @@ export default defineComponent({
           RuntimeModelUtils.addLook(tempObj.id, tempObj);
           console.log('添加观看人员', tempObj)
           runtime.lookCount += 1;
+
+          // 同步移动端观看人数
+          await RuntimeUtils.sendMessage({ count: runtime.lookCount }, 'MemberCount')
         }
 
         this.loadingLook = false

+ 1 - 1
src/components/live-message/send-message.tsx

@@ -24,7 +24,7 @@ export default defineComponent({
         const userInfo = RuntimeUtils.getSendMessageUser();
         // 添加一条消息记录
         RuntimeModel.addMessage({
-          id: userInfo.id,
+          id: String(userInfo.id),
           name: userInfo.name,
           content: this.message,
           isSelf: true,

Някои файлове не бяха показани, защото твърде много файлове са промени