tests.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. const express = require('express')
  2. const router = express.Router()
  3. const utils = require('../utils/index.js')
  4. const { primary } = require('../utils/roleString')
  5. const pools = require('../utils/pools.js')
  6. const xlsx = require('node-xlsx')
  7. const path = require('path')
  8. const fileEvent = require('../utils/file')
  9. //添加测试账号
  10. router.post('/addTests', async (req, res) => {
  11. let sql = 'INSERT INTO tests(name,remark,more_id) VALUES (?,?,?)',
  12. obj = req.body
  13. let user = await utils.getUserInfo({ req, res, addMore: true })
  14. await pools({ sql, val: [obj.name, obj.remark, user.moreId], run: false, res, req })
  15. })
  16. //查询测试账号
  17. router.post('/getTests', async (req, res) => {
  18. let user = await utils.getUserInfo({ req, res }),
  19. obj = req.body
  20. let sql = `SELECT id,name,remark,update_time AS updateTime,create_time AS createTime FROM tests WHERE 1=1`
  21. sql = utils.setLike(sql, 'name', obj.name)
  22. sql = utils.setMoreId(sql, user)
  23. let { total } = await utils.getSum({ sql, name: 'tests', res, req })
  24. sql += ` ORDER BY id DESC`
  25. sql = utils.pageSize(sql, obj.page, obj.size)
  26. let { result } = await pools({ sql, res, req })
  27. res.send(utils.returnData({ data: result, total }))
  28. })
  29. //修改测试账号
  30. router.post('/upTests', async (req, res) => {
  31. let sql = 'UPDATE tests SET name=?,remark=? WHERE id=?',
  32. obj = req.body
  33. await pools({ sql, val: [obj.name, obj.remark, obj.id], run: false, res, req })
  34. })
  35. //删除测试账号
  36. router.post('/delTests', async (req, res) => {
  37. let sql = 'DELETE FROM tests WHERE id=?',
  38. obj = req.body
  39. await pools({ sql, val: [obj.id], run: false, res, req })
  40. })
  41. //测试菜单接口权限
  42. router.post('/checkMenu', async (req, res) => {
  43. //需要有roleKey1 这个菜单权限才能请求!
  44. await utils.checkPermi({ role: ['roleKey1'], res, req })
  45. res.send(utils.returnData({ data: { msg: '请求成功了!' } }))
  46. })
  47. //测试角色接口权限
  48. router.post('/checkRole', async (req, res) => {
  49. //需要有primary 这个角色权限才能请求!
  50. await utils.checkRole({ req, res, role: [primary] })
  51. res.send(utils.returnData({ data: { msg: '请求成功了!' } }))
  52. })
  53. //导入数据
  54. router.post('/importTests', async (req, res) => {
  55. let sql = 'INSERT INTO tests(`name`,`remark`,`more_id`) VALUES ?'
  56. let fileArr = await fileEvent(req, res)
  57. let filename = fileArr[0].filename
  58. //配置获取文件路径
  59. let xlsxRes = xlsx.parse(`${path.join(__dirname, '../', 'public/')}${filename}`, { cellDates: true })
  60. let list = xlsxRes[0].data
  61. list.splice(0, 1)
  62. await pools({ sql, val: [list], run: false, res, req, msg: '请确认文档导入值没有问题!!!' })
  63. })
  64. //下载模板
  65. router.post('/downloadTemplate', async (req, res) => {
  66. let data = [['名称', '备注', '多账户编号']]
  67. let buffer = xlsx.build([{ name: 'sheet1', data }])
  68. const filename = '测试模板.xlsx'
  69. const encodedFilename = encodeURI(filename)
  70. res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;filename=' + encodedFilename)
  71. res.send(buffer)
  72. })
  73. //导出数据
  74. router.post('/exportTest', async (req, res) => {
  75. let user = await utils.getUserInfo({ req, res }),
  76. obj = req.body
  77. let sql = `SELECT id,name,remark FROM tests WHERE 1=1`
  78. sql = utils.setLike(sql, 'name', obj.name)
  79. sql = utils.setMoreId(sql, user)
  80. sql += ` ORDER BY id DESC`
  81. sql = utils.pageSize(sql, obj.page, obj.size)
  82. let { result } = await pools({ sql, res, req })
  83. let data = [['编号', '名称', '备注']]
  84. result.map((t) => {
  85. data.push(Object.values(t))
  86. })
  87. let buffer = xlsx.build([{ name: 'sheet1', data }])
  88. const filename = '测试数据.xlsx'
  89. const encodedFilename = encodeURI(filename)
  90. res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;filename=' + encodedFilename)
  91. res.send(buffer)
  92. })
  93. module.exports = router