u
This commit is contained in:
1 parent
8663cb2e3d
commit
83cbf18572
34 files changed
+1938
-1350
No files matched your search
@@ -3,15 +3,16 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"allapp/biz/handler/space"
|
||||
"allapp/biz/model/auth"
|
||||
"allapp/conf"
|
||||
"allapp/db"
|
||||
"allapp/db/repo"
|
||||
"allapp/utils"
|
||||
"allapp/utils/errorx"
|
||||
"allapp/utils/httpx"
|
||||
"allapp/utils/idgen"
|
||||
"allapp/utils/jwtx"
|
||||
"allapp/utils/redisx"
|
||||
"allapp/utils/response"
|
||||
"context"
|
||||
"fmt"
|
||||
@@ -57,6 +58,14 @@ func LoginQq(ctx context.Context, c *app.RequestContext) {
|
||||
return
|
||||
}
|
||||
|
||||
// 初始化空间信息
|
||||
err := InitUserSpaces(ctx, user.UserID)
|
||||
|
||||
if err != nil {
|
||||
errorx.AddError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
_ = db.Queries.UpdateUserLastLoginTime(ctx, user.UserID)
|
||||
token, _ := jwtx.CreateToken(user.UserID)
|
||||
|
||||
@@ -64,6 +73,7 @@ func LoginQq(ctx context.Context, c *app.RequestContext) {
|
||||
resp.UserId = user.UserID
|
||||
resp.Username = user.Username
|
||||
resp.Avatar = user.Avatar
|
||||
|
||||
response.Success(c).Data(resp).Send()
|
||||
return
|
||||
}
|
||||
@@ -140,6 +150,14 @@ func LoginWx(ctx context.Context, c *app.RequestContext) {
|
||||
return
|
||||
}
|
||||
|
||||
// 初始化用户空间信息
|
||||
err := InitUserSpaces(ctx, user.UserID)
|
||||
|
||||
if err != nil {
|
||||
errorx.AddError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
_ = db.Queries.UpdateUserLastLoginTime(ctx, user.UserID)
|
||||
token, _ := jwtx.CreateToken(user.UserID)
|
||||
|
||||
@@ -175,7 +193,6 @@ func LoginWx(ctx context.Context, c *app.RequestContext) {
|
||||
// registerUser 注册通用函数
|
||||
func registerUser(ctx context.Context, c *app.RequestContext, openid, nickname, avatar string, loginType int32) {
|
||||
userId := idgen.NextId()
|
||||
spaceId := idgen.NextId()
|
||||
|
||||
if nickname == "" {
|
||||
nickname = fmt.Sprintf("用户_%d", userId)
|
||||
@@ -185,33 +202,10 @@ func registerUser(ctx context.Context, c *app.RequestContext, openid, nickname,
|
||||
}
|
||||
|
||||
err := db.WithTx(ctx, func(q *repo.Queries) error {
|
||||
// 生成唯一邀请码
|
||||
var inviteCode string
|
||||
for {
|
||||
code := utils.GenerateCode(6)
|
||||
_, err := q.FindSpaceByInviteCode(ctx, code)
|
||||
if errorx.IsNotFound(err) {
|
||||
inviteCode = code
|
||||
break
|
||||
} else if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
// 确保空间存在
|
||||
err := space.EnsureUserHasSpaceWithTx(ctx, q, userId)
|
||||
|
||||
// 插入空间
|
||||
if err := q.InsertSpace(ctx, repo.InsertSpaceParams{
|
||||
ID: spaceId,
|
||||
InviteCode: inviteCode,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 插入空间用户
|
||||
if err := q.InsertSpaceUser(ctx, repo.InsertSpaceUserParams{
|
||||
ID: idgen.NextId(),
|
||||
SpaceID: spaceId,
|
||||
UserID: userId,
|
||||
}); err != nil {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -248,6 +242,14 @@ func registerUser(ctx context.Context, c *app.RequestContext, openid, nickname,
|
||||
return
|
||||
}
|
||||
|
||||
// 初始化用户空间信息
|
||||
err = InitUserSpaces(ctx, userId)
|
||||
|
||||
if err != nil {
|
||||
errorx.AddError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
token, _ := jwtx.CreateToken(userId)
|
||||
resp := &auth.LoginResp{
|
||||
Token: token,
|
||||
@@ -289,3 +291,18 @@ func initMoneyCategoryTx(ctx context.Context, q *repo.Queries, userId int64) err
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// 初始化用户空间信息
|
||||
func InitUserSpaces(ctx context.Context, userID int64) error {
|
||||
spaces, err := db.Queries.ListUserSpaces(ctx, userID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
spaceRoles := make(map[int64]int32, len(spaces))
|
||||
for _, row := range spaces {
|
||||
spaceRoles[row.ID] = row.Role
|
||||
}
|
||||
|
||||
return redisx.SetUserSpaces(ctx, userID, spaceRoles)
|
||||
}
|
||||
Reference in new issue
Block a user