user.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /**
  2. * 用户数据结构
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/6/28
  6. * @version
  7. */
  8. let mongoose = require("mongoose");
  9. let Schema = mongoose.Schema;
  10. // 表名
  11. let collectionName = 'user';
  12. const invalidSchema = new Schema({
  13. invalid: Boolean,
  14. invalidDate: String,
  15. invalidBy: String //管理者名
  16. });
  17. const versionSchema = new Schema({
  18. compilationId: String,
  19. activateCode: String,
  20. activatedDate: String,
  21. activatedBy: String,
  22. invalidInfo: [invalidSchema]
  23. });
  24. let upgrade = mongoose.Schema({
  25. compilationID:String,// 编办ID
  26. upgrade_time:Number,
  27. isUpgrade:Boolean,
  28. remark:String,// 描述:广东办刘飞 2018-06-17 启用/关闭
  29. deadline: String,
  30. }, { _id: false })
  31. const userdList = mongoose.Schema({
  32. compilationId: String
  33. }, {_id: false});
  34. // 表结构
  35. let schema = {
  36. ssoId: {
  37. type: Number,
  38. unique: true,
  39. },
  40. username: String,
  41. email: String,
  42. mobile: {
  43. type: String,
  44. // unique: true,
  45. },
  46. qq: {
  47. type: String,
  48. default: ''
  49. },
  50. real_name: {
  51. type: String,
  52. default: ''
  53. },
  54. company: {
  55. type: String,
  56. default: ''
  57. },
  58. province: {
  59. type: Number,
  60. default: -1
  61. },
  62. version: {
  63. type: [versionSchema],
  64. default: []
  65. },
  66. company_type: {
  67. type: Number,
  68. default: -1,
  69. },
  70. company_scale: {
  71. type: Number,
  72. default: -1
  73. },
  74. // 最后登录时间
  75. latest_login: {
  76. type: Number,
  77. default: 0
  78. },
  79. //最近使用编办
  80. latest_used:String,
  81. create_time: Number,
  82. upgrade_list:[upgrade],
  83. user_type:{
  84. type:String,
  85. default:'normal'// normal : 普通用户,test:测试用户
  86. },
  87. //使用过的费用定额,主要目的拷贝用户在该费用定额下的一些数据模板 eg:用户第一次进入该费用定额的补充定额库时,拷贝补充定额的章节树
  88. used_list: {
  89. type: [userdList],
  90. default: []
  91. },
  92. // 联系人
  93. contacts: {
  94. type: Array,
  95. default: []
  96. },
  97. // 是否邮箱已通过验证
  98. isUserActive: Number,
  99. // 是否只允许短信登录
  100. isSmsLogin: {
  101. type: Number,
  102. default: 0
  103. },
  104. // 登录异常短信通知
  105. isLoginValid: {
  106. type: Number,
  107. default: 0
  108. },
  109. welcomeShowTime:String,
  110. token: String
  111. };
  112. mongoose.model(collectionName, new Schema(schema, {versionKey: false}));