kra-new/internal/modules/system/biz/position.go

49 lines
1.2 KiB
Go

package biz
import (
"context"
"time"
)
type Position struct {
ID uint
CreatedAt time.Time
UpdatedAt time.Time
Name string
Code string
Sort int
Status *bool
Remark string
}
type PositionListFilter struct {
Name string
Code string
Status *bool
}
type PositionRepo interface {
CreatePosition(context.Context, *Position) error
UpdatePosition(context.Context, *Position) error
DeletePosition(context.Context, uint) error
FindPosition(context.Context, uint) (*Position, error)
ListPositions(context.Context, int, int, *PositionListFilter) ([]*Position, int64, error)
PositionUserIDs(context.Context, uint) ([]uint, error)
SetPositionUsers(context.Context, uint, []uint) error
SetUserPositions(context.Context, uint, []uint) error
}
type PositionUsecase struct{ PositionRepo }
func NewPositionUsecase(repo PositionRepo) *PositionUsecase {
return &PositionUsecase{PositionRepo: repo}
}
func (uc *PositionUsecase) Positions(ctx context.Context, page, size int, filter *PositionListFilter) ([]*Position, int64, error) {
return uc.ListPositions(ctx, page, size, filter)
}
func (uc *PositionUsecase) Position(ctx context.Context, id uint) (*Position, error) {
return uc.FindPosition(ctx, id)
}