sign_controller.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. 'use strict';
  2. /**
  3. * 签名相关控制器
  4. *
  5. * @author EllisRan
  6. * @date 2019/8/14
  7. * @version
  8. */
  9. const moment = require('moment');
  10. const path = require('path');
  11. const sendToWormhole = require('stream-wormhole');
  12. const fs = require('fs');
  13. module.exports = app => {
  14. class SignController extends app.BaseController {
  15. /**
  16. * 电子签名页面
  17. *
  18. * @param {Object} ctx - egg全局变量
  19. * @return {void}
  20. */
  21. async index(ctx) {
  22. const renderData = {
  23. error: false,
  24. };
  25. try {
  26. const userinfo = await ctx.service.projectAccount.getDataById(ctx.query.user_id);
  27. if (userinfo && userinfo.session_token && userinfo.session_token === ctx.query.app_token) {
  28. renderData.id = userinfo.id;
  29. renderData.name = userinfo.name;
  30. // renderData.role = userinfo.role;
  31. } else {
  32. throw '参数有误, 无法访问本页.';
  33. }
  34. } catch (error) {
  35. console.log(error);
  36. renderData.error = true;
  37. }
  38. await ctx.render('sign/info.ejs', renderData);
  39. }
  40. /**
  41. * 保存签名
  42. *
  43. * @param {Object} ctx - egg全局变量
  44. * @return {void}
  45. */
  46. async save(ctx) {
  47. try {
  48. const stream = await ctx.getFileStream({ requireFile: false });
  49. const create_time = Date.parse(new Date()) / 1000;
  50. const dirName = 'app/public/upload/sign/';
  51. const fileName = moment().format('YYYYMMDD') + '_sign_' + create_time + '.png';
  52. await ctx.helper.saveStreamFile(stream, path.join(this.app.baseDir, dirName, fileName));
  53. await sendToWormhole(stream);
  54. const result = await ctx.service.projectAccount.update({ sign_path: fileName }, { id: stream.fields.id });
  55. if (result) {
  56. ctx.body = { err: 0, msg: '' };
  57. } else {
  58. throw '添加数据库失败';
  59. }
  60. } catch (err) {
  61. this.log(err);
  62. ctx.body = { err: 1, msg: err.toString() };
  63. }
  64. }
  65. }
  66. return SignController;
  67. };