Files
backend/internal/service/user_service/user_service.go
T
2026-07-15 22:42:31 +08:00

49 lines
1.6 KiB
Go

package user_service
import (
"github.com/XingfenD/yoresee_doc/internal/dto"
"github.com/XingfenD/yoresee_doc/internal/repository"
"github.com/XingfenD/yoresee_doc/internal/repository/user_repo"
"github.com/XingfenD/yoresee_doc/internal/status"
"github.com/sirupsen/logrus"
)
type UserService struct {
userRepo *user_repo.UserRepository
}
func NewUserService(repos *repository.Repositories) *UserService {
return &UserService{
userRepo: repos.User,
}
}
func (s *UserService) GetByExternalID(externalID string) (*dto.UserResponse, error) {
userModel, err := s.userRepo.GetByExternalID(externalID).Exec()
if err != nil {
logrus.Errorf("[Service layer: UserService] GetByExternalID failed, external_id=%s, err=%+v", externalID, err)
return nil, status.GenErrWithCustomMsg(status.StatusUserNotFound, "user not found")
}
return dto.NewUserResponseFromModel(userModel), nil
}
func (s *UserService) GetByID(id int64) (*dto.UserResponse, error) {
userModel, err := s.userRepo.GetByID(id).Exec()
if err != nil {
logrus.Errorf("[Service layer: UserService] GetByID failed, id=%d, err=%+v", id, err)
return nil, status.GenErrWithCustomMsg(status.StatusUserNotFound, "user not found")
}
return dto.NewUserResponseFromModel(userModel), nil
}
func (s *UserService) GetIDByExternalID(externalID string) (int64, error) {
id, err := s.userRepo.GetIDByExternalID(externalID).Exec()
if err != nil {
logrus.Errorf("[Service layer: UserService] GetIDByExternalID failed, external_id=%s, err=%+v", externalID, err)
return 0, status.GenErrWithCustomMsg(status.StatusUserNotFound, "user not found")
}
return id, nil
}
var UserSvc *UserService