diff --git a/app/main/api/internal/logic/user/mobilecodeloginlogic.go b/app/main/api/internal/logic/user/mobilecodeloginlogic.go index 18373c3..4c27102 100644 --- a/app/main/api/internal/logic/user/mobilecodeloginlogic.go +++ b/app/main/api/internal/logic/user/mobilecodeloginlogic.go @@ -5,12 +5,12 @@ import ( "database/sql" "fmt" "os" - "time" "qnc-server/app/main/api/internal/svc" "qnc-server/app/main/api/internal/types" "qnc-server/app/main/model" "qnc-server/common/xerr" "qnc-server/pkg/lzkit/crypto" + "time" "github.com/pkg/errors" "github.com/zeromicro/go-zero/core/stores/redis" @@ -59,9 +59,17 @@ func (l *MobileCodeLoginLogic) MobileCodeLogin(req *types.MobileCodeLoginReq) (r return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "手机登录, 读取数据库获取用户失败, mobile: %s, err: %+v", encryptedMobile, err) } if user == nil { - return nil, errors.Wrapf(xerr.NewErrMsg("用户不存在"), "手机登录, 用户不存在: %s", encryptedMobile) + // 用户不存在,自动注册新用户 + l.Infof("手机登录, 用户不存在,自动注册新用户: %s", encryptedMobile) + registeredUserID, registerErr := l.svcCtx.UserService.RegisterUser(l.ctx, encryptedMobile) + if registerErr != nil { + return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "手机登录, 自动注册用户失败, mobile: %s, err: %+v", encryptedMobile, registerErr) + } + userID = registeredUserID + l.Infof("手机登录, 自动注册用户成功, userId: %s, mobile: %s", userID, encryptedMobile) + } else { + userID = user.Id } - userID = user.Id token, err := l.svcCtx.UserService.GeneralUserToken(l.ctx, userID) if err != nil { return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "手机登录, 生成token失败 : %s", userID)