package projecttree import ( "context" "git.x2erp.com/qdy/go-base/ctx" "git.x2erp.com/qdy/go-base/logger" "git.x2erp.com/qdy/go-base/model/response" "git.x2erp.com/qdy/go-base/util" "git.x2erp.com/qdy/go-db/factory/database" ) // TreeNode 树节点结构 type TreeNode struct { ID string `json:"id"` Name string `json:"name"` Icon string `json:"icon,omitempty"` Type string `json:"type"` // root, category, project, agent, skill, tenant, role, user Route string `json:"route,omitempty"` Children []TreeNode `json:"children,omitempty"` Data map[string]interface{} `json:"data,omitempty"` // 额外数据 } // GetProjectTree 获取项目树结构 func GetProjectTree(ctx context.Context, dbFactory *database.DBFactory, reqCtx *ctx.RequestContext) *response.QueryResult[[]TreeNode] { logger.Debug("GetProjectTree-开始获取项目树") // 构建分组树节点 tree := []TreeNode{ { ID: "home", Name: "首页", Icon: "home", Type: "group", Children: []TreeNode{ { ID: "readme", Name: "说明", Icon: "description", Type: "page", Route: "/home/readme", }, }, }, { ID: "service-group", Name: "服务", Icon: "settings", Type: "group", Children: []TreeNode{ { ID: "service-register", Name: "注册服务配置", Icon: "app_registration", Type: "page", Route: "/service/register-config", }, { ID: "service-management", Name: "微服务管理", Icon: "dns", Type: "page", Route: "/service/management", }, { ID: "service-config", Name: "微服务配置管理", Icon: "settings_applications", Type: "page", Route: "/service/config-management", }, { ID: "boot-config", Name: "微服务启动配置管理", Icon: "play_circle", Type: "page", Route: "/service/boot-config", }, { ID: "sync-solution", Name: "同步方案管理", Icon: "sync", Type: "page", Route: "/sync-solution/list", }, { ID: "dic-table", Name: "数据库字典管理", Icon: "storage", Type: "page", Route: "/dic-table/list", }, }, }, { ID: "user-group", Name: "项目", Icon: "folder", Type: "group", Children: []TreeNode{ { ID: "project-management", Name: "项目管理", Icon: "folder_open", Type: "page", Route: "/project/list", }, { ID: "agent-management", Name: "Agent管理", Icon: "smart_toy", Type: "page", Route: "/agent/list", }, { ID: "skill-management", Name: "Skill管理", Icon: "build", Type: "page", Route: "/skill/list", }, }, }, { ID: "tenant-group", Name: "租户", Icon: "people", Type: "group", Children: []TreeNode{ { ID: "role-management", Name: "角色管理", Icon: "admin_panel_settings", Type: "page", Route: "/role/list", }, { ID: "tenant-management", Name: "租户管理", Icon: "apartment", Type: "page", Route: "/tenant/list", }, { ID: "user-management", Name: "用户管理", Icon: "people", Type: "page", Route: "/user/list", }, }, }, } logger.Debug("返回项目树结构") return util.CreateSuccessResultData(tree, reqCtx) }