70 lines
1.6 KiB
Go
70 lines
1.6 KiB
Go
|
|
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
|
|||
|
|
}
|
|||
|
|
|