nyx_server
Version:
Node内容发布
155 lines (137 loc) • 4.59 kB
JavaScript
var config = require("../../config/default-config");
var DBTemplate = require("../../db/DBTemplate");
var dbtemplate = new DBTemplate(config.NYX_DB_CONFIG_NAME);
var _ = require("lodash");
var Promise = require("bluebird");
/**
* user:
id: id
name: 姓名
password:密码
source: 来源。是域用户还是注册用户
created_time:创建时间
modify_time:修改时间
state:用户状态, 有效 1,无效0
*/
/**
* 增加用户
* @param user 用户信息
*/
function isExistUser(userName){
var connection = this.connection || dbtemplate;
var sql = "select id from user_info_t where name = ?";
return connection.query(sql , [userName]).then(function(result){
if(result && result.length>0){
return true;
}else{
return false;
}
});
}
module.exports.isExistUser = isExistUser;
function dbDataToUser(dbData){
return {
id : dbData.id, //id
name : dbData.name, //名称
realName : dbData.real_name,
department : dbData.department, //部门
state : dbData.state, //状态
contact : dbData.contact,
createTime : dbData.created_time
}
}
function getUserById(id){
var connection = this.connection || dbtemplate;
return connection.query("select * from user_info_t where id =?" , [id]).then(function(result){
if(result && result.length>0){
return dbDataToUser(result[0]);
}
})
}
function addUser(user){
var connection = this.connection || dbtemplate;
return isExistUser.bind({connection:connection})(user.name).then(function(exist){
if(exist){
throw new Error("用户已经存在");
}
var sql = "insert into user_info_t(name,real_name,password,contact,department,state,source,created_time) values(?,?,?,?,?,?,?,now())";
return connection.query(sql , [user.name,user.realName,user.password,user.contact,user.department,1,user.source])
.then(function(result){
return result.insertId;
}).then(function(userId){
return getUserById.bind({connection:connection})(userId)
});
})
}
module.exports.addUser = addUser;
/**
* 使用户失效
*/
function disableUser(userId){
var connection = this.connection || dbtemplate;
var sql = "update user_info_t set state=0 where id = ?"
return connection.query(sql , [userId]).then(function(){
return true;
})
}
/**
* 得到所有用户
* @param {Array}params 请求参数, key,value对
* @param {Object}pagination 页面信息
*/
function getUsers(params , pagination){
params = params || [];
pagination = pagination || {start:0 , count:20};
var connection = this.connection || dbtemplate;
var _params = [];
var sql = "select count(id) idcount from user_info_t where 1=1";
var sqlWhere = _.reduce(params , function(sql , param){
Object.keys().forEach(function(key){
var v = param[key];
sqlbuf += " and "+key+"=? "
_params.push(v);
})
}, "");
var p1 = connection.query(sql+sqlWhere).then(function(rows){
return rows[0].idcount;
})
var sql1 = "select * from user_info_t where 1=1 ";
var p2 = connection.query(sql + sqlWhere).then(function(){
var start = pagination.start;
var conut = pagination.count;
sql1 += (" limit " + start + "," + conut);
return connection.query(sql1 , _params).then(function(rows){
return rows.map(function(row){
delete row["password"];
return row;
})
})
});
return Promise.all([p1,p2]).spread(function(count , users){
return {
total:count,
data:users
}
});
}
module.exports.getUsers = getUsers;
/**
* 通过用户名查询用户
*/
function getUserByName(userName){
var connection = this.connection || dbtemplate;
var sql = "select * from user_info_t where name = ?";
return connection.query(sql , [userName]).then(function(result){
if(!result || result.length ==0){
return null;
}
var d = result[0];
return {
id : d.id, //id
name : d.name, //名称
department : d.department, //部门
state : d.state, //状态
imgUrl : d.imgUrl //图标地址
}
});
}