Merge remote-tracking branch 'origin/tuoyun' into tuoyun

pull/131/head
wenxu12345 3 years ago
commit e6f21d166a

@ -94,7 +94,7 @@ func main() {
conversationGroup := r.Group("/conversation") conversationGroup := r.Group("/conversation")
{ {
conversationGroup.POST("/set_receive_message_opt", conversation.SetReceiveMessageOpt) conversationGroup.POST("/set_receive_message_opt", conversation.SetReceiveMessageOpt)
// conversationGroup.POST("/get_receive_message_opt", conversation.GetReceiveMessageOpt) conversationGroup.POST("/get_receive_message_opt", conversation.GetReceiveMessageOpt)
conversationGroup.POST("/get_all_conversation_message_opt", conversation.GetAllConversationMessageOpt) conversationGroup.POST("/get_all_conversation_message_opt", conversation.GetAllConversationMessageOpt)
} }

@ -31,6 +31,7 @@ require (
github.com/lestrrat-go/strftime v1.0.4 // indirect github.com/lestrrat-go/strftime v1.0.4 // indirect
github.com/lib/pq v1.2.0 // indirect github.com/lib/pq v1.2.0 // indirect
github.com/mattn/go-sqlite3 v1.14.6 // indirect github.com/mattn/go-sqlite3 v1.14.6 // indirect
github.com/mitchellh/mapstructure v1.4.2
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
github.com/olivere/elastic/v7 v7.0.23 github.com/olivere/elastic/v7 v7.0.23
github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect

@ -1,192 +1,106 @@
package conversation package conversation
import "github.com/gin-gonic/gin" import (
api "Open_IM/pkg/base_info"
// "Open_IM/pkg/common/config"
//type paramsSetReceiveMessageOpt struct { "Open_IM/pkg/common/log"
// OperationID string `json:"operationID" binding:"required"` "Open_IM/pkg/common/token_verify"
// Option *int32 `json:"option" binding:"required"` "Open_IM/pkg/grpc-etcdv3/getcdv3"
// ConversationIdList []string `json:"conversationIdList" binding:"required"` "Open_IM/pkg/proto/user"
//} rpc "Open_IM/pkg/proto/user"
// "Open_IM/pkg/utils"
//type OptResult struct { "context"
// ConversationId string `json:"conversationId" binding:"required"` "github.com/gin-gonic/gin"
// Result int32 `json:"result" binding:"required"` "net/http"
//} "strings"
// )
//type SetReceiveMessageOptResp struct {
// ErrCode int32 `json:"errCode"`
// ErrMsg string `json:"errMsg"`
// Data []OptResult `json:"data"`
//}
//
//type paramGetReceiveMessageOpt struct {
// ConversationIdList []string `json:"conversationIdList" binding:"required"`
// OperationID string `json:"operationID" binding:"required"`
//}
//
//type GetReceiveMessageOptResp struct {
// SetReceiveMessageOptResp
//}
//
//type paramGetAllConversationMessageOpt struct {
// OperationID string `json:"operationID" binding:"required"`
//}
//
//type GetAllConversationMessageOptResp struct {
// SetReceiveMessageOptResp
//}
//
////CopyStructFields
func GetAllConversationMessageOpt(c *gin.Context) { func GetAllConversationMessageOpt(c *gin.Context) {
params := api.GetAllConversationMessageOptReq{}
if err := c.BindJSON(&params); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
return
}
req := &rpc.GetAllConversationMsgOptReq{}
utils.CopyStructFields(req, &params)
var ok bool
ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
if !ok {
log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
return
}
log.NewInfo(params.OperationID, "GetAllConversationMessageOpt args ", req.String())
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName)
client := user.NewUserClient(etcdConn)
RpcResp, err := client.GetAllConversationMsgOpt(context.Background(), req)
if err != nil {
log.NewError(params.OperationID, "GetAllConversationMsgOpt rpc failed, ", req, err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": "GetAllConversationMsgOpt rpc failed, " + err.Error()})
return
}
resp := api.GetAllConversationMessageOptResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
resp.ConversationOptResultList = RpcResp.ConversationOptResultList
log.NewInfo(req.OperationID, "GetAllConversationMsgOpt api return: ", resp)
c.JSON(http.StatusOK, resp)
}
func GetReceiveMessageOpt(c *gin.Context) {
params := api.GetReceiveMessageOptReq{}
if err := c.BindJSON(&params); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
return
}
req := &rpc.GetReceiveMessageOptReq{}
utils.CopyStructFields(req, &params)
var ok bool
ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
if !ok {
log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
return
}
log.NewInfo(params.OperationID, "GetReceiveMessageOpt args ", req.String())
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName)
client := user.NewUserClient(etcdConn)
RpcResp, err := client.GetReceiveMessageOpt(context.Background(), req)
if err != nil {
log.NewError(params.OperationID, "GetReceiveMessageOpt rpc failed, ", req, err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": "GetReceiveMessageOpt rpc failed, " + err.Error()})
return
}
resp := api.GetReceiveMessageOptResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
resp.ConversationOptResultList = RpcResp.ConversationOptResultList
log.NewInfo(req.OperationID, "GetReceiveMessageOpt api return: ", resp)
c.JSON(http.StatusOK, resp)
} }
//func GetAllConversationMessageOpt(c *gin.Context) {
// params := paramGetAllConversationMessageOpt{}
// if err := c.BindJSON(&params); err != nil {
// log.NewError(params.OperationID, "bind json failed ", err.Error(), c)
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
// return
// }
//
// claims, err := token_verify.ParseToken(c.Request.Header.Get("token"))
// if err != nil {
// log.NewError(params.OperationID, "ParseToken failed, ", err.Error(), c.Request.Header.Get("token"))
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": "ParseToken failed, " + err.Error()})
// return
// }
//
// req := &user.GetAllConversationMsgOptReq{
// UId: claims.UID,
// OperationID: params.OperationID,
// }
// log.NewInfo(req.OperationID, "GetAllConversationMsgOpt req: ", req)
// etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName)
// client := user.NewUserClient(etcdConn)
// resp, err := client.GetAllConversationMsgOpt(context.Background(), req)
// if err != nil {
// log.NewError(params.OperationID, "GetAllConversationMsgOpt rpc failed, ", req, err.Error())
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": "GetAllConversationMsgOpt rpc failed, " + err.Error()})
// return
// }
// var ginResp GetAllConversationMessageOptResp
// ginResp.ErrCode = resp.ErrCode
// ginResp.ErrMsg = resp.ErrMsg
// for _, v := range resp.ConversationOptResult {
// var opt OptResult
// err := utils.CopyStructFields(&opt, *v, "ConversationId", "Result")
// if err != nil {
// log.NewError(req.OperationID, "CopyStructFields failed ", err.Error())
// continue
// }
// ginResp.Data = append(ginResp.Data, opt)
// }
// log.NewInfo(req.OperationID, "GetAllConversationMsgOpt resp: ", ginResp, req)
// c.JSON(http.StatusOK, ginResp)
//}
//
//func GetReceiveMessageOpt(c *gin.Context) {
// params := paramGetReceiveMessageOpt{}
// if err := c.BindJSON(&params); err != nil {
// log.NewError(params.OperationID, "bind json failed ", err.Error(), c)
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
// return
// }
//
// claims, err := token_verify.ParseToken(c.Request.Header.Get("token"))
// if err != nil {
// log.NewError(params.OperationID, "ParseToken failed, ", err.Error(), c.Request.Header.Get("token"))
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": "ParseToken failed, " + err.Error()})
// return
// }
//
// req := &user.GetReceiveMessageOptReq{
// UId: claims.UID,
// ConversationId: params.ConversationIdList,
// OperationID: params.OperationID,
// }
// log.NewInfo(req.OperationID, "GetReceiveMessageOptReq req: ", req)
// etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName)
// client := user.NewUserClient(etcdConn)
// resp, err := client.GetReceiveMessageOpt(context.Background(), req)
// if err != nil {
// log.NewError(params.OperationID, "GetReceiveMessageOpt rpc failed, ", req, err.Error())
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": "GetReceiveMessageOpt rpc failed, " + err.Error()})
// return
// }
// log.NewInfo(req.OperationID, "GetReceiveMessageOptReq req: ", req, resp)
// var ginResp GetReceiveMessageOptResp
// ginResp.ErrCode = resp.ErrCode
// ginResp.ErrMsg = resp.ErrMsg
//
// for _, v := range resp.ConversationOptResult {
// var opt OptResult
// log.NewInfo("CopyStructFields begin ", v, req.OperationID)
// err := utils.CopyStructFields(&opt, *v, "ConversationId", "Result")
// log.NewInfo("CopyStructFields end ", v, req.OperationID)
// if err != nil {
// log.NewError(req.OperationID, "CopyStructFields failed ", err.Error())
// continue
// }
// ginResp.Data = append(ginResp.Data, opt)
// }
// log.NewInfo(req.OperationID, "GetReceiveMessageOpt resp: ", ginResp)
// c.JSON(http.StatusOK, ginResp)
//}
//
func SetReceiveMessageOpt(c *gin.Context) { func SetReceiveMessageOpt(c *gin.Context) {
params := api.SetReceiveMessageOptReq{}
if err := c.BindJSON(&params); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
return
}
req := &rpc.SetReceiveMessageOptReq{}
utils.CopyStructFields(req, &params)
var ok bool
ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
if !ok {
log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
return
}
log.NewInfo(params.OperationID, "SetReceiveMessageOpt args ", req.String())
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName)
client := user.NewUserClient(etcdConn)
RpcResp, err := client.SetReceiveMessageOpt(context.Background(), req)
if err != nil {
log.NewError(params.OperationID, "SetReceiveMessageOpt rpc failed, ", req, err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": "SetReceiveMessageOpt rpc failed, " + err.Error()})
return
}
resp := api.SetReceiveMessageOptResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
resp.OptResultList = RpcResp.OptResultList
log.NewInfo(req.OperationID, "SetReceiveMessageOpt api return: ", resp)
c.JSON(http.StatusOK, resp)
} }
//func SetReceiveMessageOpt(c *gin.Context) {
// params := paramsSetReceiveMessageOpt{}
// if err := c.BindJSON(&params); err != nil {
// log.NewError(params.OperationID, "bind json failed ", err.Error(), c)
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
// return
// }
//
// claims, err := token_verify.ParseToken(c.Request.Header.Get("token"))
// if err != nil {
// log.NewError(params.OperationID, "ParseToken failed, ", err.Error(), c.Request.Header.Get("token"))
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": "ParseToken failed, " + err.Error()})
// return
// }
//
// req := &user.SetReceiveMessageOptReq{
// UId: claims.UID,
// Opt: *params.Option,
// ConversationId: params.ConversationIdList,
// OperationID: params.OperationID,
// }
// log.NewInfo(req.OperationID, "SetReceiveMessageOpt req: ", req)
// etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName)
// client := user.NewUserClient(etcdConn)
// resp, err := client.SetReceiveMessageOpt(context.Background(), req)
// if err != nil {
// log.NewError(params.OperationID, "SetReceiveMessageOpt rpc failed, ", req, err.Error())
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": "SetReceiveMessageOpt rpc failed, " + err.Error()})
// return
// }
// log.NewInfo(req.OperationID, "SetReceiveMessageOpt req: ", req, resp)
// ginResp := SetReceiveMessageOptResp{
// ErrCode: resp.ErrCode,
// ErrMsg: resp.ErrMsg,
// }
//
// for _, v := range resp.OptResult {
// var opt OptResult
// log.NewDebug("CopyStructFields begin ", v, req.OperationID)
// err := utils.CopyStructFields(&opt, *v, "ConversationId", "Result")
// log.NewDebug("CopyStructFields end ", v, req.OperationID)
// if err != nil {
// log.NewError(req.OperationID, "CopyStructFields failed ", err.Error())
// continue
// }
// ginResp.Data = append(ginResp.Data, opt)
// }
// log.NewInfo(req.OperationID, "SetReceiveMessageOpt resp: ", ginResp)
// c.JSON(http.StatusOK, ginResp)
//}

@ -6,166 +6,254 @@
*/ */
package manage package manage
import "github.com/gin-gonic/gin" import (
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/constant"
"Open_IM/pkg/common/log"
"Open_IM/pkg/common/token_verify"
"Open_IM/pkg/grpc-etcdv3/getcdv3"
pbChat "Open_IM/pkg/proto/chat"
open_im_sdk "Open_IM/pkg/proto/sdk_ws"
"Open_IM/pkg/utils"
"context"
"github.com/gin-gonic/gin"
"github.com/go-playground/validator/v10"
"github.com/mitchellh/mapstructure"
"net/http"
"strings"
)
var validate *validator.Validate
func newUserSendMsgReq(params *ManagementSendMsgReq) *pbChat.SendMsgReq {
var newContent string
switch params.ContentType {
case constant.Text:
newContent = params.Content["text"].(string)
case constant.Picture:
fallthrough
case constant.Custom:
fallthrough
case constant.Voice:
fallthrough
case constant.File:
newContent = utils.StructToJsonString(params.Content)
default:
}
options := make(map[string]bool, 2)
if params.IsOnlineOnly {
utils.SetSwitchFromOptions(options, constant.IsOfflinePush, false)
utils.SetSwitchFromOptions(options, constant.IsHistory, false)
utils.SetSwitchFromOptions(options, constant.IsPersistent, false)
}
pbData := pbChat.SendMsgReq{
OperationID: params.OperationID,
MsgData: &open_im_sdk.MsgData{
SendID: params.SendID,
RecvID: params.RecvID,
GroupID: params.GroupID,
ClientMsgID: utils.GetMsgID(params.SendID),
SenderPlatformID: params.SenderPlatformID,
SenderNickname: params.SenderNickname,
SenderFaceURL: params.SenderFaceURL,
SessionType: params.SessionType,
MsgFrom: constant.SysMsgType,
ContentType: params.ContentType,
Content: []byte(newContent),
ForceList: params.ForceList,
CreateTime: utils.GetCurrentTimestampByNano(),
Options: options,
OfflinePushInfo: params.OfflinePushInfo,
},
}
return &pbData
}
func init() {
validate = validator.New()
}
//
//var validate *validator.Validate
//
//
//func newUserSendMsgReq(params *paramsManagementSendMsg) *pbChat.SendMsgReq {
// var newContent string
// switch params.ContentType {
// case constant.Text:
// newContent = params.Content["text"].(string)
// case constant.Picture:
// fallthrough
// case constant.Custom:
// fallthrough
// case constant.Voice:
// fallthrough
// case constant.File:
// newContent = utils.StructToJsonString(params.Content)
// default:
// }
// options := make(map[string]bool, 2)
// if params.IsOnlineOnly {
// utils.SetSwitchFromOptions(options, constant.IsOfflinePush, false)
// utils.SetSwitchFromOptions(options, constant.IsHistory, false)
// utils.SetSwitchFromOptions(options, constant.IsPersistent, false)
// }
// pbData := pbChat.SendMsgReq{
// OperationID: params.OperationID,
// MsgData: &open_im_sdk.MsgData{
// SendID: params.SendID,
// RecvID: params.RecvID,
// GroupID: params.GroupID,
// ClientMsgID: utils.GetMsgID(params.SendID),
// SenderPlatformID: params.SenderPlatformID,
// SenderNickName: params.SenderNickName,
// SenderFaceURL: params.SenderFaceURL,
// SessionType: params.SessionType,
// MsgFrom: constant.SysMsgType,
// ContentType: params.ContentType,
// Content: []byte(newContent),
// ForceList: params.ForceList,
// CreateTime: utils.GetCurrentTimestampByNano(),
// Options: options,
// OfflinePushInfo: params.OfflinePushInfo,
// },
// }
// return &pbData
//}
//func init() {
// validate = validator.New()
//}
func ManagementSendMsg(c *gin.Context) { func ManagementSendMsg(c *gin.Context) {
var data interface{}
params := ManagementSendMsgReq{}
if err := c.BindJSON(&params); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
log.ErrorByKv("json unmarshal err", c.PostForm("operationID"), "err", err.Error(), "content", c.PostForm("content"))
return
}
switch params.ContentType {
case constant.Text:
data = TextElem{}
case constant.Picture:
data = PictureElem{}
case constant.Voice:
data = SoundElem{}
case constant.Video:
data = VideoElem{}
case constant.File:
data = FileElem{}
//case constant.AtText:
// data = AtElem{}
//case constant.Merger:
// data =
//case constant.Card:
//case constant.Location:
case constant.Custom:
data = CustomElem{}
//case constant.Revoke:
//case constant.HasReadReceipt:
//case constant.Typing:
//case constant.Quote:
default:
c.JSON(http.StatusBadRequest, gin.H{"errCode": 404, "errMsg": "contentType err"})
log.ErrorByKv("contentType err", c.PostForm("operationID"), "content", c.PostForm("content"))
return
}
if err := mapstructure.WeakDecode(params.Content, &data); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": err.Error()})
log.ErrorByKv("content to Data struct err", "", "err", err.Error())
return
} else if err := validate.Struct(data); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"errCode": 403, "errMsg": err.Error()})
log.ErrorByKv("data args validate err", "", "err", err.Error())
return
}
token := c.Request.Header.Get("token")
claims, err := token_verify.ParseToken(token)
if err != nil {
log.NewError(params.OperationID, "parse token failed", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "parse token failed", "sendTime": 0, "MsgID": ""})
}
if !utils.IsContain(claims.UID, config.Config.Manager.AppManagerUid) {
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "not authorized", "sendTime": 0, "MsgID": ""})
return
}
switch params.SessionType {
case constant.SingleChatType:
if len(params.RecvID) == 0 {
log.NewError(params.OperationID, "recvID is a null string")
c.JSON(http.StatusBadRequest, gin.H{"errCode": 405, "errMsg": "recvID is a null string", "sendTime": 0, "MsgID": ""})
}
case constant.GroupChatType:
if len(params.GroupID) == 0 {
log.NewError(params.OperationID, "groupID is a null string")
c.JSON(http.StatusBadRequest, gin.H{"errCode": 405, "errMsg": "groupID is a null string", "sendTime": 0, "MsgID": ""})
}
}
log.InfoByKv("Ws call success to ManagementSendMsgReq", params.OperationID, "Parameters", params)
pbData := newUserSendMsgReq(&params)
log.Info("", "", "api ManagementSendMsg call start..., [data: %s]", pbData.String())
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName)
client := pbChat.NewChatClient(etcdConn)
log.Info("", "", "api ManagementSendMsg call, api call rpc...")
reply, err := client.SendMsg(context.Background(), pbData)
if err != nil {
log.NewError(params.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("", "", "api ManagementSendMsg call end..., [data: %s] [reply: %s]", pbData.String(), reply.String())
c.JSON(http.StatusOK, gin.H{
"errCode": reply.ErrCode,
"errMsg": reply.ErrMsg,
"sendTime": reply.SendTime,
"msgID": reply.ClientMsgID,
})
} }
//func ManagementSendMsg(c *gin.Context) {
// var data interface{}
// params := paramsManagementSendMsg{}
// if err := c.BindJSON(&params); err != nil {
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
// log.ErrorByKv("json unmarshal err", c.PostForm("operationID"), "err", err.Error(), "content", c.PostForm("content"))
// return
// }
// switch params.ContentType {
// case constant.Text:
// data = TextElem{}
// case constant.Picture:
// data = PictureElem{}
// case constant.Voice:
// data = SoundElem{}
// case constant.Video:
// data = VideoElem{}
// case constant.File:
// data = FileElem{}
// //case constant.AtText:
// // data = AtElem{}
// //case constant.Merger:
// // data =
// //case constant.Card:
// //case constant.Location:
// case constant.Custom:
// data = CustomElem{}
// //case constant.Revoke:
// //case constant.HasReadReceipt:
// //case constant.Typing:
// //case constant.Quote:
// default:
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 404, "errMsg": "contentType err"})
// log.ErrorByKv("contentType err", c.PostForm("operationID"), "content", c.PostForm("content"))
// return
// }
// if err := mapstructure.WeakDecode(params.Content, &data); err != nil {
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": err.Error()})
// log.ErrorByKv("content to Data struct err", "", "err", err.Error())
// return
// } else if err := validate.Struct(data); err != nil {
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 403, "errMsg": err.Error()})
// log.ErrorByKv("data args validate err", "", "err", err.Error())
// return
// }
//
// token := c.Request.Header.Get("token")
// claims, err := token_verify.ParseToken(token)
// if err != nil {
// log.NewError(params.OperationID, "parse token failed", err.Error())
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "parse token failed", "sendTime": 0, "MsgID": ""})
// }
// if !utils.IsContain(claims.UID, config.Config.Manager.AppManagerUid) {
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "not authorized", "sendTime": 0, "MsgID": ""})
// return
//
// }
// switch params.SessionType {
// case constant.SingleChatType:
// if len(params.RecvID) == 0 {
// log.NewError(params.OperationID, "recvID is a null string")
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 405, "errMsg": "recvID is a null string", "sendTime": 0, "MsgID": ""})
// }
// case constant.GroupChatType:
// if len(params.GroupID) == 0 {
// log.NewError(params.OperationID, "groupID is a null string")
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 405, "errMsg": "groupID is a null string", "sendTime": 0, "MsgID": ""})
// }
//
// }
// log.InfoByKv("Ws call success to ManagementSendMsgReq", params.OperationID, "Parameters", params)
//
// pbData := newUserSendMsgReq(&params)
// log.Info("", "", "api ManagementSendMsg call start..., [data: %s]", pbData.String())
// //
// etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName)
// client := pbChat.NewChatClient(etcdConn)
//
// log.Info("", "", "api ManagementSendMsg call, api call rpc...")
//
// reply, err := client.SendMsg(context.Background(), pbData)
// if err != nil {
// log.NewError(params.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("", "", "api ManagementSendMsg call end..., [data: %s] [reply: %s]", pbData.String(), reply.String())
//
// c.JSON(http.StatusOK, gin.H{
// "errCode": reply.ErrCode,
// "errMsg": reply.ErrMsg,
// "sendTime": reply.SendTime,
// "msgID": reply.ClientMsgID,
// })
//
//}
//type MergeElem struct { //type MergeElem struct {
// Title string `json:"title"` // Title string `json:"title"`
// AbstractList []string `json:"abstractList"` // AbstractList []string `json:"abstractList"`
// MultiMessage []*MsgStruct `json:"multiMessage"` // MultiMessage []*MsgStruct `json:"multiMessage"`
//} //}
//
//type QuoteElem struct { //type QuoteElem struct {
// Text string `json:"text"` // Text string `json:"text"`
// QuoteMessage *MsgStruct `json:"quoteMessage"` // QuoteMessage *MsgStruct `json:"quoteMessage"`
//} //}
type ManagementSendMsgReq struct {
OperationID string `json:"operationID" binding:"required"`
SendID string `json:"sendID" binding:"required"`
RecvID string `json:"recvID" `
GroupID string `json:"groupID" `
SenderNickname string `json:"senderNickname" `
SenderFaceURL string `json:"senderFaceURL" `
SenderPlatformID int32 `json:"senderPlatformID"`
ForceList []string `json:"forceList" `
Content map[string]interface{} `json:"content" binding:"required"`
ContentType int32 `json:"contentType" binding:"required"`
SessionType int32 `json:"sessionType" binding:"required"`
IsOnlineOnly bool `json:"isOnlineOnly"`
OfflinePushInfo *open_im_sdk.OfflinePushInfo `json:"offlinePushInfo"`
}
type PictureBaseInfo struct {
UUID string `mapstructure:"uuid"`
Type string `mapstructure:"type" validate:"required"`
Size int64 `mapstructure:"size" validate:"required"`
Width int32 `mapstructure:"width" validate:"required"`
Height int32 `mapstructure:"height" validate:"required"`
Url string `mapstructure:"url" validate:"required"`
}
type PictureElem struct {
SourcePath string `mapstructure:"sourcePath"`
SourcePicture PictureBaseInfo `mapstructure:"sourcePicture" validate:"required"`
BigPicture PictureBaseInfo `mapstructure:"bigPicture" `
SnapshotPicture PictureBaseInfo `mapstructure:"snapshotPicture"`
}
type SoundElem struct {
UUID string `mapstructure:"uuid"`
SoundPath string `mapstructure:"soundPath"`
SourceURL string `mapstructure:"sourceUrl"`
DataSize int64 `mapstructure:"dataSize"`
Duration int64 `mapstructure:"duration"`
}
type VideoElem struct {
VideoPath string `mapstructure:"videoPath"`
VideoUUID string `mapstructure:"videoUUID"`
VideoURL string `mapstructure:"videoUrl"`
VideoType string `mapstructure:"videoType"`
VideoSize int64 `mapstructure:"videoSize"`
Duration int64 `mapstructure:"duration"`
SnapshotPath string `mapstructure:"snapshotPath"`
SnapshotUUID string `mapstructure:"snapshotUUID"`
SnapshotSize int64 `mapstructure:"snapshotSize"`
SnapshotURL string `mapstructure:"snapshotUrl"`
SnapshotWidth int32 `mapstructure:"snapshotWidth"`
SnapshotHeight int32 `mapstructure:"snapshotHeight"`
}
type FileElem struct {
FilePath string `mapstructure:"filePath"`
UUID string `mapstructure:"uuid"`
SourceURL string `mapstructure:"sourceUrl"`
FileName string `mapstructure:"fileName"`
FileSize int64 `mapstructure:"fileSize"`
}
type AtElem struct {
Text string `mapstructure:"text"`
AtUserList []string `mapstructure:"atUserList"`
IsAtSelf bool `mapstructure:"isAtSelf"`
}
type LocationElem struct {
Description string `mapstructure:"description"`
Longitude float64 `mapstructure:"longitude"`
Latitude float64 `mapstructure:"latitude"`
}
type CustomElem struct {
Data string `mapstructure:"data" validate:"required"`
Description string `mapstructure:"description"`
Extension string `mapstructure:"extension"`
}
type TextElem struct {
Text string `mapstructure:"text" validate:"required"`
}

@ -112,9 +112,9 @@ func (s *userServer) SetReceiveMessageOpt(ctx context.Context, req *pbUser.SetRe
func (s *userServer) GetReceiveMessageOpt(ctx context.Context, req *pbUser.GetReceiveMessageOptReq) (*pbUser.GetReceiveMessageOptResp, error) { func (s *userServer) GetReceiveMessageOpt(ctx context.Context, req *pbUser.GetReceiveMessageOptReq) (*pbUser.GetReceiveMessageOptResp, error) {
log.NewInfo(req.OperationID, "GetReceiveMessageOpt args ", req.String()) log.NewInfo(req.OperationID, "GetReceiveMessageOpt args ", req.String())
m, err := db.DB.GetMultiConversationMsgOpt(req.FromUserID, req.ConversationId) m, err := db.DB.GetMultiConversationMsgOpt(req.FromUserID, req.ConversationIdList)
if err != nil { if err != nil {
log.NewError(req.OperationID, "GetMultiConversationMsgOpt failed ", err.Error(), req.FromUserID, req.ConversationId) log.NewError(req.OperationID, "GetMultiConversationMsgOpt failed ", err.Error(), req.FromUserID, req.ConversationIdList)
return &pbUser.GetReceiveMessageOptResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil return &pbUser.GetReceiveMessageOptResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
} }
resp := pbUser.GetReceiveMessageOptResp{CommonResp: &pbUser.CommonResp{}} resp := pbUser.GetReceiveMessageOptResp{CommonResp: &pbUser.CommonResp{}}

@ -68,7 +68,7 @@ func Test_ParseRedisInterfaceToken(t *testing.T) {
config.Config.TokenPolicy.AccessExpire = -80 config.Config.TokenPolicy.AccessExpire = -80
tokenString, _, _ = token_verify.CreateToken(uid, platform) tokenString, _, _ = token_verify.CreateToken(uid, platform)
claims, err = token_verify.ParseRedisInterfaceToken([]uint8(tokenString)) claims, err = token_verify.ParseRedisInterfaceToken([]uint8(tokenString))
assert.Equal(t, err, constant.TokenExpired) assert.Equal(t, err, constant.ExpiredToken)
assert.Nil(t, claims) assert.Nil(t, claims)
} }

@ -1 +1,30 @@
package base_info package base_info
import "Open_IM/pkg/proto/user"
type GetAllConversationMessageOptReq struct {
OperationID string `json:"operationID" binding:"required"`
FromUserID string `json:"fromUserID" binding:"required"`
}
type GetAllConversationMessageOptResp struct {
CommResp
ConversationOptResultList []*user.OptResult `json:"data"`
}
type GetReceiveMessageOptReq struct {
ConversationIdList []string `json:"conversationIdList" binding:"required"`
OperationID string `json:"operationID" binding:"required"`
FromUserID string `json:"fromUserID" binding:"required"`
}
type GetReceiveMessageOptResp struct {
CommResp
ConversationOptResultList []*user.OptResult `json:"data"`
}
type SetReceiveMessageOptReq struct {
OperationID string `json:"operationID" binding:"required"`
Opt *int32 `json:"opt" binding:"required"`
ConversationIdList []string `json:"conversationIdList" binding:"required"`
}
type SetReceiveMessageOptResp struct {
CommResp
OptResultList []*user.OptResult `json:"data"`
}

@ -2,70 +2,9 @@ package base_info
import ( import (
pbRelay "Open_IM/pkg/proto/relay" pbRelay "Open_IM/pkg/proto/relay"
open_im_sdk "Open_IM/pkg/proto/sdk_ws"
pbUser "Open_IM/pkg/proto/user" pbUser "Open_IM/pkg/proto/user"
) )
type paramsManagementSendMsg struct {
OperationID string `json:"operationID" binding:"required"`
SendID string `json:"sendID" binding:"required"`
RecvID string `json:"recvID" `
GroupID string `json:"groupID" `
SenderNickName string `json:"senderNickName" `
SenderFaceURL string `json:"senderFaceURL" `
SenderPlatformID int32 `json:"senderPlatformID"`
ForceList []string `json:"forceList" `
Content map[string]interface{} `json:"content" binding:"required"`
ContentType int32 `json:"contentType" binding:"required"`
SessionType int32 `json:"sessionType" binding:"required"`
IsOnlineOnly bool `json:"isOnlineOnly"`
OfflinePushInfo *open_im_sdk.OfflinePushInfo `json:"offlinePushInfo"`
}
type PictureBaseInfo struct {
UUID string `mapstructure:"uuid"`
Type string `mapstructure:"type" validate:"required"`
Size int64 `mapstructure:"size" validate:"required"`
Width int32 `mapstructure:"width" validate:"required"`
Height int32 `mapstructure:"height" validate:"required"`
Url string `mapstructure:"url" validate:"required"`
}
type PictureElem struct {
SourcePath string `mapstructure:"sourcePath"`
SourcePicture PictureBaseInfo `mapstructure:"sourcePicture" validate:"required"`
BigPicture PictureBaseInfo `mapstructure:"bigPicture" `
SnapshotPicture PictureBaseInfo `mapstructure:"snapshotPicture"`
}
type SoundElem struct {
UUID string `mapstructure:"uuid"`
SoundPath string `mapstructure:"soundPath"`
SourceURL string `mapstructure:"sourceUrl"`
DataSize int64 `mapstructure:"dataSize"`
Duration int64 `mapstructure:"duration"`
}
type VideoElem struct {
VideoPath string `mapstructure:"videoPath"`
VideoUUID string `mapstructure:"videoUUID"`
VideoURL string `mapstructure:"videoUrl"`
VideoType string `mapstructure:"videoType"`
VideoSize int64 `mapstructure:"videoSize"`
Duration int64 `mapstructure:"duration"`
SnapshotPath string `mapstructure:"snapshotPath"`
SnapshotUUID string `mapstructure:"snapshotUUID"`
SnapshotSize int64 `mapstructure:"snapshotSize"`
SnapshotURL string `mapstructure:"snapshotUrl"`
SnapshotWidth int32 `mapstructure:"snapshotWidth"`
SnapshotHeight int32 `mapstructure:"snapshotHeight"`
}
type FileElem struct {
FilePath string `mapstructure:"filePath"`
UUID string `mapstructure:"uuid"`
SourceURL string `mapstructure:"sourceUrl"`
FileName string `mapstructure:"fileName"`
FileSize int64 `mapstructure:"fileSize"`
}
type DeleteUsersReq struct { type DeleteUsersReq struct {
OperationID string `json:"operationID" binding:"required"` OperationID string `json:"operationID" binding:"required"`
DeleteUidList []string `json:"deleteUidList" binding:"required"` DeleteUidList []string `json:"deleteUidList" binding:"required"`
@ -97,22 +36,3 @@ type AccountCheckResp struct {
CommResp CommResp
ResultList []*pbUser.AccountCheckResp_SingleUserStatus `json:"data"` ResultList []*pbUser.AccountCheckResp_SingleUserStatus `json:"data"`
} }
type AtElem struct {
Text string `mapstructure:"text"`
AtUserList []string `mapstructure:"atUserList"`
IsAtSelf bool `mapstructure:"isAtSelf"`
}
type LocationElem struct {
Description string `mapstructure:"description"`
Longitude float64 `mapstructure:"longitude"`
Latitude float64 `mapstructure:"latitude"`
}
type CustomElem struct {
Data string `mapstructure:"data" validate:"required"`
Description string `mapstructure:"description"`
Extension string `mapstructure:"extension"`
}
type TextElem struct {
Text string `mapstructure:"text" validate:"required"`
}

@ -51,7 +51,8 @@ func CreateToken(userID string, platformID int32) (string, int64, error) {
} }
var deleteTokenKey []string var deleteTokenKey []string
for k, v := range m { for k, v := range m {
if v != constant.NormalToken { _, err = GetClaimFromToken(k)
if err != nil || v != constant.NormalToken {
deleteTokenKey = append(deleteTokenKey, k) deleteTokenKey = append(deleteTokenKey, k)
} }
} }

@ -36,7 +36,7 @@ func (m *CommonResp) Reset() { *m = CommonResp{} }
func (m *CommonResp) String() string { return proto.CompactTextString(m) } func (m *CommonResp) String() string { return proto.CompactTextString(m) }
func (*CommonResp) ProtoMessage() {} func (*CommonResp) ProtoMessage() {}
func (*CommonResp) Descriptor() ([]byte, []int) { func (*CommonResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{0} return fileDescriptor_user_0a10ad809f213986, []int{0}
} }
func (m *CommonResp) XXX_Unmarshal(b []byte) error { func (m *CommonResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommonResp.Unmarshal(m, b) return xxx_messageInfo_CommonResp.Unmarshal(m, b)
@ -83,7 +83,7 @@ func (m *DeleteUsersReq) Reset() { *m = DeleteUsersReq{} }
func (m *DeleteUsersReq) String() string { return proto.CompactTextString(m) } func (m *DeleteUsersReq) String() string { return proto.CompactTextString(m) }
func (*DeleteUsersReq) ProtoMessage() {} func (*DeleteUsersReq) ProtoMessage() {}
func (*DeleteUsersReq) Descriptor() ([]byte, []int) { func (*DeleteUsersReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{1} return fileDescriptor_user_0a10ad809f213986, []int{1}
} }
func (m *DeleteUsersReq) XXX_Unmarshal(b []byte) error { func (m *DeleteUsersReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteUsersReq.Unmarshal(m, b) return xxx_messageInfo_DeleteUsersReq.Unmarshal(m, b)
@ -136,7 +136,7 @@ func (m *DeleteUsersResp) Reset() { *m = DeleteUsersResp{} }
func (m *DeleteUsersResp) String() string { return proto.CompactTextString(m) } func (m *DeleteUsersResp) String() string { return proto.CompactTextString(m) }
func (*DeleteUsersResp) ProtoMessage() {} func (*DeleteUsersResp) ProtoMessage() {}
func (*DeleteUsersResp) Descriptor() ([]byte, []int) { func (*DeleteUsersResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{2} return fileDescriptor_user_0a10ad809f213986, []int{2}
} }
func (m *DeleteUsersResp) XXX_Unmarshal(b []byte) error { func (m *DeleteUsersResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteUsersResp.Unmarshal(m, b) return xxx_messageInfo_DeleteUsersResp.Unmarshal(m, b)
@ -182,7 +182,7 @@ func (m *GetAllUserIDReq) Reset() { *m = GetAllUserIDReq{} }
func (m *GetAllUserIDReq) String() string { return proto.CompactTextString(m) } func (m *GetAllUserIDReq) String() string { return proto.CompactTextString(m) }
func (*GetAllUserIDReq) ProtoMessage() {} func (*GetAllUserIDReq) ProtoMessage() {}
func (*GetAllUserIDReq) Descriptor() ([]byte, []int) { func (*GetAllUserIDReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{3} return fileDescriptor_user_0a10ad809f213986, []int{3}
} }
func (m *GetAllUserIDReq) XXX_Unmarshal(b []byte) error { func (m *GetAllUserIDReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllUserIDReq.Unmarshal(m, b) return xxx_messageInfo_GetAllUserIDReq.Unmarshal(m, b)
@ -228,7 +228,7 @@ func (m *GetAllUserIDResp) Reset() { *m = GetAllUserIDResp{} }
func (m *GetAllUserIDResp) String() string { return proto.CompactTextString(m) } func (m *GetAllUserIDResp) String() string { return proto.CompactTextString(m) }
func (*GetAllUserIDResp) ProtoMessage() {} func (*GetAllUserIDResp) ProtoMessage() {}
func (*GetAllUserIDResp) Descriptor() ([]byte, []int) { func (*GetAllUserIDResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{4} return fileDescriptor_user_0a10ad809f213986, []int{4}
} }
func (m *GetAllUserIDResp) XXX_Unmarshal(b []byte) error { func (m *GetAllUserIDResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllUserIDResp.Unmarshal(m, b) return xxx_messageInfo_GetAllUserIDResp.Unmarshal(m, b)
@ -275,7 +275,7 @@ func (m *AccountCheckReq) Reset() { *m = AccountCheckReq{} }
func (m *AccountCheckReq) String() string { return proto.CompactTextString(m) } func (m *AccountCheckReq) String() string { return proto.CompactTextString(m) }
func (*AccountCheckReq) ProtoMessage() {} func (*AccountCheckReq) ProtoMessage() {}
func (*AccountCheckReq) Descriptor() ([]byte, []int) { func (*AccountCheckReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{5} return fileDescriptor_user_0a10ad809f213986, []int{5}
} }
func (m *AccountCheckReq) XXX_Unmarshal(b []byte) error { func (m *AccountCheckReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AccountCheckReq.Unmarshal(m, b) return xxx_messageInfo_AccountCheckReq.Unmarshal(m, b)
@ -328,7 +328,7 @@ func (m *AccountCheckResp) Reset() { *m = AccountCheckResp{} }
func (m *AccountCheckResp) String() string { return proto.CompactTextString(m) } func (m *AccountCheckResp) String() string { return proto.CompactTextString(m) }
func (*AccountCheckResp) ProtoMessage() {} func (*AccountCheckResp) ProtoMessage() {}
func (*AccountCheckResp) Descriptor() ([]byte, []int) { func (*AccountCheckResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{6} return fileDescriptor_user_0a10ad809f213986, []int{6}
} }
func (m *AccountCheckResp) XXX_Unmarshal(b []byte) error { func (m *AccountCheckResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AccountCheckResp.Unmarshal(m, b) return xxx_messageInfo_AccountCheckResp.Unmarshal(m, b)
@ -374,7 +374,7 @@ func (m *AccountCheckResp_SingleUserStatus) Reset() { *m = AccountCheckR
func (m *AccountCheckResp_SingleUserStatus) String() string { return proto.CompactTextString(m) } func (m *AccountCheckResp_SingleUserStatus) String() string { return proto.CompactTextString(m) }
func (*AccountCheckResp_SingleUserStatus) ProtoMessage() {} func (*AccountCheckResp_SingleUserStatus) ProtoMessage() {}
func (*AccountCheckResp_SingleUserStatus) Descriptor() ([]byte, []int) { func (*AccountCheckResp_SingleUserStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{6, 0} return fileDescriptor_user_0a10ad809f213986, []int{6, 0}
} }
func (m *AccountCheckResp_SingleUserStatus) XXX_Unmarshal(b []byte) error { func (m *AccountCheckResp_SingleUserStatus) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AccountCheckResp_SingleUserStatus.Unmarshal(m, b) return xxx_messageInfo_AccountCheckResp_SingleUserStatus.Unmarshal(m, b)
@ -421,7 +421,7 @@ func (m *GetUserInfoReq) Reset() { *m = GetUserInfoReq{} }
func (m *GetUserInfoReq) String() string { return proto.CompactTextString(m) } func (m *GetUserInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetUserInfoReq) ProtoMessage() {} func (*GetUserInfoReq) ProtoMessage() {}
func (*GetUserInfoReq) Descriptor() ([]byte, []int) { func (*GetUserInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{7} return fileDescriptor_user_0a10ad809f213986, []int{7}
} }
func (m *GetUserInfoReq) XXX_Unmarshal(b []byte) error { func (m *GetUserInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserInfoReq.Unmarshal(m, b) return xxx_messageInfo_GetUserInfoReq.Unmarshal(m, b)
@ -474,7 +474,7 @@ func (m *GetUserInfoResp) Reset() { *m = GetUserInfoResp{} }
func (m *GetUserInfoResp) String() string { return proto.CompactTextString(m) } func (m *GetUserInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetUserInfoResp) ProtoMessage() {} func (*GetUserInfoResp) ProtoMessage() {}
func (*GetUserInfoResp) Descriptor() ([]byte, []int) { func (*GetUserInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{8} return fileDescriptor_user_0a10ad809f213986, []int{8}
} }
func (m *GetUserInfoResp) XXX_Unmarshal(b []byte) error { func (m *GetUserInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserInfoResp.Unmarshal(m, b) return xxx_messageInfo_GetUserInfoResp.Unmarshal(m, b)
@ -521,7 +521,7 @@ func (m *UpdateUserInfoReq) Reset() { *m = UpdateUserInfoReq{} }
func (m *UpdateUserInfoReq) String() string { return proto.CompactTextString(m) } func (m *UpdateUserInfoReq) String() string { return proto.CompactTextString(m) }
func (*UpdateUserInfoReq) ProtoMessage() {} func (*UpdateUserInfoReq) ProtoMessage() {}
func (*UpdateUserInfoReq) Descriptor() ([]byte, []int) { func (*UpdateUserInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{9} return fileDescriptor_user_0a10ad809f213986, []int{9}
} }
func (m *UpdateUserInfoReq) XXX_Unmarshal(b []byte) error { func (m *UpdateUserInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateUserInfoReq.Unmarshal(m, b) return xxx_messageInfo_UpdateUserInfoReq.Unmarshal(m, b)
@ -573,7 +573,7 @@ func (m *UpdateUserInfoResp) Reset() { *m = UpdateUserInfoResp{} }
func (m *UpdateUserInfoResp) String() string { return proto.CompactTextString(m) } func (m *UpdateUserInfoResp) String() string { return proto.CompactTextString(m) }
func (*UpdateUserInfoResp) ProtoMessage() {} func (*UpdateUserInfoResp) ProtoMessage() {}
func (*UpdateUserInfoResp) Descriptor() ([]byte, []int) { func (*UpdateUserInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{10} return fileDescriptor_user_0a10ad809f213986, []int{10}
} }
func (m *UpdateUserInfoResp) XXX_Unmarshal(b []byte) error { func (m *UpdateUserInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateUserInfoResp.Unmarshal(m, b) return xxx_messageInfo_UpdateUserInfoResp.Unmarshal(m, b)
@ -615,7 +615,7 @@ func (m *SetReceiveMessageOptReq) Reset() { *m = SetReceiveMessageOptReq
func (m *SetReceiveMessageOptReq) String() string { return proto.CompactTextString(m) } func (m *SetReceiveMessageOptReq) String() string { return proto.CompactTextString(m) }
func (*SetReceiveMessageOptReq) ProtoMessage() {} func (*SetReceiveMessageOptReq) ProtoMessage() {}
func (*SetReceiveMessageOptReq) Descriptor() ([]byte, []int) { func (*SetReceiveMessageOptReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{11} return fileDescriptor_user_0a10ad809f213986, []int{11}
} }
func (m *SetReceiveMessageOptReq) XXX_Unmarshal(b []byte) error { func (m *SetReceiveMessageOptReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetReceiveMessageOptReq.Unmarshal(m, b) return xxx_messageInfo_SetReceiveMessageOptReq.Unmarshal(m, b)
@ -682,7 +682,7 @@ func (m *OptResult) Reset() { *m = OptResult{} }
func (m *OptResult) String() string { return proto.CompactTextString(m) } func (m *OptResult) String() string { return proto.CompactTextString(m) }
func (*OptResult) ProtoMessage() {} func (*OptResult) ProtoMessage() {}
func (*OptResult) Descriptor() ([]byte, []int) { func (*OptResult) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{12} return fileDescriptor_user_0a10ad809f213986, []int{12}
} }
func (m *OptResult) XXX_Unmarshal(b []byte) error { func (m *OptResult) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OptResult.Unmarshal(m, b) return xxx_messageInfo_OptResult.Unmarshal(m, b)
@ -728,7 +728,7 @@ func (m *SetReceiveMessageOptResp) Reset() { *m = SetReceiveMessageOptRe
func (m *SetReceiveMessageOptResp) String() string { return proto.CompactTextString(m) } func (m *SetReceiveMessageOptResp) String() string { return proto.CompactTextString(m) }
func (*SetReceiveMessageOptResp) ProtoMessage() {} func (*SetReceiveMessageOptResp) ProtoMessage() {}
func (*SetReceiveMessageOptResp) Descriptor() ([]byte, []int) { func (*SetReceiveMessageOptResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{13} return fileDescriptor_user_0a10ad809f213986, []int{13}
} }
func (m *SetReceiveMessageOptResp) XXX_Unmarshal(b []byte) error { func (m *SetReceiveMessageOptResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetReceiveMessageOptResp.Unmarshal(m, b) return xxx_messageInfo_SetReceiveMessageOptResp.Unmarshal(m, b)
@ -764,7 +764,7 @@ func (m *SetReceiveMessageOptResp) GetOptResultList() []*OptResult {
type GetReceiveMessageOptReq struct { type GetReceiveMessageOptReq struct {
FromUserID string `protobuf:"bytes,1,opt,name=FromUserID" json:"FromUserID,omitempty"` FromUserID string `protobuf:"bytes,1,opt,name=FromUserID" json:"FromUserID,omitempty"`
ConversationId []string `protobuf:"bytes,2,rep,name=conversationId" json:"conversationId,omitempty"` ConversationIdList []string `protobuf:"bytes,2,rep,name=conversationIdList" json:"conversationIdList,omitempty"`
OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"`
OpUserID string `protobuf:"bytes,4,opt,name=OpUserID" json:"OpUserID,omitempty"` OpUserID string `protobuf:"bytes,4,opt,name=OpUserID" json:"OpUserID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -776,7 +776,7 @@ func (m *GetReceiveMessageOptReq) Reset() { *m = GetReceiveMessageOptReq
func (m *GetReceiveMessageOptReq) String() string { return proto.CompactTextString(m) } func (m *GetReceiveMessageOptReq) String() string { return proto.CompactTextString(m) }
func (*GetReceiveMessageOptReq) ProtoMessage() {} func (*GetReceiveMessageOptReq) ProtoMessage() {}
func (*GetReceiveMessageOptReq) Descriptor() ([]byte, []int) { func (*GetReceiveMessageOptReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{14} return fileDescriptor_user_0a10ad809f213986, []int{14}
} }
func (m *GetReceiveMessageOptReq) XXX_Unmarshal(b []byte) error { func (m *GetReceiveMessageOptReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetReceiveMessageOptReq.Unmarshal(m, b) return xxx_messageInfo_GetReceiveMessageOptReq.Unmarshal(m, b)
@ -803,9 +803,9 @@ func (m *GetReceiveMessageOptReq) GetFromUserID() string {
return "" return ""
} }
func (m *GetReceiveMessageOptReq) GetConversationId() []string { func (m *GetReceiveMessageOptReq) GetConversationIdList() []string {
if m != nil { if m != nil {
return m.ConversationId return m.ConversationIdList
} }
return nil return nil
} }
@ -836,7 +836,7 @@ func (m *GetReceiveMessageOptResp) Reset() { *m = GetReceiveMessageOptRe
func (m *GetReceiveMessageOptResp) String() string { return proto.CompactTextString(m) } func (m *GetReceiveMessageOptResp) String() string { return proto.CompactTextString(m) }
func (*GetReceiveMessageOptResp) ProtoMessage() {} func (*GetReceiveMessageOptResp) ProtoMessage() {}
func (*GetReceiveMessageOptResp) Descriptor() ([]byte, []int) { func (*GetReceiveMessageOptResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{15} return fileDescriptor_user_0a10ad809f213986, []int{15}
} }
func (m *GetReceiveMessageOptResp) XXX_Unmarshal(b []byte) error { func (m *GetReceiveMessageOptResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetReceiveMessageOptResp.Unmarshal(m, b) return xxx_messageInfo_GetReceiveMessageOptResp.Unmarshal(m, b)
@ -883,7 +883,7 @@ func (m *GetAllConversationMsgOptReq) Reset() { *m = GetAllConversationM
func (m *GetAllConversationMsgOptReq) String() string { return proto.CompactTextString(m) } func (m *GetAllConversationMsgOptReq) String() string { return proto.CompactTextString(m) }
func (*GetAllConversationMsgOptReq) ProtoMessage() {} func (*GetAllConversationMsgOptReq) ProtoMessage() {}
func (*GetAllConversationMsgOptReq) Descriptor() ([]byte, []int) { func (*GetAllConversationMsgOptReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{16} return fileDescriptor_user_0a10ad809f213986, []int{16}
} }
func (m *GetAllConversationMsgOptReq) XXX_Unmarshal(b []byte) error { func (m *GetAllConversationMsgOptReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllConversationMsgOptReq.Unmarshal(m, b) return xxx_messageInfo_GetAllConversationMsgOptReq.Unmarshal(m, b)
@ -936,7 +936,7 @@ func (m *GetAllConversationMsgOptResp) Reset() { *m = GetAllConversation
func (m *GetAllConversationMsgOptResp) String() string { return proto.CompactTextString(m) } func (m *GetAllConversationMsgOptResp) String() string { return proto.CompactTextString(m) }
func (*GetAllConversationMsgOptResp) ProtoMessage() {} func (*GetAllConversationMsgOptResp) ProtoMessage() {}
func (*GetAllConversationMsgOptResp) Descriptor() ([]byte, []int) { func (*GetAllConversationMsgOptResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_119cb27841530cfa, []int{17} return fileDescriptor_user_0a10ad809f213986, []int{17}
} }
func (m *GetAllConversationMsgOptResp) XXX_Unmarshal(b []byte) error { func (m *GetAllConversationMsgOptResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllConversationMsgOptResp.Unmarshal(m, b) return xxx_messageInfo_GetAllConversationMsgOptResp.Unmarshal(m, b)
@ -1295,60 +1295,60 @@ var _User_serviceDesc = grpc.ServiceDesc{
Metadata: "user/user.proto", Metadata: "user/user.proto",
} }
func init() { proto.RegisterFile("user/user.proto", fileDescriptor_user_119cb27841530cfa) } func init() { proto.RegisterFile("user/user.proto", fileDescriptor_user_0a10ad809f213986) }
var fileDescriptor_user_119cb27841530cfa = []byte{ var fileDescriptor_user_0a10ad809f213986 = []byte{
// 825 bytes of a gzipped FileDescriptorProto // 829 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0xdf, 0x6e, 0xd3, 0x3e, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0xcd, 0x6e, 0xd3, 0x4a,
0x14, 0x56, 0xd6, 0x6e, 0xbf, 0xf5, 0x74, 0x6b, 0xfb, 0xb3, 0xf6, 0x27, 0x04, 0x98, 0x3a, 0x0b, 0x14, 0x96, 0x9b, 0xb4, 0xb7, 0x39, 0x69, 0x93, 0xdc, 0x51, 0x7f, 0x7c, 0x7d, 0xa1, 0x4a, 0x47,
0x41, 0xb5, 0x8b, 0x14, 0x86, 0xb8, 0x00, 0x04, 0xd2, 0xe8, 0xb4, 0x68, 0x82, 0xaa, 0x28, 0xd3, 0x08, 0xa2, 0x2e, 0x1c, 0x28, 0x62, 0x01, 0x08, 0xa4, 0x92, 0xaa, 0x56, 0x05, 0x51, 0x90, 0xab,
0x6e, 0xb8, 0x99, 0x42, 0x63, 0x4a, 0xd5, 0x36, 0x0e, 0x71, 0xba, 0x09, 0x90, 0xb8, 0x81, 0xb7, 0x6e, 0xd8, 0x54, 0x26, 0x1e, 0x42, 0x94, 0xc4, 0x63, 0x3c, 0x4e, 0x2b, 0x40, 0x62, 0x03, 0x6f,
0xe0, 0x82, 0xe7, 0xe0, 0x35, 0x78, 0x01, 0x5e, 0x05, 0xc5, 0x4e, 0x5a, 0x3b, 0x49, 0x5b, 0x54, 0xc1, 0x82, 0x25, 0xcf, 0xc0, 0x6b, 0xf0, 0x02, 0xbc, 0x0a, 0xf2, 0x8c, 0x9d, 0xcc, 0xd8, 0x4e,
0xb8, 0xe0, 0xa6, 0xaa, 0x3f, 0x1f, 0x1f, 0x7f, 0xdf, 0xe7, 0x63, 0xe7, 0x40, 0x75, 0xcc, 0x48, 0x82, 0x02, 0x0b, 0x36, 0x51, 0xe6, 0x9b, 0x33, 0x67, 0xbe, 0xef, 0x9b, 0x33, 0xe3, 0x03, 0xd5,
0xd0, 0x8c, 0x7e, 0x4c, 0x3f, 0xa0, 0x21, 0x45, 0xc5, 0xe8, 0xbf, 0xb1, 0xdf, 0xf1, 0x89, 0x77, 0x31, 0x23, 0x41, 0x33, 0xfa, 0x31, 0xfd, 0x80, 0x86, 0x14, 0x15, 0xa3, 0xff, 0xc6, 0x7e, 0xc7,
0x71, 0xda, 0x6e, 0xfa, 0x83, 0x5e, 0x93, 0x4f, 0x34, 0x99, 0x3b, 0xb8, 0xb8, 0x62, 0xcd, 0x2b, 0x27, 0xde, 0xc5, 0x69, 0xbb, 0xe9, 0x0f, 0x7a, 0x4d, 0x3e, 0xd1, 0x64, 0xee, 0xe0, 0xe2, 0x8a,
0x26, 0x02, 0xf1, 0x53, 0x80, 0x16, 0x1d, 0x8d, 0xa8, 0x67, 0x13, 0xe6, 0x23, 0x1d, 0xfe, 0x23, 0x35, 0xaf, 0x98, 0x08, 0xc4, 0x8f, 0x01, 0x5a, 0x74, 0x34, 0xa2, 0x9e, 0x4d, 0x98, 0x8f, 0x74,
0x41, 0xd0, 0xa2, 0x2e, 0xd1, 0xb5, 0xba, 0xd6, 0x58, 0xb5, 0x93, 0x21, 0xda, 0x81, 0x35, 0x12, 0xf8, 0x87, 0x04, 0x41, 0x8b, 0xba, 0x44, 0xd7, 0xea, 0x5a, 0x63, 0xd5, 0x4e, 0x86, 0x68, 0x07,
0x04, 0x6d, 0xd6, 0xd3, 0x57, 0xea, 0x5a, 0xa3, 0x64, 0xc7, 0x23, 0xfc, 0x01, 0x2a, 0xc7, 0x64, 0xd6, 0x48, 0x10, 0xb4, 0x59, 0x4f, 0x5f, 0xa9, 0x6b, 0x8d, 0x92, 0x1d, 0x8f, 0xf0, 0x3b, 0xa8,
0x48, 0x42, 0x72, 0xce, 0x48, 0xc0, 0x6c, 0xf2, 0x0e, 0x1d, 0x40, 0x6d, 0x8a, 0x9c, 0x1e, 0xbf, 0x1c, 0x93, 0x21, 0x09, 0xc9, 0x39, 0x23, 0x01, 0xb3, 0xc9, 0x1b, 0x74, 0x00, 0xb5, 0x29, 0x72,
0xe8, 0xb3, 0x50, 0x5f, 0xa9, 0x17, 0x1a, 0x25, 0x3b, 0x83, 0x23, 0x03, 0xd6, 0x3b, 0xbe, 0x18, 0x7a, 0xfc, 0xac, 0xcf, 0x42, 0x7d, 0xa5, 0x5e, 0x68, 0x94, 0xec, 0x0c, 0x8e, 0x0c, 0x58, 0xef,
0xeb, 0x05, 0x9e, 0x77, 0x32, 0x46, 0x75, 0x28, 0x77, 0x7c, 0x12, 0x38, 0x61, 0x9f, 0x7a, 0xa7, 0xf8, 0x62, 0xac, 0x17, 0x78, 0xde, 0xc9, 0x18, 0xd5, 0xa1, 0xdc, 0xf1, 0x49, 0xe0, 0x84, 0x7d,
0xc7, 0x7a, 0x91, 0x4f, 0xcb, 0x10, 0xa6, 0x50, 0x55, 0xf6, 0x66, 0x3e, 0xba, 0x2b, 0xcb, 0xe1, 0xea, 0x9d, 0x1e, 0xeb, 0x45, 0x3e, 0x2d, 0x43, 0x98, 0x42, 0x55, 0xd9, 0x9b, 0xf9, 0xe8, 0xb6,
0x1a, 0xca, 0x87, 0x35, 0x93, 0x1b, 0x33, 0xc5, 0x6d, 0x59, 0xf2, 0x01, 0xd4, 0x4e, 0x9c, 0xfe, 0x2c, 0x87, 0x6b, 0x28, 0x1f, 0xd6, 0x4c, 0x6e, 0xcc, 0x14, 0xb7, 0x65, 0xc9, 0x07, 0x50, 0x3b,
0x90, 0xb8, 0x59, 0xba, 0x69, 0x1c, 0x77, 0xa0, 0x6a, 0x91, 0xf0, 0x68, 0x38, 0x14, 0x58, 0xa4, 0x71, 0xfa, 0x43, 0xe2, 0x66, 0xe9, 0xa6, 0x71, 0xdc, 0x81, 0xaa, 0x45, 0xc2, 0xa3, 0xe1, 0x50,
0xd6, 0x80, 0x75, 0x9a, 0x28, 0xd0, 0x84, 0x02, 0x2a, 0x29, 0xa0, 0x92, 0x02, 0x61, 0x9c, 0x0c, 0x60, 0x91, 0x5a, 0x03, 0xd6, 0x69, 0xa2, 0x40, 0x13, 0x0a, 0xa8, 0xa4, 0x80, 0x4a, 0x0a, 0x84,
0x61, 0x17, 0x6a, 0x6a, 0xc2, 0xa5, 0x24, 0xec, 0x01, 0x64, 0xc8, 0x4b, 0x08, 0x7e, 0x0f, 0xd5, 0x71, 0x32, 0x84, 0x5d, 0xa8, 0xa9, 0x09, 0x97, 0x92, 0xb0, 0x07, 0x90, 0x21, 0x2f, 0x21, 0xf8,
0xa3, 0x6e, 0x97, 0x8e, 0xbd, 0xb0, 0xf5, 0x96, 0x74, 0x07, 0x11, 0xed, 0x06, 0x54, 0xf9, 0x7f, 0x2d, 0x54, 0x8f, 0xba, 0x5d, 0x3a, 0xf6, 0xc2, 0xd6, 0x6b, 0xd2, 0x1d, 0x44, 0xb4, 0x1b, 0x50,
0x69, 0x9d, 0xc6, 0xd7, 0xa5, 0x61, 0xe5, 0x88, 0x56, 0xe6, 0x1f, 0x51, 0x21, 0x7b, 0x44, 0x3f, 0xe5, 0xff, 0xa5, 0x75, 0x1a, 0x5f, 0x97, 0x86, 0x95, 0x23, 0x5a, 0x99, 0x7f, 0x44, 0x85, 0xec,
0x35, 0xa8, 0xa9, 0x7b, 0x0b, 0x85, 0xdd, 0xdf, 0x50, 0x38, 0x8d, 0x41, 0x16, 0x80, 0x4d, 0xd8, 0x11, 0xfd, 0xd0, 0xa0, 0xa6, 0xee, 0x2d, 0x14, 0x76, 0x7f, 0x41, 0xe1, 0x34, 0x06, 0x59, 0x00,
0x78, 0x18, 0x4e, 0x14, 0x96, 0x0f, 0xef, 0x88, 0x15, 0xe9, 0xec, 0xe6, 0x59, 0xdf, 0xeb, 0x0d, 0x36, 0x61, 0xe3, 0x61, 0x38, 0x51, 0x58, 0x3e, 0xbc, 0x25, 0x56, 0xa4, 0xb3, 0x9b, 0x67, 0x7d,
0x79, 0x49, 0x9c, 0x85, 0x4e, 0x38, 0x66, 0xb6, 0xb4, 0xd4, 0x78, 0x09, 0xb5, 0xf4, 0x7c, 0x54, 0xaf, 0x37, 0xe4, 0x25, 0x71, 0x16, 0x3a, 0xe1, 0x98, 0xd9, 0xd2, 0x52, 0xe3, 0x39, 0xd4, 0xd2,
0xda, 0x63, 0xf9, 0x00, 0xe3, 0x11, 0xba, 0x05, 0x9b, 0x8e, 0x48, 0x2e, 0x02, 0x63, 0xf9, 0x2a, 0xf3, 0x51, 0x69, 0x8f, 0xe5, 0x03, 0x8c, 0x47, 0xe8, 0x06, 0x6c, 0x3a, 0x22, 0xb9, 0x08, 0x8c,
0x88, 0x3d, 0xa8, 0x58, 0x24, 0xe4, 0x86, 0x78, 0x6f, 0x68, 0xe4, 0xed, 0x1e, 0xc0, 0x38, 0x6d, 0xe5, 0xab, 0x20, 0xf6, 0xa0, 0x62, 0x91, 0x90, 0x1b, 0xe2, 0xbd, 0xa2, 0x91, 0xb7, 0x7b, 0x00,
0xab, 0x84, 0xfc, 0xa1, 0xa3, 0x9f, 0x78, 0x0d, 0x4e, 0xf7, 0x5b, 0xca, 0xcf, 0x87, 0xb0, 0x91, 0xe3, 0xb4, 0xad, 0x12, 0xf2, 0x9b, 0x8e, 0x7e, 0xe0, 0x35, 0x38, 0xdd, 0x6f, 0x29, 0x3f, 0xef,
0x64, 0xe0, 0x24, 0x0b, 0xdc, 0xd1, 0x6d, 0x93, 0x46, 0xef, 0x45, 0x7f, 0x74, 0xc1, 0xdc, 0x81, 0xc3, 0x46, 0x92, 0x81, 0x93, 0x2c, 0x70, 0x47, 0xb7, 0x4d, 0x1a, 0xbd, 0x17, 0xfd, 0xd1, 0x05,
0x39, 0xd9, 0x42, 0x09, 0xc5, 0x5f, 0x34, 0xf8, 0xff, 0xdc, 0x77, 0x9d, 0xf8, 0x1e, 0xc7, 0x9a, 0x73, 0x07, 0xe6, 0x64, 0x0b, 0x25, 0x14, 0x7f, 0xd2, 0xe0, 0xdf, 0x73, 0xdf, 0x75, 0xe2, 0x7b,
0xef, 0xc1, 0x7a, 0x32, 0x8c, 0x09, 0xcc, 0x48, 0x36, 0x09, 0x5b, 0x64, 0x03, 0xcd, 0xda, 0x20, 0x1c, 0x6b, 0xbe, 0x03, 0xeb, 0xc9, 0x30, 0x26, 0x30, 0x23, 0xd9, 0x24, 0x6c, 0x91, 0x0d, 0x34,
0xdf, 0x9c, 0x13, 0x40, 0x69, 0x16, 0xcb, 0x38, 0x81, 0xbf, 0x6b, 0xb0, 0x7b, 0x46, 0x42, 0x9b, 0x6b, 0x83, 0x7c, 0x73, 0x4e, 0x00, 0xa5, 0x59, 0x2c, 0xe3, 0x04, 0xfe, 0xa6, 0xc1, 0xee, 0x19,
0x74, 0x49, 0xff, 0x92, 0xb4, 0x09, 0x63, 0x4e, 0x8f, 0x74, 0xfc, 0x30, 0x3e, 0xc8, 0x93, 0x80, 0x09, 0x6d, 0xd2, 0x25, 0xfd, 0x4b, 0xd2, 0x26, 0x8c, 0x39, 0x3d, 0xd2, 0xf1, 0xc3, 0xf8, 0x20,
0x8e, 0x94, 0xdb, 0x2d, 0x21, 0xa8, 0x06, 0x05, 0xea, 0x87, 0x9c, 0xfc, 0xaa, 0x1d, 0xfd, 0x45, 0x4f, 0x02, 0x3a, 0x52, 0x6e, 0xb7, 0x84, 0xa0, 0x1a, 0x14, 0xa8, 0x1f, 0x72, 0xf2, 0xab, 0x76,
0x26, 0xa0, 0x2e, 0xf5, 0x2e, 0x49, 0xc0, 0x62, 0x9e, 0x13, 0x77, 0x4b, 0x76, 0xce, 0x4c, 0x5a, 0xf4, 0x17, 0x99, 0x80, 0xba, 0xd4, 0xbb, 0x24, 0x01, 0x8b, 0x79, 0x4e, 0xdc, 0x2d, 0xd9, 0x39,
0x67, 0x31, 0xa3, 0x53, 0x71, 0x69, 0x55, 0x75, 0x09, 0x3f, 0x87, 0x12, 0x67, 0x1a, 0x55, 0x37, 0x33, 0x69, 0x9d, 0xc5, 0x8c, 0x4e, 0xc5, 0xa5, 0x55, 0xd5, 0x25, 0xfc, 0x14, 0x4a, 0x9c, 0x69,
0xba, 0x0d, 0x15, 0x65, 0x03, 0x37, 0x26, 0x9c, 0x42, 0xa3, 0x6a, 0x0f, 0xf8, 0x8a, 0x98, 0x77, 0x54, 0xdd, 0xe8, 0x26, 0x54, 0x94, 0x0d, 0xdc, 0x98, 0x70, 0x0a, 0x8d, 0xaa, 0x3d, 0xe0, 0x2b,
0x3c, 0xc2, 0x9f, 0x35, 0xd0, 0xf3, 0x8d, 0x58, 0xaa, 0xc2, 0x1e, 0xc0, 0x26, 0x4d, 0xb8, 0x49, 0x62, 0xde, 0xf1, 0x08, 0x7f, 0xd4, 0x40, 0xcf, 0x37, 0x62, 0xa9, 0x0a, 0xbb, 0x07, 0x9b, 0x34,
0x97, 0xb6, 0x2a, 0x16, 0x4d, 0x68, 0xdb, 0x6a, 0x14, 0xfe, 0xa6, 0xc1, 0xae, 0xb5, 0xe4, 0x71, 0xe1, 0x26, 0x5d, 0xda, 0xaa, 0x58, 0x34, 0xa1, 0x6d, 0xab, 0x51, 0xf8, 0xab, 0x06, 0xbb, 0xd6,
0x64, 0x1d, 0x10, 0x4f, 0x61, 0xda, 0x81, 0x85, 0xc5, 0xa5, 0x98, 0x5e, 0x4c, 0x99, 0xfe, 0x55, 0x92, 0xc7, 0x91, 0x36, 0xdf, 0x95, 0x9e, 0xc3, 0x9c, 0x99, 0xc5, 0x45, 0xa6, 0x98, 0x5f, 0x4c,
0x03, 0xdd, 0xfa, 0x7b, 0x3e, 0xb5, 0xe1, 0x9a, 0x4c, 0xaf, 0xa3, 0x78, 0x56, 0xc8, 0xf7, 0x6c, 0x99, 0xff, 0x59, 0x03, 0xdd, 0xfa, 0x73, 0x7e, 0xb5, 0xe1, 0x3f, 0x99, 0x62, 0x47, 0xf1, 0xae,
0xf6, 0x0a, 0xfc, 0x11, 0xae, 0x8b, 0x0f, 0x4a, 0x4b, 0x0a, 0x69, 0xb3, 0x5e, 0x8e, 0x85, 0x6e, 0x90, 0xef, 0xdd, 0xec, 0x15, 0xf8, 0x3d, 0xfc, 0x2f, 0x3e, 0x2c, 0x2d, 0x29, 0xa4, 0xcd, 0x7a,
0xc6, 0x42, 0x77, 0xf1, 0x17, 0x6b, 0xde, 0x17, 0x3b, 0x3a, 0xbc, 0x1b, 0xb3, 0x77, 0xff, 0x07, 0x39, 0x56, 0xba, 0x19, 0x2b, 0xdd, 0xc5, 0x5f, 0xae, 0x79, 0x5f, 0x6e, 0xfc, 0x45, 0x83, 0x6b,
0xec, 0x39, 0xfc, 0x51, 0x04, 0xde, 0x19, 0xa1, 0x47, 0x50, 0x96, 0x5e, 0x51, 0xb4, 0x25, 0x72, 0xb3, 0x77, 0xff, 0x0b, 0xec, 0x39, 0xfc, 0x5e, 0x04, 0xde, 0x21, 0xa1, 0x07, 0x50, 0x96, 0x5e,
0xa8, 0x0f, 0xb9, 0xb1, 0x9d, 0x83, 0x32, 0x1f, 0xb5, 0xa0, 0xa2, 0x3e, 0x3d, 0x68, 0x57, 0x04, 0x53, 0xb4, 0x25, 0x72, 0xa8, 0x0f, 0xba, 0xb1, 0x9d, 0x83, 0x32, 0x1f, 0xb5, 0xa0, 0xa2, 0x3e,
0x66, 0x9e, 0x45, 0x43, 0xcf, 0x9f, 0x60, 0x7e, 0x44, 0x40, 0xea, 0x5d, 0x12, 0x02, 0x6a, 0x2b, 0x41, 0x68, 0x57, 0x04, 0x66, 0x9e, 0x47, 0x43, 0xcf, 0x9f, 0x60, 0x7e, 0x44, 0x40, 0xea, 0x61,
0x95, 0x10, 0x48, 0x37, 0x39, 0x4f, 0x60, 0x43, 0xee, 0x1a, 0xd0, 0x94, 0xa7, 0xdc, 0x9a, 0x18, 0x12, 0x02, 0x6a, 0x4b, 0x95, 0x10, 0x48, 0x37, 0x3b, 0x8f, 0x60, 0x43, 0xee, 0x1e, 0xd0, 0x94,
0x3b, 0x79, 0x30, 0xf3, 0xd1, 0x39, 0x6c, 0xe5, 0x5d, 0x74, 0x74, 0x53, 0xc4, 0xcf, 0x78, 0x0d, 0xa7, 0xdc, 0xa2, 0x18, 0x3b, 0x79, 0x30, 0xf3, 0xd1, 0x39, 0x6c, 0xe5, 0x5d, 0x78, 0x74, 0x5d,
0x8d, 0xbd, 0x79, 0xd3, 0x22, 0xad, 0x35, 0x27, 0xad, 0x35, 0x3f, 0xed, 0xcc, 0x2b, 0xe5, 0xf0, 0xc4, 0xcf, 0x78, 0x15, 0x8d, 0xbd, 0x79, 0xd3, 0x22, 0xad, 0x35, 0x27, 0xad, 0x35, 0x3f, 0xed,
0xeb, 0x96, 0x5b, 0x53, 0x68, 0x5f, 0x56, 0x98, 0x5b, 0xf1, 0x06, 0x5e, 0x14, 0x22, 0xfc, 0x94, 0xcc, 0x2b, 0xe5, 0xf0, 0xeb, 0x96, 0x5b, 0x53, 0x68, 0x5f, 0x56, 0x98, 0x5b, 0xf1, 0x06, 0x5e,
0xbb, 0x88, 0xc4, 0xcf, 0x54, 0xcf, 0x94, 0xf8, 0x99, 0x6e, 0x38, 0x9e, 0x6d, 0xbe, 0x2a, 0x9b, 0x14, 0x22, 0xfc, 0x94, 0xbb, 0x89, 0xc4, 0xcf, 0x54, 0xef, 0x94, 0xf8, 0x99, 0x6e, 0x3c, 0x9e,
0xbc, 0xf7, 0x7e, 0x1c, 0xfd, 0xbc, 0x5e, 0xe3, 0x8d, 0xf5, 0xfd, 0x5f, 0x01, 0x00, 0x00, 0xff, 0x6c, 0xbe, 0x28, 0x9b, 0xbc, 0x07, 0x7f, 0x18, 0xfd, 0xbc, 0x5c, 0xe3, 0x0d, 0xf6, 0xdd, 0x9f,
0xff, 0x24, 0xc8, 0xbf, 0xca, 0x94, 0x0b, 0x00, 0x00, 0x01, 0x00, 0x00, 0xff, 0xff, 0x88, 0x5d, 0x20, 0xc1, 0x9c, 0x0b, 0x00, 0x00,
} }

@ -86,7 +86,7 @@ message SetReceiveMessageOptResp{
message GetReceiveMessageOptReq{ message GetReceiveMessageOptReq{
string FromUserID = 1; string FromUserID = 1;
repeated string conversationId = 2; repeated string conversationIdList = 2;
string operationID = 3; string operationID = 3;
string OpUserID = 4; string OpUserID = 4;
} }

Loading…
Cancel
Save