浏览代码

Merge branch 'master' of http://192.168.1.41:3000/SmartCost/YangHuOperation

TonyKang 4 年之前
父节点
当前提交
88ea88773a

+ 85 - 27
modules/all_models/user.js

@@ -1,50 +1,85 @@
 /**
- * 用户数据模型
+ * 用户数据结构
  *
  * @author CaiAoLin
- * @date 2017/7/20
+ * @date 2017/6/28
  * @version
  */
-
-import mongoose from "mongoose";
-
+let mongoose = require("mongoose");
 let Schema = mongoose.Schema;
+
+// 表名
 let collectionName = 'users';
+
+const invalidSchema = new Schema({
+    invalid: Boolean,
+    invalidDate: String,
+    invalidBy: String   //管理者名
+});
+
+const versionSchema = new Schema({
+    compilationId: String,
+    activateCode: String,
+    activatedDate: String,
+    activatedBy: String,
+    invalidInfo: [invalidSchema]
+});
+
 let upgrade = mongoose.Schema({
     compilationID:String,//编办ID
     upgrade_time:Number,
     isUpgrade:Boolean,
-    remark:String,//描述:广东办刘飞 2018-06-17 启用/关闭
+    remark:String, //描述:广东办刘飞 2018-06-17 启用/关闭
     deadline: {
         type:String,
         default: '',
     },
+    lock: { // 锁信息 1:借出(借用);2:销售(购买);
+        type: Number,
+        default: 0,
+    }
 }, { _id: false })
 
+const userdList = mongoose.Schema({
+    compilationId: String
+}, {_id: false});
 
-let modelSchema = {
-    // 用户名
+// 表结构
+let schema = {
+    ssoId: {
+        type: Number,
+        unique: true
+    },
     username: String,
-    // 电子邮件
     email: String,
-    // 手机号码
-    mobile: String,
+    mobile: {
+        type: String,
+        // unique: true
+    },
     qq: {
         type: String,
         default: ''
     },
-    // 真实姓名
-    real_name: String,
-    // 公司
-    company: String,
-    // 省份
-    province: Number,
-    // 公司类型
-    company_type: {
+    real_name: {
+        type: String,
+        default: ''
+    },
+    company: {
+        type: String,
+        default: ''
+    },
+    province: {
         type: Number,
         default: -1
     },
-    // 公司规模
+    version: {
+        type: [versionSchema],
+        default: []
+    },
+    company_type: {
+        type: Number,
+        default: -1,
+    },
     company_scale: {
         type: Number,
         default: -1
@@ -56,24 +91,47 @@ let modelSchema = {
     },
     //最近使用编办
     latest_used:String,
-    // 创建时间
-    create_time: {
-        type: Number,
-        default: 0
-    },
+    create_time: Number,
     upgrade_list:[upgrade],
     user_type:{
         type:String,
         default:'normal'//  normal : 普通用户,test:测试用户
     },
+    //使用过的费用定额,主要目的拷贝用户在该费用定额下的一些数据模板 eg:用户第一次进入该费用定额的补充定额库时,拷贝补充定额的章节树
+    used_list: {
+        type: [userdList],
+        default: []
+    },
+    // 联系人
+    contacts: {
+        type: Array,
+        default: []
+    },
+    // 是否邮箱已通过验证
+    isUserActive: Number,
+    // 是否只允许短信登录
+    isSmsLogin: {
+        type: Number,
+        default: 0
+    },
+    // 登录异常短信通知
+    isLoginValid: {
+        type: Number,
+        default: 0
+    },
+    welcomeShowTime:String,
+    token: String,
     online_times: {
         type: Number,
         default: 0
     }, //最近一天的登录时长累计
+    all_online_times: {//所有登录时长累计
+        type: Number,
+        default: 0
+    },
     is_cld: {
         type: Number,
         default: 0, // 0为普通用户,时间戳代表CLD剔除用户并按时间戳排序
     },
 };
-mongoose.model(collectionName, new Schema(modelSchema, {versionKey: false, collection: collectionName}));
-
+mongoose.model(collectionName, new Schema(schema, {versionKey: false}));

+ 376 - 0
modules/users/controllers/cld_controller.js

@@ -0,0 +1,376 @@
+'use strict';
+
+/**
+ * CLD接口相关控制器
+ *
+ * @author EllisRan.
+ * @date 2018/9/25
+ * @version
+ */
+
+// const CLDModel = require("../models/cld_model");
+import CLDModel from "../models/cld_model";
+import UserModel from "../models/user_model";
+import CompilationModel from "../models/compilation_model";
+// const UserModel = require("../models/user_model");
+// const CompilationModel = require("../models/compilation_model");
+let online_facade = require('../facade/online_facade')
+const SMS = require('../models/sms');
+
+class CLDController {
+
+    /**
+     * 获取cld办事处人员信息
+     *
+     * @param request
+     * @param reponse
+     * @return {Promise.<void>}
+     */
+    async getCategoryStaff(request, response) {
+        const zongBuCategoryID = 12;
+        let category = request.query.category;
+        if (!category || category == -1) {
+            category = request.session.sessionCompilation && request.session.sessionCompilation.categoryID ? request.session.sessionCompilation.categoryID : zongBuCategoryID;
+            console.log(category);
+        }
+        try {
+            let cldModel = new CLDModel();
+            let result = await cldModel.getCategoryStaff(category);
+            response.json({error: 0, msg: 'success', data: JSON.parse(result)});
+        } catch (err) {
+            response.json({error: 1, msg: err});
+        }
+    }
+
+    /**
+     * cld 获取建筑用户和编办接口
+     *
+     * @param request
+     * @param response
+     * @return {Promise.<void>}
+     */
+    async getUsersAndCompilationList(request, response) {
+        let mobile = request.query.mobile;
+        let ssoID = request.query.ssoID;
+        try {
+            //获取用户信息
+            if (mobile === undefined && ssoID === undefined) {
+                throw '传参有误';
+            }
+            let userModel = new UserModel();
+            let userData = '';
+            if (mobile !== undefined) {
+                userData = await userModel.findDataByMobile(mobile);
+            } else {
+                userData = await userModel.findDataBySsoId(ssoID);
+            }
+            if (userData === null || userData === '') {
+                throw '不存在该建筑用户';
+            }
+            let userList = [userData];
+            await online_facade.setOnlineTimes(userList, {});
+            userData = JSON.parse(JSON.stringify(userData));
+
+            userData.company_scale = userData.company_scale === null || userData.company_scale === undefined || userData.company_scale === -1 ? '' : userModel.companyScale[userData.company_scale] + '人';
+            userData.company_type = userData.company_type === null || userData.company_type === undefined || userData.company_type === -1 ? '' : userModel.companyType[userData.company_type];
+            userData.province = userModel.province[userData.province];
+
+            let date = new Date(userData.create_time);
+            userData.create_time = date.getFullYear() + '年' +
+                (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '月' +
+                (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + '日';
+
+            //获取编办列表
+            let compilationModel = new CompilationModel();
+            let compilationList = JSON.parse(JSON.stringify(await compilationModel.getList()));
+            if (userData.upgrade_list !== undefined) {
+                let userUpgradeList = userData.upgrade_list;
+                for (let i in userUpgradeList) {
+                    let oneCompilationIndex = await compilationList.findIndex(function (item) {
+                        return item._id === userUpgradeList[i].compilationID;
+                    });
+                    if (oneCompilationIndex !== -1) {
+                        compilationList[oneCompilationIndex].isUpgrade = userUpgradeList[i].isUpgrade;
+                        compilationList[oneCompilationIndex].deadline = userUpgradeList[i].deadline;
+                        compilationList[oneCompilationIndex].lock = userUpgradeList[i].lock;
+                    }
+                }
+            }
+            response.json({error: 0, msg: 'success', data: { userInfo: userData, compilationList: compilationList }});
+        } catch (err) {
+            response.json({error: 1, msg: err});
+        }
+    }
+
+    /**
+     * 设置用户编办专业版
+     *
+     * @param request
+     * @param response
+     * @return {Promise.<void>}
+     */
+    async setUsersUpgrade(request, response) {
+        let ssoID = request.body.ssoId;
+        let compilationID = request.body.cid;
+        let deadline = request.body.deadline || '';
+        let status = parseInt(request.body.status); // 1.升级、2.降级、3.续期
+        let smssend = parseInt(request.body.smssend) || 0;
+        let lock = parseInt(request.body.lock) || 0;// 0.默认、1.借出(借用)、2.销售(购买)、3.赠送(借用)
+        try {
+
+            let userModel = new UserModel();
+
+            let userData = await userModel.findDataBySsoId(ssoID);
+
+            let compilationModel = new CompilationModel();
+
+            let compilationData = await compilationModel.getCompilationById(compilationID);
+
+            if (compilationData === null || compilationData === undefined) {
+                throw '不存在该编办或者编办未发布';
+            }
+
+            let upgrade_list = userData.upgrade_list !== undefined ? JSON.parse(JSON.stringify(userData.upgrade_list)) : [];
+
+            let upgradeIndex = upgrade_list.findIndex(function (item) {
+                return item.compilationID === compilationID
+            });
+            let upgradeInfo = {
+                compilationID:compilationID,//编办ID
+                upgrade_time:new Date().getTime(),
+                isUpgrade: status !== 2,
+                remark: '',
+                deadline: deadline,
+                lock: lock,
+            };
+
+            if (upgradeIndex === -1) {
+                upgrade_list.push(upgradeInfo);
+            } else {
+                upgrade_list.splice(upgradeIndex, 1, upgradeInfo);
+            }
+
+            let condition = {ssoId: ssoID};
+            let result = await userModel.updateUser(condition, {upgrade_list: upgrade_list});
+
+            if (result) {
+                // 短信发送
+                if (smssend) {
+                    // 发送短信
+                    const Sms = new SMS();
+                    await Sms.sendProductMsg(userData.mobile, status, userData.real_name, compilationData.name, deadline);
+                }
+                response.json({error: 0, msg: 'success'});
+            } else {
+                throw '更新失败';
+            }
+        } catch (err) {
+            response.json({error: 1, msg: err});
+        }
+    }
+
+    /**
+     * 获取编办列表
+     *
+     * @param request
+     * @param response
+     * @return {Promise.<void>}
+     */
+    async getCompilationList (request, response) {
+        let compilationModel = new CompilationModel();
+        const compilationList = await compilationModel.getList();
+        response.json({error: 0, msg: 'success', data: compilationList});
+    }
+
+    /**
+     * 获取个人和已使用编办信息
+     * @param request
+     * @param response
+     * @returns {Promise<void>}
+     */
+    async getUsersInfo(request, response) {
+        let ssoID = request.query.ssoID;
+        try {
+            //获取用户信息
+            if (ssoID === undefined) {
+                throw '传参有误';
+            }
+            let userModel = new UserModel();
+            let userData = await userModel.findDataBySsoId(ssoID);
+            if (userData === null || userData === '') {
+                throw '不存在该建筑用户';
+            }
+            userData = JSON.parse(JSON.stringify(userData));
+
+            userData.company_scale = userData.company_scale === null || userData.company_scale === undefined ? '' : userModel.companyScale[userData.company_scale] + '人';
+            userData.company_type = userData.company_type === null || userData.company_type === undefined ? '' : userModel.companyType[userData.company_type];
+            userData.province = userModel.province[userData.province];
+
+            let date = new Date(userData.create_time);
+            userData.create_time = date.getFullYear() + '年' +
+                (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '月' +
+                (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + '日';
+            userData.all_online_times = online_facade.getTimeString(userData.all_online_times).s;
+
+            //获取编办列表
+            let compilationModel = new CompilationModel();
+            let compilationList = JSON.parse(JSON.stringify(await compilationModel.getList()));
+            if (userData.upgrade_list !== undefined) {
+                let userUpgradeList = userData.upgrade_list;
+                for (let i in userUpgradeList) {
+                    let oneCompilationIndex = await compilationList.findIndex(function (item) {
+                        return item._id === userUpgradeList[i].compilationID;
+                    });
+                    if (oneCompilationIndex !== -1) {
+                        // compilationList[oneCompilationIndex].isUpgrade = userUpgradeList[i].isUpgrade;
+                        userData.upgrade_list[i].name = compilationList[oneCompilationIndex].name;
+                        userData.upgrade_list[i].description = compilationList[oneCompilationIndex].description;
+                        userData.upgrade_list[i].categoryID = compilationList[oneCompilationIndex].categoryID;
+                    }
+                }
+            }
+            response.json({error: 0, msg: 'success', data: { userInfo: userData }});
+        } catch (err) {
+            response.json({error: 1, msg: err});
+        }
+    }
+
+    async provinceList(request, response) {
+        let userModel = new UserModel();
+        let responseData = {
+            error: 0,
+            msg: '',
+            data: userModel.province,
+        };
+        response.json(responseData);
+    }
+
+    /**
+     * 获取用户列表分页
+     * @param request
+     * @param response
+     * @returns {Promise<void>}
+     */
+    async getUserList(request, response) {
+        let userModel = new UserModel();
+        let total = 0;
+        let pageSize = 12;
+        let pageData = {};
+        let userList = [];
+        let compilationList =[];
+        let filter = request.query;
+        try {
+            //获取编办列表
+            let  compilationModel = new CompilationModel();
+            compilationList = await compilationModel.getCompilationList({_id: 1, name: 1, is_release: 1});
+            let condition = userModel.getFilterCondition(request);
+            //设置搜索普通用户:
+            condition.user_type = 'normal';
+            //设置剔除CLD用户列表不显示
+            let keyword = request.query.keyword;
+            if(keyword === undefined || keyword === '') {
+                condition.is_cld = {$in: [null, 0]};
+            }
+
+            //获取注册时间
+            let regtime = request.query.regtime;
+            if(regtime !== '' && regtime !== undefined){
+                filter.regtimeMsg = userModel.getDayMsg(regtime);
+            }
+
+            //获取注册时间
+            let loginTime = request.query.loginTime;
+            if(loginTime !== '' && loginTime !== undefined){
+                filter.loginMsg = userModel.getDayMsg(loginTime);
+            }
+
+            // 排序方式
+            let sortType = request.query.sortType !== '' && request.query.sortType !== undefined ? request.query.sortType : -1;
+
+            // 排序条件
+            let sortField = request.query.sortField;
+            let sort = {_id: sortType};
+            if (sortField !== '' && sortField !== undefined && sortField === 'latest_login') {
+                sort = {latest_login: sortType}
+            } else if(sortField !== '' && sortField !== undefined && sortField === 'online_times')  {
+                sort = {online_times: sortType}
+            }
+
+                // 获取用户总数
+            total = await userModel.count(condition);
+
+            // 分页数据
+            let page = request.query.page === undefined ? 1 : request.query.page;
+            pageSize = request.query.pageSize === undefined ? 12 : parseInt(request.query.pageSize);
+            pageData = {
+                current: page,
+                total: total,
+                queryData: response.locals.urlQuery
+            };
+            // console.log("取用户信息=========================");
+            // console.log(condition);
+            // 获取用户列表
+            userList = await userModel.getList(condition, page, pageSize, sort);
+            await online_facade.setOnlineTimes(userList,condition);
+            userList = JSON.parse(unescape(escape(JSON.stringify(userList))));
+            for (const userData of userList) {
+                userData.province = userData.province !== -1 ? userModel.province[userData.province] : '';
+            }
+            response.json({error: 0, msg: 'success', data: {
+                    userInfo: userList,
+                    pageData: pageData,
+                    compilationList:compilationList,
+                }});
+        } catch (error) {
+            response.json({error: 1, msg: error});
+        }
+    }
+
+    async getUserOnlineInfo(request, response){
+        let filter = JSON.parse(request.body.data);
+        let responseData = {
+            error: 0,
+            msg: '',
+            data: null
+        };
+        try{
+            let info = await online_facade.getOnlineInfo(filter);
+            responseData.data = info;
+        } catch (error) {
+            console.log(error);
+            responseData.error = error.code;
+            responseData.msg = error.err;
+        }
+        response.json(responseData);
+    }
+
+    async getRejectUsers(request, response) {
+        let userModel = new UserModel();
+        let total = 0;
+        let pageSize = 12;
+        let pageData = {};
+        let userList = [];
+        try {
+            const condition = {
+                user_type: 'normal',
+                is_cld: {$exists:true, $ne: 0}
+            };
+            // 获取用户总数
+            total = await userModel.count(condition);
+            // 分页数据
+            let page = request.query.page === undefined ? 1 : request.query.page;
+            pageSize = request.query.pageSize === undefined ? 12 : parseInt(request.query.pageSize);
+            userList = await userModel.getList(condition, page, pageSize, {is_cld:-1});
+            pageData = {
+                current: page,
+                total: total,
+                queryData: response.locals.urlQuery
+            };
+            response.json({error: 0, msg: 'success', data: { userList: userList, pageData: pageData }});
+        } catch (error) {
+            response.json({error: 1, msg: error});
+        }
+    }
+}
+
+module.exports = CLDController;

+ 10 - 5
modules/users/facade/online_facade.js

@@ -4,7 +4,8 @@
 
 module.exports = {
     setOnlineTimes:setOnlineTimes,
-    getOnlineInfo:getOnlineInfo
+    getOnlineInfo:getOnlineInfo,
+    getTimeString:getTimeString,
 };
 
 let mongoose = require("mongoose");
@@ -12,7 +13,7 @@ let logs_model = mongoose.model("online_logs");
 
 async function getOnlineInfo(filter) {
     let datas = [];
-    let logs = await logs_model.find(filter);
+    let logs = await logs_model.find(filter, null, {sort: {dateString: -1}});
     let less = 0;
     for(let l of logs){
         let d = getTimeString(l.online_times);
@@ -45,16 +46,20 @@ async function setOnlineTimes(userList,condition){
         ]);
         u._doc.filter = JSON.stringify(filter);
         if(result.length > 0)  u._doc.online_times = getTimeString(result[0].total).s;
+        u._doc.online_list = await this.getOnlineInfo(filter);
+        u._doc.all_online_times = getTimeString(u.all_online_times).s;
     }
 }
 
 
 function getTimeString(times) {
-    let s = "",perHour = 1000 * 60 * 60,perMin = 1000 * 60;
-    let hour = parseInt(times/perHour);
+    let s = "",perHour = 1000 * 60 * 60,perMin = 1000 * 60,perDay = 24*perHour;
+    let day = parseInt(times/perDay);
+    let hour = parseInt(parseInt(times % perDay) / perHour);
     let min = parseInt((times % perHour)/perMin);
     let less =  (times % perHour)%perMin;//不够一分钟的时间
+    if(day > 0) s = s+`${day}天`;
     if(hour > 0) s = s+`${hour}小时`;
     if(min > 0)  s= s+`${min}分钟`;
     return {s:s,less:less}
-}
+}

+ 29 - 0
modules/users/models/cld_model.js

@@ -40,6 +40,35 @@ class CLDModel {
             }
         });
     }
+
+    /**
+     * 获取办事处人员信息
+     *
+     * @param cid
+     * @return {Promise}
+     */
+    async getCategoryStaff(cid) {
+        let postData = {
+            url: this.CLDUrl + '/api/building/category/staff/' + cid,
+            encoding: 'utf8'
+        };
+        return new Promise(function (resolve, reject) {
+            try {
+                // 请求接口
+                Request.post(postData, function (err, postResponse, body) {
+                    if (err) {
+                        throw '请求错误';
+                    }
+                    if (postResponse.statusCode !== 200) {
+                        throw 'CLD通讯失败!';
+                    }
+                    resolve(body);
+                });
+            } catch (error) {
+                reject([]);
+            }
+        });
+    }
 }
 
 module.exports = CLDModel;

+ 51 - 2
modules/users/models/compilation_model.js

@@ -47,6 +47,55 @@ class CompilationModel extends BaseModel {
     }
 
     /**
+     * 获取编办列表
+     *
+     * @return {Promise}
+     */
+    async getList() {
+        // 筛选字段
+        let field = {_id: 1, name: 1, is_release: 1, description: 1, categoryID: 1};
+        let compilationData = await this.findDataByCondition({name: {$ne: ''}, is_release: true}, field, false);
+
+        return compilationData === null ? [] : compilationData;
+    }
+
+    /**
+     * 根据id获取可用的编办数据
+     *
+     * @param {String} id
+     * @return {Promise}
+     */
+    async getCompilationById(id) {
+        let condition = {_id: id, is_release: true};
+        let compilationData = await this.findDataByCondition(condition);
+        if (!compilationData  || compilationData.bill_valuation === undefined) {
+            return compilationData;
+        }
+
+        if (compilationData.bill_valuation.length > 0) {
+            let enableValuation = [];
+            for (let index in compilationData.bill_valuation) {
+                if (compilationData.bill_valuation[index].enable) {
+                    enableValuation.push(compilationData.bill_valuation[index]);
+                }
+            }
+            compilationData.bill_valuation = enableValuation;
+        }
+
+        if (compilationData.ration_valuation.length > 0) {
+            let enableValuation = [];
+            for (let index in compilationData.ration_valuation) {
+                if (compilationData.ration_valuation[index].enable) {
+                    enableValuation.push(compilationData.bill_valuation[index]);
+                }
+            }
+            compilationData.ration_valuation = enableValuation;
+        }
+
+        return compilationData;
+    }
+
+    /**
      * 设置场景
      *
      * @param {string} scene
@@ -283,7 +332,7 @@ class CompilationModel extends BaseModel {
             if (compilationData.suggestion_valuation.length <= 0 &&
                 compilationData.feasibility_valuation.length <= 0 &&
                 compilationData.rough_valuation.length <= 0 &&
-                compilationData.bill_valuation.length <= 0 && 
+                compilationData.bill_valuation.length <= 0 &&
                 compilationData.ration_valuation.length <= 0) {
                 throw '至少需要一个计价规则';
             }
@@ -395,4 +444,4 @@ class CompilationModel extends BaseModel {
 
 }
 
-export default CompilationModel;
+export default CompilationModel;

+ 95 - 1
modules/users/models/user_model.js

@@ -147,9 +147,23 @@ class UserModel extends BaseModel {
             condition.latest_used = latestUsed;
         }
 
+        // 最近登录时长
+        let onlineTimes = request.query.onlineTimes;
+        onlineTimes = onlineTimes !== '' && onlineTimes !== undefined ? parseInt(onlineTimes) : 0;
+        if (onlineTimes !== 0) {
+            condition.online_times = this.getOnlineTimestamp(onlineTimes);
+        }
+
+        // 企业所在地区
+        let province = request.query.province;
+        province = province !== '' && province !== undefined ? parseInt(province) - 1 : -1;
+        if (province !== -1) {
+            condition.province = province;
+        }
+
         let keyword = request.query.keyword;
         if (keyword !== '' && keyword !== undefined) {
-            condition.$or = [{real_name : {$regex: keyword}},{email : {$regex: keyword}},{mobile : {$regex: keyword}},{company : {$regex: keyword}}];
+            condition.$or = [{real_name : {$regex: keyword}},{email : {$regex: keyword}},{mobile : {$regex: keyword}},{qq : {$regex: keyword}},{company : {$regex: keyword}}];
         }
 
         return condition;
@@ -183,6 +197,32 @@ class UserModel extends BaseModel {
     }
 
     /**
+     * 获取时间戳区间
+     *
+     * @return {Object}
+     */
+    getOnlineTimestamp(type) {
+        let startTime = 0;
+        switch (type) {
+            case 1 :
+                startTime = 1800*1000;
+                break;
+            case 2 :
+                startTime = 3600*1000;
+                break;
+            case 3 :
+                startTime = 3600*1000*2;
+                break;
+            case 4 :
+                startTime = 3600*1000*3;
+                break;
+            default :
+                break;
+        }
+        return startTime === 0 ? '' : {'$gte': startTime};
+    }
+
+    /**
      * 获取daymsg
      *
      */
@@ -236,6 +276,60 @@ class UserModel extends BaseModel {
         }
         return "success";
     }
+
+    /**
+     * 根据用户名查找数据
+     *
+     * @param {string} username
+     * @return {object}
+     */
+    async findDataByName(username) {
+        return await this.db.findOne({username: username});
+    }
+
+    /**
+     * 根据ssoID查找数据
+     *
+     * @param {string} ssoId
+     * @return {object}
+     */
+    async findDataBySsoId(ssoId) {
+        return await this.db.findOne({ssoId: ssoId});
+    }
+
+    /**
+     * 根据手机号查找数据
+     *
+     * @param {string} mobile
+     * @return {object}
+     */
+    async findDataByMobile(mobile) {
+        return await this.db.findOne({mobile: mobile});
+    }
+
+    /**
+     * 根据userId查找数据
+     *
+     * @param {string} ssoId
+     * @return {object}
+     */
+    async findDataById(id, fields) {
+        const objId = mongoose.Types.ObjectId(id);
+        return fields ? await this.db.findOne({_id: objId}, fields) : await this.db.findOne({_id: objId});
+    }
+
+    /**
+     * 更新用户数据
+     *
+     * @param {object} updateData
+     * @return {Promise}
+     */
+    async updateUser(condition, updateData) {
+        if (Object.keys(condition).length <= 0 || Object.keys(updateData).length <= 0) {
+            return null;
+        }
+        return await this.db.update(condition, updateData);
+    }
 }
 
 export default UserModel;

+ 38 - 0
modules/users/routes/cld_route.js

@@ -0,0 +1,38 @@
+'use strict';
+
+/**
+ * CLD接口路由
+ *
+ * @author EllisRan.
+ * @date 2018/9/25
+ * @version
+ */
+
+const express = require("express");
+const CLDController = require("../controllers/cld_controller");
+
+
+module.exports = function (app) {
+    let router = express.Router();
+    let cldController = new CLDController();
+
+    router.get('/getCategoryStaff', cldController.getCategoryStaff);
+
+    router.get('/getUsersAndCompilation', cldController.getUsersAndCompilationList);
+
+    router.get('/getCompilationList', cldController.getCompilationList);
+
+    router.post('/setUserUpgrade', cldController.setUsersUpgrade);
+
+    router.get('/getUsersInfo', cldController.getUsersInfo);
+
+    router.get('/getUserList', cldController.getUserList);
+
+    router.post('/getUserOnlineInfo', cldController.getUserOnlineInfo);
+
+    router.get('/getRejectUsers', cldController.getRejectUsers);
+
+    router.get('/provinceList', cldController.provinceList);
+
+    app.use('/cld',router)
+};

+ 12 - 8
operation.js

@@ -70,16 +70,20 @@ app.use(session({
 
 app.use(function (req, res, next) {
     let referer = '';
-    if (!/^\/login/.test(req.originalUrl) && !req.session.managerData) {
-        if (req.headers["x-requested-with"] != null
-            && req.headers["x-requested-with"] == "XMLHttpRequest"
-            && req.url != "/login") {
-            return res.json({ret_code: 99, ret_msg: '登录信息失效,请您重新登录'});
-        } else{
-            return res.redirect('/login');
+    if(/\.map|\.ico$/.test(req.originalUrl) || /^\/cld\/(?!getCategoryStaff)/.test(req.originalUrl)) {
+        next();
+    } else {
+        if (!/^\/login/.test(req.originalUrl) && !req.session.managerData) {
+            if (req.headers["x-requested-with"] != null
+                && req.headers["x-requested-with"] == "XMLHttpRequest"
+                && req.url != "/login") {
+                return res.json({ret_code: 99, ret_msg: '登录信息失效,请您重新登录'});
+            } else {
+                return res.redirect('/login');
+            }
         }
+        next();
     }
-    next();
 });
 
 //加载路由文件