| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 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
- }
|