/**
 * 用户数据模型
 *
 * @author CaiAoLin
 * @date 2017/7/20
 * @version
 */

import mongoose from "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 启用/关闭
    deadline: {
        type:String,
        default: '',
    },
    lock: { // 锁信息 1：借出；2：销售；
        type: Number,
        default: 0
    },
}, { _id: false })

const userdList = mongoose.Schema({
    compilationId: String
}, {_id: false});


let modelSchema = {
    ssoId: {
        type: Number,
        unique: true,
    },
    // 用户名
    username: String,
    // 电子邮件
    email: String,
    // 手机号码
    mobile: String,
    // qq号码
    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: {
        type: Number,
        default: 0
    },
    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}));

