| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package service
- import (
- "errors"
-
- "golang.org/x/crypto/bcrypt"
-
- "newaterobot-process/entity"
- "newaterobot-process/model"
- )
- // UserService 用户服务
- type UserService struct {
- userModel *model.UserModel
- }
- // NewUserService 创建用户服务实例
- func NewUserService() *UserService {
- return &UserService{
- userModel: &model.UserModel{},
- }
- }
- // Register 用户注册
- func (s *UserService) Register(username, password, email, nickname string) (*entity.User, error) {
- // 检查用户名是否已存在
- _, err := s.userModel.GetByUsername(username)
- if err == nil {
- return nil, errors.New("用户名已存在")
- }
- // 密码加密
- hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
- if err != nil {
- return nil, err
- }
- // 创建用户
- user := &entity.User{
- Username: username,
- Password: string(hashedPassword),
- Email: email,
- Nickname: nickname,
- Status: 1,
- }
- err = s.userModel.Create(user)
- if err != nil {
- return nil, err
- }
- return user, nil
- }
- // Login 用户登录
- func (s *UserService) Login(username, password string) (string, error) {
- // 获取用户信息
- user, err := s.userModel.GetByUsername(username)
- if err != nil {
- return "", errors.New("用户名或密码错误")
- }
- // 验证密码
- err = bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password))
- if err != nil {
- return "", errors.New("用户名或密码错误")
- }
- // 生成token
- token, err := GetJWTService().GenerateToken(user.ID, user.Username)
- if err != nil {
- return "", err
- }
- return token, nil
- }
- // GetUserByID 根据ID获取用户信息
- func (s *UserService) GetUserByID(id uint) (*entity.User, error) {
- return s.userModel.GetByID(id)
- }
|