sys_controller.js 3.3 KB

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