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(': ' + JSON.stringify(result)); // // console.log(result); // }, function(err) { // console.log(err); // }); }) module.exports = router