package auth import ( "context" "errors" "time" "photography-backend/internal/model" "photography-backend/internal/svc" "photography-backend/internal/types" "photography-backend/pkg/utils/hash" "github.com/zeromicro/go-zero/core/logx" ) type RegisterLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } // 用户注册 func NewRegisterLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RegisterLogic { return &RegisterLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *RegisterLogic) Register(req *types.RegisterRequest) (resp *types.RegisterResponse, err error) { // 1. 检查用户名是否已存在 existingUser, err := l.svcCtx.UserModel.FindOneByUsername(l.ctx, req.Username) if err == nil && existingUser != nil { return nil, errors.New("用户名已存在") } // 2. 检查邮箱是否已存在 existingEmail, err := l.svcCtx.UserModel.FindOneByEmail(l.ctx, req.Email) if err == nil && existingEmail != nil { return nil, errors.New("邮箱已存在") } // 3. 加密密码 hashedPassword, err := hash.HashPassword(req.Password) if err != nil { return nil, err } // 4. 创建用户 user := &model.User{ Username: req.Username, Email: req.Email, Password: hashedPassword, Status: 1, // 默认激活状态 CreatedAt: time.Now(), UpdatedAt: time.Now(), } _, err = l.svcCtx.UserModel.Insert(l.ctx, user) if err != nil { return nil, err } // 5. 返回注册结果 return &types.RegisterResponse{ BaseResponse: types.BaseResponse{ Code: 200, Message: "注册成功", }, Data: types.User{ Id: user.Id, Username: user.Username, Email: user.Email, Avatar: user.Avatar, Status: int(user.Status), CreatedAt: user.CreatedAt.Unix(), UpdatedAt: user.UpdatedAt.Unix(), }, }, nil }