user_model.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. /**
  2. * 前台用户相关数据模型
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/6/12
  6. * @version
  7. */
  8. import mongoose from "mongoose";
  9. import Moment from "moment";
  10. import BaseModel from "../../common/base/base_model";
  11. class UserModel extends BaseModel {
  12. /**
  13. * 企业所在地区
  14. *
  15. * @var {object}
  16. */
  17. province = ['北京', '天津', '河北', '山西', '内蒙古', '辽宁', '吉林', '黑龙江', '上海', '江苏', '浙江', '安徽',
  18. '福建', '江西', '山东', '河南', '湖北', '湖南', '广东', '广西', '海南', '重庆', '四川', '贵州', '云南', '西藏',
  19. '陕西', '甘肃', '青海', '宁夏', '新疆', '台湾', '香港', '澳门',];
  20. /**
  21. * 企业类型
  22. *
  23. * @var
  24. */
  25. companyType = ['建设单位', '设计单位', '施工单位', '监理单位', '审核单位', '咨询公司', '招标代理', '住建部', '财政', '审计',
  26. '造价管理站', '学校', '个人', '其他'];
  27. /**
  28. * 企业规模
  29. *
  30. * @var
  31. */
  32. companyScale = ['1-50', '50-100', '100-500', '500+'];
  33. /**
  34. * 最近天数
  35. *
  36. * @var
  37. */
  38. dayMsg = ['所有', '最近24小时', '最近3天', '最近7天', '最近30天'];
  39. /**
  40. * 构造函数
  41. *
  42. * @return {void}
  43. */
  44. constructor() {
  45. let parent = super();
  46. parent.model = mongoose.model('users');
  47. parent.init();
  48. }
  49. /**
  50. * 获取用户信息
  51. *
  52. * @param {object} condition
  53. * @param {number} page
  54. * @param {Number} pageSize
  55. * @return {promise}
  56. */
  57. async getByID(condition) {
  58. let user = await this.db.findOne(condition);
  59. //企业所在省份、类型、规模等转换
  60. if(this.isDef(user.province)) user._doc.province = this.province[user.province];
  61. if(this.isDef(user.company_type)) user._doc.company_type = this.companyType[user.company_type];
  62. if(this.isDef(user.company_scale)) user._doc.company_scale = this.companyScale[user.company_scale];
  63. if(this.isDef(user.create_time)) user._doc.create_time = Moment(user.create_time).format('YYYY-MM-DD HH:mm:ss');
  64. if(this.isDef(user.last_login)) user._doc.last_login = Moment(user.last_login).format('YYYY-MM-DD HH:mm:ss');
  65. return user;
  66. }
  67. /**
  68. * 获取列表
  69. *
  70. * @param {object} condition
  71. * @param {number} page
  72. * @param {Number} pageSize
  73. * @return {promise}
  74. */
  75. async getList(condition = null, page = 1, pageSize = 30) {
  76. page = parseInt(page);
  77. page = page <= 1 ? 1 : page;
  78. let option = {pageSize: pageSize, offset: parseInt((page - 1) * pageSize)};
  79. let userList = await this.db.find(condition, null, option);
  80. userList = userList.length > 0 ? userList : [];
  81. return userList;
  82. }
  83. /**
  84. * 获取过滤条件
  85. *
  86. * @return {Object}
  87. */
  88. getFilterCondition(request) {
  89. let condition = {};
  90. let regtime = request.query.regtime;
  91. regtime = regtime !== '' && regtime !== undefined ? parseInt(regtime) : 0;
  92. if (regtime !== 0) {
  93. condition.create_time = this.getTimestamp(regtime);
  94. }
  95. let version = request.query.version;
  96. if(version !== '' && version !== undefined) {
  97. condition.version = version;
  98. }
  99. // 已升级费用定额
  100. let upGrade = request.query.upGrade;
  101. if(upGrade !== '' && upGrade !== undefined){
  102. condition.upgrade_list = {"$elemMatch":{"compilationID":upGrade,"isUpgrade":true}};
  103. }
  104. let keyword = request.query.keyword;
  105. if (keyword !== '' && keyword !== undefined) {
  106. condition.$or = [{real_name : {$regex: keyword}},{email : {$regex: keyword}},{mobile : {$regex: keyword}},{company : {$regex: keyword}}];
  107. }
  108. return condition;
  109. }
  110. /**
  111. * 获取时间戳区间
  112. *
  113. * @return {Object}
  114. */
  115. getTimestamp(type) {
  116. let startTime = '';
  117. switch (type) {
  118. case 1 :
  119. startTime = Date.parse(new Date())-86400*1000;
  120. break;
  121. case 2 :
  122. startTime = Date.parse(new Date())-86400*1000*3;
  123. break;
  124. case 3 :
  125. startTime = Date.parse(new Date())-86400*1000*7;
  126. break;
  127. case 4 :
  128. startTime = Date.parse(new Date())-86400*1000*30;
  129. break;
  130. default :
  131. break;
  132. }
  133. let endTime = Date.parse(new Date());
  134. return startTime === '' ? '' : {'$gte': startTime, '$lt': endTime};
  135. }
  136. /**
  137. * 获取daymsg
  138. *
  139. */
  140. getDayMsg(index){
  141. return this.dayMsg[index];
  142. }
  143. }
  144. export default UserModel;