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/RightService.js

94 lines
2.3 KiB

var _ = require('lodash');
var path = require("path");
var dao = require(path.join(process.cwd(),"dao/PermissionAPIDAO"));
// 获取所有权限
module.exports.getAllRights = function(type,cb) {
if(!type || (type != "list" && type != "tree")) {
cb("参数类型错误");
}
dao.list(function(err,permissions){
if(err) return cb("获取权限数据失败");
if(type == "list") {
var result = [];
for(idx in permissions) {
permission = permissions[idx];
result.push({
"id" : permission.ps_id,
"authName" : permission.ps_name,
"level" : permission.ps_level,
"pid" : permission.ps_pid,
"path": permission.ps_api_path
});
}
cb(null,result);
} else {
var keyCategories = _.keyBy(permissions,'ps_id');
// 显示一级
var permissionsResult = {};
// 处理一级菜单
for(idx in permissions) {
permission = permissions[idx];
if(permission && permission.ps_level == 0) {
permissionsResult[permission.ps_id] = {
"id":permission.ps_id,
"authName":permission.ps_name,
"path":permission.ps_api_path,
"pid" : permission.ps_pid,
"children":[]
};
}
}
// 临时存储二级返回结果
tmpResult = {};
// 处理二级菜单
for(idx in permissions) {
permission = permissions[idx];
if(permission && permission.ps_level == 1) {
parentPermissionResult = permissionsResult[permission.ps_pid];
if(parentPermissionResult) {
tmpResult[permission.ps_id] = {
"id":permission.ps_id,
"authName":permission.ps_name,
"path":permission.ps_api_path,
"pid" : permission.ps_pid,
"children":[]
}
parentPermissionResult.children.push(tmpResult[permission.ps_id]);
}
}
}
// 处理三级菜单
for(idx in permissions) {
permission = permissions[idx];
if(permission && permission.ps_level == 2) {
parentPermissionResult = tmpResult[permission.ps_pid];
if(parentPermissionResult) {
parentPermissionResult.children.push({
"id":permission.ps_id,
"authName":permission.ps_name,
"path":permission.ps_api_path,
"pid" : permission.ps_pid + "," + keyCategories[permission.ps_pid].ps_pid
});
}
}
}
cb(null,_.values(permissionsResult));
}
});
}