| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | /** * Created by zhang on 2020/1/8. */module.exports={    rationNumberChecking,    tenderNumberChecking,    stateChecking,};const mongoose = require("mongoose");const rationModel = mongoose.model("ration");const pmFacade = require('../../pm/facade/pm_facade');const online_logs = require('../../../logs/online_logs');import UserModel from '../../../modules/users/models/user_model';async function rationNumberChecking(req, res, next) {    if(req.session.systemSetting){        let type = req.session.compilationVersion.indexOf("免费") == -1?"professional":"normal";        let data = req.body.data;        if(typeof data === 'object'){            data = JSON.stringify(data);        }        data = JSON.parse(data);        let projectID = data.projectID;        let no = await rationModel.find({projectID:projectID}).count();        if(no >= req.session.systemSetting[type].ration){            let  result = {error:1,message:"您套用定额个数超限,请联系我们的客服人员。"};            return  res.json(result);        }    }    next();}async function tenderNumberChecking(req, res, next) {    const data = JSON.parse(req.body.data);    const tenderCount = data.tenderCount;    if (tenderCount) {        const tenderOverrun = await pmFacade.isTenderOverrun(tenderCount, req.session);        if (tenderOverrun) {            return res.json({                error: 1,                message: '您创建的项目个数超限,请联系我们的客服人员,或者导出建设项目保存到本地备份,删除云上数据。'            });        }    }    next();}function isAjax(req) {    return req.headers['x-requested-with'] === 'XMLHttpRequest';}// 登录状态全局判断async function stateChecking(req, res, next) {    const url = req.originalUrl;    if (url=="\/"|| /^\/login/.test(url) || /\.map|\.ico$/.test(url) || /^\/sms/.test(url) || /^\/cld/.test(url) || /^\/captcha/.test(url)) {        // 如果是登录页面或短信接口或cld接口则忽略判断数据        next();    } else {        try {            if (req.query.ssoID !== undefined && req.query.ssoID !== null && req.query.token !== undefined && req.query.token !== null) {                delete req.session.sessionUser;                delete req.session.sessionCompilation;                return res.redirect('/login' + url);            } else {                // 判断session                const sessionUser = req.session.sessionUser;                if (!sessionUser) {                    //处理 ajax 请求 session 过期问题                    if (isAjax(req)) {                        return res.json({ret_code: 99, ret_msg: '登录信息失效,请您重新登录'});                    } else {                        throw 'session error';                    }                } else {                    const userModel = new UserModel();                    const isValidToken = await userModel.checkToken(sessionUser.id, sessionUser.token);                    if (!isValidToken) {                        delete req.session.sessionUser;                        delete req.session.sessionCompilation;                        if (isAjax(req)) {                            return res.json({ ret_code: 99, ret_msg: '' });                        } else {                            throw 'session token invalid';                        }                    }                }                res.locals.sessionUser = sessionUser;            }        } catch (error) {            // 最后一个页面存入session            req.session.lastPage = url;            return res.redirect('/login');        }        next();        await online_logs.saveOnlineTime(req);//记录登录时长    }}
 |