package logic import ( "context" "slowwild/internal/errorx" "slowwild/internal/model" "slowwild/internal/svc" "slowwild/internal/utils" "git.banshen.xyz/huangguangrong/slow_wild_protobuff/slowwild/slowwildserver" "github.com/zeromicro/go-zero/core/logx" ) type RegisterLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewRegisterLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RegisterLogic { return &RegisterLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } // 用户注册 func (l *RegisterLogic) Register(in *slowwildserver.RegisterReq) (*slowwildserver.LoginAndRegisterRsp, error) { // 参数校验 if in.Phone == "" || in.Password == "" || in.Code == "" { return nil, errorx.ErrInvalidParam } // 检查手机号是否已注册 _, err := l.svcCtx.UserModel.FindOneByPhone(l.ctx, in.Phone) if err != nil && err != model.ErrNotFound { return nil, errorx.ErrUserQueryFailed } if err == nil { return nil, errorx.NewCodeError(10007, "手机号已注册") } // TODO: 验证验证码 // if !verifyCode(in.Phone, in.Code) { // return nil, errorx.ErrInvalidCode // } // 生成盐值 salt := utils.GenerateSalt() // 加密密码 encryptedPassword := utils.EncryptPassword(in.Password, salt) // 创建用户 user := &model.User{ Phone: in.Phone, Password: encryptedPassword, Salt: salt, Nickname: in.Nickname, Sex: int(in.Sex), Status: 1, // 正常状态 } err = l.svcCtx.UserModel.Create(l.ctx, user) if err != nil { return nil, errorx.NewCodeError(10008, "创建用户失败") } // 生成token token, err := utils.GenerateToken(user.ID) if err != nil { return nil, errorx.ErrGenerateToken } return &slowwildserver.LoginAndRegisterRsp{ Token: token, }, nil }