| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 | /** * 用户数据结构 * * @author CaiAoLin * @date 2017/6/28 * @version */let mongoose = require("mongoose");let Schema = mongoose.Schema;// 表名let collectionName = 'user';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 启用/关闭    deadline: {        type:String,        default: '',    },    lock: { // 锁信息 1:借出;2:销售;        type: Number,        default: 0    }}, { _id: false })const userdList = mongoose.Schema({    compilationId: String}, {_id: false});// 表结构let schema = {    ssoId: {        type: Number,        unique: true,    },    username: String,    email: String,    mobile: {        type: String,        // unique: true,    },    qq: {        type: String,        default: ''    },    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    },    // 最后登录时间    latest_login: {        type: Number,        default: 0    },    //最近使用编办    latest_used:String,    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    }, //最近一天的登录时长累计    is_cld: {        type: Number,        default: 0, // 0为普通用户,时间戳代表CLD剔除用户并按时间戳排序    },};mongoose.model(collectionName, new Schema(schema, {versionKey: false}));
 |