package login import ( "context" "errors" "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/print" "git.apinb.com/bsm-sdk/core/utils" "git.apinb.com/bsm-sdk/sample/internal/impl" "git.apinb.com/bsm-sdk/sample/internal/logic/common" "git.apinb.com/bsm-sdk/sample/internal/vars" pb "git.apinb.com/bsm-sdk/sample/pb" "gorm.io/gorm" ) // 通过验证码登录并注册 func CodeAndRegister(ctx context.Context, in *pb.LoginByCodeRequest) (reply *pb.LoginReply, err error) { if in.Phone == "" || in.Code == "" { return nil, errcode.ErrInvalidArgument } var pa models.sampleAccount err = impl.DBService.Where("phone = ?", in.Phone).First(&pa).Error if err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { print.Error("Get sample account by phone %v error:%v", in.Phone, err) return nil, errcode.ErrDB } pa = models.sampleAccount{ Account: in.Phone, Phone: in.Phone, } pa.Identity = utils.UUID() pa.Status = vars.Status_Normal err = impl.DBService.Create(&pa).Error if err != nil { print.Error("create sample account and password extend by data %+v error:%v", pa, err) return nil, errcode.ErrDB } } if pa.Status == vars.Status_Disable { return nil, errcode.ErrPermissionDenied } paExtend := map[string]string{ "rights": pa.Rights, } token, err := common.GenerateTokenAes(uint(pa.ID), pa.Identity, "", pa.Rights, paExtend) if err != nil { return nil, err } return &pb.LoginReply{ Id: int64(pa.ID), Identity: pa.Identity, Token: token, Extend: paExtend, }, nil }