Files
lone-services/services/user/internal/logic/registerLogic.go
T
gjs be8f89f449
CI / changes (push) Successful in 5s
CI / docker-bff (push) Failing after 7s
CI / docker-product (push) Failing after 5s
CI / docker-admin (push) Failing after 4s
CI / docker-user (push) Failing after 6s
change layout
2026-08-20 15:41:44 +08:00

99 lines
2.6 KiB
Go

package logic
import (
"context"
"lone-services/pkg/log"
"lone-services/pkg/modelbase"
"lone-services/pkg/utils"
"lone-services/pkg/validate"
user "lone-services/rpc/user/pb"
"lone-services/services/user/internal/dao"
"lone-services/services/user/internal/model"
"lone-services/services/user/internal/svc"
"lone-services/services/user/validator"
"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 *user.RegisterReq) (*user.Response, error) {
var v validator.RegisterValidator
if msg := validate.ValidateFromProto(in, &v); msg != utils.StringEmpty {
return outResponse(utils.ErrorParams, msg), nil
}
openid := v.Openid
if openid == utils.StringEmpty {
openid = "mock_" + utils.MD5Encrypt(v.Mobile+utils.Now().String())
}
var exist dao.UserExist
err := model.UserModel{}.Init().GetOne(modelbase.Params{
Eq: map[string]string{"openid": openid},
}, &exist)
if err != nil {
log.Errorf("register check openid: %v", err)
return failResponse(utils.Fail), nil
}
if exist.Id > utils.NumberZero {
return failResponse(utils.ErrorExist), nil
}
encryptMobile, cErr := utils.Crypto{}.AESEncryptECB(v.Mobile)
if cErr != nil {
log.Errorf("register encrypt mobile: %v", cErr)
return failResponse(utils.ErrorEncryptAesError), nil
}
add := dao.UserCreate{
Openid: openid,
Username: v.Username,
Nickname: v.Nickname,
Avatar: v.Avatar,
Mobile: encryptMobile,
Gender: uint8(v.Gender),
Birthday: v.Birthday,
AppId: v.AppId,
Status: utils.NumberOne,
IsRegistered: utils.NumberOne,
IsFaceVerified: utils.NumberTwo,
IsProfileCompleted: utils.NumberTwo,
OnTrialNum: utils.NumberOne,
}
err = model.UserModel{}.Init().Create(&add)
if err != nil {
log.Errorf("register create: %v", err)
return failResponse(utils.Fail), nil
}
session := toSession(dao.UserInfo{
Id: add.Id,
Openid: add.Openid,
Username: add.Username,
Nickname: add.Nickname,
Avatar: add.Avatar,
Gender: add.Gender,
Birthday: add.Birthday,
AppId: add.AppId,
Status: add.Status,
}, v.Mobile)
ret := buildToken(session)
if status := setLogin(ret.Token, ret.Refresh, session); status.Code != utils.Ok.Code {
return failResponse(status), nil
}
return okResponse(ret), nil
}