backend/pkg/permission/domain/usecase/role.go

71 lines
2.4 KiB
Go

package usecase
import (
"backend/pkg/permission/domain/permission"
"context"
)
// RoleUseCase 角色業務邏輯介面
type RoleUseCase interface {
// Create 建立角色
Create(ctx context.Context, req CreateRoleRequest) (*RoleResponse, error)
// Update 更新角色
Update(ctx context.Context, uid string, req UpdateRoleRequest) (*RoleResponse, error)
// Delete 刪除角色
Delete(ctx context.Context, uid string) error
// Get 取得角色
Get(ctx context.Context, uid string) (*RoleResponse, error)
// List 列出所有角色
List(ctx context.Context, filter RoleFilterRequest) ([]*RoleResponse, error)
// Page 分頁查詢角色
Page(ctx context.Context, filter RoleFilterRequest, page, size int) (*RolePageResponse, error)
}
// CreateRoleRequest 建立角色請求
type CreateRoleRequest struct {
ClientID int `json:"client_id" binding:"required"`
Name string `json:"name" binding:"required"`
Permissions permission.Permissions `json:"permissions"`
}
// UpdateRoleRequest 更新角色請求
type UpdateRoleRequest struct {
Name *string `json:"name"`
Status *permission.RecordState `json:"status"`
Permissions permission.Permissions `json:"permissions"`
}
// RoleFilterRequest 角色查詢過濾請求
type RoleFilterRequest struct {
ClientID int `json:"client_id"`
Name string `json:"name"`
Status *permission.RecordState `json:"status"`
Permissions []string `json:"permissions"`
}
// RoleResponse 角色回應
type RoleResponse struct {
ID string `json:"id"`
UID string `json:"uid"`
ClientID int `json:"client_id"`
Name string `json:"name"`
Status permission.RecordState `json:"status"`
Permissions permission.Permissions `json:"permissions"`
CreateTime string `json:"create_time"`
UpdateTime string `json:"update_time"`
}
// RoleWithUserCountResponse 角色回應 (含使用者數量)
type RoleWithUserCountResponse struct {
RoleResponse
UserCount int `json:"user_count"`
}
// RolePageResponse 角色分頁回應
type RolePageResponse struct {
List []*RoleWithUserCountResponse `json:"list"`
Total int64 `json:"total"`
Page int `json:"page"`
Size int `json:"size"`
}