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 }