1、根据子级id ,将子级权限插入到响应父级权限下

  1. def per_data(permission_list, parent_id):
  2. tree = []
  3. for per in permission_list:
  4. if per['per_moudel_id'] == parent_id:
  5. per['children'] = per_data(permission_list, per['per_id'])
  6. tree.append(per)
  7. return tree
  8. if __name__ == '__main__':
  9. dict = [{'per_id': 1, 'per_name': '员工关怀', 'per_addr': '无', 'per_moudel_id': None},
  10. {'per_id': 2, 'per_name': '智能服务运筹', 'per_addr': '/', 'per_moudel_id': None},
  11. {'per_id': 3, 'per_name': '数据中台', 'per_addr': '/', 'per_moudel_id': None},
  12. {'per_id': 4, 'per_name': '结算平台', 'per_addr': '/', 'per_moudel_id': None},
  13. {'per_id': 5, 'per_name': '微信客服统计管理平台', 'per_addr': '/', 'per_moudel_id': None},
  14. {'per_id': 6, 'per_name': 'TV管理平台', 'per_addr': '/', 'per_moudel_id': None},
  15. {'per_id': 7, 'per_name': '权限管理', 'per_addr': '/', 'per_moudel_id': None},
  16. {'per_id': 8, 'per_name': '首页', 'per_addr': '/homePage', 'per_moudel_id': 1},
  17. {'per_id': 9, 'per_name': '人员信息管理', 'per_addr': '/', 'per_moudel_id': 1},
  18. {'per_id': 10, 'per_name': '指标异常预警', 'per_addr': '无', 'per_moudel_id': 1},
  19. {'per_id': 11, 'per_name': '员工画像', 'per_addr': '无', 'per_moudel_id': 1},
  20. {'per_id': 12, 'per_name': '效能对比分析', 'per_addr': '/areaChart', 'per_moudel_id': 1},
  21. {'per_id': 13, 'per_name': '设置', 'per_addr': '无', 'per_moudel_id': 1},
  22. {'per_id': 14, 'per_name': '服务量预测', 'per_addr': '/costumeDesigner', 'per_moudel_id': 2},
  23. {'per_id': 15, 'per_name': '运营监控中心', 'per_addr': '无', 'per_moudel_id': 2},]
  24. print(per_data(dict, None))
  1. [{
  2. 'per_id': 1,
  3. 'per_name': '员工关怀',
  4. 'per_addr': '无',
  5. 'per_moudel_id': None,
  6. 'children': [
  7. {
  8. 'per_id': 8,
  9. 'per_name': '首页',
  10. 'per_addr': '/homePage',
  11. 'per_moudel_id': 1,
  12. 'children': []
  13. },
  14. {
  15. 'per_id': 9,
  16. 'per_name': '人员信息管理',
  17. 'per_addr': '/',
  18. 'per_moudel_id': 1,
  19. 'children': []
  20. },
  21. { 'per_id': 10,
  22. 'per_name': '指标异常预警',
  23. 'per_addr': '无',
  24. 'per_moudel_id': 1,
  25. 'children': []
  26. },
  27. {
  28. 'per_id': 11,
  29. 'per_name': '员工画像',
  30. 'per_addr': '无',
  31. 'per_moudel_id': 1,
  32. 'children': []
  33. },
  34. {
  35. 'per_id': 12,
  36. 'per_name': '效能对比分析',
  37. 'per_addr': '/areaChart',
  38. 'per_moudel_id': 1,
  39. 'children': []
  40. },
  41. {
  42. 'per_id': 13,
  43. 'per_name': '设置',
  44. 'per_addr': '无',
  45. 'per_moudel_id': 1,
  46. 'children': []
  47. }
  48. ]
  49. },
  50. {
  51. 'per_id': 2,
  52. 'per_name': '智能服务运筹',
  53. 'per_addr': '/',
  54. 'per_moudel_id': None,
  55. 'children': [{
  56. 'per_id': 14,
  57. 'per_name': '服务量预测',
  58. 'per_addr': '/costumeDesigner',
  59. 'per_moudel_id': 2,
  60. 'children': []},
  61. {
  62. 'per_id': 15,
  63. 'per_name': '运营监控中心',
  64. 'per_addr': '无',
  65. 'per_moudel_id': 2,
  66. 'children': []
  67. }
  68. ]
  69. },
  70. {
  71. 'per_id': 3,
  72. 'per_name': '数据中台',
  73. 'per_addr': '/',
  74. 'per_moudel_id': None,
  75. 'children': []
  76. },
  77. {
  78. 'per_id': 4,
  79. 'per_name': '结算平台',
  80. 'per_addr': '/',
  81. 'per_moudel_id': None,
  82. 'children': []},
  83. {
  84. 'per_id': 5,
  85. 'per_name': '微信客服统计管理平台',
  86. 'per_addr': '/',
  87. 'per_moudel_id': None,
  88. 'children': []
  89. },
  90. {
  91. 'per_id': 6,
  92. 'per_name': 'TV管理平台',
  93. 'per_addr': '/',
  94. 'per_moudel_id': None,
  95. 'children': []
  96. },
  97. {
  98. 'per_id': 7,
  99. 'per_name': '权限管理',
  100. 'per_addr': '/',
  101. 'per_moudel_id': None,
  102. 'children': []
  103. }]