Files
RelationshipManagement-backend/service/user_service.go
2025-12-10 19:03:24 +08:00

70 lines
1.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package service
import (
"RelationshipManagement-backend/dao"
"RelationshipManagement-backend/model"
"errors"
)
// UserService 用户服务
type UserService struct {
userDAO *dao.UserDAO
}
// NewUserService 创建用户服务实例
func NewUserService(userDAO *dao.UserDAO) *UserService {
return &UserService{userDAO: userDAO}
}
// CreateUser 创建用户
func (s *UserService) CreateUser(user *model.User) error {
// 检查用户名是否已存在
_, err := s.userDAO.GetByUsername(user.Username)
if err == nil {
return errors.New("用户名已存在")
}
// 检查邮箱是否已存在
_, err = s.userDAO.GetByEmail(user.Email)
if err == nil {
return errors.New("邮箱已存在")
}
// 创建用户
return s.userDAO.Create(user)
}
// GetUserByID 根据ID获取用户
func (s *UserService) GetUserByID(id uint) (*model.User, error) {
return s.userDAO.GetByID(id)
}
// GetUserByUsername 根据用户名获取用户
func (s *UserService) GetUserByUsername(username string) (*model.User, error) {
return s.userDAO.GetByUsername(username)
}
// UpdateUser 更新用户
func (s *UserService) UpdateUser(user *model.User) error {
return s.userDAO.Update(user)
}
// DeleteUser 删除用户
func (s *UserService) DeleteUser(id uint) error {
return s.userDAO.Delete(id)
}
// ListUsers 获取用户列表
func (s *UserService) ListUsers(page, pageSize int) ([]*model.User, int64, error) {
offset := (page - 1) * pageSize
users, err := s.userDAO.List(offset, pageSize)
if err != nil {
return nil, 0, err
}
// 获取总数这里简化处理实际应该从DAO获取
total := int64(len(users))
return users, total, nil
}