const express = require('express') const router = express.Router() const utils = require('../utils/index.js') const { primary } = require('../utils/roleString') const pools = require('../utils/pools.js') const xlsx = require('node-xlsx') const path = require('path') const fileEvent = require('../utils/file') //添加测试账号 router.post('/addTests', async (req, res) => { let sql = 'INSERT INTO tests(name,remark,more_id) VALUES (?,?,?)', obj = req.body let user = await utils.getUserInfo({ req, res, addMore: true }) await pools({ sql, val: [obj.name, obj.remark, user.moreId], run: false, res, req }) }) //查询测试账号 router.post('/getTests', async (req, res) => { let user = await utils.getUserInfo({ req, res }), obj = req.body let sql = `SELECT id,name,remark,update_time AS updateTime,create_time AS createTime FROM tests WHERE 1=1` sql = utils.setLike(sql, 'name', obj.name) sql = utils.setMoreId(sql, user) let { total } = await utils.getSum({ sql, name: 'tests', res, req }) sql += ` ORDER BY id DESC` sql = utils.pageSize(sql, obj.page, obj.size) let { result } = await pools({ sql, res, req }) res.send(utils.returnData({ data: result, total })) }) //修改测试账号 router.post('/upTests', async (req, res) => { let sql = 'UPDATE tests SET name=?,remark=? WHERE id=?', obj = req.body await pools({ sql, val: [obj.name, obj.remark, obj.id], run: false, res, req }) }) //删除测试账号 router.post('/delTests', async (req, res) => { let sql = 'DELETE FROM tests WHERE id=?', obj = req.body await pools({ sql, val: [obj.id], run: false, res, req }) }) //测试菜单接口权限 router.post('/checkMenu', async (req, res) => { //需要有roleKey1 这个菜单权限才能请求! await utils.checkPermi({ role: ['roleKey1'], res, req }) res.send(utils.returnData({ data: { msg: '请求成功了!' } })) }) //测试角色接口权限 router.post('/checkRole', async (req, res) => { //需要有primary 这个角色权限才能请求! await utils.checkRole({ req, res, role: [primary] }) res.send(utils.returnData({ data: { msg: '请求成功了!' } })) }) //导入数据 router.post('/importTests', async (req, res) => { let sql = 'INSERT INTO tests(`name`,`remark`,`more_id`) VALUES ?' let fileArr = await fileEvent(req, res) let filename = fileArr[0].filename //配置获取文件路径 let xlsxRes = xlsx.parse(`${path.join(__dirname, '../', 'public/')}${filename}`, { cellDates: true }) let list = xlsxRes[0].data list.splice(0, 1) await pools({ sql, val: [list], run: false, res, req, msg: '请确认文档导入值没有问题!!!' }) }) //下载模板 router.post('/downloadTemplate', async (req, res) => { let data = [['名称', '备注', '多账户编号']] let buffer = xlsx.build([{ name: 'sheet1', data }]) const filename = '测试模板.xlsx' const encodedFilename = encodeURI(filename) res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;filename=' + encodedFilename) res.send(buffer) }) //导出数据 router.post('/exportTest', async (req, res) => { let user = await utils.getUserInfo({ req, res }), obj = req.body let sql = `SELECT id,name,remark FROM tests WHERE 1=1` sql = utils.setLike(sql, 'name', obj.name) sql = utils.setMoreId(sql, user) sql += ` ORDER BY id DESC` sql = utils.pageSize(sql, obj.page, obj.size) let { result } = await pools({ sql, res, req }) let data = [['编号', '名称', '备注']] result.map((t) => { data.push(Object.values(t)) }) let buffer = xlsx.build([{ name: 'sheet1', data }]) const filename = '测试数据.xlsx' const encodedFilename = encodeURI(filename) res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;filename=' + encodedFilename) res.send(buffer) }) module.exports = router