RightService.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. var _ = require('lodash');
  2. var path = require("path");
  3. var dao = require(path.join(process.cwd(),"dao/PermissionAPIDAO"));
  4. // 获取所有权限
  5. module.exports.getAllRights = function(type,cb) {
  6. if(!type || (type != "list" && type != "tree")) {
  7. cb("参数类型错误");
  8. }
  9. dao.list(function(err,permissions){
  10. if(err) return cb("获取权限数据失败");
  11. if(type == "list") {
  12. var result = [];
  13. for(idx in permissions) {
  14. permission = permissions[idx];
  15. result.push({
  16. "id" : permission.ps_id,
  17. "authName" : permission.ps_name,
  18. "level" : permission.ps_level,
  19. "pid" : permission.ps_pid,
  20. "path": permission.ps_api_path
  21. });
  22. }
  23. cb(null,result);
  24. } else {
  25. var keyCategories = _.keyBy(permissions,'ps_id');
  26. // 显示一级
  27. var permissionsResult = {};
  28. // 处理一级菜单
  29. for(idx in permissions) {
  30. permission = permissions[idx];
  31. if(permission && permission.ps_level == 0) {
  32. permissionsResult[permission.ps_id] = {
  33. "id":permission.ps_id,
  34. "authName":permission.ps_name,
  35. "path":permission.ps_api_path,
  36. "pid" : permission.ps_pid,
  37. "children":[]
  38. };
  39. }
  40. }
  41. // 临时存储二级返回结果
  42. tmpResult = {};
  43. // 处理二级菜单
  44. for(idx in permissions) {
  45. permission = permissions[idx];
  46. if(permission && permission.ps_level == 1) {
  47. parentPermissionResult = permissionsResult[permission.ps_pid];
  48. if(parentPermissionResult) {
  49. tmpResult[permission.ps_id] = {
  50. "id":permission.ps_id,
  51. "authName":permission.ps_name,
  52. "path":permission.ps_api_path,
  53. "pid" : permission.ps_pid,
  54. "children":[]
  55. }
  56. parentPermissionResult.children.push(tmpResult[permission.ps_id]);
  57. }
  58. }
  59. }
  60. // 处理三级菜单
  61. for(idx in permissions) {
  62. permission = permissions[idx];
  63. if(permission && permission.ps_level == 2) {
  64. parentPermissionResult = tmpResult[permission.ps_pid];
  65. if(parentPermissionResult) {
  66. parentPermissionResult.children.push({
  67. "id":permission.ps_id,
  68. "authName":permission.ps_name,
  69. "path":permission.ps_api_path,
  70. "pid" : permission.ps_pid + "," + keyCategories[permission.ps_pid].ps_pid
  71. });
  72. }
  73. }
  74. }
  75. cb(null,_.values(permissionsResult));
  76. }
  77. });
  78. }