package routes import ( "github.com/gofiber/fiber/v2" "github.com/break/junhong_cmp_fiber/internal/handler/admin" "github.com/break/junhong_cmp_fiber/internal/model" "github.com/break/junhong_cmp_fiber/pkg/openapi" ) // registerAccountRoutes 注册账号相关路由 func registerAccountRoutes(api fiber.Router, h *admin.AccountHandler, doc *openapi.Generator, basePath string) { accounts := api.Group("/accounts") groupPath := basePath + "/accounts" // 账号 CRUD Register(accounts, doc, groupPath, "POST", "", h.Create, RouteSpec{ Summary: "创建账号", Tags: []string{"账号相关"}, Input: new(model.CreateAccountRequest), Output: new(model.AccountResponse), }) Register(accounts, doc, groupPath, "GET", "", h.List, RouteSpec{ Summary: "账号列表", Tags: []string{"账号相关"}, Input: new(model.AccountListRequest), Output: new(model.AccountPageResult), }) Register(accounts, doc, groupPath, "GET", "/:id", h.Get, RouteSpec{ Summary: "获取账号详情", Tags: []string{"账号相关"}, Input: new(model.IDReq), Output: new(model.AccountResponse), }) Register(accounts, doc, groupPath, "PUT", "/:id", h.Update, RouteSpec{ Summary: "更新账号", Tags: []string{"账号相关"}, Input: new(model.UpdateAccountParams), Output: new(model.AccountResponse), }) Register(accounts, doc, groupPath, "DELETE", "/:id", h.Delete, RouteSpec{ Summary: "删除账号", Tags: []string{"账号相关"}, Input: new(model.IDReq), Output: nil, }) // 账号-角色关联 Register(accounts, doc, groupPath, "POST", "/:id/roles", h.AssignRoles, RouteSpec{ Summary: "分配角色", Tags: []string{"账号相关"}, Input: new(model.AssignRolesParams), Output: nil, // TODO: Define AccountRole response DTO }) Register(accounts, doc, groupPath, "GET", "/:id/roles", h.GetRoles, RouteSpec{ Summary: "获取账号角色", Tags: []string{"账号相关"}, Input: new(model.IDReq), Output: new([]model.Role), }) Register(accounts, doc, groupPath, "DELETE", "/:account_id/roles/:role_id", h.RemoveRole, RouteSpec{ Summary: "移除角色", Tags: []string{"账号相关"}, Input: new(model.RemoveRoleParams), Output: nil, }) registerPlatformAccountRoutes(api, h, doc, basePath) } func registerPlatformAccountRoutes(api fiber.Router, h *admin.AccountHandler, doc *openapi.Generator, basePath string) { platformAccounts := api.Group("/platform-accounts") groupPath := basePath + "/platform-accounts" Register(platformAccounts, doc, groupPath, "GET", "", h.ListPlatformAccounts, RouteSpec{ Summary: "平台账号列表", Tags: []string{"平台账号"}, Input: new(model.PlatformAccountListRequest), Output: new(model.AccountPageResult), }) Register(platformAccounts, doc, groupPath, "POST", "", h.Create, RouteSpec{ Summary: "新增平台账号", Tags: []string{"平台账号"}, Input: new(model.CreateAccountRequest), Output: new(model.AccountResponse), }) Register(platformAccounts, doc, groupPath, "GET", "/:id", h.Get, RouteSpec{ Summary: "获取平台账号详情", Tags: []string{"平台账号"}, Input: new(model.IDReq), Output: new(model.AccountResponse), }) Register(platformAccounts, doc, groupPath, "PUT", "/:id", h.Update, RouteSpec{ Summary: "编辑平台账号", Tags: []string{"平台账号"}, Input: new(model.UpdateAccountParams), Output: new(model.AccountResponse), }) Register(platformAccounts, doc, groupPath, "DELETE", "/:id", h.Delete, RouteSpec{ Summary: "删除平台账号", Tags: []string{"平台账号"}, Input: new(model.IDReq), Output: nil, }) Register(platformAccounts, doc, groupPath, "PUT", "/:id/password", h.UpdatePassword, RouteSpec{ Summary: "修改密码", Tags: []string{"平台账号"}, Input: new(model.UpdatePasswordParams), Output: nil, }) Register(platformAccounts, doc, groupPath, "PUT", "/:id/status", h.UpdateStatus, RouteSpec{ Summary: "启用/禁用账号", Tags: []string{"平台账号"}, Input: new(model.UpdateStatusParams), Output: nil, }) Register(platformAccounts, doc, groupPath, "POST", "/:id/roles", h.AssignRoles, RouteSpec{ Summary: "分配角色", Tags: []string{"平台账号"}, Input: new(model.AssignRolesParams), Output: nil, }) Register(platformAccounts, doc, groupPath, "GET", "/:id/roles", h.GetRoles, RouteSpec{ Summary: "获取账号角色", Tags: []string{"平台账号"}, Input: new(model.IDReq), Output: new([]model.Role), }) Register(platformAccounts, doc, groupPath, "DELETE", "/:account_id/roles/:role_id", h.RemoveRole, RouteSpec{ Summary: "移除角色", Tags: []string{"平台账号"}, Input: new(model.RemoveRoleParams), Output: nil, }) }