Files
ocean/api/gateway.api

186 lines
4.9 KiB
Plaintext

syntax = "v1"
// ================== 通用类型定义 ==================
type BaseResp {
Code int `json:"code"` // 状态码 (0=成功)
Message string `json:"message"` // 消息
}
// ================== 用户服务类型 ==================
type RegisterReq {
Username string `json:"username"`
Password string `json:"password"`
Email string `json:"email"`
}
type RegisterResp {
UserId string `json:"user_id"`
}
type LoginReq {
Username string `json:"username"`
Password string `json:"password"`
}
type LoginResp {
Token string `json:"token"`
ExpiresAt int64 `json:"expires_at"`
}
type LogoutReq {
Token string `json:"token"`
}
type LogoutResp {
Success bool `json:"success"`
}
type GetUserInfoReq {
UserId string `path:"user_id"`
}
type GetUserInfoResp {
UserId string `json:"user_id"`
Username string `json:"username"`
Email string `json:"email"`
CreatedAt int64 `json:"created_at"`
Roles []string `json:"roles"`
}
// ================== 分类服务类型 ==================
type BaseCategory {
ID string `json:"id"` // 分类ID (UUID)
SystemID string `json:"systemId"` // 所属系统ID
Name string `json:"name"` // 分类名称
Alias string `json:"alias"` // URL别名
ParentID string `json:"parentId"` // 父分类ID (可为空)
Description string `json:"description"` // 分类描述
CreatedAt string `json:"createdAt"` // 创建时间 (ISO8601)
UpdatedAt string `json:"updatedAt"` // 更新时间 (ISO8601)
}
type CategoryDetail {
BaseCategory
Parent *BaseCategory `json:"parent"` // 父分类信息
}
type TreeNode {
BaseCategory
Children []*TreeNode `json:"children"` // 子分类列表
}
type CreateCategoryReq {
SystemID string `json:"systemId" validate:"required"` // 所属系统ID
Name string `json:"name" validate:"required"` // 分类名称
Alias string `json:"alias,optional"` // URL别名
ParentID string `json:"parentId,optional"` // 父分类ID
Description string `json:"description,optional"` // 分类描述
}
type CreateCategoryResp {
ID string `json:"id"` // 新创建的分类ID
}
type ListCategoriesReq {
SystemID string `form:"systemId,optional"` // 按系统ID过滤
ParentID string `form:"parentId,optional"` // 按父分类ID过滤
Name string `form:"name,optional"` // 按名称模糊搜索
Page int `form:"page,default=1"` // 页码
PageSize int `form:"pageSize,default=20"` // 每页数量
}
type ListCategoriesResp {
Total int64 `json:"total"` // 总数
List []BaseCategory `json:"list"` // 分类列表
}
type GetCategoryReq {
ID string `path:"id"` // 分类ID
}
type CategoryDetailResp {
CategoryDetail
}
type UpdateCategoryReq {
ID string `path:"id"` // 分类ID
Name string `json:"name,optional"` // 新名称
Alias string `json:"alias,optional"` // 新别名
ParentID string `json:"parentId,optional"` // 新父分类ID
Description string `json:"description,optional"` // 新描述
}
type GetCategoryTreeReq {
ID string `path:"id"` // 起始分类ID
}
type CategoryTreeResp {
Root TreeNode `json:"root"` // 分类树根节点
}
type GetSystemCategoriesReq {
SystemID string `path:"system_id"` // 系统ID
ParentID string `form:"parentId,optional"` // 父分类ID (可选)
IncludeDescendants bool `form:"includeDescendants,default=true"` // 是否包含子分类
}
type DeleteCategoryReq {
ID string `path:"id"` // 分类ID
}
// ================== 网关服务定义 ==================
@server (
prefix: /api
)
service gateway-api {
// ===== 用户服务 =====
// 公共接口(无需认证)
@handler registerHandler
post /user/register (RegisterReq) returns (RegisterResp)
@handler loginHandler
post /user/login (LoginReq) returns (LoginResp)
}
@server (
prefix: /api
jwt: JwtAuth
)
service gateway-api {
@handler logoutHandler
post /user/logout (LogoutReq) returns (LogoutResp)
@handler getUserInfoHandler
get /user/:user_id (GetUserInfoReq) returns (GetUserInfoResp)
// ===== 分类服务 =====
// 创建分类
@handler createCategoryHandler
post /category/v1 (CreateCategoryReq) returns (CreateCategoryResp)
// 批量获取分类(带分页和过滤)
@handler listCategoriesHandler
get /category/v1 (ListCategoriesReq) returns (ListCategoriesResp)
// 获取单个分类详情
@handler getCategoryHandler
get /category/v1/:id (GetCategoryReq) returns (CategoryDetailResp)
// 更新分类
@handler updateCategoryHandler
put /category/v1/:id (UpdateCategoryReq) returns (BaseResp)
// 删除分类
@handler deleteCategoryHandler
delete /category/v1/:id (DeleteCategoryReq) returns (BaseResp)
// 获取子分类树
@handler getCategoryTreeHandler
get /category/v1/:id/tree (GetCategoryTreeReq) returns (CategoryTreeResp)
// 根据系统ID获取分类
@handler getSystemCategoriesHandler
get /category/v1/system/:system_id (GetSystemCategoriesReq) returns (ListCategoriesResp)
}