This commit is contained in:
oneao committed 2026-01-27 17:33:32 +08:00
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)
}