49 lines
1.2 KiB
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)
|
|
}
|