syntax = "v1"

info (
	title:   "角色服务"
	desc:    "角色服务"
	version: "v1"
)

@server (
	prefix: api/v1/admin/role
	group:  admin_role
	middleware: AdminAuthInterceptor
)
service main {
	@doc "获取角色列表"
	@handler GetRoleList
	get /list (GetRoleListReq) returns (GetRoleListResp)

	@doc "获取角色详情"
	@handler GetRoleDetail
	get /detail/:id (GetRoleDetailReq) returns (GetRoleDetailResp)

	@doc "创建角色"
	@handler CreateRole
	post /create (CreateRoleReq) returns (CreateRoleResp)

	@doc "更新角色"
	@handler UpdateRole
	put /update/:id (UpdateRoleReq) returns (UpdateRoleResp)

	@doc "删除角色"
	@handler DeleteRole
	delete /delete/:id (DeleteRoleReq) returns (DeleteRoleResp)
}

type (
	// 列表请求
	GetRoleListReq {
		Page     int64  `form:"page,default=1"`             // 页码
		PageSize int64  `form:"pageSize,default=20"`        // 每页数量
		Name     string `form:"name,optional"`              // 角色名称
		Code     string `form:"code,optional"`              // 角色编码
		Status   int64  `form:"status,optional,default=-1"` // 状态：0-禁用，1-启用
	}

	// 列表响应
	GetRoleListResp {
		Total int64          `json:"total"` // 总数
		Items []RoleListItem `json:"items"` // 列表
	}

	// 列表项
	RoleListItem {
		Id          int64   `json:"id"`          // 角色ID
		RoleName    string  `json:"role_name"`   // 角色名称
		RoleCode    string  `json:"role_code"`   // 角色编码
		Description string  `json:"description"` // 角色描述
		Status      int64   `json:"status"`      // 状态：0-禁用，1-启用
		Sort        int64   `json:"sort"`        // 排序
		CreateTime  string  `json:"create_time"` // 创建时间
		MenuIds     []int64 `json:"menu_ids"`    // 关联的菜单ID列表
	}

	// 详情请求
	GetRoleDetailReq {
		Id int64 `path:"id"` // 角色ID
	}

	// 详情响应
	GetRoleDetailResp {
		Id          int64   `json:"id"`          // 角色ID
		RoleName    string  `json:"role_name"`   // 角色名称
		RoleCode    string  `json:"role_code"`   // 角色编码
		Description string  `json:"description"` // 角色描述
		Status      int64   `json:"status"`      // 状态：0-禁用，1-启用
		Sort        int64   `json:"sort"`        // 排序
		CreateTime  string  `json:"create_time"` // 创建时间
		UpdateTime  string  `json:"update_time"` // 更新时间
		MenuIds     []int64 `json:"menu_ids"`    // 关联的菜单ID列表
	}

	// 创建请求
	CreateRoleReq {
		RoleName    string  `json:"role_name"`        // 角色名称
		RoleCode    string  `json:"role_code"`        // 角色编码
		Description string  `json:"description"`      // 角色描述
		Status      int64   `json:"status,default=1"` // 状态：0-禁用，1-启用
		Sort        int64   `json:"sort,default=0"`   // 排序
		MenuIds     []int64 `json:"menu_ids"`         // 关联的菜单ID列表
	}

	// 创建响应
	CreateRoleResp {
		Id int64 `json:"id"` // 角色ID
	}

	// 更新请求
	UpdateRoleReq {
		Id          int64   `path:"id"`                   // 角色ID
		RoleName    *string `json:"role_name,optional"`   // 角色名称
		RoleCode    *string `json:"role_code,optional"`   // 角色编码
		Description *string `json:"description,optional"` // 角色描述
		Status      *int64  `json:"status,optional"`      // 状态：0-禁用，1-启用
		Sort        *int64  `json:"sort,optional"`        // 排序
		MenuIds     []int64 `json:"menu_ids,optional"`    // 关联的菜单ID列表
	}

	// 更新响应
	UpdateRoleResp {
		Success bool `json:"success"` // 是否成功
	}

	// 删除请求
	DeleteRoleReq {
		Id int64 `path:"id"` // 角色ID
	}

	// 删除响应
	DeleteRoleResp {
		Success bool `json:"success"` // 是否成功
	}
)