const router = require('koa-router')()
|
const base = require('../models/base')
|
const upload = require('../utils/upload')
|
const recordAnalysis = require('../utils/recordAnalysis')
|
const path = require('path')
|
router.prefix('/base')
|
|
/*token校验 */
|
const jwt = require('jsonwebtoken')
|
const util = require('util')
|
const verify = util.promisify(jwt.verify) // 解密
|
let secert = 'FM_Monitor'
|
|
router.get('/:func', async function (ctx, next) {
|
const token = ctx.header.authorization
|
payload = await verify(token.split(' ')[1], secert) // // 解密,获取payload
|
if (payload) {
|
await next()
|
} else {
|
ctx.body = {
|
code: 50014
|
}
|
return
|
}
|
})
|
/*校验结束 */
|
|
//导入
|
router.get('/importExcel', async function (ctx, res, next) {
|
let data = ctx.query
|
data.logDes = `Excel导入数据。`
|
ctx.body = {
|
data: await base.importExcel(data),
|
code: 20000
|
}
|
})
|
|
//编辑
|
router.get('/updateTable', async function (ctx, res, next) {
|
let data = ctx.query
|
ctx.body = {
|
data: await base.updateTable(data),
|
code: 20000
|
}
|
})
|
|
//批量更新
|
router.get('/updateBatch', async function (ctx, res, next) {
|
let data = ctx.query
|
ctx.body = {
|
data: await base.updateBatch(data),
|
code: 20000
|
}
|
})
|
|
//删除
|
router.get('/delete', async function (ctx, res, next) {
|
let data = ctx.query
|
ctx.body = {
|
data: await base.delete(data),
|
code: 20000
|
}
|
})
|
|
//批量删除
|
router.get('/deleteBatch', async function (ctx, res, next) {
|
let data = ctx.query
|
//验证该周期任务是否有设备正在运行使用
|
let params = JSON.parse(data.id_list)
|
let error_ids = [] //不符合删除要求的任务号id。
|
let success_ids = [] //正在使用周期任务的设备。
|
for (let i = 0; i < params.length; i++) {
|
let result = await base.checkTaskId(params[i])
|
if (result.length > 0) {
|
error_ids.push(params[i])
|
} else {
|
success_ids.push(params[i])
|
}
|
}
|
if (success_ids.length > 0) {
|
data.id_list = JSON.stringify(success_ids)
|
await base.deleteBatch(data)
|
}
|
ctx.body = {
|
error_data: error_ids,
|
success_data: success_ids,
|
code: 20000
|
}
|
})
|
|
//新增
|
router.get('/insertTable', async function (ctx, res, next) {
|
let data = ctx.query
|
ctx.body = {
|
data: await base.insertTable(data),
|
code: 20000
|
}
|
})
|
|
//上传
|
router.put('/uploadFile', upload.single('file'), async ctx => {
|
let fileparams = ctx.req.file
|
let txtparams = ctx.req.body
|
let path = fileparams.path.replace(/\\/g, '/')
|
if (typeof txtparams.table != 'undefined') {
|
//新增
|
txtparams.values += `'${path.replace('public/', '')}',`
|
ctx.body = {
|
data: await base.insertTable(txtparams),
|
code: 20000
|
}
|
} else {
|
txtparams.sql += ` '${path.replace('public/', '')}' WHERE id = '${
|
txtparams.sql_id
|
}' `
|
ctx.body = {
|
data: await base.updateTable(txtparams),
|
code: 20000
|
}
|
}
|
})
|
|
//更换头像
|
router.put('/uploadPic', upload.single('file'), async ctx => {
|
let fileparams = ctx.req.file
|
let txtparams = ctx.req.body
|
txtparams.path = fileparams.path.replace(/\\/g, '/').replace('public/', '')
|
|
ctx.body = {
|
data: await base.uploadPic(txtparams),
|
path: txtparams.path,
|
code: 20000
|
}
|
})
|
|
//从文件读取字符串
|
router.get('/readFile', async function (ctx, next) {
|
const fs = require('fs')
|
ctx.query.logDes = `从文件(${ctx.query.path})读取字符串`
|
let data = fs.readFileSync(ctx.query.path, ctx.query.encoding)
|
|
ctx.body = {
|
code: 20000,
|
data: data
|
}
|
})
|
|
//保存字符串到文件
|
router.get('/saveFile', async function (ctx, next) {
|
const fs = require('fs')
|
ctx.query.logDes = `保存字符串到文件(${ctx.query.path})`
|
fs.writeFileSync(ctx.query.path, ctx.query.data, ctx.query.encoding)
|
ctx.body = {
|
code: 20000
|
}
|
})
|
|
router.post('/recordUpload', async (ctx, next) => {
|
const fs = require('fs')
|
// 上传单个文件
|
console.log(ctx.request)
|
let file = ctx.request.files.recordFile
|
// 创建可读流
|
const reader = fs.createReadStream(file.path)
|
|
//根据上传设备的物理编号,按要求统一存放设备录音文件
|
let filePathByDeviceId =
|
path.join(__dirname, '../public/record') + `/${ctx.request.body.deviceId}`
|
if (!fs.existsSync(filePathByDeviceId)) {
|
fs.mkdirSync(filePathByDeviceId)
|
}
|
|
let filePath = filePathByDeviceId + `/${file.name}`
|
// 创建可写流
|
const upStream = fs.createWriteStream(filePath)
|
//可读流通过管道写入可写流
|
reader.pipe(upStream)
|
|
ctx.body = {
|
data: '上传成功!',
|
code: 20000
|
}
|
|
// let voice = fs.readFileSync(path.resolve(__dirname,'../public/record/123.wav'));
|
// let voiceBuffer = new Buffer(voice);
|
|
// // 识别本地文件,附带参数
|
// recordAnalysis.client.recognize(voiceBuffer, 'wav', 8000, {dev_pid: '1537', cuid:"15001307"}).then(function (result) {
|
// console.log('<recognize>: ' + JSON.stringify(result));
|
// // console.log(result);
|
// }, function(err) {
|
// console.log(err);
|
// });
|
})
|
|
module.exports = router
|