From 61504198427e04bb3e3d8eb04ac56f51f993c7cc Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Thu, 2 Mar 2023 14:41:59 +0800 Subject: [PATCH] api --- internal/api/auth.go | 20 +- internal/api/conversation.go | 56 ++++ internal/api/conversation/conversation.go | 327 ---------------------- internal/api/friend.go | 52 ++-- internal/api/group.go | 96 +++---- internal/api/msg.go | 84 ++++++ internal/api/msg/del_msg.go | 273 ------------------ internal/api/msg/extend_msg.go | 202 ------------- internal/api/msg/get_max_min_seq.go | 64 ----- internal/api/msg/pull_msg.go | 73 ----- internal/api/msg/send_msg.go | 102 ------- internal/api/route.go | 59 ++-- internal/api/user.go | 44 +-- pkg/proto/group/group.proto | 4 +- pkg/proto/sdkws/ws.proto | 2 +- 15 files changed, 291 insertions(+), 1167 deletions(-) create mode 100644 internal/api/conversation.go delete mode 100644 internal/api/conversation/conversation.go create mode 100644 internal/api/msg.go delete mode 100644 internal/api/msg/del_msg.go delete mode 100644 internal/api/msg/extend_msg.go delete mode 100644 internal/api/msg/get_max_min_seq.go delete mode 100644 internal/api/msg/pull_msg.go delete mode 100644 internal/api/msg/send_msg.go diff --git a/internal/api/auth.go b/internal/api/auth.go index da67f62ce..36d11331b 100644 --- a/internal/api/auth.go +++ b/internal/api/auth.go @@ -19,26 +19,26 @@ type Auth struct { zk *openKeeper.ZkClient } -func (a *Auth) getGroupClient() (auth.AuthClient, error) { - conn, err := a.zk.GetConn(config.Config.RpcRegisterName.OpenImGroupName) +func (o *Auth) client() (auth.AuthClient, error) { + conn, err := o.zk.GetConn(config.Config.RpcRegisterName.OpenImGroupName) if err != nil { return nil, err } return auth.NewAuthClient(conn), nil } -func (a *Auth) UserRegister(c *gin.Context) { - a2r.Call(auth.AuthClient.UserRegister, a.getGroupClient, c) +func (o *Auth) UserRegister(c *gin.Context) { + a2r.Call(auth.AuthClient.UserRegister, o.client, c) } -func (a *Auth) UserToken(c *gin.Context) { - a2r.Call(auth.AuthClient.UserToken, a.getGroupClient, c) +func (o *Auth) UserToken(c *gin.Context) { + a2r.Call(auth.AuthClient.UserToken, o.client, c) } -func (a *Auth) ParseToken(c *gin.Context) { - a2r.Call(auth.AuthClient.ParseToken, a.getGroupClient, c) +func (o *Auth) ParseToken(c *gin.Context) { + a2r.Call(auth.AuthClient.ParseToken, o.client, c) } -func (a *Auth) ForceLogout(c *gin.Context) { - a2r.Call(auth.AuthClient.ForceLogout, a.getGroupClient, c) +func (o *Auth) ForceLogout(c *gin.Context) { + a2r.Call(auth.AuthClient.ForceLogout, o.client, c) } diff --git a/internal/api/conversation.go b/internal/api/conversation.go new file mode 100644 index 000000000..781a30a6f --- /dev/null +++ b/internal/api/conversation.go @@ -0,0 +1,56 @@ +package api + +import ( + "OpenIM/internal/api/a2r" + "OpenIM/pkg/common/config" + "OpenIM/pkg/proto/conversation" + "context" + "github.com/OpenIMSDK/openKeeper" + "github.com/gin-gonic/gin" +) + +var _ context.Context // 解决goland编辑器bug + +func NewConversation(zk *openKeeper.ZkClient) *Conversation { + return &Conversation{zk: zk} +} + +type Conversation struct { + zk *openKeeper.ZkClient +} + +func (o *Conversation) client() (conversation.ConversationClient, error) { + conn, err := o.zk.GetConn(config.Config.RpcRegisterName.OpenImGroupName) + if err != nil { + return nil, err + } + return conversation.NewConversationClient(conn), nil +} + +func (o *Conversation) GetAllConversations(c *gin.Context) { + a2r.Call(conversation.ConversationClient.GetAllConversations, o.client, c) +} + +func (o *Conversation) GetConversation(c *gin.Context) { + a2r.Call(conversation.ConversationClient.GetConversation, o.client, c) +} + +func (o *Conversation) GetConversations(c *gin.Context) { + a2r.Call(conversation.ConversationClient.GetConversations, o.client, c) +} + +func (o *Conversation) SetConversation(c *gin.Context) { + a2r.Call(conversation.ConversationClient.SetConversation, o.client, c) +} + +func (o *Conversation) BatchSetConversations(c *gin.Context) { + a2r.Call(conversation.ConversationClient.BatchSetConversations, o.client, c) +} + +func (o *Conversation) SetRecvMsgOpt(c *gin.Context) { + a2r.Call(conversation.ConversationClient.SetRecvMsgOpt, o.client, c) +} + +func (o *Conversation) ModifyConversationField(c *gin.Context) { + a2r.Call(conversation.ConversationClient.ModifyConversationField, o.client, c) +} diff --git a/internal/api/conversation/conversation.go b/internal/api/conversation/conversation.go deleted file mode 100644 index a0bf954cd..000000000 --- a/internal/api/conversation/conversation.go +++ /dev/null @@ -1,327 +0,0 @@ -package conversation - -import ( - api "OpenIM/pkg/apistruct" - "OpenIM/pkg/common/config" - "OpenIM/pkg/common/log" - pbConversation "OpenIM/pkg/proto/conversation" - pbUser "OpenIM/pkg/proto/user" - "OpenIM/pkg/utils" - "context" - "github.com/gin-gonic/gin" - "net/http" - "strings" -) - -func SetConversation(c *gin.Context) { - var ( - req api.SetConversationReq - resp api.SetConversationResp - reqPb pbUser.SetConversationReq - ) - if err := c.BindJSON(&req); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - reqPb.Conversation = &pbConversation.Conversation{} - err := utils.CopyStructFields(&reqPb, req) - err = utils.CopyStructFields(reqPb.Conversation, req.Conversation) - if err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) - } - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := pbUser.NewUserClient(etcdConn) - respPb, err := client.SetConversation(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": "GetAllConversationMsgOpt rpc failed, " + err.Error()}) - return - } - resp.ErrMsg = respPb.CommonResp.ErrMsg - resp.ErrCode = respPb.CommonResp.ErrCode - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) - c.JSON(http.StatusOK, resp) -} -func ModifyConversationField(c *gin.Context) { - var ( - req api.ModifyConversationFieldReq - resp api.ModifyConversationFieldResp - reqPb pbConversation.ModifyConversationFieldReq - ) - if err := c.BindJSON(&req); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - reqPb.Conversation = &pbConversation.Conversation{} - err := utils.CopyStructFields(&reqPb, req) - err = utils.CopyStructFields(reqPb.Conversation, req.Conversation) - if err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) - } - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImConversationName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := pbConversation.NewConversationClient(etcdConn) - respPb, err := client.ModifyConversationField(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": "GetAllConversationMsgOpt rpc failed, " + err.Error()}) - return - } - resp.ErrMsg = respPb.CommonResp.ErrMsg - resp.ErrCode = respPb.CommonResp.ErrCode - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) - c.JSON(http.StatusOK, resp) -} - -func BatchSetConversations(c *gin.Context) { - var ( - req api.BatchSetConversationsReq - resp api.BatchSetConversationsResp - reqPb pbUser.BatchSetConversationsReq - ) - if err := c.BindJSON(&req); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - if err := utils.CopyStructFields(&reqPb, req); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) - } - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := pbUser.NewUserClient(etcdConn) - respPb, err := client.BatchSetConversations(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": "GetAllConversationMsgOpt rpc failed, " + err.Error()}) - return - } - if err := utils.CopyStructFields(&resp.Data, respPb); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) - } - resp.ErrMsg = respPb.CommonResp.ErrMsg - resp.ErrCode = respPb.CommonResp.ErrCode - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) - c.JSON(http.StatusOK, resp) -} - -// @Summary 获取用户所有会话 -// @Description 获取用户所有会话 -// @Tags 会话相关 -// @ID GetAllConversations -// @Accept json -// @Param token header string true "im token" -// @Param req body api.GetAllConversationsReq true "ownerUserID为要获取的用户ID" -// @Produce json -// @Success 0 {object} api.GetAllConversationsResp -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /msg/get_all_conversations [post] -func GetAllConversations(c *gin.Context) { - var ( - req api.GetAllConversationsReq - resp api.GetAllConversationsResp - reqPb pbUser.GetAllConversationsReq - ) - if err := c.BindJSON(&req); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - if err := utils.CopyStructFields(&reqPb, req); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) - } - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := pbUser.NewUserClient(etcdConn) - respPb, err := client.GetAllConversations(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": "GetAllConversationMsgOpt rpc failed, " + err.Error()}) - return - } - resp.ErrMsg = respPb.CommonResp.ErrMsg - resp.ErrCode = respPb.CommonResp.ErrCode - if err := utils.CopyStructFields(&resp.Conversations, respPb.Conversations); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed, ", err.Error()) - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) - c.JSON(http.StatusOK, resp) -} - -// @Summary 根据会话ID获取会话 -// @Description 根据会话ID获取会话 -// @Tags 会话相关 -// @ID GetConversation -// @Accept json -// @Param token header string true "im token" -// @Param req body api.GetConversationReq true "ownerUserID为要获取的用户ID
conversationID为要获取的会话ID" -// @Produce json -// @Success 0 {object} api.GetConversationResp -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /msg/get_conversation [post] -func GetConversation(c *gin.Context) { - var ( - req api.GetConversationReq - resp api.GetConversationResp - reqPb pbUser.GetConversationReq - ) - if err := c.BindJSON(&req); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - if err := utils.CopyStructFields(&reqPb, req); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) - } - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := pbUser.NewUserClient(etcdConn) - respPb, err := client.GetConversation(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetConversation rpc failed, ", reqPb.String(), err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": "GetAllConversationMsgOpt rpc failed, " + err.Error()}) - return - } - resp.ErrMsg = respPb.CommonResp.ErrMsg - resp.ErrCode = respPb.CommonResp.ErrCode - if err := utils.CopyStructFields(&resp.Conversation, respPb.Conversation); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) - c.JSON(http.StatusOK, resp) -} - -// @Summary 根据会话ID列表获取会话 -// @Description 根据会话ID列表获取会话 -// @Tags 会话相关 -// @ID GetConversations -// @Accept json -// @Param token header string true "im token" -// @Param req body api.GetConversationsReq true "ownerUserID为要获取的用户ID
conversationIDs为要获取的会话ID列表" -// @Produce json -// @Success 0 {object} api.GetConversationsResp -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /msg/get_conversations [post] -func GetConversations(c *gin.Context) { - var ( - req api.GetConversationsReq - resp api.GetConversationsResp - reqPb pbUser.GetConversationsReq - ) - if err := c.BindJSON(&req); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - if err := utils.CopyStructFields(&reqPb, req); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) - } - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := pbUser.NewUserClient(etcdConn) - respPb, err := client.GetConversations(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": "GetAllConversationMsgOpt rpc failed, " + err.Error()}) - return - } - resp.ErrMsg = respPb.CommonResp.ErrMsg - resp.ErrCode = respPb.CommonResp.ErrCode - if err := utils.CopyStructFields(&resp.Conversations, respPb.Conversations); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) - c.JSON(http.StatusOK, resp) -} - -func SetRecvMsgOpt(c *gin.Context) { - var ( - req api.SetRecvMsgOptReq - resp api.SetRecvMsgOptResp - reqPb pbUser.SetRecvMsgOptReq - ) - if err := c.BindJSON(&req); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - if err := utils.CopyStructFields(&reqPb, req); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) - } - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := pbUser.NewUserClient(etcdConn) - respPb, err := client.SetRecvMsgOpt(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetRecvMsgOpt rpc failed, ", reqPb.String(), err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": "GetAllConversationMsgOpt rpc failed, " + err.Error()}) - return - } - resp.ErrMsg = respPb.CommonResp.ErrMsg - resp.ErrCode = respPb.CommonResp.ErrCode - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) - c.JSON(http.StatusOK, resp) -} - -// Deprecated -func SetReceiveMessageOpt(c *gin.Context) { - -} - -// Deprecated -func GetReceiveMessageOpt(c *gin.Context) { - -} - -// Deprecated -func GetAllConversationMessageOpt(c *gin.Context) { - -} diff --git a/internal/api/friend.go b/internal/api/friend.go index 09b1db166..a717069f8 100644 --- a/internal/api/friend.go +++ b/internal/api/friend.go @@ -19,58 +19,58 @@ type Friend struct { zk *openKeeper.ZkClient } -func (f *Friend) getGroupClient() (friend.FriendClient, error) { - conn, err := f.zk.GetConn(config.Config.RpcRegisterName.OpenImGroupName) +func (o *Friend) client() (friend.FriendClient, error) { + conn, err := o.zk.GetConn(config.Config.RpcRegisterName.OpenImGroupName) if err != nil { return nil, err } return friend.NewFriendClient(conn), nil } -func (f *Friend) AddFriend(c *gin.Context) { - a2r.Call(friend.FriendClient.AddFriend, f.getGroupClient, c) +func (o *Friend) ApplyToAddFriend(c *gin.Context) { + a2r.Call(friend.FriendClient.ApplyToAddFriend, o.client, c) } -func (f *Friend) DeleteFriend(c *gin.Context) { - a2r.Call(friend.FriendClient.DeleteFriend, f.getGroupClient, c) +func (o *Friend) DeleteFriend(c *gin.Context) { + a2r.Call(friend.FriendClient.DeleteFriend, o.client, c) } -func (f *Friend) GetFriendApplyList(c *gin.Context) { - a2r.Call(friend.FriendClient.GetFriendApplyList, f.getGroupClient, c) +func (o *Friend) GetFriendApplyList(c *gin.Context) { + a2r.Call(friend.FriendClient.GetPaginationFriendsApplyFrom, o.client, c) } -func (f *Friend) GetSelfApplyList(c *gin.Context) { - a2r.Call(friend.FriendClient.GetSelfApplyList, f.getGroupClient, c) +func (o *Friend) GetSelfApplyList(c *gin.Context) { + a2r.Call(friend.FriendClient.GetPaginationFriendsApplyFrom, o.client, c) } -func (f *Friend) GetFriendList(c *gin.Context) { - a2r.Call(friend.FriendClient.GetFriendList, f.getGroupClient, c) +func (o *Friend) GetFriendList(c *gin.Context) { + a2r.Call(friend.FriendClient.GetDesignatedFriends, o.client, c) } -func (f *Friend) AddFriendResponse(c *gin.Context) { - a2r.Call(friend.FriendClient.AddFriendResponse, f.getGroupClient, c) +func (o *Friend) RespondFriendApply(c *gin.Context) { + a2r.Call(friend.FriendClient.RespondFriendApply, o.client, c) } -func (f *Friend) SetFriendRemark(c *gin.Context) { - a2r.Call(friend.FriendClient.SetFriendRemark, f.getGroupClient, c) +func (o *Friend) SetFriendRemark(c *gin.Context) { + a2r.Call(friend.FriendClient.SetFriendRemark, o.client, c) } -func (f *Friend) AddBlack(c *gin.Context) { - a2r.Call(friend.FriendClient.AddBlack, f.getGroupClient, c) +func (o *Friend) AddBlack(c *gin.Context) { + a2r.Call(friend.FriendClient.AddBlack, o.client, c) } -func (f *Friend) GetBlacklist(c *gin.Context) { - a2r.Call(friend.FriendClient.GetBlacklist, f.getGroupClient, c) +func (o *Friend) GetPaginationBlacks(c *gin.Context) { + a2r.Call(friend.FriendClient.GetPaginationBlacks, o.client, c) } -func (f *Friend) RemoveBlacklist(c *gin.Context) { - a2r.Call(friend.FriendClient.RemoveBlacklist, f.getGroupClient, c) +func (o *Friend) RemoveBlack(c *gin.Context) { + a2r.Call(friend.FriendClient.RemoveBlack, o.client, c) } -func (f *Friend) ImportFriend(c *gin.Context) { - a2r.Call(friend.FriendClient.ImportFriend, f.getGroupClient, c) +func (o *Friend) ImportFriends(c *gin.Context) { + a2r.Call(friend.FriendClient.ImportFriends, o.client, c) } -func (f *Friend) IsFriend(c *gin.Context) { - a2r.Call(friend.FriendClient.IsFriend, f.getGroupClient, c) +func (o *Friend) IsFriend(c *gin.Context) { + a2r.Call(friend.FriendClient.IsFriend, o.client, c) } diff --git a/internal/api/group.go b/internal/api/group.go index d7e481262..bd4e9bf56 100644 --- a/internal/api/group.go +++ b/internal/api/group.go @@ -19,106 +19,106 @@ type Group struct { zk *openKeeper.ZkClient } -func (g *Group) getGroupClient() (group.GroupClient, error) { - conn, err := g.zk.GetConn(config.Config.RpcRegisterName.OpenImGroupName) +func (o *Group) client() (group.GroupClient, error) { + conn, err := o.zk.GetConn(config.Config.RpcRegisterName.OpenImGroupName) if err != nil { return nil, err } return group.NewGroupClient(conn), nil } -func (g *Group) NewCreateGroup(c *gin.Context) { - a2r.Call(group.GroupClient.CreateGroup, g.getGroupClient, c) +func (o *Group) NewCreateGroup(c *gin.Context) { + a2r.Call(group.GroupClient.CreateGroup, o.client, c) } -func (g *Group) NewSetGroupInfo(c *gin.Context) { - a2r.Call(group.GroupClient.SetGroupInfo, g.getGroupClient, c) +func (o *Group) NewSetGroupInfo(c *gin.Context) { + a2r.Call(group.GroupClient.SetGroupInfo, o.client, c) } -func (g *Group) JoinGroup(c *gin.Context) { - a2r.Call(group.GroupClient.JoinGroup, g.getGroupClient, c) +func (o *Group) JoinGroup(c *gin.Context) { + a2r.Call(group.GroupClient.JoinGroup, o.client, c) } -func (g *Group) QuitGroup(c *gin.Context) { - a2r.Call(group.GroupClient.QuitGroup, g.getGroupClient, c) +func (o *Group) QuitGroup(c *gin.Context) { + a2r.Call(group.GroupClient.QuitGroup, o.client, c) } -func (g *Group) ApplicationGroupResponse(c *gin.Context) { - a2r.Call(group.GroupClient.GroupApplicationResponse, g.getGroupClient, c) +func (o *Group) ApplicationGroupResponse(c *gin.Context) { + a2r.Call(group.GroupClient.GroupApplicationResponse, o.client, c) } -func (g *Group) TransferGroupOwner(c *gin.Context) { - a2r.Call(group.GroupClient.TransferGroupOwner, g.getGroupClient, c) +func (o *Group) TransferGroupOwner(c *gin.Context) { + a2r.Call(group.GroupClient.TransferGroupOwner, o.client, c) } -func (g *Group) GetRecvGroupApplicationList(c *gin.Context) { - a2r.Call(group.GroupClient.GetGroupApplicationList, g.getGroupClient, c) +func (o *Group) GetRecvGroupApplicationList(c *gin.Context) { + a2r.Call(group.GroupClient.GetGroupApplicationList, o.client, c) } -func (g *Group) GetUserReqGroupApplicationList(c *gin.Context) { - a2r.Call(group.GroupClient.GetUserReqApplicationList, g.getGroupClient, c) +func (o *Group) GetUserReqGroupApplicationList(c *gin.Context) { + a2r.Call(group.GroupClient.GetUserReqApplicationList, o.client, c) } -func (g *Group) GetGroupsInfo(c *gin.Context) { - a2r.Call(group.GroupClient.GetGroupsInfo, g.getGroupClient, c) +func (o *Group) GetGroupsInfo(c *gin.Context) { + a2r.Call(group.GroupClient.GetGroupsInfo, o.client, c) } -func (g *Group) KickGroupMember(c *gin.Context) { - a2r.Call(group.GroupClient.KickGroupMember, g.getGroupClient, c) +func (o *Group) KickGroupMember(c *gin.Context) { + a2r.Call(group.GroupClient.KickGroupMember, o.client, c) } -func (g *Group) GetGroupMembersInfo(c *gin.Context) { - a2r.Call(group.GroupClient.GetGroupMembersInfo, g.getGroupClient, c) +func (o *Group) GetGroupMembersInfo(c *gin.Context) { + a2r.Call(group.GroupClient.GetGroupMembersInfo, o.client, c) } -func (g *Group) InviteUserToGroup(c *gin.Context) { - a2r.Call(group.GroupClient.InviteUserToGroup, g.getGroupClient, c) +func (o *Group) InviteUserToGroup(c *gin.Context) { + a2r.Call(group.GroupClient.InviteUserToGroup, o.client, c) } -func (g *Group) GetJoinedGroupList(c *gin.Context) { - a2r.Call(group.GroupClient.GetJoinedGroupList, g.getGroupClient, c) +func (o *Group) GetJoinedGroupList(c *gin.Context) { + a2r.Call(group.GroupClient.GetJoinedGroupList, o.client, c) } -func (g *Group) DismissGroup(c *gin.Context) { - a2r.Call(group.GroupClient.DismissGroup, g.getGroupClient, c) +func (o *Group) DismissGroup(c *gin.Context) { + a2r.Call(group.GroupClient.DismissGroup, o.client, c) } -func (g *Group) MuteGroupMember(c *gin.Context) { - a2r.Call(group.GroupClient.MuteGroupMember, g.getGroupClient, c) +func (o *Group) MuteGroupMember(c *gin.Context) { + a2r.Call(group.GroupClient.MuteGroupMember, o.client, c) } -func (g *Group) CancelMuteGroupMember(c *gin.Context) { - a2r.Call(group.GroupClient.CancelMuteGroupMember, g.getGroupClient, c) +func (o *Group) CancelMuteGroupMember(c *gin.Context) { + a2r.Call(group.GroupClient.CancelMuteGroupMember, o.client, c) } -func (g *Group) MuteGroup(c *gin.Context) { - a2r.Call(group.GroupClient.MuteGroup, g.getGroupClient, c) +func (o *Group) MuteGroup(c *gin.Context) { + a2r.Call(group.GroupClient.MuteGroup, o.client, c) } -func (g *Group) CancelMuteGroup(c *gin.Context) { - a2r.Call(group.GroupClient.CancelMuteGroup, g.getGroupClient, c) +func (o *Group) CancelMuteGroup(c *gin.Context) { + a2r.Call(group.GroupClient.CancelMuteGroup, o.client, c) } -func (g *Group) SetGroupMemberInfo(c *gin.Context) { - a2r.Call(group.GroupClient.SetGroupMemberInfo, g.getGroupClient, c) +func (o *Group) SetGroupMemberInfo(c *gin.Context) { + a2r.Call(group.GroupClient.SetGroupMemberInfo, o.client, c) } -func (g *Group) GetGroupAbstractInfo(c *gin.Context) { - a2r.Call(group.GroupClient.GetGroupAbstractInfo, g.getGroupClient, c) +func (o *Group) GetGroupAbstractInfo(c *gin.Context) { + a2r.Call(group.GroupClient.GetGroupAbstractInfo, o.client, c) } //func (g *Group) SetGroupMemberNickname(c *gin.Context) { -// a2r.Call(group.GroupClient.SetGroupMemberNickname, g.getGroupClient, c) +// a2r.Call(group.GroupClient.SetGroupMemberNickname, g.client, c) //} // //func (g *Group) GetGroupAllMemberList(c *gin.Context) { -// a2r.Call(group.GroupClient.GetGroupAllMember, g.getGroupClient, c) +// a2r.Call(group.GroupClient.GetGroupAllMember, g.client, c) //} -func (g *Group) GetJoinedSuperGroupList(c *gin.Context) { - a2r.Call(group.GroupClient.GetJoinedSuperGroupList, g.getGroupClient, c) +func (o *Group) GetJoinedSuperGroupList(c *gin.Context) { + a2r.Call(group.GroupClient.GetJoinedSuperGroupList, o.client, c) } -func (g *Group) GetSuperGroupsInfo(c *gin.Context) { - a2r.Call(group.GroupClient.GetSuperGroupsInfo, g.getGroupClient, c) +func (o *Group) GetSuperGroupsInfo(c *gin.Context) { + a2r.Call(group.GroupClient.GetSuperGroupsInfo, o.client, c) } diff --git a/internal/api/msg.go b/internal/api/msg.go new file mode 100644 index 000000000..0cbb6e224 --- /dev/null +++ b/internal/api/msg.go @@ -0,0 +1,84 @@ +package api + +import ( + "OpenIM/internal/api/a2r" + "OpenIM/pkg/common/config" + "OpenIM/pkg/proto/msg" + "context" + "github.com/OpenIMSDK/openKeeper" + "github.com/gin-gonic/gin" +) + +var _ context.Context // 解决goland编辑器bug + +func NewMsg(zk *openKeeper.ZkClient) *Conversation { + return &Conversation{zk: zk} +} + +type Msg struct { + zk *openKeeper.ZkClient +} + +func (o *Msg) client() (msg.MsgClient, error) { + conn, err := o.zk.GetConn(config.Config.RpcRegisterName.OpenImMsgName) + if err != nil { + return nil, err + } + return msg.NewMsgClient(conn), nil +} + +func (o *Msg) GetSeq(c *gin.Context) { + a2r.Call(msg.MsgClient.GetSeq, o.client, c) +} + +func (o *Msg) SendMsg(c *gin.Context) { + a2r.Call(msg.MsgClient.SendMsg, o.client, c) +} + +func (o *Msg) PullMsgBySeqList(c *gin.Context) { + a2r.Call(msg.MsgClient.PullMsgBySeqList, o.client, c) +} + +func (o *Msg) DelMsg(c *gin.Context) { + a2r.Call(msg.MsgClient.DelMsg, o.client, c) +} + +func (o *Msg) DelSuperGroupMsg(c *gin.Context) { + a2r.Call(msg.MsgClient.DelSuperGroupMsg, o.client, c) +} + +func (o *Msg) ClearMsg(c *gin.Context) { + a2r.Call(msg.MsgClient.ClearMsg, o.client, c) +} + +func (o *Msg) SetMsgMinSeq(c *gin.Context) { + a2r.Call(msg.MsgClient.SetMsgMinSeq, o.client, c) +} + +func (o *Msg) SetMessageReactionExtensions(c *gin.Context) { + a2r.Call(msg.MsgClient.SetMessageReactionExtensions, o.client, c) +} + +func (o *Msg) GetMessageListReactionExtensions(c *gin.Context) { + a2r.Call(msg.MsgClient.GetMessageListReactionExtensions, o.client, c) +} + +func (o *Msg) AddMessageReactionExtensions(c *gin.Context) { + a2r.Call(msg.MsgClient.AddMessageReactionExtensions, o.client, c) +} + +func (o *Msg) DeleteMessageReactionExtensions(c *gin.Context) { + a2r.Call(msg.MsgClient.DeleteMessageReactionExtensions, o.client, c) +} + +func (o *Msg) ManagementSendMsg(c *gin.Context) { + a2r.Call(msg.MsgClient.ManagementSendMsg, o.client, c) +} + +func (o *Msg) ManagementBatchSendMsg(c *gin.Context) { + a2r.Call(msg.MsgClient.ManagementBatchSendMsg, o.client, c) +} + +func (o *Msg) CheckMsgIsSendSuccess(c *gin.Context) { + a2r.Call(msg.MsgClient.CheckMsgIsSendSuccess, o.client, c) +} diff --git a/internal/api/msg/del_msg.go b/internal/api/msg/del_msg.go deleted file mode 100644 index d2b0b44aa..000000000 --- a/internal/api/msg/del_msg.go +++ /dev/null @@ -1,273 +0,0 @@ -package msg - -import ( - api "OpenIM/pkg/apistruct" - "OpenIM/pkg/common/config" - "OpenIM/pkg/common/constant" - "OpenIM/pkg/common/log" - "OpenIM/pkg/common/tokenverify" - rpc "OpenIM/pkg/proto/msg" - pbCommon "OpenIM/pkg/proto/sdkws" - "OpenIM/pkg/utils" - "context" - "github.com/gin-gonic/gin" - "github.com/golang/protobuf/proto" - "net/http" - "strings" -) - -// @Summary 根据seq列表删除消息 -// @Description 根据seq列表删除消息 -// @Tags 消息相关 -// @ID DelMsg -// @Accept json -// @Param token header string true "im token" -// @Param req body api.DelMsgReq true "userID为要删除的用户ID
seqList为seq列表" -// @Produce json -// @Success 0 {object} api.DelMsgResp -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /msg/del_msg [post] -func DelMsg(c *gin.Context) { - var ( - req api.DelMsgReq - resp api.DelMsgResp - reqPb pbCommon.DelMsgListReq - ) - if err := c.BindJSON(&req); err != nil { - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req) - if err := utils.CopyStructFields(&reqPb, &req); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields", err.Error()) - } - - var ok bool - var errInfo string - ok, reqPb.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - grpcConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, req.OperationID) - if grpcConn == nil { - errMsg := req.OperationID + " getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - msgClient := rpc.NewMsgClient(grpcConn) - respPb, err := msgClient.DelMsgList(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelMsgList failed", err.Error(), reqPb) - c.JSON(http.StatusOK, gin.H{"errCode": constant.ErrServer.ErrCode, "errMsg": constant.ErrServer.ErrMsg + err.Error()}) - return - } - resp.ErrCode = respPb.ErrCode - resp.ErrMsg = respPb.ErrMsg - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp) - c.JSON(http.StatusOK, resp) -} -func DelSuperGroupMsg(c *gin.Context) { - var ( - req api.DelSuperGroupMsgReq - resp api.DelSuperGroupMsgResp - ) - rpcReq := &rpc.DelSuperGroupMsgReq{} - if err := c.BindJSON(&req); err != nil { - log.NewError("", "args err:", err.Error()) - c.JSON(http.StatusOK, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - utils.CopyStructFields(rpcReq, &req) - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req) - var ok bool - var errInfo string - ok, rpcReq.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + rpcReq.OpUserID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusOK, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - options := make(map[string]bool, 5) - utils.SetSwitchFromOptions(options, constant.IsConversationUpdate, false) - utils.SetSwitchFromOptions(options, constant.IsSenderConversationUpdate, false) - utils.SetSwitchFromOptions(options, constant.IsUnreadCount, false) - utils.SetSwitchFromOptions(options, constant.IsOfflinePush, false) - pbData := rpc.SendMsgReq{ - OperationID: req.OperationID, - MsgData: &pbCommon.MsgData{ - SendID: req.UserID, - RecvID: req.UserID, - ClientMsgID: utils.GetMsgID(req.UserID), - SessionType: constant.SingleChatType, - MsgFrom: constant.SysMsgType, - ContentType: constant.MsgDeleteNotification, - // ForceList: params.ForceList, - CreateTime: utils.GetCurrentTimestampByMill(), - Options: options, - }, - } - var tips pbCommon.TipsComm - deleteMsg := api.MsgDeleteNotificationElem{ - GroupID: req.GroupID, - IsAllDelete: req.IsAllDelete, - SeqList: req.SeqList, - } - tips.JsonDetail = utils.StructToJsonString(deleteMsg) - var err error - pbData.MsgData.Content, err = proto.Marshal(&tips) - if err != nil { - log.Error(req.OperationID, "Marshal failed ", err.Error(), tips.String()) - resp.ErrCode = 400 - resp.ErrMsg = err.Error() - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp) - c.JSON(http.StatusOK, resp) - } - log.Info(req.OperationID, "", "api DelSuperGroupMsg call start..., [data: %s]", pbData.String()) - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewMsgClient(etcdConn) - - log.Info(req.OperationID, "", "api DelSuperGroupMsg call, api call rpc...") - if req.IsAllDelete { - RpcResp, err := client.DelSuperGroupMsg(context.Background(), rpcReq) - if err != nil { - log.NewError(req.OperationID, "call delete DelSuperGroupMsg rpc server failed", err.Error()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call DelSuperGroupMsg rpc server failed"}) - return - } - log.Info(req.OperationID, "", "api DelSuperGroupMsg call end..., [data: %s] [reply: %s]", pbData.String(), RpcResp.String()) - resp.ErrCode = RpcResp.ErrCode - resp.ErrMsg = RpcResp.ErrMsg - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp) - c.JSON(http.StatusOK, resp) - } else { - RpcResp, err := client.SendMsg(context.Background(), &pbData) - if err != nil { - log.NewError(req.OperationID, "call delete UserSendMsg rpc server failed", err.Error()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call UserSendMsg rpc server failed"}) - return - } - log.Info(req.OperationID, "", "api DelSuperGroupMsg call end..., [data: %s] [reply: %s]", pbData.String(), RpcResp.String()) - resp.ErrCode = RpcResp.ErrCode - resp.ErrMsg = RpcResp.ErrMsg - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp) - c.JSON(http.StatusOK, resp) - } - -} - -// @Summary 清空用户消息 -// @Description 清空用户消息 -// @Tags 消息相关 -// @ID ClearMsg -// @Accept json -// @Param token header string true "im token" -// @Param req body api.CleanUpMsgReq true "userID为要清空的用户ID" -// @Produce json -// @Success 0 {object} api.CleanUpMsgResp -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /msg/clear_msg [post] -func ClearMsg(c *gin.Context) { - params := api.CleanUpMsgReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - // - req := &rpc.ClearMsgReq{} - utils.CopyStructFields(req, ¶ms) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", req.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + " getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewMsgClient(etcdConn) - RpcResp, err := client.ClearMsg(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, " CleanUpMsg failed ", err.Error(), req.String(), RpcResp.ErrMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": RpcResp.ErrMsg}) - return - } - - resp := api.CleanUpMsgResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} - - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) - c.JSON(http.StatusOK, resp) -} - -// @Summary 设置用户最小seq -// @Description 设置用户最小seq,以及用户相关读扩散群组最小seq -// @Tags 消息相关 -// @ID SetMsgMinSeq -// @Accept json -// @Param token header string true "im token" -func SetMsgMinSeq(c *gin.Context) { - params := api.SetMsgMinSeqReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - // - req := &rpc.SetMsgMinSeqReq{} - utils.CopyStructFields(req, ¶ms) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", req.String()) - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + " getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewMsgClient(etcdConn) - RpcResp, err := client.SetMsgMinSeq(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, " SetMsgMinSeq failed ", err.Error(), req.String(), RpcResp.ErrMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": RpcResp.ErrMsg}) - return - } - - resp := api.SetMsgMinSeqResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} - - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) - c.JSON(http.StatusOK, resp) -} diff --git a/internal/api/msg/extend_msg.go b/internal/api/msg/extend_msg.go deleted file mode 100644 index a6b1318f3..000000000 --- a/internal/api/msg/extend_msg.go +++ /dev/null @@ -1,202 +0,0 @@ -package msg - -import ( - api "OpenIM/pkg/apistruct" - "OpenIM/pkg/common/config" - "OpenIM/pkg/common/constant" - "OpenIM/pkg/common/log" - "OpenIM/pkg/common/tokenverify" - rpc "OpenIM/pkg/proto/msg" - "OpenIM/pkg/utils" - "context" - "github.com/gin-gonic/gin" - "net/http" - "strings" -) - -func SetMessageReactionExtensions(c *gin.Context) { - var ( - req api.SetMessageReactionExtensionsCallbackReq - resp api.SetMessageReactionExtensionsCallbackResp - reqPb rpc.SetMessageReactionExtensionsReq - ) - - if err := c.BindJSON(&req); err != nil { - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req) - - if err := utils.CopyStructFields(&reqPb, &req); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields", err.Error()) - } - var ok bool - var errInfo string - ok, reqPb.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - grpcConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, req.OperationID) - if grpcConn == nil { - errMsg := req.OperationID + " getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - msgClient := rpc.NewMsgClient(grpcConn) - respPb, err := msgClient.SetMessageReactionExtensions(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelMsgList failed", err.Error(), reqPb) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": constant.ErrServer.ErrCode, "errMsg": constant.ErrServer.ErrMsg + err.Error()}) - return - } - resp.ErrCode = respPb.ErrCode - resp.ErrMsg = respPb.ErrMsg - resp.Data.ResultKeyValue = respPb.Result - resp.Data.MsgFirstModifyTime = reqPb.MsgFirstModifyTime - resp.Data.IsReact = reqPb.IsReact - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp) - c.JSON(http.StatusOK, resp) - -} - -func GetMessageListReactionExtensions(c *gin.Context) { - var ( - req api.GetMessageListReactionExtensionsReq - resp api.GetMessageListReactionExtensionsResp - reqPb rpc.GetMessageListReactionExtensionsReq - ) - if err := c.BindJSON(&req); err != nil { - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req) - - if err := utils.CopyStructFields(&reqPb, &req); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields", err.Error()) - } - var ok bool - var errInfo string - ok, reqPb.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - grpcConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, req.OperationID) - if grpcConn == nil { - errMsg := req.OperationID + " getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - msgClient := rpc.NewMsgClient(grpcConn) - respPb, err := msgClient.GetMessageListReactionExtensions(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelMsgList failed", err.Error(), reqPb) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": constant.ErrServer.ErrCode, "errMsg": constant.ErrServer.ErrMsg + err.Error()}) - return - } - resp.ErrCode = respPb.ErrCode - resp.ErrMsg = respPb.ErrMsg - resp.Data = respPb.SingleMessageResult - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp) - c.JSON(http.StatusOK, resp) -} - -func AddMessageReactionExtensions(c *gin.Context) { - var ( - req api.AddMessageReactionExtensionsReq - resp api.AddMessageReactionExtensionsResp - reqPb rpc.ModifyMessageReactionExtensionsReq - ) - if err := c.BindJSON(&req); err != nil { - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req) - - if err := utils.CopyStructFields(&reqPb, &req); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields", err.Error()) - } - var ok bool - var errInfo string - ok, reqPb.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - grpcConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, req.OperationID) - if grpcConn == nil { - errMsg := req.OperationID + " getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - msgClient := rpc.NewMsgClient(grpcConn) - respPb, err := msgClient.AddMessageReactionExtensions(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelMsgList failed", err.Error(), reqPb) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": constant.ErrServer.ErrCode, "errMsg": constant.ErrServer.ErrMsg + err.Error()}) - return - } - resp.ErrCode = respPb.ErrCode - resp.ErrMsg = respPb.ErrMsg - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp) - c.JSON(http.StatusOK, resp) -} - -func DeleteMessageReactionExtensions(c *gin.Context) { - var ( - req api.DeleteMessageReactionExtensionsReq - resp api.DeleteMessageReactionExtensionsResp - reqPb rpc.DeleteMessageListReactionExtensionsReq - ) - if err := c.BindJSON(&req); err != nil { - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req) - - if err := utils.CopyStructFields(&reqPb, &req); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields", err.Error()) - } - var ok bool - var errInfo string - ok, reqPb.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - grpcConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, req.OperationID) - if grpcConn == nil { - errMsg := req.OperationID + " getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - msgClient := rpc.NewMsgClient(grpcConn) - respPb, err := msgClient.DeleteMessageReactionExtensions(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelMsgList failed", err.Error(), reqPb) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": constant.ErrServer.ErrCode, "errMsg": constant.ErrServer.ErrMsg + err.Error()}) - return - } - resp.ErrCode = respPb.ErrCode - resp.ErrMsg = respPb.ErrMsg - resp.Data = respPb.Result - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp) - c.JSON(http.StatusOK, resp) -} diff --git a/internal/api/msg/get_max_min_seq.go b/internal/api/msg/get_max_min_seq.go deleted file mode 100644 index 8b7780129..000000000 --- a/internal/api/msg/get_max_min_seq.go +++ /dev/null @@ -1,64 +0,0 @@ -package msg - -import ( - "OpenIM/pkg/common/config" - "OpenIM/pkg/common/log" - "OpenIM/pkg/common/tokenverify" - pbChat "OpenIM/pkg/proto/msg" - sdkws "OpenIM/pkg/proto/sdkws" - "context" - "github.com/gin-gonic/gin" - "net/http" - "strings" -) - -type paramsUserNewestSeq struct { - ReqIdentifier int `json:"reqIdentifier" binding:"required"` - SendID string `json:"sendID" binding:"required"` - OperationID string `json:"operationID" binding:"required"` - MsgIncr int `json:"msgIncr" binding:"required"` -} - -func GetSeq(c *gin.Context) { - params := paramsUserNewestSeq{} - if err := c.BindJSON(¶ms); err != nil { - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - - token := c.Request.Header.Get("token") - if ok, err := tokenverify.VerifyToken(token, params.SendID); !ok { - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "token validate err" + err.Error()}) - return - } - pbData := sdkws.GetMaxAndMinSeqReq{} - pbData.UserID = params.SendID - pbData.OperationID = params.OperationID - grpcConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, pbData.OperationID) - if grpcConn == nil { - errMsg := pbData.OperationID + " getcdv3.GetDefaultConn == nil" - log.NewError(pbData.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - msgClient := pbChat.NewMsgClient(grpcConn) - reply, err := msgClient.GetMaxAndMinSeq(context.Background(), &pbData) - if err != nil { - log.NewError(params.OperationID, "UserGetSeq rpc failed, ", params, err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": "UserGetSeq rpc failed, " + err.Error()}) - return - } - - c.JSON(http.StatusOK, gin.H{ - "errCode": reply.ErrCode, - "errMsg": reply.ErrMsg, - "msgIncr": params.MsgIncr, - "reqIdentifier": params.ReqIdentifier, - "data": gin.H{ - "maxSeq": reply.MaxSeq, - "minSeq": reply.MinSeq, - }, - }) - -} diff --git a/internal/api/msg/pull_msg.go b/internal/api/msg/pull_msg.go deleted file mode 100644 index 5893855da..000000000 --- a/internal/api/msg/pull_msg.go +++ /dev/null @@ -1,73 +0,0 @@ -package msg - -import ( - "OpenIM/pkg/common/config" - "OpenIM/pkg/common/log" - "OpenIM/pkg/common/tokenverify" - "OpenIM/pkg/proto/msg" - sdkws "OpenIM/pkg/proto/sdkws" - "OpenIM/pkg/utils" - "context" - "github.com/gin-gonic/gin" - "net/http" - "strings" -) - -type paramsUserPullMsg struct { - ReqIdentifier *int `json:"reqIdentifier" binding:"required"` - SendID string `json:"sendID" binding:"required"` - OperationID string `json:"operationID" binding:"required"` - Data struct { - SeqBegin *int64 `json:"seqBegin" binding:"required"` - SeqEnd *int64 `json:"seqEnd" binding:"required"` - } -} - -type paramsUserPullMsgBySeqList struct { - ReqIdentifier int `json:"reqIdentifier" binding:"required"` - SendID string `json:"sendID" binding:"required"` - OperationID string `json:"operationID" binding:"required"` - SeqList []uint32 `json:"seqList"` -} - -func PullMsgBySeqList(c *gin.Context) { - params := paramsUserPullMsgBySeqList{} - if err := c.BindJSON(¶ms); err != nil { - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - - token := c.Request.Header.Get("token") - if ok, err := tokenverify.VerifyToken(token, params.SendID); !ok { - if err != nil { - log.NewError(params.OperationID, utils.GetSelfFuncName(), err.Error(), token, params.SendID) - } - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "token validate err"}) - return - } - pbData := sdkws.PullMessageBySeqListReq{} - pbData.UserID = params.SendID - pbData.OperationID = params.OperationID - pbData.SeqList = params.SeqList - - grpcConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, pbData.OperationID) - if grpcConn == nil { - errMsg := pbData.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(pbData.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - msgClient := msg.NewMsgClient(grpcConn) - reply, err := msgClient.PullMessageBySeqList(context.Background(), &pbData) - if err != nil { - log.Error(pbData.OperationID, "PullMessageBySeqList error", err.Error()) - return - } - log.NewInfo(pbData.OperationID, "rpc call success to PullMessageBySeqList", reply.String(), len(reply.List)) - c.JSON(http.StatusOK, gin.H{ - "errCode": reply.ErrCode, - "errMsg": reply.ErrMsg, - "reqIdentifier": params.ReqIdentifier, - "data": reply.List, - }) -} diff --git a/internal/api/msg/send_msg.go b/internal/api/msg/send_msg.go deleted file mode 100644 index a7a558097..000000000 --- a/internal/api/msg/send_msg.go +++ /dev/null @@ -1,102 +0,0 @@ -package msg - -import ( - "OpenIM/pkg/common/config" - "OpenIM/pkg/common/log" - pbChat "OpenIM/pkg/proto/msg" - sdkws "OpenIM/pkg/proto/sdkws" - "context" - - "github.com/gin-gonic/gin" - "net/http" - "strings" -) - -type paramsUserSendMsg struct { - SenderPlatformID int32 `json:"senderPlatformID" binding:"required"` - SendID string `json:"sendID" binding:"required"` - SenderNickName string `json:"senderNickName"` - SenderFaceURL string `json:"senderFaceUrl"` - OperationID string `json:"operationID" binding:"required"` - Data struct { - SessionType int32 `json:"sessionType" binding:"required"` - MsgFrom int32 `json:"msgFrom" binding:"required"` - ContentType int32 `json:"contentType" binding:"required"` - RecvID string `json:"recvID" ` - GroupID string `json:"groupID" ` - ForceList []string `json:"forceList"` - Content []byte `json:"content" binding:"required"` - Options map[string]bool `json:"options" ` - ClientMsgID string `json:"clientMsgID" binding:"required"` - CreateTime int64 `json:"createTime" binding:"required"` - OffLineInfo *sdkws.OfflinePushInfo `json:"offlineInfo" ` - } -} - -func newUserSendMsgReq(token string, params *paramsUserSendMsg) *pbChat.SendMsgReq { - pbData := pbChat.SendMsgReq{ - Token: token, - OperationID: params.OperationID, - MsgData: &sdkws.MsgData{ - SendID: params.SendID, - RecvID: params.Data.RecvID, - GroupID: params.Data.GroupID, - ClientMsgID: params.Data.ClientMsgID, - SenderPlatformID: params.SenderPlatformID, - SenderNickname: params.SenderNickName, - SenderFaceURL: params.SenderFaceURL, - SessionType: params.Data.SessionType, - MsgFrom: params.Data.MsgFrom, - ContentType: params.Data.ContentType, - Content: params.Data.Content, - CreateTime: params.Data.CreateTime, - Options: params.Data.Options, - OfflinePushInfo: params.Data.OffLineInfo, - }, - } - return &pbData -} - -func SendMsg(c *gin.Context) { - params := paramsUserSendMsg{} - if err := c.BindJSON(¶ms); err != nil { - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - log.Error("0", "BindJSON failed ", err.Error()) - return - } - - token := c.Request.Header.Get("token") - log.NewInfo(params.OperationID, "api call success to sendMsgReq", params) - pbData := newUserSendMsgReq(token, ¶ms) - log.Info(params.OperationID, "", "api SendMsg call start..., [data: %s]", pbData.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, params.OperationID) - if etcdConn == nil { - errMsg := params.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(params.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := pbChat.NewMsgClient(etcdConn) - - log.Info(params.OperationID, "", "api SendMsg call, api call rpc...") - - reply, err := client.SendMsg(context.Background(), pbData) - if err != nil { - log.NewError(params.OperationID, "SendMsg rpc failed, ", params, err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": "SendMsg rpc failed, " + err.Error()}) - return - } - log.Info(params.OperationID, "", "api SendMsg call end..., [data: %s] [reply: %s]", pbData.String(), reply.String()) - - c.JSON(http.StatusOK, gin.H{ - "errCode": reply.ErrCode, - "errMsg": reply.ErrMsg, - "data": gin.H{ - "clientMsgID": reply.ClientMsgID, - "serverMsgID": reply.ServerMsgID, - "sendTime": reply.SendTime, - }, - }) - -} diff --git a/internal/api/route.go b/internal/api/route.go index b2df5cdbb..8618b5fca 100644 --- a/internal/api/route.go +++ b/internal/api/route.go @@ -1,7 +1,6 @@ package api import ( - "OpenIM/internal/api/conversation" "OpenIM/internal/api/manage" "OpenIM/internal/api/msg" "OpenIM/internal/api/third" @@ -9,6 +8,7 @@ import ( "OpenIM/pkg/common/log" "OpenIM/pkg/common/middleware" "OpenIM/pkg/common/prome" + "github.com/OpenIMSDK/openKeeper" "github.com/gin-gonic/gin" "io" "os" @@ -31,9 +31,11 @@ func NewGinRouter() *gin.Engine { r.GET("/metrics", prome.PrometheusHandler()) } + var zk *openKeeper.ZkClient + userRouterGroup := r.Group("/user") { - u := NewUser(nil) + u := NewUser(zk) userRouterGroup.POST("/update_user_info", u.UpdateUserInfo) //1 userRouterGroup.POST("/set_global_msg_recv_opt", u.SetGlobalRecvMessageOpt) userRouterGroup.POST("/get_users_info", u.GetUsersPublicInfo) //1 @@ -49,23 +51,23 @@ func NewGinRouter() *gin.Engine { ////friend routing group friendRouterGroup := r.Group("/friend") { - f := NewFriend(nil) - friendRouterGroup.POST("/add_friend", f.AddFriend) //1 + f := NewFriend(zk) + friendRouterGroup.POST("/add_friend", f.ApplyToAddFriend) //1 friendRouterGroup.POST("/delete_friend", f.DeleteFriend) //1 friendRouterGroup.POST("/get_friend_apply_list", f.GetFriendApplyList) //1 friendRouterGroup.POST("/get_self_friend_apply_list", f.GetSelfApplyList) //1 friendRouterGroup.POST("/get_friend_list", f.GetFriendList) //1 - friendRouterGroup.POST("/add_friend_response", f.AddFriendResponse) //1 + friendRouterGroup.POST("/add_friend_response", f.RespondFriendApply) //1 friendRouterGroup.POST("/set_friend_remark", f.SetFriendRemark) //1 friendRouterGroup.POST("/add_black", f.AddBlack) //1 - friendRouterGroup.POST("/get_black_list", f.GetBlacklist) //1 - friendRouterGroup.POST("/remove_black", f.RemoveBlacklist) //1 - friendRouterGroup.POST("/import_friend", f.ImportFriend) //1 + friendRouterGroup.POST("/get_black_list", f.GetPaginationBlacks) //1 + friendRouterGroup.POST("/remove_black", f.RemoveBlack) //1 + friendRouterGroup.POST("/import_friend", f.ImportFriends) //1 friendRouterGroup.POST("/is_friend", f.IsFriend) //1 } groupRouterGroup := r.Group("/group") - g := NewGroup(nil) + g := NewGroup(zk) { groupRouterGroup.POST("/create_group", g.NewCreateGroup) //1 groupRouterGroup.POST("/set_group_info", g.NewSetGroupInfo) //1 @@ -98,7 +100,7 @@ func NewGinRouter() *gin.Engine { ////certificate authRouterGroup := r.Group("/auth") { - a := NewAuth(nil) + a := NewAuth(zk) authRouterGroup.POST("/user_register", a.UserRegister) //1 authRouterGroup.POST("/user_token", a.UserToken) //1 authRouterGroup.POST("/parse_token", a.ParseToken) //1 @@ -141,13 +143,36 @@ func NewGinRouter() *gin.Engine { ////Conversation conversationGroup := r.Group("/conversation") { //1 - conversationGroup.POST("/get_all_conversations", conversation.GetAllConversations) - conversationGroup.POST("/get_conversation", conversation.GetConversation) - conversationGroup.POST("/get_conversations", conversation.GetConversations) - conversationGroup.POST("/set_conversation", conversation.SetConversation) - conversationGroup.POST("/batch_set_conversation", conversation.BatchSetConversations) - conversationGroup.POST("/set_recv_msg_opt", conversation.SetRecvMsgOpt) - conversationGroup.POST("/modify_conversation_field", conversation.ModifyConversationField) + c := NewConversation(zk) + conversationGroup.POST("/get_all_conversations", c.GetAllConversations) + conversationGroup.POST("/get_conversation", c.GetConversation) + conversationGroup.POST("/get_conversations", c.GetConversations) + conversationGroup.POST("/set_conversation", c.SetConversation) + conversationGroup.POST("/batch_set_conversation", c.BatchSetConversations) + conversationGroup.POST("/set_recv_msg_opt", c.SetRecvMsgOpt) + conversationGroup.POST("/modify_conversation_field", c.ModifyConversationField) } return r } + +/* + + { + GetSeq + SendMsg + PullMsgBySeqList + DelMsg + DelSuperGroupMsg + ClearMsg + SetMsgMinSeq + SetMessageReactionExtensions + GetMessageListReactionExtensions + AddMessageReactionExtensions + DeleteMessageReactionExtensions + ManagementSendMsg + ManagementBatchSendMsg + CheckMsgIsSendSuccess + } + + +*/ diff --git a/internal/api/user.go b/internal/api/user.go index 9b3f4a043..0164e41b4 100644 --- a/internal/api/user.go +++ b/internal/api/user.go @@ -19,54 +19,54 @@ type User struct { zk *openKeeper.ZkClient } -func (u *User) getGroupClient() (user.UserClient, error) { - conn, err := u.zk.GetConn(config.Config.RpcRegisterName.OpenImGroupName) +func (o *User) client() (user.UserClient, error) { + conn, err := o.zk.GetConn(config.Config.RpcRegisterName.OpenImGroupName) if err != nil { return nil, err } return user.NewUserClient(conn), nil } -func (u *User) UpdateUserInfo(c *gin.Context) { - a2r.Call(user.UserClient.UpdateUserInfo, u.getGroupClient, c) +func (o *User) UpdateUserInfo(c *gin.Context) { + a2r.Call(user.UserClient.UpdateUserInfo, o.client, c) } -func (u *User) SetGlobalRecvMessageOpt(c *gin.Context) { - a2r.Call(user.UserClient.SetGlobalRecvMessageOpt, u.getGroupClient, c) +func (o *User) SetGlobalRecvMessageOpt(c *gin.Context) { + a2r.Call(user.UserClient.SetGlobalRecvMessageOpt, o.client, c) } -func (u *User) GetUsersPublicInfo(c *gin.Context) { - a2r.Call(user.UserClient.GetDesignateUsers, u.getGroupClient, c) +func (o *User) GetUsersPublicInfo(c *gin.Context) { + a2r.Call(user.UserClient.GetDesignateUsers, o.client, c) } -func (u *User) GetSelfUserInfo(c *gin.Context) { - a2r.Call(user.UserClient.GetSelfUserInfo, u.getGroupClient, c) +func (o *User) GetSelfUserInfo(c *gin.Context) { + a2r.Call(user.UserClient.GetSelfUserInfo, o.client, c) } -func (u *User) GetUsersOnlineStatus(c *gin.Context) { - a2r.Call(user.UserClient.GetUsersOnlineStatus, u.getGroupClient, c) +func (o *User) GetUsersOnlineStatus(c *gin.Context) { + a2r.Call(user.UserClient.GetUsersOnlineStatus, o.client, c) } -func (u *User) GetUsersInfoFromCache(c *gin.Context) { - a2r.Call(user.UserClient.GetUsersInfoFromCache, u.getGroupClient, c) +func (o *User) GetUsersInfoFromCache(c *gin.Context) { + a2r.Call(user.UserClient.GetUsersInfoFromCache, o.client, c) } -func (u *User) GetFriendIDListFromCache(c *gin.Context) { - a2r.Call(user.UserClient.GetFriendIDListFromCache, u.getGroupClient, c) +func (o *User) GetFriendIDListFromCache(c *gin.Context) { + a2r.Call(user.UserClient.GetFriendIDListFromCache, o.client, c) } -func (u *User) GetBlackIDListFromCache(c *gin.Context) { - a2r.Call(user.UserClient.GetBlackIDListFromCache, u.getGroupClient, c) +func (o *User) GetBlackIDListFromCache(c *gin.Context) { + a2r.Call(user.UserClient.GetBlackIDListFromCache, o.client, c) } //func (u *User) GetAllUsersUid(c *gin.Context) { -// a2r.Call(user.UserClient.GetAllUsersUid, u.getGroupClient, c) +// a2r.Call(user.UserClient.GetAllUsersUid, u.client, c) //} // //func (u *User) AccountCheck(c *gin.Context) { -// a2r.Call(user.UserClient.AccountCheck, u.getGroupClient, c) +// a2r.Call(user.UserClient.AccountCheck, u.client, c) //} -func (u *User) GetUsers(c *gin.Context) { - a2r.Call(user.UserClient.GetPaginationUsers, u.getGroupClient, c) +func (o *User) GetUsers(c *gin.Context) { + a2r.Call(user.UserClient.GetPaginationUsers, o.client, c) } diff --git a/pkg/proto/group/group.proto b/pkg/proto/group/group.proto index aa5a81c4a..c3d980e08 100644 --- a/pkg/proto/group/group.proto +++ b/pkg/proto/group/group.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -import "Open-IM-Server/pkg/proto/sdkws/ws.proto"; -import "Open-IM-Server/pkg/proto/sdkws/wrappers.proto"; +import "sdkws/ws.proto"; +import "sdkws/wrappers.proto"; option go_package = "OpenIM/pkg/proto/group;group"; package group; diff --git a/pkg/proto/sdkws/ws.proto b/pkg/proto/sdkws/ws.proto index 42523869a..21c9cf263 100644 --- a/pkg/proto/sdkws/ws.proto +++ b/pkg/proto/sdkws/ws.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -import "Open-IM-Server/pkg/proto/sdkws/wrappers.proto"; +import "sdkws/wrappers.proto"; option go_package = "OpenIM/pkg/proto/sdkws;sdkws"; package sdkws;