diff --git a/internal/rpc/group/copy.go b/internal/rpc/group/copy.go new file mode 100644 index 000000000..654521e1a --- /dev/null +++ b/internal/rpc/group/copy.go @@ -0,0 +1 @@ +package group diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index d3f8eebe5..93865e7b1 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -171,8 +171,8 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR if err := callbackBeforeCreateGroup(ctx, req); err != nil { return nil, err } - var group relation.GroupGorm - var groupMembers []*relation.GroupMember + var group table.GroupModel + var groupMembers []*table.GroupMemberModel utils.CopyStructFields(&group, req.GroupInfo) group.GroupID = genGroupID(ctx, req.GroupInfo.GroupID) if req.GroupInfo.GroupType == constant.SuperGroup { @@ -182,7 +182,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR } else { joinGroup := func(userID string, roleLevel int32) error { user := userMap[userID] - groupMember := &relation.GroupMember{GroupID: group.GroupID, RoleLevel: roleLevel, OperatorUserID: tracelog.GetOpUserID(ctx), JoinSource: constant.JoinByInvitation, InviterUserID: tracelog.GetOpUserID(ctx)} + groupMember := &table.GroupMemberModel{GroupID: group.GroupID, RoleLevel: roleLevel, OperatorUserID: tracelog.GetOpUserID(ctx), JoinSource: constant.JoinByInvitation, InviterUserID: tracelog.GetOpUserID(ctx)} utils.CopyStructFields(&groupMember, user) if err := CallbackBeforeMemberJoinGroup(ctx, tracelog.GetOperationID(ctx), groupMember, group.Ex); err != nil { return err @@ -204,7 +204,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR } } } - if err := s.GroupInterface.CreateGroup(ctx, []*relation.GroupGorm{&group}, groupMembers); err != nil { + if err := s.GroupInterface.CreateGroup(ctx, []*table.GroupModel{&group}, groupMembers); err != nil { return nil, err } utils.CopyStructFields(resp.GroupInfo, group) @@ -280,7 +280,7 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite if err != nil { return nil, err } - memberMap := make(map[string]*relation.GroupMember) + memberMap := make(map[string]*table.GroupMemberModel) for i, member := range members { memberMap[member.GroupID] = members[i] } @@ -306,9 +306,9 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite return nil, constant.ErrNoPermission.Wrap("not in group") } if !(member.RoleLevel == constant.GroupOwner || member.RoleLevel == constant.GroupAdmin) { - var requests []*relation.GroupRequest + var requests []*table.GroupRequestModel for _, userID := range req.InvitedUserIDs { - requests = append(requests, &relation.GroupRequest{ + requests = append(requests, &table.GroupRequestModel{ UserID: userID, GroupID: req.GroupID, JoinSource: constant.JoinByInvitation, @@ -339,10 +339,10 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite } } else { opUserID := tracelog.GetOpUserID(ctx) - var groupMembers []*relation.GroupMember + var groupMembers []*table.GroupMemberModel for _, userID := range req.InvitedUserIDs { user := userMap[userID] - var member relation.GroupMember + var member table.GroupMemberModel utils.CopyStructFields(&member, user) member.GroupID = req.GroupID member.RoleLevel = constant.GroupOrdinaryUsers @@ -400,25 +400,25 @@ func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbGroup.GetGr return resp, nil } -func (s *groupServer) getGroupUserLevel(groupID, userID string) (int, error) { - opFlag := 0 - if !token_verify.IsManagerUserID(userID) { - opInfo, err := relation.GetGroupMemberInfoByGroupIDAndUserID(groupID, userID) - if err != nil { - return opFlag, utils.Wrap(err, "") - } - if opInfo.RoleLevel == constant.GroupOrdinaryUsers { - opFlag = 0 - } else if opInfo.RoleLevel == constant.GroupOwner { - opFlag = 2 // owner - } else { - opFlag = 3 // admin - } - } else { - opFlag = 1 // app manager - } - return opFlag, nil -} +//func (s *groupServer) getGroupUserLevel(groupID, userID string) (int, error) { +// opFlag := 0 +// if !token_verify.IsManagerUserID(userID) { +// opInfo, err := relation.GetGroupMemberInfoByGroupIDAndUserID(groupID, userID) +// if err != nil { +// return opFlag, utils.Wrap(err, "") +// } +// if opInfo.RoleLevel == constant.GroupOrdinaryUsers { +// opFlag = 0 +// } else if opInfo.RoleLevel == constant.GroupOwner { +// opFlag = 2 // owner +// } else { +// opFlag = 3 // admin +// } +// } else { +// opFlag = 1 // app manager +// } +// return opFlag, nil +//} func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGroupMemberReq) (*pbGroup.KickGroupMemberResp, error) { resp := &pbGroup.KickGroupMemberResp{} @@ -450,7 +450,7 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou if err != nil { return nil, err } - memberMap := make(map[string]*relation.GroupMember) + memberMap := make(map[string]*table.GroupMemberModel) for i, member := range members { memberMap[member.UserID] = members[i] } @@ -502,28 +502,28 @@ func (s *groupServer) GetGroupMembersInfo(ctx context.Context, req *pbGroup.GetG return resp, nil } -func FillGroupInfoByGroupID(operationID, groupID string, groupInfo *open_im_sdk.GroupInfo) error { - group, err := relation.TakeGroupInfoByGroupID(groupID) - if err != nil { - log.Error(operationID, "TakeGroupInfoByGroupID failed ", err.Error(), groupID) - return utils.Wrap(err, "") - } - if group.Status == constant.GroupStatusDismissed { - log.Debug(operationID, " group constant.GroupStatusDismissed ", group.GroupID) - return utils.Wrap(constant.ErrDismissedAlready, "") - } - return utils.Wrap(cp.GroupDBCopyOpenIM(groupInfo, group), "") -} +//func FillGroupInfoByGroupID(operationID, groupID string, groupInfo *open_im_sdk.GroupInfo) error { +// group, err := relation.TakeGroupInfoByGroupID(groupID) +// if err != nil { +// log.Error(operationID, "TakeGroupInfoByGroupID failed ", err.Error(), groupID) +// return utils.Wrap(err, "") +// } +// if group.Status == constant.GroupStatusDismissed { +// log.Debug(operationID, " group constant.GroupStatusDismissed ", group.GroupID) +// return utils.Wrap(constant.ErrDismissedAlready, "") +// } +// return utils.Wrap(cp.GroupDBCopyOpenIM(groupInfo, group), "") +//} -func FillPublicUserInfoByUserID(operationID, userID string, userInfo *open_im_sdk.PublicUserInfo) error { - user, err := relation.TakeUserByUserID(userID) - if err != nil { - log.Error(operationID, "TakeUserByUserID failed ", err.Error(), userID) - return utils.Wrap(err, "") - } - cp.UserDBCopyOpenIMPublicUser(userInfo, user) - return nil -} +//func FillPublicUserInfoByUserID(operationID, userID string, userInfo *open_im_sdk.PublicUserInfo) error { +// user, err := relation.TakeUserByUserID(userID) +// if err != nil { +// log.Error(operationID, "TakeUserByUserID failed ", err.Error(), userID) +// return utils.Wrap(err, "") +// } +// cp.UserDBCopyOpenIMPublicUser(userInfo, user) +// return nil +//} func (s *groupServer) GetGroupApplicationList(ctx context.Context, req *pbGroup.GetGroupApplicationListReq) (*pbGroup.GetGroupApplicationListResp, error) { resp := &pbGroup.GetGroupApplicationListResp{} @@ -555,7 +555,7 @@ func (s *groupServer) GetGroupApplicationList(ctx context.Context, req *pbGroup. if err != nil { return nil, err } - groupMap := make(map[string]*relation.GroupGorm) + groupMap := make(map[string]*table.GroupModel) for i, group := range groups { groupMap[group.GroupID] = groups[i] } @@ -628,7 +628,7 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup return nil, err } groupRequest := getDBGroupRequest(ctx, req) - if err := (&relation.GroupRequest{}).Update(ctx, []*relation.GroupRequest{groupRequest}); err != nil { + if err := (&table.GroupRequestModel{}).Update(ctx, []*table.GroupRequestModel{groupRequest}); err != nil { return nil, err } groupInfo, err := rocksCache.GetGroupInfoFromCache(ctx, req.GroupID) @@ -644,7 +644,7 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup if err != nil { return nil, err } - err = (&relation.GroupMember{}).Create(ctx, []*relation.GroupMember{member}) + err = (&table.GroupMemberModel{}).Create(ctx, []*table.GroupMemberModel{member}) if err != nil { return nil, err } @@ -698,7 +698,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) return nil, err } //to group member - groupMember := relation.GroupMember{GroupID: req.GroupID, RoleLevel: constant.GroupOrdinaryUsers, OperatorUserID: tracelog.GetOpUserID(ctx)} + groupMember := table.GroupMemberModel{GroupID: req.GroupID, RoleLevel: constant.GroupOrdinaryUsers, OperatorUserID: tracelog.GetOpUserID(ctx)} utils.CopyStructFields(&groupMember, us) if err := CallbackBeforeMemberJoinGroup(ctx, tracelog.GetOperationID(ctx), &groupMember, groupInfo.Ex); err != nil { return nil, err @@ -741,7 +741,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) return resp, nil } } - var groupRequest relation.GroupRequest + var groupRequest table.GroupRequestModel groupRequest.UserID = tracelog.GetOpUserID(ctx) groupRequest.ReqMsg = req.ReqMessage groupRequest.GroupID = req.GroupID @@ -852,7 +852,7 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInf } } //only administrators can set group information - var groupInfo relation.GroupGorm + var groupInfo table.GroupModel utils.CopyStructFields(&groupInfo, req.GroupInfoForSet) if req.GroupInfoForSet.Notification != "" { groupInfo.NotificationUserID = tracelog.GetOpUserID(ctx) @@ -929,12 +929,12 @@ func (s *groupServer) TransferGroupOwner(ctx context.Context, req *pbGroup.Trans return nil, err } - groupMemberInfo := relation.GroupMember{GroupID: req.GroupID, UserID: req.OldOwnerUserID, RoleLevel: constant.GroupOrdinaryUsers} + groupMemberInfo := table.GroupMemberModel{GroupID: req.GroupID, UserID: req.OldOwnerUserID, RoleLevel: constant.GroupOrdinaryUsers} err = relation.UpdateGroupMemberInfo(groupMemberInfo) if err != nil { return nil, err } - groupMemberInfo = relation.GroupMember{GroupID: req.GroupID, UserID: req.NewOwnerUserID, RoleLevel: constant.GroupOwner} + groupMemberInfo = table.GroupMemberModel{GroupID: req.GroupID, UserID: req.NewOwnerUserID, RoleLevel: constant.GroupOwner} err = relation.UpdateGroupMemberInfo(groupMemberInfo) if err != nil { return nil, err @@ -1128,7 +1128,7 @@ func (s *groupServer) MuteGroupMember(ctx context.Context, req *pbGroup.MuteGrou if err := rocksCache.DelGroupMemberInfoFromCache(ctx, req.GroupID, req.UserID); err != nil { return nil, err } - groupMemberInfo := relation.GroupMember{GroupID: req.GroupID, UserID: req.UserID} + groupMemberInfo := table.GroupMemberModel{GroupID: req.GroupID, UserID: req.UserID} groupMemberInfo.MuteEndTime = time.Unix(int64(time.Now().Second())+int64(req.MutedSeconds), time.Now().UnixNano()) err = relation.UpdateGroupMemberInfo(groupMemberInfo) if err != nil { @@ -1163,7 +1163,7 @@ func (s *groupServer) CancelMuteGroupMember(ctx context.Context, req *pbGroup.Ca return nil, err } - groupMemberInfo := relation.GroupMember{GroupID: req.GroupID, UserID: req.UserID} + groupMemberInfo := table.GroupMemberModel{GroupID: req.GroupID, UserID: req.UserID} groupMemberInfo.MuteEndTime = time.Unix(0, 0) err = relation.UpdateGroupMemberInfo(groupMemberInfo) if err != nil { @@ -1262,7 +1262,7 @@ func (s *groupServer) SetGroupMemberNickname(ctx context.Context, req *pbGroup.S return nil, err } nickName := cbReq.Nickname.Value - groupMemberInfo := relation.GroupMember{} + groupMemberInfo := table.GroupMemberModel{} groupMemberInfo.UserID = req.UserID groupMemberInfo.GroupID = req.GroupID if nickName == "" { @@ -1295,7 +1295,7 @@ func (s *groupServer) SetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGr if err := CallbackBeforeSetGroupMemberInfo(ctx, req); err != nil { return nil, err } - groupMember := relation.GroupMember{ + groupMember := table.GroupMemberModel{ GroupID: req.GroupID, UserID: req.UserID, } diff --git a/pkg/common/db/controller/group.go b/pkg/common/db/controller/group.go index 1f0ebd68d..b9371b8be 100644 --- a/pkg/common/db/controller/group.go +++ b/pkg/common/db/controller/group.go @@ -15,21 +15,21 @@ import ( type GroupInterface interface { FindGroupsByID(ctx context.Context, groupIDs []string) (groups []*table.GroupModel, err error) - CreateGroup(ctx context.Context, groups []*table.GroupModel, groupMember []*table.GroupModel) error + CreateGroup(ctx context.Context, groups []*table.GroupModel, groupMember []*table.GroupMemberModel) error DeleteGroupByIDs(ctx context.Context, groupIDs []string) error TakeGroupByID(ctx context.Context, groupID string) (group *table.GroupModel, err error) TakeGroupMemberByID(ctx context.Context, groupID string, userID string) (groupMember *table.GroupModel, err error) GetJoinedGroupList(ctx context.Context, userID string) ([]*table.GroupModel, error) - GetGroupMemberList(ctx context.Context, groupID string) ([]*table.GroupModel, error) - GetGroupMemberListByUserID(ctx context.Context, groupID string, userIDs []string) ([]*table.GroupModel, error) + GetGroupMemberList(ctx context.Context, groupID string) ([]*table.GroupMemberModel, error) + GetGroupMemberListByUserID(ctx context.Context, groupID string, userIDs []string) ([]*table.GroupMemberModel, error) GetGroupMemberFilterList(ctx context.Context, groupID string, filter int32, begin int32, maxNumber int32) ([]*table.GroupModel, error) // relation.GetGroupMemberByGroupID(req.GroupID, req.Filter, req.NextSeq, 30) - FindGroupMembersByID(ctx context.Context, groupID string, userIDs []string) (groups []*table.GroupModel, err error) + FindGroupMembersByID(ctx context.Context, groupID string, userIDs []string) (groups []*table.GroupMemberModel, err error) DelGroupMember(ctx context.Context, groupID string, userIDs []string) error GetGroupMemberNum(ctx context.Context, groupIDs []string) (map[string]int, error) GetGroupOwnerUserID(ctx context.Context, groupIDs []string) (map[string]string, error) GetGroupRecvApplicationList(ctx context.Context, userID string) ([]*table.GroupRequestModel, error) - CreateGroupMember(ctx context.Context, groupMember []*table.GroupModel) error + CreateGroupMember(ctx context.Context, groupMember []*table.GroupMemberModel) error CreateGroupRequest(ctx context.Context, requests []*table.GroupRequestModel) error //mongo diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index b347191a6..084f07003 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -73,6 +73,10 @@ func CheckAccessV3(ctx context.Context, ownerUserID string) (err error) { return constant.ErrIdentity.Wrap(utils.GetSelfFuncName()) } +func IsAppManagerUid(ctx context.Context) bool { + return utils.IsContain(tracelog.GetOpUserID(ctx), config.Config.Manager.AppManagerUid) +} + func CheckAdmin(ctx context.Context) error { if utils.IsContain(tracelog.GetOpUserID(ctx), config.Config.Manager.AppManagerUid) { return nil