| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | 'use strict';/** * 签名相关控制器 * * @author EllisRan * @date 2019/8/14 * @version */const moment = require('moment');const path = require('path');const sendToWormhole = require('stream-wormhole');const fs = require('fs');module.exports = app => {    class SignController extends app.BaseController {        /**         * 电子签名页面         *         * @param {Object} ctx - egg全局变量         * @return {void}         */        async index(ctx) {            const renderData = {                error: false,            };            try {                const userinfo = await ctx.service.projectAccount.getDataById(ctx.query.user_id);                if (userinfo && userinfo.session_token && userinfo.session_token === ctx.query.app_token) {                    renderData.id = userinfo.id;                    renderData.name = userinfo.name;                    renderData.from = ctx.query.from ? ctx.query.from : '';                    // renderData.role = userinfo.role;                } else {                    // throw '参数有误, 无法访问本页';                    throw 'token已更新,请重新登录并再次扫码。';                }            } catch (error) {                console.log(error);                renderData.error = true;            }            await ctx.render('sign/info.ejs', renderData);        }        /**         * 保存签名         *         * @param {Object} ctx - egg全局变量         * @return {void}         */        async save(ctx) {            try {                if (ctx.request.body && ctx.request.body.id) {                    const signData = await ctx.service.netcasign.getDataByCondition({ uid: ctx.request.body.id });                    if (!signData) {                        throw '当前用户不存在绑定证书';                    }                    const result = await ctx.service.netcasign.save({ sign_base64: ctx.request.body.sign_base64 }, signData.id);                    if (result) {                        ctx.body = { err: 0, msg: '' };                    } else {                        throw '添加数据库失败';                    }                } else {                    const stream = await ctx.getFileStream({ requireFile: false });                    const create_time = Date.parse(new Date()) / 1000;                    const dirName = 'app/public/upload/sign/';                    const fileName = moment().format('YYYYMMDD') + '_sign_' + create_time + '.png';                    await ctx.helper.saveStreamFile(stream, path.join(this.app.baseDir, dirName, fileName));                    await sendToWormhole(stream);                    const result = await ctx.service.projectAccount.update({ sign_path: fileName }, { id: stream.fields.id });                    if (result) {                        ctx.body = { err: 0, msg: '' };                    } else {                        throw '添加数据库失败';                    }                }            } catch (err) {                this.log(err);                ctx.body = { err: 1, msg: err.toString() };            }        }    }    return SignController;};
 |