Merge remote-tracking branch 'origin/errcode' into errcode

This commit is contained in:
withchao
2023-03-29 10:16:03 +08:00
14 changed files with 75 additions and 29 deletions
+11 -1
View File
@@ -184,7 +184,17 @@ func (g *groupDatabase) FindGroupMember(ctx context.Context, groupIDs []string,
return g.groupMemberDB.Find(ctx, groupIDs, userIDs, roleLevels)
}
func (g *groupDatabase) PageGroupMember(ctx context.Context, groupIDs []string, userIDs []string, roleLevels []int32, pageNumber, showNumber int32) (uint32, []*relationTb.GroupMemberModel, error) {
func (g *groupDatabase) PageGroupMember(ctx context.Context, groupIDs []string, userIDs []string, roleLevels []int32, pageNumber, showNumber int32) (total uint32, totalGroupMembers []*relationTb.GroupMemberModel, err error) {
if roleLevels == nil && pageNumber == 0 && showNumber == 0 {
for _, groupID := range groupIDs {
groupMembers, err := g.cache.GetAllGroupMembersInfo(ctx, groupID)
if err != nil {
return 0, nil, err
}
totalGroupMembers = append(totalGroupMembers, groupMembers...)
}
}
return g.groupMemberDB.SearchMember(ctx, "", groupIDs, userIDs, roleLevels, pageNumber, showNumber)
}
+24 -6
View File
@@ -2,7 +2,10 @@ package controller
import (
"context"
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/cache"
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/relation"
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/tx"
"github.com/OpenIMSDK/Open-IM-Server/pkg/errs"
"github.com/OpenIMSDK/Open-IM-Server/pkg/utils"
)
@@ -30,10 +33,12 @@ type UserDatabase interface {
type userDatabase struct {
userDB relation.UserModelInterface
cache cache.UserCache
tx tx.Tx
}
func NewUserDatabase(userDB relation.UserModelInterface) UserDatabase {
return &userDatabase{userDB: userDB}
func NewUserDatabase(userDB relation.UserModelInterface, cache cache.UserCache, tx tx.Tx) UserDatabase {
return &userDatabase{userDB: userDB, cache: cache, tx: tx}
}
func (u *userDatabase) InitOnce(ctx context.Context, users []*relation.UserModel) (err error) {
@@ -53,7 +58,7 @@ func (u *userDatabase) InitOnce(ctx context.Context, users []*relation.UserModel
// 获取指定用户的信息 如有userID未找到 也返回错误
func (u *userDatabase) FindWithError(ctx context.Context, userIDs []string) (users []*relation.UserModel, err error) {
users, err = u.userDB.Find(ctx, userIDs)
users, err = u.cache.GetUsersInfo(ctx, userIDs)
if err != nil {
return
}
@@ -65,7 +70,7 @@ func (u *userDatabase) FindWithError(ctx context.Context, userIDs []string) (use
// 获取指定用户的信息 如有userID未找到 不返回错误
func (u *userDatabase) Find(ctx context.Context, userIDs []string) (users []*relation.UserModel, err error) {
users, err = u.userDB.Find(ctx, userIDs)
users, err = u.cache.GetUsersInfo(ctx, userIDs)
return
}
@@ -76,12 +81,25 @@ func (u *userDatabase) Create(ctx context.Context, users []*relation.UserModel)
// 更新(非零值) 外部保证userID存在
func (u *userDatabase) Update(ctx context.Context, user *relation.UserModel) (err error) {
return u.userDB.Update(ctx, user)
return u.tx.Transaction(func(tx any) error {
err = u.userDB.Update(ctx, user)
if err != nil {
return err
}
return u.cache.DelUsersInfo(user.UserID).ExecDel(ctx)
})
}
// 更新(零值) 外部保证userID存在
func (u *userDatabase) UpdateByMap(ctx context.Context, userID string, args map[string]interface{}) (err error) {
return u.userDB.UpdateByMap(ctx, userID, args)
return u.tx.Transaction(func(tx any) error {
err = u.userDB.UpdateByMap(ctx, userID, args)
if err != nil {
return err
}
return u.cache.DelUsersInfo(userID).ExecDel(ctx)
})
}
// 获取,如果没找到,不返回错误