notification
This commit is contained in:
@@ -8,172 +8,11 @@ import (
|
||||
discoveryRegistry "github.com/OpenIMSDK/Open-IM-Server/pkg/discoveryregistry"
|
||||
sdk "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws"
|
||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/rpcclient/check"
|
||||
utils2 "github.com/OpenIMSDK/Open-IM-Server/pkg/utils"
|
||||
utils "github.com/OpenIMSDK/open_utils"
|
||||
)
|
||||
|
||||
type DBFriend struct {
|
||||
*relation.FriendModel
|
||||
userCheck *check.UserCheck
|
||||
}
|
||||
|
||||
func NewDBFriend(friend *relation.FriendModel, zk discoveryRegistry.SvcDiscoveryRegistry) *DBFriend {
|
||||
return &DBFriend{FriendModel: friend, userCheck: check.NewUserCheck(zk)}
|
||||
}
|
||||
|
||||
type PBFriend struct {
|
||||
*sdk.FriendInfo
|
||||
}
|
||||
|
||||
func NewPBFriend(friendInfo *sdk.FriendInfo) *PBFriend {
|
||||
return &PBFriend{FriendInfo: friendInfo}
|
||||
}
|
||||
|
||||
func (*PBFriend) PB2DB(friends []*sdk.FriendInfo) (DBFriends []*relation.FriendModel, err error) {
|
||||
for _, v := range friends {
|
||||
u, err := NewPBFriend(v).Convert()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
DBFriends = append(DBFriends, u)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (db *DBFriend) DB2PB(ctx context.Context, friends []*relation.FriendModel) (pbFriends []*sdk.FriendInfo, err error) {
|
||||
userIDs := utils2.Slice(friends, func(e *relation.FriendModel) string { return e.FriendUserID })
|
||||
users, err := db.userCheck.GetUsersInfoMap(ctx, userIDs, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, v := range friends {
|
||||
pbfriend := &sdk.FriendInfo{FriendUser: &sdk.UserInfo{}}
|
||||
utils.CopyStructFields(pbfriend, users[v.OwnerUserID])
|
||||
utils.CopyStructFields(pbfriend.FriendUser, users[v.FriendUserID])
|
||||
pbfriend.CreateTime = v.CreateTime.Unix()
|
||||
pbfriend.FriendUser.CreateTime = v.CreateTime.Unix()
|
||||
pbfriend.OperatorUserID = v.OperatorUserID
|
||||
pbfriend.OwnerUserID = v.OwnerUserID
|
||||
pbfriend.Remark = v.Remark
|
||||
pbfriend.AddSource = v.AddSource
|
||||
pbfriend.Ex = v.Ex
|
||||
pbFriends = append(pbFriends, pbfriend)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (db *DBFriend) Convert(ctx context.Context) (*sdk.FriendInfo, error) {
|
||||
pbfriend := &sdk.FriendInfo{FriendUser: &sdk.UserInfo{}}
|
||||
utils.CopyStructFields(pbfriend, db)
|
||||
user, err := db.userCheck.GetUserInfo(ctx, db.FriendUserID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
utils.CopyStructFields(pbfriend.FriendUser, user)
|
||||
pbfriend.CreateTime = db.CreateTime.Unix()
|
||||
|
||||
pbfriend.FriendUser.CreateTime = db.CreateTime.Unix()
|
||||
return pbfriend, nil
|
||||
}
|
||||
|
||||
func (pb *PBFriend) Convert() (*relation.FriendModel, error) {
|
||||
dbFriend := &relation.FriendModel{}
|
||||
utils.CopyStructFields(dbFriend, pb)
|
||||
dbFriend.FriendUserID = pb.FriendUser.UserID
|
||||
dbFriend.CreateTime = utils.UnixSecondToTime(pb.CreateTime)
|
||||
return dbFriend, nil
|
||||
}
|
||||
|
||||
type DBFriendRequest struct {
|
||||
*relation.FriendRequestModel
|
||||
userCheck *check.UserCheck
|
||||
}
|
||||
|
||||
func NewDBFriendRequest(friendRequest *relation.FriendRequestModel, zk discoveryRegistry.SvcDiscoveryRegistry) *DBFriendRequest {
|
||||
return &DBFriendRequest{FriendRequestModel: friendRequest, userCheck: check.NewUserCheck(zk)}
|
||||
}
|
||||
|
||||
type PBFriendRequest struct {
|
||||
*sdk.FriendRequest
|
||||
}
|
||||
|
||||
func NewPBFriendRequest(friendRequest *sdk.FriendRequest) *PBFriendRequest {
|
||||
return &PBFriendRequest{FriendRequest: friendRequest}
|
||||
}
|
||||
|
||||
func (*PBFriendRequest) PB2DB(friendRequests []*sdk.FriendRequest) (DBFriendRequests []*relation.FriendRequestModel, err error) {
|
||||
for _, v := range friendRequests {
|
||||
u, err := NewPBFriendRequest(v).Convert()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
DBFriendRequests = append(DBFriendRequests, u)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (db *DBFriendRequest) DB2PB(ctx context.Context, friendRequests []*relation.FriendRequestModel) (PBFriendRequests []*sdk.FriendRequest, err error) {
|
||||
userIDs := make([]string, 0)
|
||||
if len(friendRequests) > 0 {
|
||||
userIDs = append(userIDs, friendRequests[0].FromUserID)
|
||||
}
|
||||
for _, v := range friendRequests {
|
||||
userIDs = append(userIDs, v.ToUserID)
|
||||
}
|
||||
users, err := db.userCheck.GetUsersInfoMap(ctx, userIDs, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, v := range friendRequests {
|
||||
pbFriendRequest := &sdk.FriendRequest{}
|
||||
pbFriendRequest.FromUserID = users[v.FromUserID].UserID
|
||||
pbFriendRequest.FromNickname = users[v.FromUserID].Nickname
|
||||
pbFriendRequest.FromFaceURL = users[v.FromUserID].FaceURL
|
||||
pbFriendRequest.ToUserID = users[v.ToUserID].UserID
|
||||
pbFriendRequest.ToNickname = users[v.ToUserID].Nickname
|
||||
pbFriendRequest.ToFaceURL = users[v.ToUserID].FaceURL
|
||||
pbFriendRequest.CreateTime = v.CreateTime.Unix()
|
||||
pbFriendRequest.HandleTime = v.HandleTime.Unix()
|
||||
pbFriendRequest.HandlerUserID = v.HandlerUserID
|
||||
pbFriendRequest.HandleResult = v.HandleResult
|
||||
pbFriendRequest.Ex = v.Ex
|
||||
pbFriendRequest.HandleMsg = v.HandleMsg
|
||||
pbFriendRequest.ReqMsg = v.ReqMsg
|
||||
PBFriendRequests = append(PBFriendRequests, pbFriendRequest)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (pb *PBFriendRequest) Convert() (*relation.FriendRequestModel, error) {
|
||||
dbFriendRequest := &relation.FriendRequestModel{}
|
||||
utils.CopyStructFields(dbFriendRequest, pb)
|
||||
dbFriendRequest.CreateTime = utils.UnixSecondToTime(int64(pb.CreateTime))
|
||||
dbFriendRequest.HandleTime = utils.UnixSecondToTime(int64(pb.HandleTime))
|
||||
return dbFriendRequest, nil
|
||||
}
|
||||
func (db *DBFriendRequest) Convert(ctx context.Context) (*sdk.FriendRequest, error) {
|
||||
pbFriendRequest := &sdk.FriendRequest{}
|
||||
utils.CopyStructFields(pbFriendRequest, db)
|
||||
user, err := db.userCheck.GetUserInfo(ctx, db.FromUserID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
pbFriendRequest.FromNickname = user.Nickname
|
||||
pbFriendRequest.FromFaceURL = user.FaceURL
|
||||
user, err = db.userCheck.GetUserInfo(ctx, db.ToUserID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
pbFriendRequest.ToNickname = user.Nickname
|
||||
pbFriendRequest.ToFaceURL = user.FaceURL
|
||||
pbFriendRequest.CreateTime = db.CreateTime.Unix()
|
||||
pbFriendRequest.HandleTime = db.HandleTime.Unix()
|
||||
return pbFriendRequest, nil
|
||||
}
|
||||
|
||||
type DBBlack struct {
|
||||
*relation.BlackModel
|
||||
userCheck *check.UserCheck
|
||||
}
|
||||
|
||||
func (*PBBlack) PB2DB(blacks []*sdk.BlackInfo) (DBBlacks []*relation.BlackModel, err error) {
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package convert
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
relationTb "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/relation"
|
||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws"
|
||||
)
|
||||
|
||||
func UsersDB2Pb(users []*relationTb.UserModel) (result []*sdkws.UserInfo) {
|
||||
for _, user := range users {
|
||||
var userPb sdkws.UserInfo
|
||||
userPb.UserID = user.UserID
|
||||
userPb.Nickname = user.Nickname
|
||||
userPb.FaceURL = user.FaceURL
|
||||
userPb.Ex = user.Ex
|
||||
userPb.CreateTime = user.CreateTime.Unix()
|
||||
userPb.AppMangerLevel = user.AppMangerLevel
|
||||
userPb.GlobalRecvMsgOpt = user.GlobalRecvMsgOpt
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func UserPb2DB(user *sdkws.UserInfo) *relationTb.UserModel {
|
||||
var userDB relationTb.UserModel
|
||||
userDB.UserID = user.UserID
|
||||
userDB.Nickname = user.Nickname
|
||||
userDB.FaceURL = user.FaceURL
|
||||
userDB.Ex = user.Ex
|
||||
userDB.CreateTime = time.Unix(user.CreateTime, 0)
|
||||
userDB.AppMangerLevel = user.AppMangerLevel
|
||||
userDB.GlobalRecvMsgOpt = user.GlobalRecvMsgOpt
|
||||
return &userDB
|
||||
}
|
||||
Reference in New Issue
Block a user