feat:跟新组织架构

This commit is contained in:
leilei
2025-09-24 17:51:19 +08:00
parent 293951a610
commit 121fc5ea19
22 changed files with 1418 additions and 13 deletions

View File

@@ -1,6 +1,7 @@
import { mqttClient } from "./mqtt";
import { getWhiteboardShapes, getWhiteboardHistory } from "@/views/custom/api";
import { useMeterStore } from '@/stores/modules/meter';
import { encode, decode } from '@msgpack/msgpack'
const meterStore = useMeterStore();
meterStore.initUdid();
@@ -42,12 +43,15 @@ export const WhiteboardSync = {
// 订阅当前房间
const topic = `xSynergy/ROOM/${roomUid}/whiteboard/#`;
mqttClient.subscribe(topic, async (shapeData) => {
mqttClient.subscribe(topic, async (shapeData) => {
// console.log(shapeData, 'shapeData++格式装换')
const shapeDataNew = decode(shapeData);
// console.log(shapeDataNew, '格式解码')
try {
isRemote = true;
// 如果 shape 来自本地用户,则跳过
if (shapeData.user_uid === localUid) return;
const res = await getWhiteboardHistory({ after_timestamp: shapeData.created_at }, roomUid);
if (shapeDataNew.user_uid === localUid) return;
const res = await getWhiteboardHistory({ after_timestamp: shapeDataNew.created_at }, roomUid);
if (res.meta.code === 200) {
canvasInstance.addShape(res.data.shapes);
} else {
@@ -62,7 +66,7 @@ export const WhiteboardSync = {
console.log("✅ 已订阅:", topic);
} catch (err) {
console.log("初始化多人同步失败:",err)
console.log("初始化多人同步失败:", err)
// console.error("❌ 连接或订阅失败:", err);
}
@@ -72,10 +76,9 @@ export const WhiteboardSync = {
if (isRemote || !['pencil', 'line', 'rectangle', 'circle', 'eraser'].includes(shape.type)) return;
// 如果是本地用户自己的 shape则不调用接口
if (shape.user_uid && shape.user_uid === localUid) return;
shape.room_uid = roomUid;
if (shape.user_uid && shape.user_uid === localUid) return;
shape.room_uid = roomUid;
try {
await getWhiteboardShapes(shape, roomUid);
} catch (err) {
@@ -85,7 +88,7 @@ export const WhiteboardSync = {
// 监听画布事件:清空
canvas.on('clear', async () => {
if (!isRemote) {
if (!isRemote) {
try {
// TODO: 调用接口,后端再发 MQTT
// await clearWhiteboard(roomUid);