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');
- const UserModel = require('../../../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\/(?!getCategoryStaff)/.test(url) || /^\/captcha/.test(url) || /^\/wap/.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);//记录登录时长
- }
- }
|