|
@@ -12,6 +12,13 @@ let Request = require("request");
|
|
class UserModel {
|
|
class UserModel {
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
+ * 表名
|
|
|
|
+ *
|
|
|
|
+ * @var {string}
|
|
|
|
+ */
|
|
|
|
+ collectionName = 'user';
|
|
|
|
+
|
|
|
|
+ /**
|
|
* 模型
|
|
* 模型
|
|
*
|
|
*
|
|
* @var {object}
|
|
* @var {object}
|
|
@@ -19,36 +26,109 @@ class UserModel {
|
|
model = null;
|
|
model = null;
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
+ * db句柄
|
|
|
|
+ *
|
|
|
|
+ * @var {object}
|
|
|
|
+ */
|
|
|
|
+ db = null;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 最后选定的数据结构
|
|
|
|
+ *
|
|
|
|
+ * @var {object}
|
|
|
|
+ */
|
|
|
|
+ schema = null;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 企业所在地区
|
|
|
|
+ *
|
|
|
|
+ * @var {object}
|
|
|
|
+ */
|
|
|
|
+ province = ['广东省', '北京市'];
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 企业类型
|
|
|
|
+ *
|
|
|
|
+ * @var
|
|
|
|
+ */
|
|
|
|
+ companyType = ['设计', '施工'];
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 企业类型
|
|
|
|
+ *
|
|
|
|
+ * @var
|
|
|
|
+ */
|
|
|
|
+ companyScale = ['1-20', '20-50', '50-100', '100+'];
|
|
|
|
+
|
|
|
|
+ /**
|
|
* 默认结构
|
|
* 默认结构
|
|
*
|
|
*
|
|
* @var {object}
|
|
* @var {object}
|
|
*/
|
|
*/
|
|
defaultSchema = {
|
|
defaultSchema = {
|
|
|
|
+ username: String,
|
|
|
|
+ email: String,
|
|
|
|
+ mobile: String,
|
|
|
|
+ real_name: String,
|
|
|
|
+ company: String,
|
|
|
|
+ province: String,
|
|
|
|
+ area: Number,
|
|
|
|
+ company_type: Number,
|
|
|
|
+ company_scale: Number,
|
|
|
|
+ last_login: Number,
|
|
|
|
+ create_time: Number
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 登录验证结构
|
|
|
|
+ *
|
|
|
|
+ * @var {object}
|
|
|
|
+ */
|
|
|
|
+ loginSchema = {
|
|
username: {
|
|
username: {
|
|
type: String,
|
|
type: String,
|
|
|
|
+ required: true
|
|
},
|
|
},
|
|
email: {
|
|
email: {
|
|
type: String,
|
|
type: String,
|
|
|
|
+ required: true
|
|
},
|
|
},
|
|
mobile: {
|
|
mobile: {
|
|
type: String,
|
|
type: String,
|
|
- },
|
|
|
|
|
|
+ required: true,
|
|
|
|
+ validate: {
|
|
|
|
+ validator: function(v) {
|
|
|
|
+ return /^1([34578]\d)\d{8}$/.test(v);
|
|
|
|
+ },
|
|
|
|
+ message: '{VALUE} is not a valid phone number!'
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 保存用户详情结构
|
|
|
|
+ *
|
|
|
|
+ * @var {object}
|
|
|
|
+ */
|
|
|
|
+ saveInfoSchema = {
|
|
real_name: {
|
|
real_name: {
|
|
type: String,
|
|
type: String,
|
|
|
|
+ required: true
|
|
},
|
|
},
|
|
company: {
|
|
company: {
|
|
type: String,
|
|
type: String,
|
|
|
|
+ required: true
|
|
},
|
|
},
|
|
province: {
|
|
province: {
|
|
type: String,
|
|
type: String,
|
|
|
|
+ required: true
|
|
},
|
|
},
|
|
area: {
|
|
area: {
|
|
type: Number,
|
|
type: Number,
|
|
|
|
+ required: true
|
|
},
|
|
},
|
|
company_type: Number,
|
|
company_type: Number,
|
|
company_scale: Number,
|
|
company_scale: Number,
|
|
- last_login: Number,
|
|
|
|
- create_time: Number
|
|
|
|
};
|
|
};
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -57,33 +137,11 @@ class UserModel {
|
|
* @return {void}
|
|
* @return {void}
|
|
*/
|
|
*/
|
|
constructor() {
|
|
constructor() {
|
|
- let umDB = dbm.getCfgConnection('scConstruct');
|
|
|
|
- let usersSchema = new mongoose.Schema(this.defaultSchema);
|
|
|
|
- this.model = umDB.model('users', usersSchema);
|
|
|
|
|
|
+ this.db = dbm.getCfgConnection('scConstruct');
|
|
|
|
+ this.schema = new mongoose.Schema(this.defaultSchema);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 企业所在地区
|
|
|
|
- *
|
|
|
|
- * @var {object}
|
|
|
|
- */
|
|
|
|
- province = ['广东省', '北京市'];
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 企业类型
|
|
|
|
- *
|
|
|
|
- * @var
|
|
|
|
- */
|
|
|
|
- companyType = ['设计', '施工'];
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 企业类型
|
|
|
|
- *
|
|
|
|
- * @var
|
|
|
|
- */
|
|
|
|
- companyScale = ['1-20', '20-50', '50-100', '100+'];
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
* 根据用户名密码调用SSO接口获取信息
|
|
* 根据用户名密码调用SSO接口获取信息
|
|
*
|
|
*
|
|
* @param {string} username
|
|
* @param {string} username
|
|
@@ -127,11 +185,13 @@ class UserModel {
|
|
let info = false;
|
|
let info = false;
|
|
if (userDataFromDb.length <= 0) {
|
|
if (userDataFromDb.length <= 0) {
|
|
// 不存在用户则入库
|
|
// 不存在用户则入库
|
|
|
|
+ this.setScene('login');
|
|
result = await this.addUser(userData);
|
|
result = await this.addUser(userData);
|
|
} else {
|
|
} else {
|
|
// 存在则更新用户信息
|
|
// 存在则更新用户信息
|
|
let updateData = {last_login: new Date().getTime()};
|
|
let updateData = {last_login: new Date().getTime()};
|
|
let condition = {email: userData.email};
|
|
let condition = {email: userData.email};
|
|
|
|
+ this.setScene('updateTime');
|
|
result = await this.updateUser(condition, updateData);
|
|
result = await this.updateUser(condition, updateData);
|
|
|
|
|
|
userDataFromDb = userDataFromDb[0];
|
|
userDataFromDb = userDataFromDb[0];
|
|
@@ -143,18 +203,41 @@ class UserModel {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
+ * 选择场景
|
|
|
|
+ *
|
|
|
|
+ * @param {string} scene
|
|
|
|
+ */
|
|
|
|
+ setScene(scene = '') {
|
|
|
|
+ let schema = {};
|
|
|
|
+ switch (scene) {
|
|
|
|
+ case 'saveInfo':
|
|
|
|
+ schema = this.saveInfoSchema;
|
|
|
|
+ break;
|
|
|
|
+ case 'updateTime':
|
|
|
|
+ schema = {last_login: Number, real_name: String};
|
|
|
|
+ break;
|
|
|
|
+ case 'login':
|
|
|
|
+ schema = this.loginSchema;
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ schema = this.defaultSchema;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ this.schema = new mongoose.Schema(schema);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
* 根据用户名查找数据
|
|
* 根据用户名查找数据
|
|
*
|
|
*
|
|
* @param {string} username
|
|
* @param {string} username
|
|
* @return {object}
|
|
* @return {object}
|
|
*/
|
|
*/
|
|
findDataByName(username) {
|
|
findDataByName(username) {
|
|
- let self = this;
|
|
|
|
|
|
+ let userModel = this.db.model(this.collectionName, this.schema);
|
|
return new Promise(function (resolve, reject) {
|
|
return new Promise(function (resolve, reject) {
|
|
- self.model.find({username: username}, function (error, data) {
|
|
|
|
|
|
+ userModel.find({username: username}, function (error, data) {
|
|
if (error) {
|
|
if (error) {
|
|
- console.log(error);
|
|
|
|
- reject([]);
|
|
|
|
|
|
+ reject(error);
|
|
} else {
|
|
} else {
|
|
resolve(data);
|
|
resolve(data);
|
|
}
|
|
}
|
|
@@ -181,7 +264,7 @@ class UserModel {
|
|
last_login: 0,
|
|
last_login: 0,
|
|
create_time: new Date().getTime()
|
|
create_time: new Date().getTime()
|
|
};
|
|
};
|
|
- let userModel = new this.model(insertData);
|
|
|
|
|
|
+ let userModel = this.db.model(insertData, this.schema);
|
|
return new Promise(function (resolve, reject) {
|
|
return new Promise(function (resolve, reject) {
|
|
userModel.save(function (error) {
|
|
userModel.save(function (error) {
|
|
if (error) {
|
|
if (error) {
|
|
@@ -204,12 +287,15 @@ class UserModel {
|
|
if (Object.keys(condition).length <= 0 || Object.keys(updateData).length <= 0) {
|
|
if (Object.keys(condition).length <= 0 || Object.keys(updateData).length <= 0) {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
- let userModel = new this.model();
|
|
|
|
|
|
+ let userModel = this.db.model('users', this.schema);
|
|
|
|
+
|
|
return new Promise(function(resolve, reject) {
|
|
return new Promise(function(resolve, reject) {
|
|
- // let validationError = userModel.validateSync();
|
|
|
|
- // if (validationError) {
|
|
|
|
- // reject(validationError);
|
|
|
|
- // }
|
|
|
|
|
|
+ // 验证数据
|
|
|
|
+ let model = new userModel(updateData);
|
|
|
|
+ let validationError = model.validateSync();
|
|
|
|
+ if (validationError) {
|
|
|
|
+ reject(validationError);
|
|
|
|
+ }
|
|
userModel.update(condition, {$set: updateData}, function(error, result) {
|
|
userModel.update(condition, {$set: updateData}, function(error, result) {
|
|
if (error) {
|
|
if (error) {
|
|
reject(error);
|
|
reject(error);
|