sys_controller.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Zhong
  6. * @date 2018/5/24
  7. * @version
  8. */
  9. import fs from 'fs';
  10. import path from 'path';
  11. import multiparty from 'multiparty';
  12. import BaseController from "../../common/base/base_controller";
  13. //import sysSchedule from '../models/sys_model';
  14. let sysSchedule = require('../models/sys_model');
  15. let callback = function(req, res, err, message, data){
  16. res.json({error: err, message: message, data: data});
  17. };
  18. const shareDir = 'public/share/';
  19. class SysTools extends BaseController{
  20. clearJunkData(req, res){
  21. sysSchedule.clearJunkData(function (err) {
  22. let msg = '清除成功';
  23. let errCode = 0;
  24. if(err){
  25. msg = '清除失败';
  26. errCode = 1;
  27. }
  28. callback(req, res, errCode, msg, null);
  29. });
  30. }
  31. clearFakeData(req, res){
  32. sysSchedule.clearFakeData(function (err) {
  33. let msg = '清除成功';
  34. let errCode = 0;
  35. if(err){
  36. msg = '清除失败';
  37. errCode = 1;
  38. }
  39. callback(req, res, errCode, msg, null);
  40. });
  41. }
  42. //上传文件:用户手册、升级说明pdf文件
  43. /*
  44. * 这两个文件在前台帮助下拉中使用,与产品绑定,即一个养护产品(重庆养护、浙江xx...)只有一份文件
  45. * 所以保存到的文件夹直接分为两个:userGuide和upgradeGuide,前台到对应文件夹直接获取文件
  46. * */
  47. async uploadFile(req, res) {
  48. const validTrigger = {
  49. userGuide: 'userGuide', //用户手册
  50. upgradeGuide: 'upgradeGuide' //升级说明
  51. };
  52. let uploadDir = path.join(req.app.locals.rootDir, shareDir);
  53. let form = new multiparty.Form({uploadDir: uploadDir});
  54. form.parse(req, async function(err, fields, files){
  55. try {
  56. const file = typeof files.file !== 'undefined' ? files.file[0] : null;
  57. if(err || !file) {
  58. throw '上传失败';
  59. }
  60. //文件类型
  61. const trigger = typeof fields.trigger !== 'undefined' && fields.trigger.length > 0 ? fields.trigger[0] : null;
  62. if (!trigger || !trigger in validTrigger) {
  63. throw '该操作没有上传权限'
  64. }
  65. if (!fs.existsSync(uploadDir)) {
  66. fs.mkdirSync(uploadDir);
  67. }
  68. //根据触发源放置文件到相关文件夹
  69. let triggerPath = path.join(uploadDir, trigger);
  70. if (!fs.existsSync(triggerPath)) {
  71. fs.mkdirSync(triggerPath);
  72. }
  73. //文件后缀
  74. let px = file.originalFilename.split('.').pop();
  75. //重命名
  76. let newFileName = trigger + '.' + px;
  77. let newPath = path.join(triggerPath, newFileName);
  78. fs.renameSync(file.path, newPath);
  79. //返回图片域名后的url
  80. res.json({error: 0, data: `${shareDir}/${trigger}/${newFileName}`, message: 'success'});
  81. } catch (err) {
  82. console.log(err);
  83. res.json({error: 1, data: null, message: err});
  84. }
  85. });
  86. }
  87. }
  88. export {SysTools as default};