sign_controller.js 2.3 KB

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