MenuService.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. var _ = require('lodash');
  2. var path = require("path");
  3. var dao = require(path.join(process.cwd(),"dao/DAO"));
  4. var permissionAPIDAO = require(path.join(process.cwd(),"dao/PermissionAPIDAO"));
  5. /**
  6. * 获取左侧菜单数据
  7. *
  8. * @param {Function} cb 回调函数
  9. */
  10. module.exports.getLeftMenus = function(userInfo,cb) {
  11. if(!userInfo) return cb("无权限访问");
  12. var authFn = function(rid,keyRolePermissions,cb) {
  13. permissionAPIDAO.list(function(err,permissions){
  14. if(err) return cb("获取权限数据失败");
  15. var keyPermissions = _.keyBy(permissions,'ps_id');
  16. var rootPermissionsResult = {};
  17. // 处理一级菜单
  18. for(idx in permissions) {
  19. permission = permissions[idx];
  20. if(permission.ps_level == 0) {
  21. if(rid != 0) {
  22. if(!keyRolePermissions[permission.ps_id]) continue;;
  23. }
  24. rootPermissionsResult[permission.ps_id] = {
  25. "id":permission.ps_id,
  26. "authName":permission.ps_name,
  27. "path":permission.ps_api_path,
  28. "children":[],
  29. "order":permission.ps_api_order
  30. };
  31. }
  32. }
  33. // 处理二级菜单
  34. for(idx in permissions) {
  35. permission = permissions[idx];
  36. if(permission.ps_level == 1) {
  37. if(rid != 0) {
  38. if(!keyRolePermissions[permission.ps_id]) continue;;
  39. }
  40. parentPermissionResult = rootPermissionsResult[permission.ps_pid];
  41. if(parentPermissionResult) {
  42. parentPermissionResult.children.push({
  43. "id":permission.ps_id,
  44. "authName":permission.ps_name,
  45. "path":permission.ps_api_path,
  46. "children":[],
  47. "order":permission.ps_api_order
  48. });
  49. }
  50. }
  51. }
  52. // 排序
  53. result = _.values(rootPermissionsResult);
  54. result = _.sortBy(result,"order");
  55. for(idx in result) {
  56. subresult = result[idx];
  57. subresult.children = _.sortBy(subresult.children,"order");
  58. }
  59. cb(null,result);
  60. });
  61. }
  62. rid = userInfo.rid;
  63. if(rid == 0) {
  64. authFn(rid,null,cb);
  65. } else {
  66. dao.show("RoleModel",userInfo.rid,function(err,role){
  67. if(err || !role) return cb("无权限访问");
  68. rolePermissions = role.ps_ids.split(",")
  69. keyRolePermissions = {}
  70. for(idx in rolePermissions) {
  71. keyRolePermissions[rolePermissions[idx]] = true;
  72. }
  73. authFn(rid,keyRolePermissions,cb);
  74. })
  75. }
  76. }