gemercheung 2 år sedan
förälder
incheckning
b465e221da

+ 1 - 1
index.html

@@ -19,7 +19,7 @@
     />
     <script src="<{BASE_URL}><{VITE_APP_STATIC_DIR}>/static/lib/mobile-detect.js"></script>
     <script src="<{BASE_URL}><{VITE_APP_STATIC_DIR}>/static/lib/flexible.min.js"></script>
-
+    <script src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
     <title></title>
   </head>
   <body>

+ 1 - 3
src/App.vue

@@ -282,9 +282,7 @@
       {{ t('base.debuginfo') }}:公告,当前测试最新: {{ test_version }}, 当前满员条件:
       {{ maxNumber }}
     </span> -->
-    <span>
-      {{ t('base.debuginfo') }}:公告,当前测试1.1.0正在开发测试中,如要1.0.0请联系开发!
-    </span>
+    <span> {{ t('base.debuginfo') }}:公告,当前测试1.1.0-20230328-03,超时文案在调试,勿动! </span>
     <span class="close" @click.stop="showDebug = false">X</span>
   </div>
   <LoadingLogo :thumb="true" />

+ 10 - 10
src/components/basic/title.vue

@@ -164,16 +164,16 @@
   const onBack = () => {
     player.value.showVR && appStore.showVR();
   };
-  const onShowMore = () => {
-    showCopy.value = true;
-    // let show = !player.value.showMore
-    // store.commit('SetPlayerOptions', {
-    //     showMore: show,
-    //     showMap: show == false,
-    //     showToolbar: show == false,
-    //     showDescription: false,
-    // })
-  };
+  // const onShowMore = () => {
+  //   showCopy.value = true;
+  //   // let show = !player.value.showMore
+  //   // store.commit('SetPlayerOptions', {
+  //   //     showMore: show,
+  //   //     showMap: show == false,
+  //   //     showToolbar: show == false,
+  //   //     showDescription: false,
+  //   // })
+  // };
   const onShowDescription = () => {
     let show = !player.value.showDescription;
 

+ 45 - 1
src/components/chatRoom/controls/actions.ts

@@ -12,6 +12,7 @@ import { useAppStore } from '/@/store/modules/app';
 import dayjs from 'dayjs';
 import duration from 'dayjs/plugin/duration';
 import { useRtcSdk } from '/@/hooks/useTRTC';
+import { useMiniApp } from '/@/hooks/useMiniApp';
 dayjs.extend(duration);
 // import { useRtcSdk } from '/@/hooks/useTRTC';
 interface ActionDataType {
@@ -403,7 +404,7 @@ const handleLeaderDismiss = () => {
 
 //
 
-const handleError = () => {
+export const handleError = () => {
   const rtcStore = useRtcStore();
   const { t } = useI18n();
   rtcStore.showBaseDialog(
@@ -421,6 +422,49 @@ const handleError = () => {
   );
 };
 
+export const handleTimeOutError = () => {
+  const rtcStore = useRtcStore();
+  const { isUsingMiniApp } = useMiniApp();
+  const { t } = useI18n();
+  rtcStore.showBaseDialog(
+    {
+      title: t('base.tips'),
+      desc: t('action.timeOutRoomError'),
+      okTxt: t('base.knowIt'),
+      closeTxt: t('base.cancel'),
+      isSingle: true,
+    },
+    () => {
+      if (isUsingMiniApp.value) {
+        //@ts-ignore
+        wx.miniProgram.switchTab({
+          url: '/pages/index/index',
+        });
+      } else {
+        const { closeSocket } = useSocket();
+        closeSocket();
+      }
+    },
+  );
+};
+export const handleEarlyError = () => {
+  const rtcStore = useRtcStore();
+  const { t } = useI18n();
+  rtcStore.showBaseDialog(
+    {
+      title: t('base.tips'),
+      desc: t('action.earlyRoomError'),
+      okTxt: t('base.knowIt'),
+      closeTxt: t('base.cancel'),
+      isSingle: true,
+    },
+    () => {
+      const { closeSocket } = useSocket();
+      closeSocket();
+    },
+  );
+};
+
 interface FloorType {
   floorId: string;
 }

+ 56 - 21
src/components/chatRoom/roomControl.ts

@@ -5,9 +5,10 @@ import type { ConsolaLogObject } from 'consola';
 import { handleActions, handleSync, handleReceivePaint, handleJoin } from './controls';
 import type { SocketParams } from '/@/store/modules/rtc';
 import Dialog from '/@/components/basic/dialog';
-import { useRoom } from '/@/hooks/useRoom';
+import { roomId, useRoom } from '/@/hooks/useRoom';
 import { useI18n } from '/@/hooks/useI18n';
 import dayjs from 'dayjs';
+import { handleTimeOutError, handleEarlyError, handleError } from '../chatRoom/controls/actions';
 // 所有socket业务事件集中点
 
 export function initSocketEvent(socket: SocketIOClient.Socket): void {
@@ -22,28 +23,60 @@ export function initSocketEvent(socket: SocketIOClient.Socket): void {
         nickname: rtcStore.nickname,
         isClient: false,
       };
-      if (rtcStore.role === 'leader') {
-        const { room } = useRoom();
-        const limit = unref(room)?.maxMan || 10;
-        const useEndTime = unref(room)?.useEndTime || '';
-        console.log('unref(room)', unref(room));
-        if (useEndTime) {
-          const now = dayjs();
-          const roomEnd = dayjs(useEndTime);
-          const ttl = roomEnd.diff(now, 'second');
-          params.roomConfig = {
-            masterId: rtcStore.userId,
-            limit: limit,
-            ttl: ttl,
-          };
+      const { room } = useRoom();
+      const useEndTime = unref(room)?.useEndTime || '';
+      const useStartTime = unref(room)?.useStartTime;
+      const limit = unref(room)?.maxMan || 10;
+      const now = dayjs();
+      const roomEnd = dayjs(useEndTime);
+      const ttl = roomEnd.diff(now, 'second');
+
+      if (useStartTime) {
+        const unstartTTl = dayjs(useStartTime).diff(now, 'second');
+        if (unstartTTl > 0) {
+          console.log('提前!!', dayjs(useStartTime));
+          handleEarlyError();
+          return;
+        }
+        debugger;
+      }
+
+      if (unref(room)) {
+        if (rtcStore.role === 'leader') {
+          console.log('unref(room)', unref(room));
+          if (useEndTime) {
+            params.roomConfig = {
+              masterId: rtcStore.userId,
+              limit: limit,
+              ttl: ttl,
+            };
+          } else {
+            params.roomConfig = {
+              masterId: rtcStore.userId,
+              limit: limit,
+            };
+          }
+        }
+        if (ttl > 0) {
+          socket.emit('join', params);
         } else {
-          params.roomConfig = {
-            masterId: rtcStore.userId,
-            limit: limit,
-          };
+          //超时房间
+          handleTimeOutError();
+        }
+      } else {
+        //临时房间放行
+        if (roomId.indexOf('temp_') > -1) {
+          if (rtcStore.role === 'leader') {
+            params.roomConfig = {
+              masterId: rtcStore.userId,
+              limit: limit,
+            };
+          }
+          socket.emit('join', params);
+          return;
         }
+        handleTimeOutError();
       }
-      socket.emit('join', params);
     });
 
     socket.on('action', (data: any) => {
@@ -83,7 +116,9 @@ export function initSocketEvent(socket: SocketIOClient.Socket): void {
         case 'invalid-room-params':
           Dialog.toast({ content: t('base.errorRoom') });
           break;
-
+        case 'ttl-out':
+          handleError();
+          break;
         default:
           Dialog.toast({ content: `错误代码:${code},类型:${type}` });
           break;

+ 1 - 0
src/hooks/useRoom.ts

@@ -29,6 +29,7 @@ export interface SceneItemType {
   takeLookLock: number;
   maxMan: number;
   useEndTime: string;
+  useStartTime: string;
 }
 
 export const room = ref<Nullable<roomDataType>>(null);

+ 2 - 0
src/locales/lang/en/action.ts

@@ -14,4 +14,6 @@ export default {
   errorRepeatLogin: 'You have already connected to this page; please do not log in again.',
   errorRoomMaxing: 'The studio is fully staffed; please try again later!',
   errorInvalidMaster: 'Inappropriate host, please check the settings !',
+  earlyRoomError: 'Please wait till the reservation can be made.',
+  timeOutRoomError: '当前房间使用期限已到',
 };

+ 2 - 0
src/locales/lang/zh/action.ts

@@ -15,4 +15,6 @@ export default {
   errorRepeatLogin: '你已有正在连接的页面,请勿重复登录!',
   errorRoomMaxing: '房间已满员,请稍后再试!',
   errorInvalidMaster: '非法主持人,请检查参数!',
+  earlyRoomError: '未到房间使用时间',
+  timeOutRoomError: '当前房间使用期限已到',
 };

+ 1 - 1
src/locales/lang/zh/base.ts

@@ -22,7 +22,7 @@ export default {
   floorPlanView: '平面',
   copySuccess: '复制成功!',
   errorRoom: '房间异常,请联系主持人。',
-  knowIt: '我知道了',
+  knowIt: '我知道了',
   view: '观看',
   send: '发送',
   saveSuccess: '保存成功!',