You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
OneAuth/oa/internal/logic/user/reglogic.go

57 lines
1.2 KiB
Go

package user
import (
"context"
"fmt"
"math/rand"
"strings"
"time"
"oa/errs"
"oa/internal/svc"
"oa/internal/types"
"oa/models"
"github.com/google/uuid"
"github.com/veypi/utils"
"github.com/zeromicro/go-zero/core/logx"
)
type RegLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
func NewRegLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RegLogic {
return &RegLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *RegLogic) Reg(req *types.RegReq) error {
// todo: add your logic here and delete this line
r := rand.New(rand.NewSource(time.Now().UnixNano()))
m := models.NewUserModel(l.svcCtx.Sqlx())
u := &models.User{
Id: strings.ReplaceAll(uuid.New().String(), "-", ""),
Created: time.Now(),
Updated: time.Now(),
Username: req.Username,
RealCode: utils.RandSeq(32),
Icon: fmt.Sprintf("/media/icon/default/%04d.jpg", r.Intn(230)),
Space: 300,
}
var err error
u.CheckCode, err = utils.AesEncrypt(u.RealCode, []byte(req.Pwd))
if err != nil {
return errs.ArgsInvalid.WithErr(err)
}
l.Infof("user: %v", u.Id)
_, err = m.Insert(l.ctx, u)
return err
}