parent
7050b64b19
commit
6150419842
@ -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)
|
||||||
|
}
|
@ -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<br>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<br>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) {
|
|
||||||
|
|
||||||
}
|
|
@ -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)
|
||||||
|
}
|
@ -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)
|
|
||||||
}
|
|
@ -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,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
|
@ -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,
|
|
||||||
})
|
|
||||||
}
|
|
@ -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,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in new issue