You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
vue-shop-admin-work/services/ManagerService.js

244 lines
5.7 KiB

var path = require("path");
var managersDAO = require(path.join(process.cwd(),"dao/ManagerDAO"));
var Password = require("node-php-password");
var logger = require('../modules/logger').logger();
/**
* 获取所有管理员
* @param {[type]} conditions 查询条件
* 查询条件统一规范
* conditions
{
"query" : 关键词查询,
"pagenum" : 页数,
"pagesize" : 每页长度
}
* @param {Function} cb 回调函数
*/
module.exports.getAllManagers = function(conditions,cb) {
if(!conditions.pagenum) return cb("pagenum 参数不合法");
if(!conditions.pagesize) return cb("pagesize 参数不合法");
// 通过关键词获取管理员数量
managersDAO.countByKey(conditions["query"],function(err,count) {
key = conditions["query"];
pagenum = parseInt(conditions["pagenum"]);
pagesize = parseInt(conditions["pagesize"]);
pageCount = Math.ceil(count / pagesize);
offset = (pagenum - 1) * pagesize;
if(offset >= count) {
offset = count;
}
limit = pagesize;
managersDAO.findByKey(key,offset,limit,function(err,managers){
var retManagers = [];
for(idx in managers) {
var manager = managers[idx];
var role_name = manager.role_name;
if(!manager.role_id) {
role_name = "超级管理员"
}
retManagers.push({
"id": manager.mg_id,
"role_name":role_name,
"username":manager.mg_name,
"create_time":manager.mg_time,
"mobile":manager.mg_mobile,
"email":manager.mg_email,
"mg_state":manager.mg_state == 1
});
}
var resultDta = {};
resultDta["total"] = count;
resultDta["pagenum"] = pagenum;
resultDta["users"] = retManagers;
cb(err,resultDta);
});
});
}
/**
* 创建管理员
*
* @param {[type]} user 用户数据集
* @param {Function} cb 回调函数
*/
module.exports.createManager = function(params,cb) {
managersDAO.exists(params.username,function(err,isExists){
if(err) return cb(err);
if(isExists) {
return cb("用户名已存在");
}
managersDAO.create({
"mg_name":params.username,
"mg_pwd":Password.hash(params.password),
"mg_mobile":params.mobile,
"mg_email":params.email,
"mg_time":(Date.parse(new Date())/1000),
"role_id":params.rid
},function(err,manager){
if(err) return cb("创建失败");
result = {
"id" : manager.mg_id,
"username" : manager.mg_name,
"mobile" : manager.mg_mobile,
"email" : manager.mg_email,
"role_id" : manager.role_id,
"create_time":manager.mg_time
};
cb(null,result);
});
});
}
/**
* 更新管理员信息
*
* @param {[type]} params 管理员信息
* @param {Function} cb 回调函数
*/
module.exports.updateManager = function(params,cb) {
managersDAO.update(
{
"mg_id":params.id,
"mg_mobile":params.mobile,
"mg_email":params.email
},
function(err,manager) {
if(err) return cb(err);
cb(null,{
"id":manager.mg_id,
"username":manager.mg_name,
"role_id":manager.role_id,
"mobile":manager.mg_mobile,
"email":manager.mg_email
});
}
)
}
/**
* 通过管理员 ID 获取管理员信息
*
* @param {[type]} id 管理员 ID
* @param {Function} cb 回调函数
*/
module.exports.getManager = function(id,cb) {
managersDAO.show(id,function(err,manager){
if(err) return cb(err);
if(!manager) return cb("该管理员不存在");
cb(
null,
{
"id":manager.mg_id,
"rid":manager.role_id,
"username":manager.mg_name,
"mobile":manager.mg_mobile,
"email":manager.mg_email
}
);
});
}
/**
* 通过管理员 ID 进行删除操作
*
* @param {[type]} id 管理员ID
* @param {Function} cb 回调函数
*/
module.exports.deleteManager = function(id,cb) {
managersDAO.destroy(id,function(err){
if(err) return cb("删除失败");
cb(null);
});
}
/**
* 为管理员设置角色
*
* @param {[type]} id 管理员ID
* @param {[type]} rid 角色ID
* @param {Function} cb 回调函数
*/
module.exports.setRole = function(id,rid,cb) {
managersDAO.show(id,function(err,manager){
if(err || !manager) cb("管理员ID不存在");
managersDAO.update({"mg_id":manager.mg_id,"role_id":rid},function(err,manager){
if(err) return cb("设置失败");
cb(null,{
"id":manager.mg_id,
"rid":manager.role_id,
"username":manager.mg_name,
"mobile":manager.mg_mobile,
"email":manager.mg_email,
});
});
})
}
module.exports.updateMgrState = function(id,state,cb) {
managersDAO.show(id,function(err,manager){
if(err || !manager) cb("管理员ID不存在");
managersDAO.update({"mg_id":manager.mg_id,"mg_state":state},function(err,manager){
if(err) return cb("设置失败");
cb(null,{
"id":manager.mg_id,
"rid":manager.role_id,
"username":manager.mg_name,
"mobile":manager.mg_mobile,
"email":manager.mg_email,
"mg_state":manager.mg_state ? 1 : 0
});
});
})
}
/**
* 管理员登录
* @param {[type]} username 用户名
* @param {[type]} password 密码
* @param {Function} cb 回调
*/
module.exports.login = function(username,password,cb) {
logger.debug('login => username:%s,password:%s',username,password);
logger.debug(username);
managersDAO.findOne({"mg_name":username},function(err,manager) {
logger.debug(err);
if(err || !manager) return cb("用户名不存在");
if(manager.role_id < 0) {
return cb("该用户没有权限登录");
}
if(manager.role_id != 0 && manager.mg_state != 1) {
return cb("该用户已经被禁用");
}
if(Password.verify(password, manager.mg_pwd)){
cb(
null,
{
"id":manager.mg_id,
"rid":manager.role_id,
"username":manager.mg_name,
"mobile":manager.mg_mobile,
"email":manager.mg_email,
}
);
} else {
return cb("密码错误");
}
});
}