You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

70 lines
1.7 KiB

package service
import (
"context"
"gofaster/internal/auth/model"
"gofaster/internal/auth/repository"
"gorm.io/gorm"
)
type UserService struct {
repo repository.UserRepository
db *gorm.DB
}
func NewUserService(repo repository.UserRepository, db *gorm.DB) *UserService {
return &UserService{
repo: repo,
db: db,
}
}
func (s *UserService) CreateUser(ctx context.Context, user *model.User) error {
return s.repo.Create(ctx, user)
}
func (s *UserService) GetUserByID(ctx context.Context, id uint) (*model.User, error) {
return s.repo.GetByID(ctx, id)
}
func (s *UserService) UpdateUser(ctx context.Context, user *model.User) error {
return s.repo.Update(ctx, user)
}
func (s *UserService) DeleteUser(ctx context.Context, id uint) error {
return s.repo.Delete(ctx, id)
}
func (s *UserService) ListUsers(ctx context.Context, page, pageSize int) ([]*model.User, int64, error) {
return s.repo.List(ctx, page, pageSize)
}
// GetByID 根据ID获取用户(无context版本,用于密码服务)
func (s *UserService) GetByID(id uint) (*model.User, error) {
ctx := context.Background()
return s.repo.GetByID(ctx, id)
}
// Update 更新用户(无context版本,用于密码服务)
func (s *UserService) Update(user *model.User) error {
ctx := context.Background()
return s.repo.Update(ctx, user)
}
// GetRoles 获取角色列表
func (s *UserService) GetRoles(ctx context.Context, page, pageSize int) ([]*model.Role, int64, error) {
roleRepo := repository.NewRoleRepo(s.db)
roles, total, err := roleRepo.List(page, pageSize)
if err != nil {
return nil, 0, err
}
// 转换类型
var rolePtrs []*model.Role
for i := range roles {
rolePtrs = append(rolePtrs, &roles[i])
}
return rolePtrs, total, nil
}