This commit is contained in:
oneao committed 2026-01-28 17:19:41 +08:00
1 parent 5ca04f85ca
commit d9c49b34db
17 files changed
+452 -175

No files matched your search

@@ -3,7 +3,6 @@
package auth
import (
"allapp/biz/handler/space"
"allapp/biz/model/auth"
"allapp/conf"
"allapp/db"
@@ -12,7 +11,6 @@ import (
"allapp/utils/httpx"
"allapp/utils/idgen"
"allapp/utils/jwtx"
"allapp/utils/redisx"
"allapp/utils/response"
"context"
"fmt"
@@ -58,14 +56,6 @@ 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)
@@ -150,14 +140,6 @@ 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)
@@ -202,13 +184,6 @@ func registerUser(ctx context.Context, c *app.RequestContext, openid, nickname,
}
err := db.WithTx(ctx, func(q *repo.Queries) error {
// 确保空间存在
err := space.EnsureUserHasSpaceWithTx(ctx, q, userId)
if err != nil {
return err
}
// 插入用户
if err := q.InsertUser(ctx, repo.InsertUserParams{
ID: userId,
@@ -242,14 +217,6 @@ 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,
@@ -291,18 +258,3 @@ 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)
}
@@ -113,7 +113,7 @@ func CreateSpace(ctx context.Context, c *app.RequestContext) {
return
}
resp.Id = spaceId
resp.SpaceId = spaceId
resp.InviteCode = inviteCode
response.Success(c).Data(resp).Send()
@@ -184,6 +184,8 @@ func ExitSpace(ctx context.Context, c *app.RequestContext) {
resp := new(space.ExitSpaceResult)
exitSpaceId := req.SpaceId
userID := middleware.GetUserID(ctx)
spaceUser, err := db.Queries.GetSpaceUser(ctx, userID)
@@ -197,6 +199,11 @@ func ExitSpace(ctx context.Context, c *app.RequestContext) {
}
}
if spaceUser.SpaceID != exitSpaceId {
response.Success(c).Data(resp).Send()
return
}
if spaceUser.Role == 0 {
response.Fail(c).Message("请选择解散空间").Send()
return
@@ -364,8 +371,87 @@ func JoinSpace(ctx context.Context, c *app.RequestContext) {
return
}
resp.Id = spaceByInviteCode.ID
resp.Name = spaceByInviteCode.Name.String
resp.SpaceId = spaceByInviteCode.ID
resp.SpaceName = spaceByInviteCode.Name.String
response.Success(c).Data(resp).Send()
}
// UpdateSpaceUserRole .
// @router /space/updateRole [POST]
func UpdateSpaceUserRole(ctx context.Context, c *app.RequestContext) {
var err error
var req space.UpdateSpaceUserRoleParams
err = c.BindAndValidate(&req)
if err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
resp := new(space.UpdateSpaceUserRoleResult)
userID := middleware.GetUserID(ctx)
spaceID := req.SpaceId
updateUserID := req.UserId
hasPermission, err := hasSpacePermission(ctx, userID, spaceID)
if err != nil {
errorx.AddError(c, err)
return
}
if !hasPermission {
response.Fail(c).Message("无权限操作该空间").Send()
return
}
// 检查是否在该空间
updateSpaceUser, err := db.Queries.GetSpaceUser(ctx, updateUserID)
if err != nil {
if errorx.IsNotFound(err) {
response.Fail(c).Message("授权失败,该用户不在该空间").Send()
return
}
errorx.AddError(c, err)
return
}
if updateSpaceUser.SpaceID != spaceID {
response.Fail(c).Message("授权失败,该用户不在该空间").Send()
return
}
// 更新
err = db.WithTx(ctx, func(q *repo.Queries) error {
err2 := q.UpdateSpaceUserRole(ctx, repo.UpdateSpaceUserRoleParams{
Role: 1,
SpaceID: spaceID,
UserID: userID,
})
if err2 != nil {
return err2
}
err2 = q.UpdateSpaceUserRole(ctx, repo.UpdateSpaceUserRoleParams{
Role: 0,
SpaceID: spaceID,
UserID: updateUserID,
})
if err2 != nil {
return err2
}
return nil
})
if err != nil {
errorx.AddError(c, err)
return
}
response.Success(c).Data(resp).Send()
}