Files
open-im-server/pkg/rpcclient/convert/convert.go
T

328 lines
8.5 KiB
Go
Raw Normal View History

2023-01-31 10:48:02 +08:00
package convert
2023-01-13 20:58:06 +08:00
import (
2023-02-14 15:17:56 +08:00
"context"
2023-03-17 15:48:48 +08:00
"time"
2023-03-16 10:46:06 +08:00
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/relation"
discoveryRegistry "github.com/OpenIMSDK/Open-IM-Server/pkg/discoveryregistry"
sdk "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws"
2023-03-17 11:14:14 +08:00
"github.com/OpenIMSDK/Open-IM-Server/pkg/rpcclient/check"
2023-01-13 20:58:06 +08:00
utils "github.com/OpenIMSDK/open_utils"
)
type DBBlack struct {
2023-02-03 12:16:48 +08:00
*relation.BlackModel
2023-01-13 20:58:06 +08:00
}
2023-02-03 12:16:48 +08:00
func (*PBBlack) PB2DB(blacks []*sdk.BlackInfo) (DBBlacks []*relation.BlackModel, err error) {
2023-02-09 11:18:31 +08:00
for _, v := range blacks {
u, err := NewPBBlack(v).Convert()
if err != nil {
return nil, err
}
DBBlacks = append(DBBlacks, u)
}
return
2023-02-01 17:39:08 +08:00
}
2023-02-14 16:07:35 +08:00
func (db *DBBlack) DB2PB(ctx context.Context, blacks []*relation.BlackModel) (PBBlacks []*sdk.BlackInfo, err error) {
userIDs := make([]string, 0)
2023-02-09 11:18:31 +08:00
for _, v := range blacks {
2023-02-14 16:07:35 +08:00
userIDs = append(userIDs, v.BlockUserID)
}
if len(blacks) > 0 {
userIDs = append(userIDs, blacks[0].OwnerUserID)
}
users, err := db.userCheck.GetUsersInfoMap(ctx, userIDs, true)
if err != nil {
return nil, err
}
for _, v := range blacks {
2023-03-17 17:04:27 +08:00
pbBlack := &sdk.BlackInfo{BlackUserInfo: &sdk.PublicUserInfo{}}
pbBlack.OwnerUserID = v.OwnerUserID
pbBlack.AddSource = v.AddSource
pbBlack.CreateTime = v.CreateTime.Unix()
pbBlack.Ex = v.Ex
2023-02-14 16:07:35 +08:00
utils.CopyStructFields(pbBlack.BlackUserInfo, users[v.BlockUserID])
PBBlacks = append(PBBlacks, pbBlack)
2023-02-09 11:18:31 +08:00
}
return
2023-02-01 17:39:08 +08:00
}
2023-02-14 15:17:56 +08:00
func NewDBBlack(black *relation.BlackModel, zk discoveryRegistry.SvcDiscoveryRegistry) *DBBlack {
return &DBBlack{BlackModel: black, userCheck: check.NewUserCheck(zk)}
2023-01-29 15:03:39 +08:00
}
2023-01-13 20:58:06 +08:00
type PBBlack struct {
*sdk.BlackInfo
}
2023-01-29 15:03:39 +08:00
func NewPBBlack(blackInfo *sdk.BlackInfo) *PBBlack {
return &PBBlack{BlackInfo: blackInfo}
}
2023-02-03 12:16:48 +08:00
func (pb *PBBlack) Convert() (*relation.BlackModel, error) {
dbBlack := &relation.BlackModel{}
2023-01-13 20:58:06 +08:00
dbBlack.BlockUserID = pb.BlackUserInfo.UserID
2023-02-14 16:07:35 +08:00
dbBlack.CreateTime = utils.UnixSecondToTime(pb.CreateTime)
2023-01-13 20:58:06 +08:00
return dbBlack, nil
}
2023-02-14 15:17:56 +08:00
func (db *DBBlack) Convert(ctx context.Context) (*sdk.BlackInfo, error) {
2023-01-13 20:58:06 +08:00
pbBlack := &sdk.BlackInfo{}
utils.CopyStructFields(pbBlack, db)
2023-01-31 10:48:02 +08:00
pbBlack.CreateTime = db.CreateTime.Unix()
2023-03-03 18:55:51 +08:00
user, err := db.userCheck.GetUserInfo(ctx, db.BlockUserID)
2023-01-13 20:58:06 +08:00
if err != nil {
return nil, err
}
utils.CopyStructFields(pbBlack.BlackUserInfo, user)
return pbBlack, nil
}
type DBGroup struct {
2023-02-03 12:16:48 +08:00
*relation.GroupModel
2023-02-14 15:17:56 +08:00
groupCheck *check.GroupChecker
2023-01-13 20:58:06 +08:00
}
2023-02-03 12:16:48 +08:00
func (*PBGroup) PB2DB(groups []*sdk.GroupInfo) (DBGroups []*relation.GroupModel, err error) {
2023-02-09 11:18:31 +08:00
for _, v := range groups {
u, err := NewPBGroup(v).Convert()
if err != nil {
return nil, err
}
DBGroups = append(DBGroups, u)
}
return
2023-02-01 17:45:47 +08:00
}
2023-02-14 16:21:25 +08:00
//func (db *DBGroup) DB2PB(ctx context.Context, zk discoveryRegistry.SvcDiscoveryRegistry, groups []*relation.GroupModel) (PBGroups []*sdk.GroupInfo, err error) {
// for _, v := range groups {
// u, err := NewDBGroup(v, zk).Convert(ctx)
// if err != nil {
// return nil, err
// }
// PBGroups = append(PBGroups, u)
// }
// return
//}
2023-02-01 17:45:47 +08:00
2023-02-14 15:17:56 +08:00
func NewDBGroup(groupModel *relation.GroupModel, zk discoveryRegistry.SvcDiscoveryRegistry) *DBGroup {
return &DBGroup{GroupModel: groupModel, groupCheck: check.NewGroupChecker(zk)}
2023-01-29 15:03:39 +08:00
}
2023-01-13 20:58:06 +08:00
type PBGroup struct {
*sdk.GroupInfo
}
2023-01-29 15:03:39 +08:00
func NewPBGroup(groupInfo *sdk.GroupInfo) *PBGroup {
return &PBGroup{GroupInfo: groupInfo}
}
2023-02-09 11:18:31 +08:00
func (pb *PBGroup) Convert() (*relation.GroupModel, error) {
2023-02-03 12:16:48 +08:00
dst := &relation.GroupModel{}
2023-02-09 11:18:31 +08:00
err := utils.CopyStructFields(dst, pb)
return dst, err
2023-01-13 20:58:06 +08:00
}
2023-02-14 15:17:56 +08:00
func (db *DBGroup) Convert(ctx context.Context) (*sdk.GroupInfo, error) {
2023-01-13 20:58:06 +08:00
dst := &sdk.GroupInfo{}
utils.CopyStructFields(dst, db)
2023-02-14 15:17:56 +08:00
user, err := db.groupCheck.GetOwnerInfo(ctx, db.GroupID)
2023-01-13 20:58:06 +08:00
if err != nil {
return nil, err
}
dst.OwnerUserID = user.UserID
2023-02-14 15:17:56 +08:00
g, err := db.groupCheck.GetGroupInfo(ctx, db.GroupID)
2023-01-13 20:58:06 +08:00
if err != nil {
return nil, err
}
2023-02-14 15:17:56 +08:00
dst.MemberCount = g.MemberCount
2023-01-30 21:57:39 +08:00
dst.CreateTime = db.CreateTime.Unix()
dst.NotificationUpdateTime = db.NotificationUpdateTime.Unix()
2023-01-13 20:58:06 +08:00
if db.NotificationUpdateTime.Unix() < 0 {
dst.NotificationUpdateTime = 0
}
return dst, nil
}
type DBGroupMember struct {
2023-02-03 12:16:48 +08:00
*relation.GroupMemberModel
2023-02-14 15:17:56 +08:00
userCheck *check.UserCheck
2023-01-13 20:58:06 +08:00
}
2023-02-03 12:16:48 +08:00
func (*PBGroupMember) PB2DB(groupMembers []*sdk.GroupMemberFullInfo) (DBGroupMembers []*relation.GroupMemberModel, err error) {
2023-02-09 11:18:31 +08:00
for _, v := range groupMembers {
u, err := NewPBGroupMember(v).Convert()
if err != nil {
return nil, err
}
DBGroupMembers = append(DBGroupMembers, u)
}
return
2023-02-01 17:45:47 +08:00
}
2023-02-14 16:21:25 +08:00
//func (*DBGroupMember) DB2PB(ctx context.Context, groupMembers []*relation.GroupMemberModel) (PBGroupMembers []*sdk.GroupMemberFullInfo, err error) {
// for _, v := range groupMembers {
// u, err := NewDBGroupMember(v).Convert(ctx)
// if err != nil {
// return nil, err
// }
// PBGroupMembers = append(PBGroupMembers, u)
// }
// return
//}
2023-02-01 17:45:47 +08:00
2023-02-03 12:16:48 +08:00
func NewDBGroupMember(groupMember *relation.GroupMemberModel) *DBGroupMember {
2023-02-01 17:39:08 +08:00
return &DBGroupMember{GroupMemberModel: groupMember}
2023-01-29 15:03:39 +08:00
}
2023-01-13 20:58:06 +08:00
type PBGroupMember struct {
*sdk.GroupMemberFullInfo
}
2023-01-29 15:03:39 +08:00
func NewPBGroupMember(groupMemberFullInfo *sdk.GroupMemberFullInfo) *PBGroupMember {
return &PBGroupMember{GroupMemberFullInfo: groupMemberFullInfo}
}
2023-02-03 12:16:48 +08:00
func (pb *PBGroupMember) Convert() (*relation.GroupMemberModel, error) {
dst := &relation.GroupMemberModel{}
2023-01-13 20:58:06 +08:00
utils.CopyStructFields(dst, pb)
dst.JoinTime = utils.UnixSecondToTime(int64(pb.JoinTime))
dst.MuteEndTime = utils.UnixSecondToTime(int64(pb.MuteEndTime))
return dst, nil
}
2023-02-14 15:17:56 +08:00
func (db *DBGroupMember) Convert(ctx context.Context) (*sdk.GroupMemberFullInfo, error) {
2023-01-13 20:58:06 +08:00
dst := &sdk.GroupMemberFullInfo{}
utils.CopyStructFields(dst, db)
2023-03-03 18:55:51 +08:00
user, err := db.userCheck.GetUserInfo(ctx, db.UserID)
2023-01-13 20:58:06 +08:00
if err != nil {
return nil, err
}
2023-02-14 15:17:56 +08:00
dst.AppMangerLevel = user.AppMangerLevel
2023-01-13 20:58:06 +08:00
2023-01-30 21:57:39 +08:00
dst.JoinTime = db.JoinTime.Unix()
2023-01-13 20:58:06 +08:00
if db.JoinTime.Unix() < 0 {
dst.JoinTime = 0
}
2023-01-30 21:57:39 +08:00
dst.MuteEndTime = db.MuteEndTime.Unix()
if dst.MuteEndTime < time.Now().Unix() {
2023-01-13 20:58:06 +08:00
dst.MuteEndTime = 0
}
return dst, nil
}
type DBGroupRequest struct {
2023-02-03 12:16:48 +08:00
*relation.GroupRequestModel
2023-01-13 20:58:06 +08:00
}
2023-02-03 12:16:48 +08:00
func (*PBGroupRequest) PB2DB(groupRequests []*sdk.GroupRequest) (DBGroupRequests []*relation.GroupRequestModel, err error) {
2023-02-09 11:18:31 +08:00
for _, v := range groupRequests {
u, err := NewPBGroupRequest(v).Convert()
if err != nil {
return nil, err
}
DBGroupRequests = append(DBGroupRequests, u)
}
return
2023-02-01 17:45:47 +08:00
}
2023-02-14 16:21:25 +08:00
//func (*DBGroupRequest) DB2PB(groupRequests []*relation.GroupRequestModel) (PBGroupRequests []*sdk.GroupRequest, err error) {
// for _, v := range groupRequests {
// u, err := NewDBGroupRequest(v).Convert()
// if err != nil {
// return nil, err
// }
// PBGroupRequests = append(PBGroupRequests, u)
// }
// return
//}
2023-02-01 17:45:47 +08:00
2023-02-03 12:16:48 +08:00
func NewDBGroupRequest(groupRequest *relation.GroupRequestModel) *DBGroupRequest {
2023-02-01 17:39:08 +08:00
return &DBGroupRequest{GroupRequestModel: groupRequest}
2023-01-29 15:03:39 +08:00
}
2023-01-13 20:58:06 +08:00
type PBGroupRequest struct {
*sdk.GroupRequest
}
2023-01-29 15:03:39 +08:00
func NewPBGroupRequest(groupRequest *sdk.GroupRequest) *PBGroupRequest {
return &PBGroupRequest{GroupRequest: groupRequest}
}
2023-02-03 12:16:48 +08:00
func (pb *PBGroupRequest) Convert() (*relation.GroupRequestModel, error) {
dst := &relation.GroupRequestModel{}
2023-01-13 20:58:06 +08:00
utils.CopyStructFields(dst, pb)
dst.ReqTime = utils.UnixSecondToTime(int64(pb.ReqTime))
dst.HandledTime = utils.UnixSecondToTime(int64(pb.HandleTime))
return dst, nil
}
2023-01-17 18:02:57 +08:00
func (db *DBGroupRequest) Convert() (*sdk.GroupRequest, error) {
2023-01-13 20:58:06 +08:00
dst := &sdk.GroupRequest{}
utils.CopyStructFields(dst, db)
2023-01-31 10:48:02 +08:00
dst.ReqTime = db.ReqTime.Unix()
dst.HandleTime = db.HandledTime.Unix()
2023-01-13 20:58:06 +08:00
return dst, nil
}
2023-01-17 10:08:30 +08:00
type DBUser struct {
2023-02-03 12:16:48 +08:00
*relation.UserModel
2023-01-17 10:08:30 +08:00
}
2023-02-03 12:16:48 +08:00
func NewDBUser(user *relation.UserModel) *DBUser {
2023-02-01 17:39:08 +08:00
return &DBUser{UserModel: user}
2023-01-29 15:03:39 +08:00
}
2023-01-17 10:08:30 +08:00
type PBUser struct {
*sdk.UserInfo
}
2023-01-29 15:03:39 +08:00
func NewPBUser(userInfo *sdk.UserInfo) *PBUser {
return &PBUser{UserInfo: userInfo}
}
2023-02-03 12:16:48 +08:00
func (*PBUser) PB2DB(users []*sdk.UserInfo) (DBUsers []*relation.UserModel, err error) {
2023-01-31 20:33:33 +08:00
for _, v := range users {
u, err := NewPBUser(v).Convert()
if err != nil {
return nil, err
}
DBUsers = append(DBUsers, u)
}
return
}
2023-02-03 12:16:48 +08:00
func (*DBUser) DB2PB(users []*relation.UserModel) (PBUsers []*sdk.UserInfo, err error) {
2023-01-31 20:33:33 +08:00
for _, v := range users {
u, err := NewDBUser(v).Convert()
if err != nil {
return nil, err
}
PBUsers = append(PBUsers, u)
}
return
}
2023-02-03 12:16:48 +08:00
func (pb *PBUser) Convert() (*relation.UserModel, error) {
dst := &relation.UserModel{}
2023-01-17 10:08:30 +08:00
utils.CopyStructFields(dst, pb)
2023-02-07 20:28:34 +08:00
dst.CreateTime = utils.UnixSecondToTime(pb.CreateTime)
2023-01-17 10:08:30 +08:00
return dst, nil
}
2023-01-17 15:03:47 +08:00
2023-01-17 18:02:57 +08:00
func (db *DBUser) Convert() (*sdk.UserInfo, error) {
2023-01-17 15:03:47 +08:00
dst := &sdk.UserInfo{}
2023-01-17 10:08:30 +08:00
utils.CopyStructFields(dst, db)
2023-01-29 17:54:01 +08:00
dst.CreateTime = db.CreateTime.Unix()
2023-01-17 10:08:30 +08:00
return dst, nil
}
2023-01-17 18:02:57 +08:00
func (db *DBUser) ConvertPublic() (*sdk.PublicUserInfo, error) {
2023-01-17 15:03:47 +08:00
dst := &sdk.PublicUserInfo{}
utils.CopyStructFields(dst, db)
return dst, nil
2023-01-13 20:58:06 +08:00
}