|
|
|
'use strict';
|
|
|
|
|
|
|
|
const moment = require('moment')
|
|
|
|
|
|
|
|
async function createYingshi (ctx) {
|
|
|
|
let errMsg = '添加萤石摄像头失败'
|
|
|
|
try {
|
|
|
|
const { models } = ctx.fs.dc
|
|
|
|
const { userId, token } = ctx.fs.api
|
|
|
|
const { utils: { token4yingshi } } = ctx.app.fs
|
|
|
|
|
|
|
|
const {
|
|
|
|
id, name, cloudControl, highDefinition, memoryCard,
|
|
|
|
voice, kindId, abilityId, rtmp, serialNo, longitude, latitude,
|
|
|
|
} = ctx.request.body;
|
|
|
|
|
|
|
|
const serialNo_ = String(serialNo).toUpperCase()
|
|
|
|
const secretRes = await models.SecretYingshi.findAll()
|
|
|
|
let cameraBeloneSecretId = null
|
|
|
|
for (let s of secretRes) {
|
|
|
|
const tokenYingshi = await token4yingshi(s.dataValues)
|
|
|
|
// 检测设备所属
|
|
|
|
const cameraState = await ctx.app.fs.yingshiRequest.post('lapp/device/info', {
|
|
|
|
query: {
|
|
|
|
accessToken: tokenYingshi,
|
|
|
|
deviceSerial: serialNo_
|
|
|
|
}
|
|
|
|
})
|
|
|
|
if (cameraState.code == 200) {
|
|
|
|
cameraBeloneSecretId = s.dataValues.id
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!cameraBeloneSecretId) {
|
|
|
|
errMsg = '请联系管理员核验或新增萤石云权限'
|
|
|
|
throw errMsg
|
|
|
|
}
|
|
|
|
|
|
|
|
let storageData = {
|
|
|
|
type: 'yingshi', name, cloudControl, highDefinition, memoryCard,
|
|
|
|
voice, longitude, latitude, kindId, abilityId, rtmp,
|
|
|
|
yingshiSecretId: cameraBeloneSecretId
|
|
|
|
}
|
|
|
|
|
|
|
|
if (id) {
|
|
|
|
await models.Camera.update(storageData, {
|
|
|
|
where: {
|
|
|
|
id,
|
|
|
|
}
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
storageData.createTime = moment().format()
|
|
|
|
storageData.createUserId = userId
|
|
|
|
storageData.forbidden = false
|
|
|
|
await models.Camera.create(storageData)
|
|
|
|
}
|
|
|
|
|
|
|
|
ctx.status = 204;
|
|
|
|
} catch (error) {
|
|
|
|
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
|
|
|
|
ctx.status = 400;
|
|
|
|
ctx.body = {
|
|
|
|
message: errMsg
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async function getNvrSteam (ctx) {
|
|
|
|
try {
|
|
|
|
const { models } = ctx.fs.dc
|
|
|
|
const { userId, token } = ctx.fs.api
|
|
|
|
|
|
|
|
ctx.status = 200;
|
|
|
|
ctx.body = {}
|
|
|
|
} catch (error) {
|
|
|
|
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
|
|
|
|
ctx.status = 400;
|
|
|
|
ctx.body = {}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async function createNvrCamera (ctx) {
|
|
|
|
try {
|
|
|
|
const { models } = ctx.fs.dc
|
|
|
|
const { userId, token } = ctx.fs.api
|
|
|
|
|
|
|
|
ctx.status = 200;
|
|
|
|
ctx.body = {}
|
|
|
|
} catch (error) {
|
|
|
|
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
|
|
|
|
ctx.status = 400;
|
|
|
|
ctx.body = {}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async function createIpcCamera (ctx) {
|
|
|
|
try {
|
|
|
|
const { models } = ctx.fs.dc
|
|
|
|
const { userId, token } = ctx.fs.api
|
|
|
|
const { utils: { token4yingshi } } = ctx.app.fs
|
|
|
|
|
|
|
|
const {
|
|
|
|
id, name, cloudControl, memoryCard,
|
|
|
|
voice, longitude, latitude, rtmp,
|
|
|
|
serialNo, kindId, abilityId,
|
|
|
|
} = ctx.request.body;
|
|
|
|
|
|
|
|
let storageData = {
|
|
|
|
type: 'ipc', name, cloudControl, memoryCard,
|
|
|
|
voice, longitude, latitude, rtmp,
|
|
|
|
serialNo, kindId, abilityId,
|
|
|
|
}
|
|
|
|
|
|
|
|
if (id) {
|
|
|
|
await models.Camera.update(storageData, {
|
|
|
|
where: {
|
|
|
|
id,
|
|
|
|
}
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
storageData.createTime = moment().format()
|
|
|
|
storageData.createUserId = userId
|
|
|
|
storageData.forbidden = false
|
|
|
|
await models.Camera.create(storageData)
|
|
|
|
}
|
|
|
|
ctx.status = 204;
|
|
|
|
} catch (error) {
|
|
|
|
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
|
|
|
|
ctx.status = 400;
|
|
|
|
ctx.body = {}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
createYingshi,
|
|
|
|
getNvrSteam,
|
|
|
|
createNvrCamera,
|
|
|
|
createIpcCamera,
|
|
|
|
};
|