Files
open-im-server/internal/rpc/group/join_group.go
T

52 lines
2.4 KiB
Go
Raw Normal View History

2021-06-28 15:36:09 +08:00
package group
import (
2021-12-21 21:40:50 +08:00
"Open_IM/internal/rpc/chat"
2021-11-25 14:12:52 +08:00
"Open_IM/pkg/common/constant"
"Open_IM/pkg/common/db/mysql_model/im_mysql_model"
"Open_IM/pkg/common/log"
2021-11-25 14:12:52 +08:00
"Open_IM/pkg/common/token_verify"
2021-10-11 22:00:38 +08:00
pbGroup "Open_IM/pkg/proto/group"
2021-06-28 15:36:09 +08:00
"context"
)
func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) (*pbGroup.CommonResp, error) {
2021-12-21 21:40:50 +08:00
log.NewInfo(req.Token, req.OperationID, "JoinGroup args ", req.String())
2021-06-28 15:36:09 +08:00
//Parse token, to find current user information
2021-11-25 14:12:52 +08:00
claims, err := token_verify.ParseToken(req.Token)
2021-06-28 15:36:09 +08:00
if err != nil {
2021-12-21 21:40:50 +08:00
log.NewError(req.OperationID, "ParseToken failed", err.Error(), req.String())
2021-11-25 14:12:52 +08:00
return &pbGroup.CommonResp{ErrorCode: constant.ErrParseToken.ErrCode, ErrorMsg: constant.ErrParseToken.ErrMsg}, nil
2021-06-28 15:36:09 +08:00
}
applicationUserInfo, err := im_mysql_model.FindUserByUID(claims.UID)
if err != nil {
2021-12-21 21:40:50 +08:00
log.NewError(req.OperationID, "FindUserByUID failed", err.Error(), claims.UID)
2021-11-25 14:12:52 +08:00
return &pbGroup.CommonResp{ErrorCode: constant.ErrSearchUserInfo.ErrCode, ErrorMsg: constant.ErrSearchUserInfo.ErrMsg}, nil
2021-06-28 15:36:09 +08:00
}
2021-07-15 11:16:24 +08:00
_, err = im_mysql_model.FindGroupRequestUserInfoByGroupIDAndUid(req.GroupID, claims.UID)
2021-06-28 15:36:09 +08:00
if err == nil {
2021-07-15 11:16:24 +08:00
err = im_mysql_model.DelGroupRequest(req.GroupID, claims.UID, "0")
2021-06-28 15:36:09 +08:00
}
2021-07-15 11:16:24 +08:00
2021-12-21 21:40:50 +08:00
if err = im_mysql_model.InsertIntoGroupRequest(req.GroupID, claims.UID, "0", req.Message, applicationUserInfo.Nickname, applicationUserInfo.FaceUrl); err != nil {
2021-06-28 15:36:09 +08:00
log.Error(req.Token, req.OperationID, "Insert into group request failed,er=%s", err.Error())
2021-11-25 14:12:52 +08:00
return &pbGroup.CommonResp{ErrorCode: constant.ErrJoinGroupApplication.ErrCode, ErrorMsg: constant.ErrJoinGroupApplication.ErrMsg}, nil
2021-06-28 15:36:09 +08:00
}
2021-12-21 21:40:50 +08:00
memberList, err := im_mysql_model.FindGroupMemberListByGroupIdAndFilterInfo(req.GroupID, constant.GroupOwner)
if len(memberList) == 0 {
log.NewError(req.OperationID, "FindGroupMemberListByGroupIdAndFilterInfo failed ", req.GroupID, constant.GroupOwner, err)
return &pbGroup.CommonResp{ErrorCode: 0, ErrorMsg: ""}, nil
}
group, err := im_mysql_model.FindGroupInfoByGroupId(req.GroupID)
if err != nil {
log.NewError(req.OperationID, "FindGroupInfoByGroupId failed ", req.GroupID)
return &pbGroup.CommonResp{ErrorCode: 0, ErrorMsg: ""}, nil
}
chat.ReceiveJoinApplicationNotification(req.OperationID, memberList[0].UserID, applicationUserInfo, group)
log.NewInfo(req.OperationID, "ReceiveJoinApplicationNotification rpc JoinGroup success return")
return &pbGroup.CommonResp{ErrorCode: 0, ErrorMsg: ""}, nil
2021-06-28 15:36:09 +08:00
}