This commit is contained in:
withchao 2023-02-01 15:42:27 +08:00
parent 01d3977766
commit ef475cb9d9
2 changed files with 66 additions and 33 deletions

View File

@ -1,9 +1,7 @@
package group package group
import ( import (
"Open_IM/pkg/common/constant" "Open_IM/pkg/common/tracelog"
relation "Open_IM/pkg/common/db/mysql"
pbGroup "Open_IM/pkg/proto/group"
sdk_ws "Open_IM/pkg/proto/sdk_ws" sdk_ws "Open_IM/pkg/proto/sdk_ws"
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
"context" "context"
@ -12,32 +10,32 @@ import (
"time" "time"
) )
func getDBGroupRequest(ctx context.Context, req *pbGroup.GroupApplicationResponseReq) (dbGroupRequest *relation.GroupRequest) { //func getDBGroupRequest(ctx context.Context, req *pbGroup.GroupApplicationResponseReq) (dbGroupRequest *relation.GroupRequest) {
dbGroupRequest = &relation.GroupRequest{} // dbGroupRequest = &relation.GroupRequest{}
utils.CopyStructFields(&dbGroupRequest, req) // utils.CopyStructFields(&dbGroupRequest, req)
dbGroupRequest.UserID = req.FromUserID // dbGroupRequest.UserID = req.FromUserID
dbGroupRequest.HandleUserID = utils.OpUserID(ctx) // dbGroupRequest.HandleUserID = utils.OpUserID(ctx)
dbGroupRequest.HandledTime = time.Now() // dbGroupRequest.HandledTime = time.Now()
return dbGroupRequest // return dbGroupRequest
} //}
//
func getDBGroupMember(ctx context.Context, groupID, userID string) (dbGroupMember *relation.GroupMember, err error) { //func getDBGroupMember(ctx context.Context, groupID, userID string) (dbGroupMember *relation.GroupMember, err error) {
dbGroupMember = &relation.GroupMember{} // dbGroupMember = &relation.GroupMember{}
//
member := relation.GroupMember{} // member := relation.GroupMember{}
member.GroupID = groupID // member.GroupID = groupID
member.UserID = userID // member.UserID = userID
member.RoleLevel = constant.GroupOrdinaryUsers // member.RoleLevel = constant.GroupOrdinaryUsers
member.OperatorUserID = utils.OpUserID(ctx) // member.OperatorUserID = utils.OpUserID(ctx)
//
member.FaceURL = user.FaceURL // member.FaceURL = user.FaceURL
member.Nickname = user.Nickname // member.Nickname = user.Nickname
member.JoinSource = request.JoinSource // member.JoinSource = request.JoinSource
member.InviterUserID = request.InviterUserID // member.InviterUserID = request.InviterUserID
member.MuteEndTime = time.Unix(int64(time.Now().Second()), 0) // member.MuteEndTime = time.Unix(int64(time.Now().Second()), 0)
//
return dbGroupMember, nil // return dbGroupMember, nil
} //}
func getUsersInfo(ctx context.Context, userIDs []string) ([]*sdk_ws.UserInfo, error) { func getUsersInfo(ctx context.Context, userIDs []string) ([]*sdk_ws.UserInfo, error) {
return nil, nil return nil, nil
@ -59,7 +57,7 @@ func genGroupID(ctx context.Context, groupID string) string {
if groupID != "" { if groupID != "" {
return groupID return groupID
} }
groupID = utils.Md5(utils.OperationID(ctx) + strconv.FormatInt(time.Now().UnixNano(), 10)) groupID = utils.Md5(tracelog.GetOperationID(ctx) + strconv.FormatInt(time.Now().UnixNano(), 10))
bi := big.NewInt(0) bi := big.NewInt(0)
bi.SetString(groupID[0:8], 16) bi.SetString(groupID[0:8], 16)
groupID = bi.String() groupID = bi.String()

View File

@ -526,14 +526,49 @@ func FillPublicUserInfoByUserID(operationID, userID string, userInfo *open_im_sd
func (s *groupServer) GetGroupApplicationList(ctx context.Context, req *pbGroup.GetGroupApplicationListReq) (*pbGroup.GetGroupApplicationListResp, error) { func (s *groupServer) GetGroupApplicationList(ctx context.Context, req *pbGroup.GetGroupApplicationListReq) (*pbGroup.GetGroupApplicationListResp, error) {
resp := &pbGroup.GetGroupApplicationListResp{} resp := &pbGroup.GetGroupApplicationListResp{}
reply, err := s.GroupInterface.GetGroupRecvApplicationList(ctx, req.FromUserID) groupRequests, err := s.GroupInterface.GetGroupRecvApplicationList(ctx, req.FromUserID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if len(groupRequests) == 0 {
return resp, nil
}
var (
userIDs []string
groupIDs []string
)
for _, gr := range groupRequests {
userIDs = append(userIDs, gr.UserID)
groupIDs = append(groupIDs, gr.GroupID)
}
userMap, err := getUserMap(ctx, userIDs)
if err != nil {
return nil, err
}
for _, userID := range userIDs {
if _, ok := userMap[userID]; !ok {
return nil, constant.ErrUserIDNotFound.Wrap(userID)
}
}
groups, err := s.GroupInterface.FindGroupsByID(ctx, groupIDs)
if err != nil {
return nil, err
}
groupMap := make(map[string]*relation.Group)
for i, group := range groups {
groupMap[group.GroupID] = groups[i]
}
for _, gr := range groupRequests {
groupRequest := open_im_sdk.GroupRequest{UserInfo: &open_im_sdk.PublicUserInfo{}, GroupInfo: &open_im_sdk.GroupInfo{}}
utils.CopyStructFields(&groupRequest, gr)
getUserMap()
}
var errResult error var errResult error
tracelog.SetCtxInfo(ctx, "GetRecvGroupApplicationList", nil, " FromUserID: ", req.FromUserID, "GroupApplicationList: ", reply) tracelog.SetCtxInfo(ctx, "GetRecvGroupApplicationList", nil, " FromUserID: ", req.FromUserID, "GroupApplicationList: ", groupRequests)
for _, v := range reply { for _, v := range groupRequests {
node := open_im_sdk.GroupRequest{UserInfo: &open_im_sdk.PublicUserInfo{}, GroupInfo: &open_im_sdk.GroupInfo{}} node := open_im_sdk.GroupRequest{UserInfo: &open_im_sdk.PublicUserInfo{}, GroupInfo: &open_im_sdk.GroupInfo{}}
err := FillGroupInfoByGroupID(tracelog.GetOperationID(ctx), v.GroupID, node.GroupInfo) err := FillGroupInfoByGroupID(tracelog.GetOperationID(ctx), v.GroupID, node.GroupInfo)
if err != nil { if err != nil {