From cfc281eddc5ed8a6d0e871f191ef772e6ed72cdc Mon Sep 17 00:00:00 2001 From: "gao.zhiyuan" Date: Wed, 22 Jun 2022 14:17:29 +0800 Subject: [PATCH] yingshi state --- .../api/app/lib/schedule/freshYingshiState.js | 56 +++++++++++++++---- .../api/app/lib/schedule/index.js | 25 +++++---- .../api/app/lib/service/socket.js | 23 ++++---- 3 files changed, 69 insertions(+), 35 deletions(-) diff --git a/code/VideoAccess-VCMP/api/app/lib/schedule/freshYingshiState.js b/code/VideoAccess-VCMP/api/app/lib/schedule/freshYingshiState.js index 75abccd..b26fe11 100644 --- a/code/VideoAccess-VCMP/api/app/lib/schedule/freshYingshiState.js +++ b/code/VideoAccess-VCMP/api/app/lib/schedule/freshYingshiState.js @@ -4,18 +4,19 @@ const moment = require('moment') module.exports = function (app, opts) { const freshYingshiState = schedule.scheduleJob( // '* * 4 * * *', - '*/8 * * * * *', + '*/3 * * * *', async () => { - + try { + const startTime = moment() const { models } = app.fs.dc - const { varifyYingshiBelongSecretBySerialNo, token4yingshi } = app.fs.utils + const { token4yingshi } = app.fs.utils const secretRes = await models.SecretYingshi.findAll() + let deviceList = [] for (let s of secretRes) { const tokenYingshi = await token4yingshi(s.dataValues) // 查询所有设备 let pageStart = 0 - let deviceList = [] while (pageStart >= 0) { const deviceRes = await app.fs.yingshiRequest.post('lapp/device/list', { query: { @@ -27,21 +28,52 @@ module.exports = function (app, opts) { if (deviceRes.code == 200) { if (deviceRes.data.length) { deviceList = deviceList.concat.apply(deviceList, deviceRes.data) + for (let d of deviceRes.data) { + const existD = await models.GbCamera.findOne({ + where: { + streamid: d.deviceSerial + } + }) + + let storageD = { + level: 0, + ipctype: 'yingshi', + streamid: d.deviceSerial, + online: d.status ? 'ON' : 'OFF', + name: d.deviceName, + } + if (existD) { + if (existD.online != storageD.online) { + // 状态更新 + await models.GbCamera.update(storageD, { + where: { + id: existD.id + } + }) + + // 状态推送 + const { connected } = app.socket.sockets + const roomId = 'ROOM_' + Math.random() + '_' + d.deviceSerial + if (connected) { + for (let c in connected) { + connected[c].join(roomId) + } + app.socket.to(roomId).emit('TEST', { someProperty: `【星域 ROOM:${roomId}】呼叫自然选择号!!!`, }) + } + } + } else { + await models.GbCamera.create(storageD) + } + } pageStart++ } else { pageStart = -1 } } } - console.log(deviceList); } - - // const await models.UserToken.destroy({ - // where: { - // expired: { $lt: now } - // } - // }) - + // console.log(deviceList); + console.info(`萤石状态查询用时 ${moment().diff(startTime, 'seconds')} s`) } catch (error) { app.fs.logger.error(`sechedule: freshYingshiState, error: ${error}`); } diff --git a/code/VideoAccess-VCMP/api/app/lib/schedule/index.js b/code/VideoAccess-VCMP/api/app/lib/schedule/index.js index 6681efa..c06d4c1 100644 --- a/code/VideoAccess-VCMP/api/app/lib/schedule/index.js +++ b/code/VideoAccess-VCMP/api/app/lib/schedule/index.js @@ -1,18 +1,19 @@ 'use strict'; const fs = require('fs'); + // 将定时任务汇集未来可根据需要选取操作 module.exports = async function (app, opts) { - fs.readdirSync(__dirname).forEach((filename) => { - if (!['index.js'].some(f => filename == f)) { - const schedule = require(`./${filename}`)(app, opts) - for (let k of Object.keys(schedule)) { - console.info(`定时任务 ${k} 启动`); - } - app.fs.schedule = { - ...app.fs.schedule, - ...schedule, - } - } - }); + fs.readdirSync(__dirname).forEach((filename) => { + if (!['index.js'].some(f => filename == f)) { + const schedule = require(`./${filename}`)(app, opts) + for (let k of Object.keys(schedule)) { + console.info(`定时任务 ${k} 启动`); + } + app.fs.schedule = { + ...app.fs.schedule, + ...schedule, + } + } + }); }; diff --git a/code/VideoAccess-VCMP/api/app/lib/service/socket.js b/code/VideoAccess-VCMP/api/app/lib/service/socket.js index fca63f0..2f21fcd 100644 --- a/code/VideoAccess-VCMP/api/app/lib/service/socket.js +++ b/code/VideoAccess-VCMP/api/app/lib/service/socket.js @@ -10,16 +10,17 @@ module.exports = async function factory (app, opts) { }) // 使用测试 保持链接 - // setInterval(async () => { - // // const { connected } = app.socket.sockets - // // const roomId = 'ROOM_' + Math.random() - // // if (connected) { - // // for (let c in connected) { - // // connected[c].join(roomId) - // // } - // // app.socket.to(roomId).emit('TEST', { someProperty: `【星域 ROOM:${roomId}】呼叫自然选择号!!!`, }) - // // } + setInterval(async () => { + const { connected } = app.socket.sockets - // app.socket.emit('TEST', { someProperty: '【广播】呼叫青铜时代号!!!', }) - // }, 1000) + const roomId = 'ROOM_' + Math.random() + if (connected) { + for (let c in connected) { + connected[c].join(roomId) + } + app.socket.to(roomId).emit('TEST', { someProperty: `【星域 ROOM:${roomId}】呼叫自然选择号!!!`, }) + } + + app.socket.emit('TEST', { someProperty: '【广播】呼叫青铜时代号!!!', }) + }, 1000) }