Нет описания
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

get_project_tree.go 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package projecttree
  2. import (
  3. "context"
  4. "git.x2erp.com/qdy/go-base/ctx"
  5. "git.x2erp.com/qdy/go-base/logger"
  6. "git.x2erp.com/qdy/go-base/model/response"
  7. "git.x2erp.com/qdy/go-base/util"
  8. "git.x2erp.com/qdy/go-db/factory/database"
  9. )
  10. // TreeNode 树节点结构
  11. type TreeNode struct {
  12. ID string `json:"id"`
  13. Name string `json:"name"`
  14. Icon string `json:"icon,omitempty"`
  15. Type string `json:"type"` // root, category, project, agent, skill, tenant, role, user
  16. Route string `json:"route,omitempty"`
  17. Children []TreeNode `json:"children,omitempty"`
  18. Data map[string]interface{} `json:"data,omitempty"` // 额外数据
  19. }
  20. // GetProjectTree 获取项目树结构
  21. func GetProjectTree(ctx context.Context, dbFactory *database.DBFactory, reqCtx *ctx.RequestContext) *response.QueryResult[[]TreeNode] {
  22. logger.Debug("GetProjectTree-开始获取项目树")
  23. // 构建分组树节点
  24. tree := []TreeNode{
  25. {
  26. ID: "home",
  27. Name: "首页",
  28. Icon: "home",
  29. Type: "group",
  30. Children: []TreeNode{
  31. {
  32. ID: "readme",
  33. Name: "说明",
  34. Icon: "description",
  35. Type: "page",
  36. Route: "/home/readme",
  37. },
  38. },
  39. },
  40. {
  41. ID: "service-group",
  42. Name: "服务",
  43. Icon: "settings",
  44. Type: "group",
  45. Children: []TreeNode{
  46. {
  47. ID: "service-register",
  48. Name: "注册服务配置",
  49. Icon: "app_registration",
  50. Type: "page",
  51. Route: "/service/register-config",
  52. },
  53. {
  54. ID: "service-management",
  55. Name: "微服务管理",
  56. Icon: "dns",
  57. Type: "page",
  58. Route: "/service/management",
  59. },
  60. {
  61. ID: "service-config",
  62. Name: "微服务配置管理",
  63. Icon: "settings_applications",
  64. Type: "page",
  65. Route: "/service/config-management",
  66. },
  67. {
  68. ID: "boot-config",
  69. Name: "微服务启动配置管理",
  70. Icon: "play_circle",
  71. Type: "page",
  72. Route: "/service/boot-config",
  73. },
  74. },
  75. },
  76. {
  77. ID: "user-group",
  78. Name: "项目",
  79. Icon: "folder",
  80. Type: "group",
  81. Children: []TreeNode{
  82. {
  83. ID: "project-management",
  84. Name: "项目管理",
  85. Icon: "folder_open",
  86. Type: "page",
  87. Route: "/project/list",
  88. },
  89. {
  90. ID: "agent-management",
  91. Name: "Agent管理",
  92. Icon: "smart_toy",
  93. Type: "page",
  94. Route: "/agent/list",
  95. },
  96. {
  97. ID: "skill-management",
  98. Name: "Skill管理",
  99. Icon: "build",
  100. Type: "page",
  101. Route: "/skill/list",
  102. },
  103. },
  104. },
  105. {
  106. ID: "tenant-group",
  107. Name: "租户",
  108. Icon: "people",
  109. Type: "group",
  110. Children: []TreeNode{
  111. {
  112. ID: "role-management",
  113. Name: "角色管理",
  114. Icon: "admin_panel_settings",
  115. Type: "page",
  116. Route: "/role/list",
  117. },
  118. {
  119. ID: "tenant-management",
  120. Name: "租户管理",
  121. Icon: "apartment",
  122. Type: "page",
  123. Route: "/tenant/list",
  124. },
  125. {
  126. ID: "user-management",
  127. Name: "用户管理",
  128. Icon: "people",
  129. Type: "page",
  130. Route: "/user/list",
  131. },
  132. },
  133. },
  134. }
  135. logger.Debug("返回项目树结构")
  136. return util.CreateSuccessResultData(tree, reqCtx)
  137. }