Files
ai_english/serve/internal/service/user_service.go

80 lines
1.8 KiB
Go
Raw Normal View History

2025-11-17 14:09:17 +08:00
package service
import (
"errors"
"github.com/Nanqipro/YunQue-Tech-Projects/ai_english_learning/serve/internal/model"
"github.com/Nanqipro/YunQue-Tech-Projects/ai_english_learning/serve/internal/database"
)
type UserService struct {
userRepo *database.UserRepository
}
func NewUserService(userRepo *database.UserRepository) *UserService {
return &UserService{userRepo: userRepo}
}
// 用户注册
func (s *UserService) Register(username, email, password string) (string, error) {
// 检查用户是否已存在
if _, err := s.userRepo.GetByEmail(email); err == nil {
return "", errors.New("用户已存在")
}
// 创建新用户
user := &model.User{
Username: username,
Email: email,
Password: password, // 实际应用中需要加密
}
userID, err := s.userRepo.Create(user)
if err != nil {
return "", err
}
return userID, nil
}
// 用户登录
func (s *UserService) Login(email, password string) (string, string, error) {
user, err := s.userRepo.GetByEmail(email)
if err != nil {
return "", "", errors.New("用户不存在")
}
// 实际应用中需要验证密码
if user.Password != password {
return "", "", errors.New("密码错误")
}
// 生成 token (实际应用中应使用 JWT 等)
token := "fake-token-" + user.ID
return token, user.ID, nil
}
// 获取用户信息
func (s *UserService) GetProfile(userID string) (*model.User, error) {
user, err := s.userRepo.GetByID(userID)
if err != nil {
return nil, errors.New("用户不存在")
}
return user, nil
}
// 更新用户信息
func (s *UserService) UpdateProfile(userID, username, avatar string) error {
user, err := s.userRepo.GetByID(userID)
if err != nil {
return errors.New("用户不存在")
}
user.Username = username
if avatar != "" {
user.Avatar = avatar
}
return s.userRepo.Update(user)
}