Merge remote-tracking branch 'upstream/tuoyun' into our

pull/103/head
ltf 4 years ago
commit a6dac64069

@ -3,6 +3,7 @@ package main
import ( import (
apiAuth "Open_IM/internal/api/auth" apiAuth "Open_IM/internal/api/auth"
apiChat "Open_IM/internal/api/chat" apiChat "Open_IM/internal/api/chat"
"Open_IM/internal/api/conversation"
"Open_IM/internal/api/friend" "Open_IM/internal/api/friend"
"Open_IM/internal/api/group" "Open_IM/internal/api/group"
"Open_IM/internal/api/manage" "Open_IM/internal/api/manage"
@ -18,15 +19,6 @@ import (
) )
func main() { func main() {
//logFile, err := os.OpenFile("./fatal.log", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0660)
// if err != nil {
// return
// }
//syscall.Dup2(int(logFile.Fd()), int(os.Stderr.Fd()))
//log.Info("", "", "api server running...")
r := gin.Default() r := gin.Default()
r.Use(utils.CorsHandler()) r.Use(utils.CorsHandler())
// user routing group, which handles user registration and login services // user routing group, which handles user registration and login services
@ -101,8 +93,9 @@ func main() {
//Conversation //Conversation
conversationGroup := r.Group("/conversation") conversationGroup := r.Group("/conversation")
{ {
conversationGroup.POST("/delete_user", manage.DeleteUser) conversationGroup.POST("/set_receive_message_opt", conversation.SetReceiveMessageOpt)
conversationGroup.POST("/get_receive_message_opt", conversation.GetReceiveMessageOpt)
conversationGroup.POST("/get_all_conversation_message_opt", conversation.GetAllConversationMessageOpt)
} }
log.NewPrivateLog("api") log.NewPrivateLog("api")

@ -42,17 +42,17 @@ func main() {
for { for {
uidList, err := im_mysql_model.SelectAllUID() uidList, err := im_mysql_model.SelectAllUID()
if err != nil { if err != nil {
log.NewError("999999", err.Error()) //log.NewError("999999", err.Error())
} else { } else {
for _, v := range uidList { for _, v := range uidList {
minSeq, err := commonDB.DB.GetMinSeqFromMongo(v) minSeq, err := commonDB.DB.GetMinSeqFromMongo(v)
if err != nil { if err != nil {
log.NewError("999999", "get user minSeq err", err.Error(), v) //log.NewError("999999", "get user minSeq err", err.Error(), v)
continue continue
} else { } else {
err := commonDB.DB.SetUserMinSeq(v, minSeq) err := commonDB.DB.SetUserMinSeq(v, minSeq)
if err != nil { if err != nil {
log.NewError("999999", "set user minSeq err", err.Error(), v) //log.NewError("999999", "set user minSeq err", err.Error(), v)
} }
} }
time.Sleep(time.Duration(100) * time.Millisecond) time.Sleep(time.Duration(100) * time.Millisecond)

@ -42,7 +42,8 @@ func UserGetSeq(c *gin.Context) {
msgClient := pbMsg.NewChatClient(grpcConn) msgClient := pbMsg.NewChatClient(grpcConn)
reply, err := msgClient.GetMaxAndMinSeq(context.Background(), &pbData) reply, err := msgClient.GetMaxAndMinSeq(context.Background(), &pbData)
if err != nil { if err != nil {
log.ErrorByKv("rpc call failed to getNewSeq", pbData.OperationID, "err", err, "pbData", pbData.String()) 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 return
} }

@ -43,7 +43,8 @@ func UserPullMsg(c *gin.Context) {
msgClient := pbChat.NewChatClient(grpcConn) msgClient := pbChat.NewChatClient(grpcConn)
reply, err := msgClient.PullMessage(context.Background(), &pbData) reply, err := msgClient.PullMessage(context.Background(), &pbData)
if err != nil { if err != nil {
log.ErrorByKv("PullMessage error", pbData.OperationID, "err", err.Error()) log.NewError(params.OperationID, "UserPullMsg rpc failed, ", params, err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": "UserPullMsg rpc failed, " + err.Error()})
return return
} }
log.InfoByKv("rpc call success to pullMsgRep", pbData.OperationID, "ReplyArgs", reply.String(), "maxSeq", reply.GetMaxSeq(), log.InfoByKv("rpc call success to pullMsgRep", pbData.OperationID, "ReplyArgs", reply.String(), "maxSeq", reply.GetMaxSeq(),

@ -27,7 +27,7 @@ type paramsUserSendMsg struct {
RecvID string `json:"recvID" binding:"required"` RecvID string `json:"recvID" binding:"required"`
ForceList []string `json:"forceList"` ForceList []string `json:"forceList"`
Content string `json:"content" binding:"required"` Content string `json:"content" binding:"required"`
Options map[string]interface{} `json:"options" ` Options map[string]int32 `json:"options" `
ClientMsgID string `json:"clientMsgID" binding:"required"` ClientMsgID string `json:"clientMsgID" binding:"required"`
OffLineInfo map[string]interface{} `json:"offlineInfo" ` OffLineInfo map[string]interface{} `json:"offlineInfo" `
Ex map[string]interface{} `json:"ext"` Ex map[string]interface{} `json:"ext"`
@ -49,7 +49,7 @@ func newUserSendMsgReq(token string, params *paramsUserSendMsg) *pbChat.UserSend
RecvID: params.Data.RecvID, RecvID: params.Data.RecvID,
ForceList: params.Data.ForceList, ForceList: params.Data.ForceList,
Content: params.Data.Content, Content: params.Data.Content,
Options: utils.MapToJsonString(params.Data.Options), Options: utils.MapIntToJsonString(params.Data.Options),
ClientMsgID: params.Data.ClientMsgID, ClientMsgID: params.Data.ClientMsgID,
OffLineInfo: utils.MapToJsonString(params.Data.OffLineInfo), OffLineInfo: utils.MapToJsonString(params.Data.OffLineInfo),
Ex: utils.MapToJsonString(params.Data.Ex), Ex: utils.MapToJsonString(params.Data.Ex),
@ -77,7 +77,12 @@ func UserSendMsg(c *gin.Context) {
log.Info("", "", "api UserSendMsg call, api call rpc...") log.Info("", "", "api UserSendMsg call, api call rpc...")
reply, _ := client.UserSendMsg(context.Background(), pbData) reply, err := client.UserSendMsg(context.Background(), pbData)
if err != nil {
log.NewError(params.OperationID, "UserSendMsg rpc failed, ", params, err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": "UserSendMsg rpc failed, " + err.Error()})
return
}
log.Info("", "", "api UserSendMsg call end..., [data: %s] [reply: %s]", pbData.String(), reply.String()) log.Info("", "", "api UserSendMsg call end..., [data: %s] [reply: %s]", pbData.String(), reply.String())
c.JSON(http.StatusOK, gin.H{ c.JSON(http.StatusOK, gin.H{

@ -0,0 +1,194 @@
package conversation
import (
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/log"
"Open_IM/pkg/common/token_verify"
"Open_IM/pkg/grpc-etcdv3/getcdv3"
"Open_IM/pkg/proto/user"
"Open_IM/pkg/utils"
"context"
"github.com/gin-gonic/gin"
"net/http"
"strings"
)
type paramsSetReceiveMessageOpt struct {
OperationID string `json:"operationID" binding:"required"`
Option *int32 `json:"option" binding:"required"`
ConversationIdList []string `json:"conversationIdList" binding:"required"`
}
type OptResult struct {
ConversationId string `json:"conversationId" binding:"required"`
Result int32 `json:"result" binding:"required"`
}
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) {
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) {
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)
}

@ -26,6 +26,7 @@ func Verify(c *gin.Context) {
c.JSON(http.StatusBadRequest, gin.H{"errCode": constant.FormattingError, "errMsg": err.Error()}) c.JSON(http.StatusBadRequest, gin.H{"errCode": constant.FormattingError, "errMsg": err.Error()})
return return
} }
log.NewInfo("recv req: ", params)
var account string var account string
if params.Email != "" { if params.Email != "" {
@ -42,7 +43,7 @@ func Verify(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"errCode": constant.NoError, "errMsg": "Verified successfully!", "data": data}) c.JSON(http.StatusOK, gin.H{"errCode": constant.NoError, "errMsg": "Verified successfully!", "data": data})
return return
} }
log.NewInfo("0", " params.VerificationCode != config.Config.Demo.SuperCode", params.VerificationCode, config.Config.Demo)
log.InfoByKv("begin get form redis", account) log.InfoByKv("begin get form redis", account)
v, err := redis.String(db.DB.Exec("GET", account)) v, err := redis.String(db.DB.Exec("GET", account))
log.InfoByKv("redis phone number and verificating Code", account, v) log.InfoByKv("redis phone number and verificating Code", account, v)

@ -117,6 +117,16 @@ func (r *RPCServer) MsgToUser(_ context.Context, in *pbRelay.MsgToUserReq) (*pbR
resp = append(resp, temp) resp = append(resp, temp)
} }
} }
//Single chat sender synchronization message
if in.GetSessionType() == constant.SingleChatType && in.ContentType <= constant.Quote && in.ContentType != constant.Typing && in.ContentType != constant.HasReadReceipt {
userIDList = genUidPlatformArray(in.SendID)
for _, v := range userIDList {
UIDAndPID = strings.Split(v, " ")
if conn := ws.getUserConn(v); conn != nil {
_ = sendMsgToUser(conn, replyBytes.Bytes(), in, UIDAndPID[1], UIDAndPID[0])
}
}
}
if !tag { if !tag {
log.NewError(in.OperationID, "push err ,no matched ws conn not in map", in.String()) log.NewError(in.OperationID, "push err ,no matched ws conn not in map", in.String())
} }

@ -54,11 +54,11 @@ func (mc *HistoryConsumerHandler) handleChatWs2Mongo(msg []byte, msgKey string)
pbSaveData.OperationID = pbData.OperationID pbSaveData.OperationID = pbData.OperationID
pbSaveData.RecvID = pbData.RecvID pbSaveData.RecvID = pbData.RecvID
pbSaveData.PlatformID = pbData.PlatformID pbSaveData.PlatformID = pbData.PlatformID
Options := utils.JsonStringToMap(pbData.Options) options := utils.JsonStringToMap(pbData.Options)
//Control whether to store offline messages (mongo) //Control whether to store offline messages (mongo)
isHistory := utils.GetSwitchFromOptions(Options, "history") isHistory := utils.GetSwitchFromOptions(options, "history")
//Control whether to store history messages (mysql) //Control whether to store history messages (mysql)
isPersist := utils.GetSwitchFromOptions(Options, "persistent") isPersist := utils.GetSwitchFromOptions(options, "persistent")
switch pbData.SessionType { switch pbData.SessionType {
case constant.SingleChatType: case constant.SingleChatType:
log.NewDebug(pbSaveData.OperationID, "msg_transfer chat type = SingleChatType", isHistory, isPersist) log.NewDebug(pbSaveData.OperationID, "msg_transfer chat type = SingleChatType", isHistory, isPersist)

@ -40,9 +40,9 @@ func (pc *PersistentConsumerHandler) handleChatWs2Mysql(msg []byte, msgKey strin
log.ErrorByKv("msg_transfer Unmarshal chat err", "", "chat", string(msg), "err", err.Error()) log.ErrorByKv("msg_transfer Unmarshal chat err", "", "chat", string(msg), "err", err.Error())
return return
} }
Options := utils.JsonStringToMap(pbData.Options) options := utils.JsonStringToMap(pbData.Options)
//Control whether to store history messages (mysql) //Control whether to store history messages (mysql)
isPersist := utils.GetSwitchFromOptions(Options, "persistent") isPersist := utils.GetSwitchFromOptions(options, "persistent")
//Only process receiver data //Only process receiver data
if isPersist { if isPersist {
if msgKey == pbData.RecvID && pbData.SessionType == constant.SingleChatType { if msgKey == pbData.RecvID && pbData.SessionType == constant.SingleChatType {

@ -20,15 +20,17 @@ func JGAccountListPush(accounts []string, content, detailContent, platform strin
var au requestBody.Audience var au requestBody.Audience
au.SetAlias(accounts) au.SetAlias(accounts)
var no requestBody.Notification var no requestBody.Notification
no.SetAlert(content) no.SetAlert(content, platform)
no.SetAndroidIntent()
var me requestBody.Message var me requestBody.Message
me.SetMsgContent(detailContent) me.SetMsgContent(detailContent)
var o requestBody.Options
o.SetApnsProduction(false)
var po requestBody.PushObj var po requestBody.PushObj
po.SetPlatform(&pf) po.SetPlatform(&pf)
po.SetAudience(&au) po.SetAudience(&au)
po.SetNotification(&no) po.SetNotification(&no)
po.SetMessage(&me) po.SetMessage(&me)
po.SetOptions(&o)
con, err := json.Marshal(po) con, err := json.Marshal(po)
if err != nil { if err != nil {

@ -1,6 +1,9 @@
package requestBody package requestBody
import "Open_IM/pkg/common/config" import (
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/constant"
)
type Notification struct { type Notification struct {
Alert string `json:"alert,omitempty"` Alert string `json:"alert,omitempty"`
@ -15,11 +18,23 @@ type Android struct {
} `json:"intent,omitempty"` } `json:"intent,omitempty"`
} }
type Ios struct { type Ios struct {
Alert string `json:"alert,omitempty"`
Sound string `json:"sound,omitempty"`
Badge string `json:"badge,omitempty"`
} }
func (n *Notification) SetAlert(alert string) { func (n *Notification) SetAlert(alert, platform string) {
n.Alert = alert n.Alert = alert
n.Android.Alert = alert switch platform {
case constant.AndroidPlatformStr:
n.Android.Alert = alert
n.SetAndroidIntent()
case constant.IOSPlatformStr:
n.IOS.Alert = alert
n.IOS.Sound = "default"
n.IOS.Badge = "+1"
default:
}
} }
func (n *Notification) SetAndroidIntent() { func (n *Notification) SetAndroidIntent() {
n.Android.Intent.URL = config.Config.Push.Jpns.PushIntent n.Android.Intent.URL = config.Config.Push.Jpns.PushIntent

@ -0,0 +1,9 @@
package requestBody
type Options struct {
ApnsProduction bool `json:"apns_production"`
}
func (o *Options) SetApnsProduction(c bool) {
o.ApnsProduction = c
}

@ -5,6 +5,7 @@ type PushObj struct {
Audience interface{} `json:"audience"` Audience interface{} `json:"audience"`
Notification interface{} `json:"notification,omitempty"` Notification interface{} `json:"notification,omitempty"`
Message interface{} `json:"message,omitempty"` Message interface{} `json:"message,omitempty"`
Options interface{} `json:"options,omitempty"`
} }
func (p *PushObj) SetPlatform(pf *Platform) { func (p *PushObj) SetPlatform(pf *Platform) {
@ -22,3 +23,6 @@ func (p *PushObj) SetNotification(no *Notification) {
func (p *PushObj) SetMessage(m *Message) { func (p *PushObj) SetMessage(m *Message) {
p.Message = m p.Message = m
} }
func (p *PushObj) SetOptions(o *Options) {
p.Options = o
}

@ -12,6 +12,7 @@ import (
"Open_IM/pkg/common/log" "Open_IM/pkg/common/log"
pbChat "Open_IM/pkg/proto/chat" pbChat "Open_IM/pkg/proto/chat"
pbRelay "Open_IM/pkg/proto/relay" pbRelay "Open_IM/pkg/proto/relay"
"Open_IM/pkg/utils"
"github.com/Shopify/sarama" "github.com/Shopify/sarama"
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
) )
@ -53,7 +54,7 @@ func (ms *PushConsumerHandler) handleMs2PsChat(msg []byte) {
sendPbData.PlatformID = pbData.PlatformID sendPbData.PlatformID = pbData.PlatformID
sendPbData.RecvSeq = pbData.RecvSeq sendPbData.RecvSeq = pbData.RecvSeq
//Call push module to send message to the user //Call push module to send message to the user
MsgToUser(&sendPbData, pbData.OfflineInfo, pbData.Options) MsgToUser(&sendPbData, pbData.OfflineInfo, utils.JsonStringToMap(pbData.Options))
} }
func (PushConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error { return nil } func (PushConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error { return nil }
func (PushConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return nil } func (PushConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return nil }

@ -67,7 +67,7 @@ func (r *RPCServer) PushMsg(_ context.Context, pbData *pbPush.PushMsgReq) (*pbPu
sendPbData.PlatformID = pbData.PlatformID sendPbData.PlatformID = pbData.PlatformID
sendPbData.RecvSeq = pbData.RecvSeq sendPbData.RecvSeq = pbData.RecvSeq
//Call push module to send message to the user //Call push module to send message to the user
MsgToUser(&sendPbData, pbData.OfflineInfo, pbData.Options) MsgToUser(&sendPbData, pbData.OfflineInfo, utils.JsonStringToMap(pbData.Options))
return &pbPush.PushMsgResp{ return &pbPush.PushMsgResp{
ResultCode: 0, ResultCode: 0,
}, nil }, nil

@ -34,12 +34,10 @@ type AtContent struct {
IsAtSelf bool `json:"isAtSelf"` IsAtSelf bool `json:"isAtSelf"`
} }
func MsgToUser(sendPbData *pbRelay.MsgToUserReq, OfflineInfo, Options string) { func MsgToUser(sendPbData *pbRelay.MsgToUserReq, OfflineInfo string, Options map[string]int32) {
var wsResult []*pbRelay.SingleMsgToUser var wsResult []*pbRelay.SingleMsgToUser
MOptions := utils.JsonStringToMap(Options) //Control whether to push message to sender's other terminal isOfflinePush := utils.GetSwitchFromOptions(Options, "offlinePush")
//isSenderSync := utils.GetSwitchFromOptions(MOptions, "senderSync") log.InfoByKv("Get chat from msg_transfer And push chat", sendPbData.OperationID, "PushData", sendPbData, Options, isOfflinePush)
isOfflinePush := utils.GetSwitchFromOptions(MOptions, "offlinePush")
log.InfoByKv("Get chat from msg_transfer And push chat", sendPbData.OperationID, "PushData", sendPbData)
grpcCons := getcdv3.GetConn4Unique(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOnlineMessageRelayName) grpcCons := getcdv3.GetConn4Unique(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOnlineMessageRelayName)
//Online push message //Online push message
log.InfoByKv("test", sendPbData.OperationID, "len grpc", len(grpcCons), "data", sendPbData) log.InfoByKv("test", sendPbData.OperationID, "len grpc", len(grpcCons), "data", sendPbData)
@ -100,9 +98,9 @@ func MsgToUser(sendPbData *pbRelay.MsgToUserReq, OfflineInfo, Options string) {
} }
pushResult, err := push.JGAccountListPush(UIDList, content, jsonCustomContent, constant.PlatformIDToName(t)) pushResult, err := push.JGAccountListPush(UIDList, content, jsonCustomContent, constant.PlatformIDToName(t))
if err != nil { if err != nil {
log.NewError(sendPbData.OperationID, "offline push error", sendPbData.String(), err.Error(), t) log.NewError(sendPbData.OperationID, "offline push error", sendPbData.String(), err.Error(), constant.PlatformIDToName(t))
} else { } else {
log.NewDebug(sendPbData.OperationID, "offline push return result is ", string(pushResult), sendPbData, t) log.NewDebug(sendPbData.OperationID, "offline push return result is ", string(pushResult), sendPbData, constant.PlatformIDToName(t))
} }
} }
@ -146,8 +144,8 @@ func SendMsgByWS(m *pbChat.WSToMsgSvrChatMsg) {
default: default:
} }
} }
func sendMsgToKafka(m *pbChat.WSToMsgSvrChatMsg, key string, flag string) { func sendMsgToKafka(m *pbChat.WSToMsgSvrChatMsg, key string, flag string) {
pid, offset, err := producer.SendMessage(m, key) pid, offset, err := producer.SendMessage(m, key)
if err != nil { if err != nil {

@ -5,11 +5,13 @@ import (
"Open_IM/internal/push/content_struct" "Open_IM/internal/push/content_struct"
"Open_IM/pkg/common/config" "Open_IM/pkg/common/config"
"Open_IM/pkg/common/constant" "Open_IM/pkg/common/constant"
"Open_IM/pkg/common/db"
http2 "Open_IM/pkg/common/http" http2 "Open_IM/pkg/common/http"
"Open_IM/pkg/common/log" "Open_IM/pkg/common/log"
"Open_IM/pkg/grpc-etcdv3/getcdv3" "Open_IM/pkg/grpc-etcdv3/getcdv3"
pbChat "Open_IM/pkg/proto/chat" pbChat "Open_IM/pkg/proto/chat"
pbGroup "Open_IM/pkg/proto/group" pbGroup "Open_IM/pkg/proto/group"
open_im_sdk "Open_IM/pkg/proto/sdk_ws"
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
"context" "context"
"encoding/json" "encoding/json"
@ -70,8 +72,8 @@ func (rpc *rpcChat) UserSendMsg(_ context.Context, pb *pbChat.UserSendMsgReq) (*
} else { } else {
pbData.SendTime = pb.SendTime pbData.SendTime = pb.SendTime
} }
Options := utils.JsonStringToMap(pbData.Options) options := utils.JsonStringToMap(pbData.Options)
isHistory := utils.GetSwitchFromOptions(Options, "history") isHistory := utils.GetSwitchFromOptions(options, "history")
mReq := MsgCallBackReq{ mReq := MsgCallBackReq{
SendID: pb.SendID, SendID: pb.SendID,
RecvID: pb.RecvID, RecvID: pb.RecvID,
@ -105,9 +107,17 @@ func (rpc *rpcChat) UserSendMsg(_ context.Context, pb *pbChat.UserSendMsgReq) (*
} }
switch pbData.SessionType { switch pbData.SessionType {
case constant.SingleChatType: case constant.SingleChatType:
err1 := rpc.sendMsgToKafka(&pbData, pbData.RecvID) isSend := modifyMessageByUserMessageReceiveOpt(pbData.RecvID, pbData.SendID, constant.SingleChatType, &pbData)
if isSend {
err1 := rpc.sendMsgToKafka(&pbData, pbData.RecvID)
if err1 != nil {
log.NewError(pbData.OperationID, "kafka send msg err:RecvID", pbData.RecvID, pbData.String())
return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0)
}
}
err2 := rpc.sendMsgToKafka(&pbData, pbData.SendID) err2 := rpc.sendMsgToKafka(&pbData, pbData.SendID)
if err1 != nil || err2 != nil { if err2 != nil {
log.NewError(pbData.OperationID, "kafka send msg err:SendID", pbData.SendID, pbData.String())
return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0)
} }
return returnMsg(&replay, pb, 0, "", serverMsgID, pbData.SendTime) return returnMsg(&replay, pb, 0, "", serverMsgID, pbData.SendTime)
@ -154,16 +164,25 @@ func (rpc *rpcChat) UserSendMsg(_ context.Context, pb *pbChat.UserSendMsgReq) (*
groupID := pbData.RecvID groupID := pbData.RecvID
for i, v := range reply.MemberList { for i, v := range reply.MemberList {
pbData.RecvID = v.UserId + " " + groupID pbData.RecvID = v.UserId + " " + groupID
err := rpc.sendMsgToKafka(&pbData, utils.IntToString(i)) isSend := modifyMessageByUserMessageReceiveOpt(v.UserId, groupID, constant.GroupChatType, &pbData)
if err != nil { if isSend {
return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) err := rpc.sendMsgToKafka(&pbData, utils.IntToString(i))
if err != nil {
log.NewError(pbData.OperationID, "kafka send msg err:UserId", v.UserId, pbData.String())
return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0)
}
} }
} }
for i, v := range addUidList { for i, v := range addUidList {
pbData.RecvID = v + " " + groupID pbData.RecvID = v + " " + groupID
err := rpc.sendMsgToKafka(&pbData, utils.IntToString(i+1)) isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, &pbData)
if err != nil { if isSend {
return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) err := rpc.sendMsgToKafka(&pbData, utils.IntToString(i+1))
if err != nil {
log.NewError(pbData.OperationID, "kafka send msg err:UserId", v, pbData.String())
return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0)
}
} }
} }
return returnMsg(&replay, pb, 0, "", serverMsgID, pbData.SendTime) return returnMsg(&replay, pb, 0, "", serverMsgID, pbData.SendTime)
@ -173,6 +192,31 @@ func (rpc *rpcChat) UserSendMsg(_ context.Context, pb *pbChat.UserSendMsgReq) (*
} }
} }
type WSToMsgSvrChatMsg struct {
SendID string `protobuf:"bytes,1,opt,name=SendID" json:"SendID,omitempty"`
RecvID string `protobuf:"bytes,2,opt,name=RecvID" json:"RecvID,omitempty"`
Content string `protobuf:"bytes,3,opt,name=Content" json:"Content,omitempty"`
MsgFrom int32 `protobuf:"varint,5,opt,name=MsgFrom" json:"MsgFrom,omitempty"`
ContentType int32 `protobuf:"varint,8,opt,name=ContentType" json:"ContentType,omitempty"`
SessionType int32 `protobuf:"varint,9,opt,name=SessionType" json:"SessionType,omitempty"`
OperationID string `protobuf:"bytes,10,opt,name=OperationID" json:"OperationID,omitempty"`
}
func CreateGroupNotification(SendID, RecvID string, tip open_im_sdk.CreateGroupTip) {
var msg WSToMsgSvrChatMsg
msg.OperationID = utils.OperationIDGenerator()
msg.SendID = SendID
msg.RecvID = RecvID
msg.ContentType = constant.CreateGroupTip
msg.SessionType = constant.SysMsgType
}
func Notification(m *WSToMsgSvrChatMsg, onlineUserOnly bool, offlineInfo open_im_sdk.OfflinePushInfo) {
}
func (rpc *rpcChat) sendMsgToKafka(m *pbChat.WSToMsgSvrChatMsg, key string) error { func (rpc *rpcChat) sendMsgToKafka(m *pbChat.WSToMsgSvrChatMsg, key string) error {
pid, offset, err := rpc.producer.SendMessage(m, key) pid, offset, err := rpc.producer.SendMessage(m, key)
if err != nil { if err != nil {
@ -193,3 +237,27 @@ func returnMsg(replay *pbChat.UserSendMsgResp, pb *pbChat.UserSendMsgReq, errCod
replay.SendTime = sendTime replay.SendTime = sendTime
return replay, nil return replay, nil
} }
func modifyMessageByUserMessageReceiveOpt(userID, sourceID string, sessionType int, msg *pbChat.WSToMsgSvrChatMsg) bool {
conversationID := utils.GetConversationIDBySessionType(sourceID, sessionType)
opt, err := db.DB.GetSingleConversationMsgOpt(userID, conversationID)
if err != nil {
log.NewError(msg.OperationID, "GetSingleConversationMsgOpt from redis err", msg.String())
return true
}
switch opt {
case constant.ReceiveMessage:
return true
case constant.NotReceiveMessage:
return false
case constant.ReceiveNotNotifyMessage:
options := utils.JsonStringToMap(msg.Options)
if options == nil {
options = make(map[string]int32, 2)
}
utils.SetSwitchFromOptions(options, "offlinePush", 0)
msg.Options = utils.MapIntToJsonString(options)
return true
}
return true
}

@ -0,0 +1,59 @@
package user
import (
"Open_IM/pkg/common/constant"
"Open_IM/pkg/common/db"
"Open_IM/pkg/common/log"
pbUser "Open_IM/pkg/proto/user"
"context"
)
func (s *userServer) SetReceiveMessageOpt(ctx context.Context, req *pbUser.SetReceiveMessageOptReq) (*pbUser.SetReceiveMessageOptResp, error) {
m := make(map[string]int, len(req.ConversationId))
for _, v := range req.ConversationId {
m[v] = int(req.Opt)
}
err := db.DB.SetMultiConversationMsgOpt(req.UId, m)
if err != nil {
log.NewError(req.OperationID, "SetMultiConversationMsgOpt failed ", err.Error(), req)
return &pbUser.SetReceiveMessageOptResp{ErrCode: constant.DatabaseError, ErrMsg: err.Error()}, nil
}
var resp pbUser.SetReceiveMessageOptResp
resp.ErrCode = 0
for _, v := range req.ConversationId {
resp.OptResult = append(resp.OptResult, &pbUser.OptResult{ConversationId: v, Result: 0})
}
log.NewInfo(req.OperationID, "SetReceiveMessageOpt req, resp ", req, resp)
return &resp, nil
}
func (s *userServer) GetReceiveMessageOpt(ctx context.Context, req *pbUser.GetReceiveMessageOptReq) (*pbUser.GetReceiveMessageOptResp, error) {
m, err := db.DB.GetMultiConversationMsgOpt(req.UId, req.ConversationId)
if err != nil {
log.NewError(req.OperationID, "GetMultiConversationMsgOpt failed ", err.Error(), req)
return &pbUser.GetReceiveMessageOptResp{ErrCode: constant.DatabaseError, ErrMsg: err.Error()}, nil
}
var resp pbUser.GetReceiveMessageOptResp
resp.ErrCode = 0
for k, v := range m {
resp.ConversationOptResult = append(resp.ConversationOptResult, &pbUser.OptResult{ConversationId: k, Result: int32(v)})
}
log.NewInfo(req.OperationID, "GetReceiveMessageOpt, req, resp", req, resp)
return &resp, nil
}
func (s *userServer) GetAllConversationMsgOpt(ctx context.Context, req *pbUser.GetAllConversationMsgOptReq) (*pbUser.GetAllConversationMsgOptResp, error) {
m, err := db.DB.GetAllConversationMsgOpt(req.UId)
if err != nil {
log.NewError(req.OperationID, "GetAllConversationMsgOpt failed ", err.Error(), req)
return &pbUser.GetAllConversationMsgOptResp{ErrCode: constant.DatabaseError, ErrMsg: err.Error()}, nil
}
var resp pbUser.GetAllConversationMsgOptResp
resp.ErrCode = 0
for k, v := range m {
resp.ConversationOptResult = append(resp.ConversationOptResult, &pbUser.OptResult{ConversationId: k, Result: int32(v)})
}
log.NewInfo(req.OperationID, "GetAllConversationMsgOpt, req, resp", req, resp)
return &resp, nil
}

@ -198,14 +198,14 @@ func (d *DataBases) SaveUserChat(uid string, sendTime int64, m *pbMsg.MsgSvrToPu
return errors.New("session == nil") return errors.New("session == nil")
} }
defer session.Close() defer session.Close()
log.NewInfo("", "get mgoSession cost time", getCurrentTimestampByMill()-newTime) log.NewDebug("", "get mgoSession cost time", getCurrentTimestampByMill()-newTime)
c := session.DB(config.Config.Mongo.DBDatabase).C(cChat) c := session.DB(config.Config.Mongo.DBDatabase).C(cChat)
seqUid = getSeqUid(uid, m.RecvSeq) seqUid = getSeqUid(uid, m.RecvSeq)
n, err := c.Find(bson.M{"uid": seqUid}).Count() n, err := c.Find(bson.M{"uid": seqUid}).Count()
if err != nil { if err != nil {
return err return err
} }
log.NewInfo("", "find mgo uid cost time", getCurrentTimestampByMill()-newTime) log.NewDebug("", "find mgo uid cost time", getCurrentTimestampByMill()-newTime)
sMsg := MsgInfo{} sMsg := MsgInfo{}
sMsg.SendTime = sendTime sMsg.SendTime = sendTime
if sMsg.Msg, err = proto.Marshal(m); err != nil { if sMsg.Msg, err = proto.Marshal(m); err != nil {
@ -225,7 +225,7 @@ func (d *DataBases) SaveUserChat(uid string, sendTime int64, m *pbMsg.MsgSvrToPu
return err return err
} }
} }
log.NewInfo("", "insert mgo data cost time", getCurrentTimestampByMill()-newTime) log.NewDebug("", "insert mgo data cost time", getCurrentTimestampByMill()-newTime)
return nil return nil
} }

@ -91,12 +91,34 @@ func (d *DataBases) SetTokenMapByUidPid(userID string, platformID int32, m map[s
_, err := d.Exec("hmset", key, redis.Args{}.Add().AddFlat(m)...) _, err := d.Exec("hmset", key, redis.Args{}.Add().AddFlat(m)...)
return err return err
} }
func (d *DataBases) SetConversationMsgOpt(userID, conversationID string, opt int) error { func (d *DataBases) SetSingleConversationMsgOpt(userID, conversationID string, opt int) error {
key := conversationReceiveMessageOpt + userID key := conversationReceiveMessageOpt + userID
_, err1 := d.Exec("HSet", key, conversationID, opt) _, err1 := d.Exec("HSet", key, conversationID, opt)
return err1 return err1
} }
func (d *DataBases) GetConversationMsgOpt(userID, conversationID string) (int, error) { func (d *DataBases) GetSingleConversationMsgOpt(userID, conversationID string) (int, error) {
key := conversationReceiveMessageOpt + userID key := conversationReceiveMessageOpt + userID
return redis.Int(d.Exec("HGet", key, conversationID)) return redis.Int(d.Exec("HGet", key, conversationID))
} }
func (d *DataBases) GetAllConversationMsgOpt(userID string) (map[string]int, error) {
key := conversationReceiveMessageOpt + userID
return redis.IntMap(d.Exec("HGETALL", key))
}
func (d *DataBases) SetMultiConversationMsgOpt(userID string, m map[string]int) error {
key := conversationReceiveMessageOpt + userID
_, err := d.Exec("hmset", key, redis.Args{}.Add().AddFlat(m)...)
return err
}
func (d *DataBases) GetMultiConversationMsgOpt(userID string, conversationIDs []string) (m map[string]int, err error) {
m = make(map[string]int)
key := conversationReceiveMessageOpt + userID
i, err := redis.Ints(d.Exec("hmget", key, redis.Args{}.Add().AddFlat(conversationIDs)...))
if err != nil {
return m, err
}
for k, v := range conversationIDs {
m[v] = i[k]
}
return m, nil
}

@ -19,3 +19,9 @@ func Test_GetTokenMapByUidPid(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
fmt.Println(m) fmt.Println(m)
} }
func TestDataBases_GetMultiConversationMsgOpt(t *testing.T) {
m, err := DB.GetMultiConversationMsgOpt("fg", []string{"user", "age", "color"})
assert.Nil(t, err)
fmt.Println(m)
}

@ -50,7 +50,7 @@ func (m *WSToMsgSvrChatMsg) Reset() { *m = WSToMsgSvrChatMsg{} }
func (m *WSToMsgSvrChatMsg) String() string { return proto.CompactTextString(m) } func (m *WSToMsgSvrChatMsg) String() string { return proto.CompactTextString(m) }
func (*WSToMsgSvrChatMsg) ProtoMessage() {} func (*WSToMsgSvrChatMsg) ProtoMessage() {}
func (*WSToMsgSvrChatMsg) Descriptor() ([]byte, []int) { func (*WSToMsgSvrChatMsg) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_feb94a5514034c46, []int{0} return fileDescriptor_chat_163a8d226aa6edb5, []int{0}
} }
func (m *WSToMsgSvrChatMsg) XXX_Unmarshal(b []byte) error { func (m *WSToMsgSvrChatMsg) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WSToMsgSvrChatMsg.Unmarshal(m, b) return xxx_messageInfo_WSToMsgSvrChatMsg.Unmarshal(m, b)
@ -215,7 +215,7 @@ func (m *MsgSvrToPushSvrChatMsg) Reset() { *m = MsgSvrToPushSvrChatMsg{}
func (m *MsgSvrToPushSvrChatMsg) String() string { return proto.CompactTextString(m) } func (m *MsgSvrToPushSvrChatMsg) String() string { return proto.CompactTextString(m) }
func (*MsgSvrToPushSvrChatMsg) ProtoMessage() {} func (*MsgSvrToPushSvrChatMsg) ProtoMessage() {}
func (*MsgSvrToPushSvrChatMsg) Descriptor() ([]byte, []int) { func (*MsgSvrToPushSvrChatMsg) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_feb94a5514034c46, []int{1} return fileDescriptor_chat_163a8d226aa6edb5, []int{1}
} }
func (m *MsgSvrToPushSvrChatMsg) XXX_Unmarshal(b []byte) error { func (m *MsgSvrToPushSvrChatMsg) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MsgSvrToPushSvrChatMsg.Unmarshal(m, b) return xxx_messageInfo_MsgSvrToPushSvrChatMsg.Unmarshal(m, b)
@ -361,7 +361,7 @@ func (m *PullMessageReq) Reset() { *m = PullMessageReq{} }
func (m *PullMessageReq) String() string { return proto.CompactTextString(m) } func (m *PullMessageReq) String() string { return proto.CompactTextString(m) }
func (*PullMessageReq) ProtoMessage() {} func (*PullMessageReq) ProtoMessage() {}
func (*PullMessageReq) Descriptor() ([]byte, []int) { func (*PullMessageReq) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_feb94a5514034c46, []int{2} return fileDescriptor_chat_163a8d226aa6edb5, []int{2}
} }
func (m *PullMessageReq) XXX_Unmarshal(b []byte) error { func (m *PullMessageReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PullMessageReq.Unmarshal(m, b) return xxx_messageInfo_PullMessageReq.Unmarshal(m, b)
@ -425,7 +425,7 @@ func (m *PullMessageResp) Reset() { *m = PullMessageResp{} }
func (m *PullMessageResp) String() string { return proto.CompactTextString(m) } func (m *PullMessageResp) String() string { return proto.CompactTextString(m) }
func (*PullMessageResp) ProtoMessage() {} func (*PullMessageResp) ProtoMessage() {}
func (*PullMessageResp) Descriptor() ([]byte, []int) { func (*PullMessageResp) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_feb94a5514034c46, []int{3} return fileDescriptor_chat_163a8d226aa6edb5, []int{3}
} }
func (m *PullMessageResp) XXX_Unmarshal(b []byte) error { func (m *PullMessageResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PullMessageResp.Unmarshal(m, b) return xxx_messageInfo_PullMessageResp.Unmarshal(m, b)
@ -500,7 +500,7 @@ func (m *PullMessageBySeqListReq) Reset() { *m = PullMessageBySeqListReq
func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) } func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) }
func (*PullMessageBySeqListReq) ProtoMessage() {} func (*PullMessageBySeqListReq) ProtoMessage() {}
func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) { func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_feb94a5514034c46, []int{4} return fileDescriptor_chat_163a8d226aa6edb5, []int{4}
} }
func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b)
@ -553,7 +553,7 @@ func (m *GetMaxAndMinSeqReq) Reset() { *m = GetMaxAndMinSeqReq{} }
func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) } func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) }
func (*GetMaxAndMinSeqReq) ProtoMessage() {} func (*GetMaxAndMinSeqReq) ProtoMessage() {}
func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) { func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_feb94a5514034c46, []int{5} return fileDescriptor_chat_163a8d226aa6edb5, []int{5}
} }
func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b)
@ -601,7 +601,7 @@ func (m *GetMaxAndMinSeqResp) Reset() { *m = GetMaxAndMinSeqResp{} }
func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) } func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) }
func (*GetMaxAndMinSeqResp) ProtoMessage() {} func (*GetMaxAndMinSeqResp) ProtoMessage() {}
func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) { func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_feb94a5514034c46, []int{6} return fileDescriptor_chat_163a8d226aa6edb5, []int{6}
} }
func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b)
@ -663,7 +663,7 @@ func (m *GatherFormat) Reset() { *m = GatherFormat{} }
func (m *GatherFormat) String() string { return proto.CompactTextString(m) } func (m *GatherFormat) String() string { return proto.CompactTextString(m) }
func (*GatherFormat) ProtoMessage() {} func (*GatherFormat) ProtoMessage() {}
func (*GatherFormat) Descriptor() ([]byte, []int) { func (*GatherFormat) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_feb94a5514034c46, []int{7} return fileDescriptor_chat_163a8d226aa6edb5, []int{7}
} }
func (m *GatherFormat) XXX_Unmarshal(b []byte) error { func (m *GatherFormat) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GatherFormat.Unmarshal(m, b) return xxx_messageInfo_GatherFormat.Unmarshal(m, b)
@ -731,7 +731,7 @@ func (m *MsgFormat) Reset() { *m = MsgFormat{} }
func (m *MsgFormat) String() string { return proto.CompactTextString(m) } func (m *MsgFormat) String() string { return proto.CompactTextString(m) }
func (*MsgFormat) ProtoMessage() {} func (*MsgFormat) ProtoMessage() {}
func (*MsgFormat) Descriptor() ([]byte, []int) { func (*MsgFormat) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_feb94a5514034c46, []int{8} return fileDescriptor_chat_163a8d226aa6edb5, []int{8}
} }
func (m *MsgFormat) XXX_Unmarshal(b []byte) error { func (m *MsgFormat) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MsgFormat.Unmarshal(m, b) return xxx_messageInfo_MsgFormat.Unmarshal(m, b)
@ -863,7 +863,7 @@ func (m *UserSendMsgReq) Reset() { *m = UserSendMsgReq{} }
func (m *UserSendMsgReq) String() string { return proto.CompactTextString(m) } func (m *UserSendMsgReq) String() string { return proto.CompactTextString(m) }
func (*UserSendMsgReq) ProtoMessage() {} func (*UserSendMsgReq) ProtoMessage() {}
func (*UserSendMsgReq) Descriptor() ([]byte, []int) { func (*UserSendMsgReq) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_feb94a5514034c46, []int{9} return fileDescriptor_chat_163a8d226aa6edb5, []int{9}
} }
func (m *UserSendMsgReq) XXX_Unmarshal(b []byte) error { func (m *UserSendMsgReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserSendMsgReq.Unmarshal(m, b) return xxx_messageInfo_UserSendMsgReq.Unmarshal(m, b)
@ -1025,7 +1025,7 @@ func (m *UserSendMsgResp) Reset() { *m = UserSendMsgResp{} }
func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) } func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) }
func (*UserSendMsgResp) ProtoMessage() {} func (*UserSendMsgResp) ProtoMessage() {}
func (*UserSendMsgResp) Descriptor() ([]byte, []int) { func (*UserSendMsgResp) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_feb94a5514034c46, []int{10} return fileDescriptor_chat_163a8d226aa6edb5, []int{10}
} }
func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b)
@ -1272,9 +1272,9 @@ var _Chat_serviceDesc = grpc.ServiceDesc{
Metadata: "chat/chat.proto", Metadata: "chat/chat.proto",
} }
func init() { proto.RegisterFile("chat/chat.proto", fileDescriptor_chat_feb94a5514034c46) } func init() { proto.RegisterFile("chat/chat.proto", fileDescriptor_chat_163a8d226aa6edb5) }
var fileDescriptor_chat_feb94a5514034c46 = []byte{ var fileDescriptor_chat_163a8d226aa6edb5 = []byte{
// 981 bytes of a gzipped FileDescriptorProto // 981 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xdd, 0x6a, 0xe3, 0x46, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xdd, 0x6a, 0xe3, 0x46,
0x14, 0xc6, 0x92, 0x2d, 0xdb, 0xc7, 0xbf, 0x99, 0x86, 0xec, 0x90, 0x96, 0xd6, 0x88, 0x6d, 0x31, 0x14, 0xc6, 0x92, 0x2d, 0xdb, 0xc7, 0xbf, 0x99, 0x86, 0xec, 0x90, 0x96, 0xd6, 0x88, 0x6d, 0x31,

@ -49,7 +49,7 @@ func (m *PushMsgReq) Reset() { *m = PushMsgReq{} }
func (m *PushMsgReq) String() string { return proto.CompactTextString(m) } func (m *PushMsgReq) String() string { return proto.CompactTextString(m) }
func (*PushMsgReq) ProtoMessage() {} func (*PushMsgReq) ProtoMessage() {}
func (*PushMsgReq) Descriptor() ([]byte, []int) { func (*PushMsgReq) Descriptor() ([]byte, []int) {
return fileDescriptor_push_4f08d2ff54ba8af2, []int{0} return fileDescriptor_push_e44270f7d93180b9, []int{0}
} }
func (m *PushMsgReq) XXX_Unmarshal(b []byte) error { func (m *PushMsgReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PushMsgReq.Unmarshal(m, b) return xxx_messageInfo_PushMsgReq.Unmarshal(m, b)
@ -192,7 +192,7 @@ func (m *PushMsgResp) Reset() { *m = PushMsgResp{} }
func (m *PushMsgResp) String() string { return proto.CompactTextString(m) } func (m *PushMsgResp) String() string { return proto.CompactTextString(m) }
func (*PushMsgResp) ProtoMessage() {} func (*PushMsgResp) ProtoMessage() {}
func (*PushMsgResp) Descriptor() ([]byte, []int) { func (*PushMsgResp) Descriptor() ([]byte, []int) {
return fileDescriptor_push_4f08d2ff54ba8af2, []int{1} return fileDescriptor_push_e44270f7d93180b9, []int{1}
} }
func (m *PushMsgResp) XXX_Unmarshal(b []byte) error { func (m *PushMsgResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PushMsgResp.Unmarshal(m, b) return xxx_messageInfo_PushMsgResp.Unmarshal(m, b)
@ -296,9 +296,9 @@ var _PushMsgService_serviceDesc = grpc.ServiceDesc{
Metadata: "push/push.proto", Metadata: "push/push.proto",
} }
func init() { proto.RegisterFile("push/push.proto", fileDescriptor_push_4f08d2ff54ba8af2) } func init() { proto.RegisterFile("push/push.proto", fileDescriptor_push_e44270f7d93180b9) }
var fileDescriptor_push_4f08d2ff54ba8af2 = []byte{ var fileDescriptor_push_e44270f7d93180b9 = []byte{
// 378 bytes of a gzipped FileDescriptorProto // 378 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x92, 0x5d, 0xeb, 0xda, 0x30, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x92, 0x5d, 0xeb, 0xda, 0x30,
0x14, 0xc6, 0xe9, 0xb4, 0xbe, 0x1c, 0xe7, 0xcb, 0xc2, 0x18, 0xc1, 0x8b, 0x51, 0x64, 0x0c, 0x6f, 0x14, 0xc6, 0xe9, 0xb4, 0xbe, 0x1c, 0xe7, 0xcb, 0xc2, 0x18, 0xc1, 0x8b, 0x51, 0x64, 0x0c, 0x6f,

@ -32,7 +32,7 @@ func (m *PullMessageBySeqListResp) Reset() { *m = PullMessageBySeqListRe
func (m *PullMessageBySeqListResp) String() string { return proto.CompactTextString(m) } func (m *PullMessageBySeqListResp) String() string { return proto.CompactTextString(m) }
func (*PullMessageBySeqListResp) ProtoMessage() {} func (*PullMessageBySeqListResp) ProtoMessage() {}
func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) { func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f143de4f947df40f, []int{0} return fileDescriptor_ws_d55c44e342c7a2b5, []int{0}
} }
func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b)
@ -91,7 +91,7 @@ func (m *PullMessageBySeqListReq) Reset() { *m = PullMessageBySeqListReq
func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) } func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) }
func (*PullMessageBySeqListReq) ProtoMessage() {} func (*PullMessageBySeqListReq) ProtoMessage() {}
func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) { func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f143de4f947df40f, []int{1} return fileDescriptor_ws_d55c44e342c7a2b5, []int{1}
} }
func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b)
@ -128,7 +128,7 @@ func (m *GetMaxAndMinSeqReq) Reset() { *m = GetMaxAndMinSeqReq{} }
func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) } func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) }
func (*GetMaxAndMinSeqReq) ProtoMessage() {} func (*GetMaxAndMinSeqReq) ProtoMessage() {}
func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) { func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f143de4f947df40f, []int{2} return fileDescriptor_ws_d55c44e342c7a2b5, []int{2}
} }
func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b)
@ -160,7 +160,7 @@ func (m *GetMaxAndMinSeqResp) Reset() { *m = GetMaxAndMinSeqResp{} }
func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) } func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) }
func (*GetMaxAndMinSeqResp) ProtoMessage() {} func (*GetMaxAndMinSeqResp) ProtoMessage() {}
func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) { func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f143de4f947df40f, []int{3} return fileDescriptor_ws_d55c44e342c7a2b5, []int{3}
} }
func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b)
@ -208,7 +208,7 @@ func (m *GatherFormat) Reset() { *m = GatherFormat{} }
func (m *GatherFormat) String() string { return proto.CompactTextString(m) } func (m *GatherFormat) String() string { return proto.CompactTextString(m) }
func (*GatherFormat) ProtoMessage() {} func (*GatherFormat) ProtoMessage() {}
func (*GatherFormat) Descriptor() ([]byte, []int) { func (*GatherFormat) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f143de4f947df40f, []int{4} return fileDescriptor_ws_d55c44e342c7a2b5, []int{4}
} }
func (m *GatherFormat) XXX_Unmarshal(b []byte) error { func (m *GatherFormat) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GatherFormat.Unmarshal(m, b) return xxx_messageInfo_GatherFormat.Unmarshal(m, b)
@ -276,7 +276,7 @@ func (m *MsgFormat) Reset() { *m = MsgFormat{} }
func (m *MsgFormat) String() string { return proto.CompactTextString(m) } func (m *MsgFormat) String() string { return proto.CompactTextString(m) }
func (*MsgFormat) ProtoMessage() {} func (*MsgFormat) ProtoMessage() {}
func (*MsgFormat) Descriptor() ([]byte, []int) { func (*MsgFormat) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f143de4f947df40f, []int{5} return fileDescriptor_ws_d55c44e342c7a2b5, []int{5}
} }
func (m *MsgFormat) XXX_Unmarshal(b []byte) error { func (m *MsgFormat) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MsgFormat.Unmarshal(m, b) return xxx_messageInfo_MsgFormat.Unmarshal(m, b)
@ -401,7 +401,7 @@ func (m *UserSendMsgReq) Reset() { *m = UserSendMsgReq{} }
func (m *UserSendMsgReq) String() string { return proto.CompactTextString(m) } func (m *UserSendMsgReq) String() string { return proto.CompactTextString(m) }
func (*UserSendMsgReq) ProtoMessage() {} func (*UserSendMsgReq) ProtoMessage() {}
func (*UserSendMsgReq) Descriptor() ([]byte, []int) { func (*UserSendMsgReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f143de4f947df40f, []int{6} return fileDescriptor_ws_d55c44e342c7a2b5, []int{6}
} }
func (m *UserSendMsgReq) XXX_Unmarshal(b []byte) error { func (m *UserSendMsgReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserSendMsgReq.Unmarshal(m, b) return xxx_messageInfo_UserSendMsgReq.Unmarshal(m, b)
@ -511,7 +511,7 @@ func (m *UserSendMsgResp) Reset() { *m = UserSendMsgResp{} }
func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) } func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) }
func (*UserSendMsgResp) ProtoMessage() {} func (*UserSendMsgResp) ProtoMessage() {}
func (*UserSendMsgResp) Descriptor() ([]byte, []int) { func (*UserSendMsgResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f143de4f947df40f, []int{7} return fileDescriptor_ws_d55c44e342c7a2b5, []int{7}
} }
func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b)
@ -575,7 +575,7 @@ func (m *MsgData) Reset() { *m = MsgData{} }
func (m *MsgData) String() string { return proto.CompactTextString(m) } func (m *MsgData) String() string { return proto.CompactTextString(m) }
func (*MsgData) ProtoMessage() {} func (*MsgData) ProtoMessage() {}
func (*MsgData) Descriptor() ([]byte, []int) { func (*MsgData) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f143de4f947df40f, []int{8} return fileDescriptor_ws_d55c44e342c7a2b5, []int{8}
} }
func (m *MsgData) XXX_Unmarshal(b []byte) error { func (m *MsgData) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MsgData.Unmarshal(m, b) return xxx_messageInfo_MsgData.Unmarshal(m, b)
@ -686,6 +686,310 @@ func (m *MsgData) GetClientMsgID() string {
return "" return ""
} }
type OfflinePushInfo struct {
Title string `protobuf:"bytes,1,opt,name=Title" json:"Title,omitempty"`
Desc string `protobuf:"bytes,2,opt,name=Desc" json:"Desc,omitempty"`
Ext string `protobuf:"bytes,3,opt,name=Ext" json:"Ext,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *OfflinePushInfo) Reset() { *m = OfflinePushInfo{} }
func (m *OfflinePushInfo) String() string { return proto.CompactTextString(m) }
func (*OfflinePushInfo) ProtoMessage() {}
func (*OfflinePushInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{9}
}
func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b)
}
func (m *OfflinePushInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_OfflinePushInfo.Marshal(b, m, deterministic)
}
func (dst *OfflinePushInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_OfflinePushInfo.Merge(dst, src)
}
func (m *OfflinePushInfo) XXX_Size() int {
return xxx_messageInfo_OfflinePushInfo.Size(m)
}
func (m *OfflinePushInfo) XXX_DiscardUnknown() {
xxx_messageInfo_OfflinePushInfo.DiscardUnknown(m)
}
var xxx_messageInfo_OfflinePushInfo proto.InternalMessageInfo
func (m *OfflinePushInfo) GetTitle() string {
if m != nil {
return m.Title
}
return ""
}
func (m *OfflinePushInfo) GetDesc() string {
if m != nil {
return m.Desc
}
return ""
}
func (m *OfflinePushInfo) GetExt() string {
if m != nil {
return m.Ext
}
return ""
}
type GroupInfoTip struct {
GroupID string `protobuf:"bytes,1,opt,name=GroupID" json:"GroupID,omitempty"`
GroupName string `protobuf:"bytes,2,opt,name=GroupName" json:"GroupName,omitempty"`
Notification string `protobuf:"bytes,3,opt,name=Notification" json:"Notification,omitempty"`
Introduction string `protobuf:"bytes,4,opt,name=Introduction" json:"Introduction,omitempty"`
FaceUrl string `protobuf:"bytes,5,opt,name=FaceUrl" json:"FaceUrl,omitempty"`
Ex string `protobuf:"bytes,6,opt,name=Ex" json:"Ex,omitempty"`
OwnerID string `protobuf:"bytes,7,opt,name=OwnerID" json:"OwnerID,omitempty"`
CreateTime uint64 `protobuf:"varint,8,opt,name=CreateTime" json:"CreateTime,omitempty"`
MemberCount uint32 `protobuf:"varint,9,opt,name=MemberCount" json:"MemberCount,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GroupInfoTip) Reset() { *m = GroupInfoTip{} }
func (m *GroupInfoTip) String() string { return proto.CompactTextString(m) }
func (*GroupInfoTip) ProtoMessage() {}
func (*GroupInfoTip) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{10}
}
func (m *GroupInfoTip) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupInfoTip.Unmarshal(m, b)
}
func (m *GroupInfoTip) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GroupInfoTip.Marshal(b, m, deterministic)
}
func (dst *GroupInfoTip) XXX_Merge(src proto.Message) {
xxx_messageInfo_GroupInfoTip.Merge(dst, src)
}
func (m *GroupInfoTip) XXX_Size() int {
return xxx_messageInfo_GroupInfoTip.Size(m)
}
func (m *GroupInfoTip) XXX_DiscardUnknown() {
xxx_messageInfo_GroupInfoTip.DiscardUnknown(m)
}
var xxx_messageInfo_GroupInfoTip proto.InternalMessageInfo
func (m *GroupInfoTip) GetGroupID() string {
if m != nil {
return m.GroupID
}
return ""
}
func (m *GroupInfoTip) GetGroupName() string {
if m != nil {
return m.GroupName
}
return ""
}
func (m *GroupInfoTip) GetNotification() string {
if m != nil {
return m.Notification
}
return ""
}
func (m *GroupInfoTip) GetIntroduction() string {
if m != nil {
return m.Introduction
}
return ""
}
func (m *GroupInfoTip) GetFaceUrl() string {
if m != nil {
return m.FaceUrl
}
return ""
}
func (m *GroupInfoTip) GetEx() string {
if m != nil {
return m.Ex
}
return ""
}
func (m *GroupInfoTip) GetOwnerID() string {
if m != nil {
return m.OwnerID
}
return ""
}
func (m *GroupInfoTip) GetCreateTime() uint64 {
if m != nil {
return m.CreateTime
}
return 0
}
func (m *GroupInfoTip) GetMemberCount() uint32 {
if m != nil {
return m.MemberCount
}
return 0
}
type UserInfoTip struct {
UserID string `protobuf:"bytes,1,opt,name=UserID" json:"UserID,omitempty"`
Name string `protobuf:"bytes,2,opt,name=Name" json:"Name,omitempty"`
Icon string `protobuf:"bytes,3,opt,name=Icon" json:"Icon,omitempty"`
Gender int32 `protobuf:"varint,4,opt,name=Gender" json:"Gender,omitempty"`
Mobile string `protobuf:"bytes,5,opt,name=Mobile" json:"Mobile,omitempty"`
Birth string `protobuf:"bytes,6,opt,name=Birth" json:"Birth,omitempty"`
Email string `protobuf:"bytes,7,opt,name=Email" json:"Email,omitempty"`
Ex string `protobuf:"bytes,8,opt,name=Ex" json:"Ex,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *UserInfoTip) Reset() { *m = UserInfoTip{} }
func (m *UserInfoTip) String() string { return proto.CompactTextString(m) }
func (*UserInfoTip) ProtoMessage() {}
func (*UserInfoTip) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{11}
}
func (m *UserInfoTip) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserInfoTip.Unmarshal(m, b)
}
func (m *UserInfoTip) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UserInfoTip.Marshal(b, m, deterministic)
}
func (dst *UserInfoTip) XXX_Merge(src proto.Message) {
xxx_messageInfo_UserInfoTip.Merge(dst, src)
}
func (m *UserInfoTip) XXX_Size() int {
return xxx_messageInfo_UserInfoTip.Size(m)
}
func (m *UserInfoTip) XXX_DiscardUnknown() {
xxx_messageInfo_UserInfoTip.DiscardUnknown(m)
}
var xxx_messageInfo_UserInfoTip proto.InternalMessageInfo
func (m *UserInfoTip) GetUserID() string {
if m != nil {
return m.UserID
}
return ""
}
func (m *UserInfoTip) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *UserInfoTip) GetIcon() string {
if m != nil {
return m.Icon
}
return ""
}
func (m *UserInfoTip) GetGender() int32 {
if m != nil {
return m.Gender
}
return 0
}
func (m *UserInfoTip) GetMobile() string {
if m != nil {
return m.Mobile
}
return ""
}
func (m *UserInfoTip) GetBirth() string {
if m != nil {
return m.Birth
}
return ""
}
func (m *UserInfoTip) GetEmail() string {
if m != nil {
return m.Email
}
return ""
}
func (m *UserInfoTip) GetEx() string {
if m != nil {
return m.Ex
}
return ""
}
type CreateGroupTip struct {
Group *GroupInfoTip `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"`
Creator *UserInfoTip `protobuf:"bytes,2,opt,name=creator" json:"creator,omitempty"`
MemberList []*UserInfoTip `protobuf:"bytes,3,rep,name=memberList" json:"memberList,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CreateGroupTip) Reset() { *m = CreateGroupTip{} }
func (m *CreateGroupTip) String() string { return proto.CompactTextString(m) }
func (*CreateGroupTip) ProtoMessage() {}
func (*CreateGroupTip) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{12}
}
func (m *CreateGroupTip) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateGroupTip.Unmarshal(m, b)
}
func (m *CreateGroupTip) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CreateGroupTip.Marshal(b, m, deterministic)
}
func (dst *CreateGroupTip) XXX_Merge(src proto.Message) {
xxx_messageInfo_CreateGroupTip.Merge(dst, src)
}
func (m *CreateGroupTip) XXX_Size() int {
return xxx_messageInfo_CreateGroupTip.Size(m)
}
func (m *CreateGroupTip) XXX_DiscardUnknown() {
xxx_messageInfo_CreateGroupTip.DiscardUnknown(m)
}
var xxx_messageInfo_CreateGroupTip proto.InternalMessageInfo
func (m *CreateGroupTip) GetGroup() *GroupInfoTip {
if m != nil {
return m.Group
}
return nil
}
func (m *CreateGroupTip) GetCreator() *UserInfoTip {
if m != nil {
return m.Creator
}
return nil
}
func (m *CreateGroupTip) GetMemberList() []*UserInfoTip {
if m != nil {
return m.MemberList
}
return nil
}
func init() { func init() {
proto.RegisterType((*PullMessageBySeqListResp)(nil), "open_im_sdk.PullMessageBySeqListResp") proto.RegisterType((*PullMessageBySeqListResp)(nil), "open_im_sdk.PullMessageBySeqListResp")
proto.RegisterType((*PullMessageBySeqListReq)(nil), "open_im_sdk.PullMessageBySeqListReq") proto.RegisterType((*PullMessageBySeqListReq)(nil), "open_im_sdk.PullMessageBySeqListReq")
@ -697,57 +1001,78 @@ func init() {
proto.RegisterMapType((map[string]int32)(nil), "open_im_sdk.UserSendMsgReq.OptionsEntry") proto.RegisterMapType((map[string]int32)(nil), "open_im_sdk.UserSendMsgReq.OptionsEntry")
proto.RegisterType((*UserSendMsgResp)(nil), "open_im_sdk.UserSendMsgResp") proto.RegisterType((*UserSendMsgResp)(nil), "open_im_sdk.UserSendMsgResp")
proto.RegisterType((*MsgData)(nil), "open_im_sdk.MsgData") proto.RegisterType((*MsgData)(nil), "open_im_sdk.MsgData")
} proto.RegisterType((*OfflinePushInfo)(nil), "open_im_sdk.OfflinePushInfo")
proto.RegisterType((*GroupInfoTip)(nil), "open_im_sdk.GroupInfoTip")
func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_f143de4f947df40f) } proto.RegisterType((*UserInfoTip)(nil), "open_im_sdk.UserInfoTip")
proto.RegisterType((*CreateGroupTip)(nil), "open_im_sdk.CreateGroupTip")
var fileDescriptor_ws_f143de4f947df40f = []byte{ }
// 739 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0x4b, 0x6b, 0xdb, 0x4a, func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_d55c44e342c7a2b5) }
0x14, 0x46, 0x52, 0xfc, 0xd0, 0xb1, 0xf3, 0x60, 0x6e, 0xc8, 0xd5, 0x0d, 0x97, 0x8b, 0x11, 0x97,
0x62, 0xb2, 0x70, 0x20, 0xd9, 0x94, 0x94, 0x52, 0x9a, 0x3a, 0x09, 0x2e, 0x71, 0x1a, 0xc6, 0xc9, var fileDescriptor_ws_d55c44e342c7a2b5 = []byte{
0xa6, 0x9b, 0xa0, 0xda, 0x53, 0x57, 0xd8, 0x7a, 0x58, 0x47, 0x79, 0xf8, 0xc7, 0xf4, 0x0f, 0x75, // 1021 bytes of a gzipped FileDescriptorProto
0xd1, 0x7f, 0x54, 0x28, 0x67, 0x46, 0x72, 0x66, 0x6c, 0xd3, 0x76, 0x37, 0xe7, 0xd3, 0x9c, 0x99, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0xcb, 0x6e, 0x23, 0xb7,
0x39, 0xdf, 0x03, 0xc1, 0x36, 0x8e, 0x26, 0x77, 0x8f, 0x78, 0xf8, 0x88, 0x9d, 0x34, 0x4b, 0xf2, 0x12, 0x85, 0xba, 0xf5, 0x2c, 0xc9, 0xf6, 0x80, 0xd7, 0xf0, 0xed, 0x0c, 0x82, 0x40, 0x68, 0x04,
0x84, 0x35, 0x92, 0x54, 0xc4, 0x77, 0x61, 0x74, 0x87, 0xa3, 0x89, 0xff, 0xcd, 0x02, 0xef, 0xfa, 0x81, 0x30, 0x0b, 0x19, 0xf0, 0x6c, 0x06, 0x13, 0x04, 0x41, 0x6c, 0xc9, 0x86, 0x82, 0x91, 0x6d,
0x7e, 0x3a, 0xed, 0x0b, 0xc4, 0x60, 0x2c, 0x4e, 0xe7, 0x03, 0x31, 0xbb, 0x0c, 0x31, 0xe7, 0x02, 0xb4, 0x3c, 0x9b, 0x6c, 0x8c, 0x76, 0x8b, 0x92, 0x1b, 0xee, 0x87, 0xd4, 0xa4, 0x6c, 0xf9, 0x3f,
0x53, 0xb6, 0x07, 0xd5, 0x7e, 0xf0, 0x34, 0x10, 0x33, 0xcf, 0x6a, 0x59, 0x6d, 0x87, 0x17, 0x95, 0xb2, 0xcd, 0x37, 0x64, 0x9d, 0x5f, 0xc8, 0x22, 0x7f, 0x14, 0x20, 0xa8, 0x22, 0x5b, 0x26, 0x25,
0xc4, 0xc3, 0x98, 0x70, 0xbb, 0xc0, 0x65, 0xc5, 0xde, 0xc0, 0xe6, 0x20, 0x8c, 0xc7, 0x53, 0x71, 0xe7, 0xb1, 0xe3, 0x39, 0xaa, 0x22, 0x59, 0xe7, 0x54, 0xb5, 0x08, 0x07, 0x62, 0xfa, 0x70, 0xfb,
0x8b, 0x22, 0xeb, 0xe3, 0xd8, 0x73, 0x5a, 0x4e, 0xbb, 0x71, 0xf4, 0x4f, 0x47, 0xbb, 0xb1, 0x73, 0x24, 0x8e, 0x9f, 0x44, 0x7f, 0x51, 0xe4, 0x32, 0x67, 0xed, 0x7c, 0xc1, 0xb3, 0xdb, 0x38, 0xbd,
0x11, 0xe4, 0x5f, 0x44, 0x76, 0x9e, 0x64, 0x51, 0x90, 0x73, 0x73, 0x3f, 0x7b, 0x0d, 0xcd, 0x8b, 0x15, 0xd3, 0x07, 0xff, 0xf7, 0x0a, 0x78, 0xd7, 0xab, 0x24, 0x19, 0x73, 0x21, 0xc2, 0x39, 0x3f,
0x2c, 0xb9, 0x4f, 0xcb, 0xfe, 0x8d, 0xdf, 0xf5, 0x1b, 0xdb, 0xfd, 0x63, 0xf8, 0x7b, 0xfd, 0x2c, 0x7d, 0x9e, 0xf0, 0xe5, 0xa7, 0x58, 0xc8, 0x80, 0x8b, 0x05, 0x3b, 0x82, 0xfa, 0x38, 0x5c, 0x4f,
0x33, 0xe6, 0x41, 0x0d, 0x55, 0xe5, 0x59, 0x2d, 0xa7, 0xed, 0xf0, 0xb2, 0xf4, 0x77, 0x81, 0x5d, 0xf8, 0xd2, 0xab, 0x74, 0x2b, 0x3d, 0x37, 0xd0, 0x88, 0xf8, 0x38, 0x43, 0xde, 0xd1, 0x3c, 0x21,
0x88, 0xbc, 0x1f, 0x3c, 0xbd, 0x8d, 0x47, 0x6a, 0x0e, 0x2e, 0x66, 0xfe, 0x19, 0xfc, 0xb5, 0x82, 0xf6, 0x3d, 0xec, 0x4d, 0xe2, 0x6c, 0x9e, 0xf0, 0xcf, 0x82, 0x17, 0x63, 0x31, 0xf7, 0xdc, 0xae,
0x2a, 0x46, 0x22, 0x83, 0x91, 0x68, 0xc1, 0x48, 0x64, 0x30, 0xa2, 0x2a, 0xff, 0x3d, 0x34, 0xf5, 0xdb, 0x6b, 0x9f, 0x7c, 0xd1, 0x37, 0x4e, 0xec, 0x5f, 0x84, 0xf2, 0x9e, 0x17, 0xe7, 0x79, 0x91,
0xf7, 0xb2, 0x2d, 0xb0, 0x7b, 0x5d, 0xd9, 0xeb, 0x72, 0xbb, 0xd7, 0x65, 0x07, 0xb0, 0x21, 0xdf, 0x86, 0x32, 0xb0, 0xe3, 0xd9, 0x77, 0xd0, 0xb9, 0x28, 0xf2, 0xd5, 0xa2, 0xcc, 0xaf, 0xfe, 0x5b,
0x64, 0xcb, 0x41, 0xf7, 0x8c, 0x41, 0xfb, 0x38, 0x2e, 0xa6, 0x94, 0x7b, 0xfc, 0x1f, 0x36, 0xb8, 0xbe, 0x15, 0xee, 0xbf, 0x87, 0xff, 0xbf, 0x5e, 0xcb, 0x92, 0x79, 0xd0, 0x10, 0x0a, 0x79, 0x95,
0x0b, 0x8c, 0x6e, 0x1c, 0x88, 0x78, 0xb4, 0x38, 0xad, 0xa8, 0x08, 0xe7, 0x62, 0xf8, 0xd0, 0xeb, 0xae, 0xdb, 0x73, 0x83, 0x12, 0xfa, 0x87, 0xc0, 0x2e, 0xb8, 0x1c, 0x87, 0xeb, 0x1f, 0xb2, 0xa9,
0xca, 0x97, 0xb8, 0xbc, 0xa8, 0x88, 0x00, 0x6a, 0xce, 0x92, 0xc8, 0x73, 0x5a, 0x56, 0xbb, 0xc2, 0xaa, 0x23, 0xe0, 0x4b, 0x7f, 0x08, 0xff, 0xdb, 0x61, 0x95, 0x22, 0xa9, 0xa5, 0x48, 0xba, 0x51,
0xcb, 0x92, 0xb5, 0xa0, 0xf1, 0x2e, 0x89, 0x73, 0x11, 0xe7, 0x37, 0xf3, 0x54, 0x78, 0x1b, 0xf2, 0x24, 0xb5, 0x14, 0x51, 0xc8, 0xff, 0x11, 0x3a, 0xe6, 0x7d, 0xd9, 0x3e, 0x38, 0xa3, 0x01, 0xe5,
0xab, 0x0e, 0xd1, 0x8e, 0x81, 0xc8, 0x1e, 0x24, 0xc9, 0xbd, 0xae, 0x57, 0x91, 0x07, 0xeb, 0x10, 0xb6, 0x02, 0x67, 0x34, 0x60, 0xef, 0xa0, 0x4a, 0x77, 0x72, 0xa8, 0xd0, 0x23, 0xab, 0xd0, 0xb1,
0x9d, 0x5e, 0x34, 0x78, 0x55, 0xf9, 0xb5, 0x2c, 0xd9, 0x0e, 0x38, 0x44, 0x4b, 0x4d, 0xd2, 0x42, 0x98, 0xeb, 0x2a, 0x29, 0xc6, 0xff, 0xd3, 0x81, 0xd6, 0x86, 0xc3, 0x13, 0x27, 0x3c, 0x9b, 0x6e,
0x4b, 0xb6, 0x0f, 0x75, 0x7a, 0xeb, 0x4d, 0x18, 0x09, 0xaf, 0x2e, 0xe1, 0x45, 0xcd, 0x0e, 0x60, 0x76, 0xd3, 0x08, 0xf9, 0x80, 0x47, 0x8f, 0xa3, 0x01, 0xdd, 0xa4, 0x15, 0x68, 0x84, 0x02, 0x60,
0x87, 0xd6, 0x22, 0xbb, 0x9e, 0x06, 0xf9, 0xe7, 0x24, 0x8b, 0x7a, 0x5d, 0xcf, 0x95, 0x0f, 0x5a, 0x72, 0x91, 0xa7, 0x9e, 0xdb, 0xad, 0xf4, 0x6a, 0x41, 0x09, 0x59, 0x17, 0xda, 0x67, 0x79, 0x26,
0xc1, 0xd9, 0x0b, 0xd8, 0x52, 0xd8, 0x55, 0x38, 0x9c, 0x5c, 0x05, 0x91, 0xf0, 0x40, 0x5e, 0xbd, 0x79, 0x26, 0x6f, 0x9e, 0x17, 0xdc, 0xab, 0xd2, 0xaf, 0x26, 0x85, 0x11, 0x13, 0x5e, 0x3c, 0x92,
0x84, 0xb2, 0xff, 0x61, 0x53, 0x21, 0xe7, 0xc1, 0x50, 0xdc, 0xf2, 0x4b, 0xaf, 0x21, 0xb7, 0x99, 0xc8, 0xa3, 0x81, 0x57, 0xa3, 0x8d, 0x4d, 0x0a, 0x77, 0xd7, 0x09, 0x5e, 0x9d, 0x7e, 0x2d, 0x21,
0xa0, 0x64, 0x61, 0x1a, 0x8a, 0x38, 0x57, 0x33, 0x36, 0xd5, 0x8c, 0x1a, 0xe4, 0x7f, 0x77, 0x60, 0x7b, 0x03, 0x2e, 0xca, 0xd2, 0x20, 0x59, 0x70, 0xc9, 0xde, 0x42, 0x13, 0xef, 0x7a, 0x13, 0xa7,
0x8b, 0x9c, 0x46, 0x7d, 0x7d, 0x1c, 0x93, 0xab, 0x4e, 0xa1, 0xf6, 0x21, 0xcd, 0xc3, 0x24, 0x46, 0xdc, 0x6b, 0x12, 0xbd, 0xc1, 0xec, 0x1d, 0xbc, 0xc1, 0x35, 0x2f, 0xae, 0x93, 0x50, 0xce, 0xf2,
0xe9, 0xaa, 0xc6, 0x51, 0xdb, 0x50, 0xd0, 0xdc, 0xdd, 0x29, 0xb6, 0x9e, 0xc5, 0x79, 0x36, 0xe7, 0x22, 0x1d, 0x0d, 0xbc, 0x16, 0x5d, 0x68, 0x87, 0x67, 0xdf, 0xc0, 0xbe, 0xe2, 0x2e, 0xe3, 0xe8,
0x65, 0xe3, 0x9a, 0x31, 0xec, 0x3f, 0x1b, 0xc3, 0x59, 0x37, 0xc6, 0x7f, 0x00, 0x1a, 0x75, 0x4a, 0xe1, 0x32, 0x4c, 0xb9, 0x07, 0x74, 0xf4, 0x16, 0xcb, 0xbe, 0x86, 0x3d, 0xc5, 0x9c, 0x87, 0x11,
0x4b, 0x0d, 0x51, 0x52, 0x22, 0x86, 0x49, 0x2c, 0xc5, 0xae, 0x28, 0xb1, 0x35, 0x48, 0x37, 0x4a, 0xff, 0x1c, 0x7c, 0xf2, 0xda, 0x14, 0x66, 0x93, 0xa4, 0x42, 0x12, 0xf3, 0x4c, 0xaa, 0x1a, 0x3b,
0xf5, 0x97, 0x46, 0xa9, 0xad, 0x1a, 0xe5, 0xd9, 0x7c, 0x75, 0xc3, 0x7c, 0xff, 0x82, 0x7b, 0x9e, 0xaa, 0x46, 0x83, 0xf2, 0xff, 0x70, 0x61, 0x1f, 0x3b, 0x0d, 0xf3, 0xc6, 0x62, 0x8e, 0x5d, 0x75,
0x64, 0x43, 0x21, 0xbd, 0xee, 0xb6, 0x9c, 0xb6, 0xcb, 0x9f, 0x01, 0xdd, 0x3c, 0x60, 0x9a, 0x67, 0x0a, 0x8d, 0xab, 0x85, 0x8c, 0xf3, 0x4c, 0x50, 0x57, 0xb5, 0x4f, 0x7a, 0x96, 0x83, 0x76, 0x74,
0x49, 0x94, 0xc6, 0x8a, 0x28, 0xfb, 0x27, 0xd0, 0xd4, 0x69, 0x25, 0xbb, 0x4d, 0xc4, 0xbc, 0xc8, 0x5f, 0x87, 0x0e, 0x33, 0x59, 0x3c, 0x07, 0x65, 0xe2, 0x2b, 0x65, 0x38, 0xff, 0xad, 0x0c, 0xf7,
0x04, 0x2d, 0xd9, 0x2e, 0x54, 0x1e, 0x82, 0xe9, 0xbd, 0xa2, 0xb5, 0xc2, 0x55, 0x71, 0x62, 0xbf, 0xb5, 0x32, 0xbe, 0x02, 0x30, 0xa4, 0x53, 0x5e, 0x1a, 0x8c, 0xb2, 0x52, 0x88, 0x38, 0xcf, 0xc8,
0xb4, 0xfc, 0x19, 0x6c, 0x1b, 0x0a, 0x61, 0xba, 0xec, 0x74, 0x6b, 0xd5, 0xe9, 0x4b, 0x4f, 0xb2, 0xec, 0x9a, 0x32, 0xdb, 0xa0, 0xcc, 0x46, 0xa9, 0xff, 0x63, 0xa3, 0x34, 0x76, 0x1b, 0xe5, 0xa5,
0x57, 0x9e, 0x44, 0xfe, 0xc6, 0xd2, 0xdf, 0x8e, 0xf2, 0x77, 0x59, 0xfb, 0x5f, 0x1d, 0xc9, 0x6e, 0xf9, 0x9a, 0x56, 0xf3, 0x7d, 0x09, 0xad, 0xf3, 0xbc, 0x88, 0x38, 0xf5, 0x7a, 0xab, 0xeb, 0xf6,
0x37, 0xc8, 0x03, 0x22, 0x0b, 0x8d, 0x04, 0xe3, 0x22, 0xc1, 0x99, 0x91, 0x60, 0x55, 0xd1, 0xcd, 0x5a, 0xc1, 0x0b, 0x61, 0x36, 0x0f, 0xd8, 0xcd, 0xb3, 0x65, 0x4a, 0x7b, 0xc7, 0x94, 0xb7, 0x1f,
0xa8, 0x49, 0xa7, 0x52, 0xac, 0x43, 0x44, 0x64, 0x54, 0x48, 0xa7, 0x94, 0x2f, 0x4b, 0xea, 0x1d, 0xa1, 0x63, 0xca, 0x8a, 0xed, 0xf6, 0xc0, 0x9f, 0xf5, 0x4c, 0xe0, 0x92, 0x1d, 0x42, 0xed, 0x31,
0x6a, 0xd2, 0x15, 0xb2, 0x0f, 0xcd, 0x8c, 0xa3, 0x36, 0xb9, 0x4a, 0xb1, 0x0e, 0xd1, 0xe9, 0x45, 0x4c, 0x56, 0x4a, 0xd6, 0x5a, 0xa0, 0xc0, 0x47, 0xe7, 0x43, 0xc5, 0x5f, 0xc2, 0x81, 0xe5, 0x90,
0x83, 0x94, 0xde, 0xe5, 0x65, 0x69, 0x4c, 0x5c, 0x37, 0x27, 0x26, 0x41, 0x50, 0xcc, 0x64, 0x88, 0x58, 0x6c, 0x77, 0x7a, 0x65, 0xb7, 0xd3, 0xb7, 0xae, 0xe4, 0xec, 0x5c, 0x09, 0xfb, 0x5b, 0x94,
0x1d, 0x4e, 0x4b, 0xca, 0x38, 0x2e, 0x67, 0x1c, 0x54, 0xc6, 0x71, 0x4d, 0xc6, 0xd1, 0x0c, 0x87, 0xfd, 0xed, 0xaa, 0xfe, 0x2e, 0xb1, 0xff, 0x8b, 0x4b, 0xea, 0x0e, 0x42, 0x19, 0xa2, 0x58, 0xc2,
0xf2, 0xc0, 0x12, 0x4a, 0xe1, 0x40, 0x23, 0x1c, 0x2a, 0xbf, 0x26, 0x28, 0x59, 0xd0, 0xb4, 0xdb, 0x9a, 0x60, 0xb1, 0x99, 0xe0, 0xc2, 0x9a, 0x60, 0x85, 0xf0, 0x64, 0x61, 0x58, 0xa7, 0xa6, 0xd8,
0x54, 0x33, 0x6a, 0xd0, 0xe9, 0xde, 0xc7, 0xdd, 0xce, 0xa1, 0xfa, 0x61, 0xbe, 0xd2, 0x92, 0xfc, 0xa4, 0x50, 0xc8, 0x54, 0x5b, 0xa7, 0x9c, 0x2f, 0x21, 0xe6, 0x46, 0x86, 0x75, 0xda, 0xf6, 0xc8,
0xa9, 0x2a, 0x7f, 0x9d, 0xc7, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x38, 0x51, 0xff, 0xb4, 0x4d, 0x9e, 0x71, 0x61, 0x54, 0xae, 0xa6, 0xd8, 0xa4, 0x70, 0x77, 0x9d, 0x40, 0xd6, 0xb7, 0x82, 0x12,
0x07, 0x00, 0x00, 0x5a, 0x15, 0x37, 0xed, 0x8a, 0xd1, 0x10, 0xc1, 0x97, 0x34, 0xc4, 0x6e, 0x80, 0x4b, 0x9c, 0x71,
0xb1, 0x3d, 0xe3, 0xa0, 0x66, 0x5c, 0xbc, 0x32, 0xe3, 0xc2, 0x1e, 0x0e, 0xd5, 0x03, 0x5b, 0x2c,
0x0e, 0x87, 0xb0, 0x86, 0x43, 0xcd, 0xaf, 0x4d, 0x92, 0x0a, 0x86, 0x77, 0x7b, 0xaa, 0x46, 0x83,
0xf2, 0xc7, 0x70, 0x70, 0x35, 0x9b, 0x25, 0x71, 0xc6, 0xaf, 0x57, 0xe2, 0x7e, 0x94, 0xcd, 0x72,
0xec, 0x9f, 0x9b, 0x58, 0x26, 0x5c, 0xbb, 0xa4, 0x00, 0x63, 0x50, 0x1d, 0x70, 0x11, 0x69, 0x8b,
0x68, 0x8d, 0xa5, 0x0e, 0xd7, 0x52, 0xcf, 0x25, 0x2e, 0xfd, 0x9f, 0x1d, 0xfd, 0x87, 0x86, 0x3b,
0xdd, 0xc4, 0x0b, 0xd4, 0x50, 0xe1, 0xd2, 0xf4, 0x12, 0xe2, 0x88, 0xd0, 0xd2, 0xf8, 0x02, 0xbc,
0x10, 0xcc, 0x87, 0xce, 0x65, 0x2e, 0xe3, 0x59, 0x1c, 0x85, 0xd8, 0xec, 0xfa, 0x0c, 0x8b, 0xc3,
0x98, 0x51, 0x26, 0x8b, 0x7c, 0xba, 0x8a, 0x28, 0xa6, 0xaa, 0x62, 0x4c, 0x0e, 0xcf, 0x27, 0x31,
0x8a, 0x44, 0x7f, 0xc5, 0x4b, 0x88, 0xff, 0x4c, 0xc3, 0xb5, 0xb6, 0xdd, 0x19, 0xae, 0x31, 0xf2,
0xea, 0x29, 0xe3, 0xc5, 0x68, 0x50, 0xba, 0xad, 0x21, 0x7e, 0x62, 0xce, 0x0a, 0x1e, 0x4a, 0xbe,
0xf1, 0xbb, 0x1a, 0x18, 0x0c, 0xaa, 0x3c, 0xe6, 0xe9, 0x1d, 0x2f, 0xce, 0xf2, 0x55, 0x26, 0xc9,
0xf9, 0xbd, 0xc0, 0xa4, 0xfc, 0xdf, 0x2a, 0xd0, 0xc6, 0xc9, 0x2b, 0x55, 0x39, 0x82, 0x3a, 0xc1,
0xcd, 0x24, 0x28, 0x84, 0x22, 0x1b, 0x72, 0xd0, 0x1a, 0xb9, 0x51, 0xb4, 0x51, 0x80, 0xd6, 0x98,
0x7f, 0x41, 0x46, 0xeb, 0xb6, 0xd7, 0x88, 0xde, 0x29, 0xf9, 0x5d, 0x9c, 0x70, 0x5d, 0xac, 0x46,
0x68, 0xe9, 0x69, 0x5c, 0xc8, 0x7b, 0x5d, 0xae, 0x02, 0xc8, 0x0e, 0xd3, 0x30, 0x4e, 0x74, 0xbd,
0x0a, 0x68, 0x5d, 0x9a, 0xa5, 0x2e, 0xfe, 0xaf, 0x15, 0xd8, 0x57, 0xc5, 0x92, 0x3b, 0x78, 0xfd,
0x63, 0xa8, 0xcd, 0x71, 0x4d, 0xb7, 0xdf, 0x79, 0xae, 0x18, 0xf6, 0x07, 0x2a, 0x8e, 0x9d, 0x40,
0x23, 0xc2, 0x2d, 0xf2, 0x82, 0x4a, 0x6b, 0x9f, 0x78, 0x3b, 0x7f, 0x1b, 0x65, 0x46, 0x19, 0xc8,
0x3e, 0x00, 0xa4, 0x24, 0x21, 0x7d, 0x43, 0xd5, 0xc3, 0xea, 0xef, 0xd3, 0x8c, 0xd8, 0xd3, 0xa3,
0x9f, 0x0e, 0xfb, 0xc7, 0xea, 0x11, 0xf8, 0xad, 0x11, 0x7f, 0x57, 0xa7, 0xe7, 0xe0, 0xfb, 0xbf,
0x02, 0x00, 0x00, 0xff, 0xff, 0xc2, 0x41, 0x03, 0xcb, 0x21, 0x0a, 0x00, 0x00,
} }

@ -87,3 +87,42 @@ message MsgData {
string clientMsgID =13; string clientMsgID =13;
} }
message OfflinePushInfo{
string Title = 1;
string Desc = 2;
string Ext = 3;
}
message GroupInfoTip{
string GroupID = 1;
string GroupName = 2;
string Notification = 3;
string Introduction = 4;
string FaceUrl = 5;
string Ex = 6;
string OwnerID = 7;
uint64 CreateTime = 8;
uint32 MemberCount = 9;
}
type GroupMemberFullInfoTip struct {
string GroupId = 1 ;
string UserId = 2 ;
int Role = 3;
uint64 JoinTime = 4;
string NickName = 5;
string FaceUrl =6;
}
message CreateGroupTip{
GroupInfoTip group = 1;
UserInfoTip creator = 2;
repeated GroupMemberFullInfoTip memberList = 3;
}

@ -35,7 +35,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_23985c8245c722d0, []int{0} return fileDescriptor_user_2aac409c3ed42d0b, []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)
@ -81,7 +81,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_23985c8245c722d0, []int{1} return fileDescriptor_user_2aac409c3ed42d0b, []int{1}
} }
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)
@ -128,7 +128,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_23985c8245c722d0, []int{2} return fileDescriptor_user_2aac409c3ed42d0b, []int{2}
} }
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)
@ -181,7 +181,7 @@ func (m *GetAllUsersUidReq) Reset() { *m = GetAllUsersUidReq{} }
func (m *GetAllUsersUidReq) String() string { return proto.CompactTextString(m) } func (m *GetAllUsersUidReq) String() string { return proto.CompactTextString(m) }
func (*GetAllUsersUidReq) ProtoMessage() {} func (*GetAllUsersUidReq) ProtoMessage() {}
func (*GetAllUsersUidReq) Descriptor() ([]byte, []int) { func (*GetAllUsersUidReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_23985c8245c722d0, []int{3} return fileDescriptor_user_2aac409c3ed42d0b, []int{3}
} }
func (m *GetAllUsersUidReq) XXX_Unmarshal(b []byte) error { func (m *GetAllUsersUidReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllUsersUidReq.Unmarshal(m, b) return xxx_messageInfo_GetAllUsersUidReq.Unmarshal(m, b)
@ -227,7 +227,7 @@ func (m *GetAllUsersUidResp) Reset() { *m = GetAllUsersUidResp{} }
func (m *GetAllUsersUidResp) String() string { return proto.CompactTextString(m) } func (m *GetAllUsersUidResp) String() string { return proto.CompactTextString(m) }
func (*GetAllUsersUidResp) ProtoMessage() {} func (*GetAllUsersUidResp) ProtoMessage() {}
func (*GetAllUsersUidResp) Descriptor() ([]byte, []int) { func (*GetAllUsersUidResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_23985c8245c722d0, []int{4} return fileDescriptor_user_2aac409c3ed42d0b, []int{4}
} }
func (m *GetAllUsersUidResp) XXX_Unmarshal(b []byte) error { func (m *GetAllUsersUidResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllUsersUidResp.Unmarshal(m, b) return xxx_messageInfo_GetAllUsersUidResp.Unmarshal(m, b)
@ -274,7 +274,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_23985c8245c722d0, []int{5} return fileDescriptor_user_2aac409c3ed42d0b, []int{5}
} }
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)
@ -328,7 +328,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_23985c8245c722d0, []int{6} return fileDescriptor_user_2aac409c3ed42d0b, []int{6}
} }
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)
@ -387,7 +387,7 @@ func (m *UserInfo) Reset() { *m = UserInfo{} }
func (m *UserInfo) String() string { return proto.CompactTextString(m) } func (m *UserInfo) String() string { return proto.CompactTextString(m) }
func (*UserInfo) ProtoMessage() {} func (*UserInfo) ProtoMessage() {}
func (*UserInfo) Descriptor() ([]byte, []int) { func (*UserInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_user_23985c8245c722d0, []int{7} return fileDescriptor_user_2aac409c3ed42d0b, []int{7}
} }
func (m *UserInfo) XXX_Unmarshal(b []byte) error { func (m *UserInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserInfo.Unmarshal(m, b) return xxx_messageInfo_UserInfo.Unmarshal(m, b)
@ -475,7 +475,7 @@ func (m *LogoutReq) Reset() { *m = LogoutReq{} }
func (m *LogoutReq) String() string { return proto.CompactTextString(m) } func (m *LogoutReq) String() string { return proto.CompactTextString(m) }
func (*LogoutReq) ProtoMessage() {} func (*LogoutReq) ProtoMessage() {}
func (*LogoutReq) Descriptor() ([]byte, []int) { func (*LogoutReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_23985c8245c722d0, []int{8} return fileDescriptor_user_2aac409c3ed42d0b, []int{8}
} }
func (m *LogoutReq) XXX_Unmarshal(b []byte) error { func (m *LogoutReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LogoutReq.Unmarshal(m, b) return xxx_messageInfo_LogoutReq.Unmarshal(m, b)
@ -529,7 +529,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_23985c8245c722d0, []int{9} return fileDescriptor_user_2aac409c3ed42d0b, []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)
@ -619,6 +619,376 @@ func (m *UpdateUserInfoReq) GetUid() string {
return "" return ""
} }
type SetReceiveMessageOptReq struct {
UId string `protobuf:"bytes,1,opt,name=uId" json:"uId,omitempty"`
Opt int32 `protobuf:"varint,2,opt,name=opt" json:"opt,omitempty"`
ConversationId []string `protobuf:"bytes,3,rep,name=conversationId" json:"conversationId,omitempty"`
OperationID string `protobuf:"bytes,4,opt,name=operationID" json:"operationID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *SetReceiveMessageOptReq) Reset() { *m = SetReceiveMessageOptReq{} }
func (m *SetReceiveMessageOptReq) String() string { return proto.CompactTextString(m) }
func (*SetReceiveMessageOptReq) ProtoMessage() {}
func (*SetReceiveMessageOptReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{10}
}
func (m *SetReceiveMessageOptReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetReceiveMessageOptReq.Unmarshal(m, b)
}
func (m *SetReceiveMessageOptReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SetReceiveMessageOptReq.Marshal(b, m, deterministic)
}
func (dst *SetReceiveMessageOptReq) XXX_Merge(src proto.Message) {
xxx_messageInfo_SetReceiveMessageOptReq.Merge(dst, src)
}
func (m *SetReceiveMessageOptReq) XXX_Size() int {
return xxx_messageInfo_SetReceiveMessageOptReq.Size(m)
}
func (m *SetReceiveMessageOptReq) XXX_DiscardUnknown() {
xxx_messageInfo_SetReceiveMessageOptReq.DiscardUnknown(m)
}
var xxx_messageInfo_SetReceiveMessageOptReq proto.InternalMessageInfo
func (m *SetReceiveMessageOptReq) GetUId() string {
if m != nil {
return m.UId
}
return ""
}
func (m *SetReceiveMessageOptReq) GetOpt() int32 {
if m != nil {
return m.Opt
}
return 0
}
func (m *SetReceiveMessageOptReq) GetConversationId() []string {
if m != nil {
return m.ConversationId
}
return nil
}
func (m *SetReceiveMessageOptReq) GetOperationID() string {
if m != nil {
return m.OperationID
}
return ""
}
type SetReceiveMessageOptResp struct {
ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"`
ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"`
OptResult []*OptResult `protobuf:"bytes,3,rep,name=optResult" json:"optResult,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *SetReceiveMessageOptResp) Reset() { *m = SetReceiveMessageOptResp{} }
func (m *SetReceiveMessageOptResp) String() string { return proto.CompactTextString(m) }
func (*SetReceiveMessageOptResp) ProtoMessage() {}
func (*SetReceiveMessageOptResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{11}
}
func (m *SetReceiveMessageOptResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetReceiveMessageOptResp.Unmarshal(m, b)
}
func (m *SetReceiveMessageOptResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SetReceiveMessageOptResp.Marshal(b, m, deterministic)
}
func (dst *SetReceiveMessageOptResp) XXX_Merge(src proto.Message) {
xxx_messageInfo_SetReceiveMessageOptResp.Merge(dst, src)
}
func (m *SetReceiveMessageOptResp) XXX_Size() int {
return xxx_messageInfo_SetReceiveMessageOptResp.Size(m)
}
func (m *SetReceiveMessageOptResp) XXX_DiscardUnknown() {
xxx_messageInfo_SetReceiveMessageOptResp.DiscardUnknown(m)
}
var xxx_messageInfo_SetReceiveMessageOptResp proto.InternalMessageInfo
func (m *SetReceiveMessageOptResp) GetErrCode() int32 {
if m != nil {
return m.ErrCode
}
return 0
}
func (m *SetReceiveMessageOptResp) GetErrMsg() string {
if m != nil {
return m.ErrMsg
}
return ""
}
func (m *SetReceiveMessageOptResp) GetOptResult() []*OptResult {
if m != nil {
return m.OptResult
}
return nil
}
type GetReceiveMessageOptReq struct {
UId string `protobuf:"bytes,1,opt,name=uId" json:"uId,omitempty"`
ConversationId []string `protobuf:"bytes,2,rep,name=conversationId" json:"conversationId,omitempty"`
OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetReceiveMessageOptReq) Reset() { *m = GetReceiveMessageOptReq{} }
func (m *GetReceiveMessageOptReq) String() string { return proto.CompactTextString(m) }
func (*GetReceiveMessageOptReq) ProtoMessage() {}
func (*GetReceiveMessageOptReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{12}
}
func (m *GetReceiveMessageOptReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetReceiveMessageOptReq.Unmarshal(m, b)
}
func (m *GetReceiveMessageOptReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetReceiveMessageOptReq.Marshal(b, m, deterministic)
}
func (dst *GetReceiveMessageOptReq) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetReceiveMessageOptReq.Merge(dst, src)
}
func (m *GetReceiveMessageOptReq) XXX_Size() int {
return xxx_messageInfo_GetReceiveMessageOptReq.Size(m)
}
func (m *GetReceiveMessageOptReq) XXX_DiscardUnknown() {
xxx_messageInfo_GetReceiveMessageOptReq.DiscardUnknown(m)
}
var xxx_messageInfo_GetReceiveMessageOptReq proto.InternalMessageInfo
func (m *GetReceiveMessageOptReq) GetUId() string {
if m != nil {
return m.UId
}
return ""
}
func (m *GetReceiveMessageOptReq) GetConversationId() []string {
if m != nil {
return m.ConversationId
}
return nil
}
func (m *GetReceiveMessageOptReq) GetOperationID() string {
if m != nil {
return m.OperationID
}
return ""
}
type OptResult struct {
ConversationId string `protobuf:"bytes,1,opt,name=conversationId" json:"conversationId,omitempty"`
Result int32 `protobuf:"varint,2,opt,name=result" json:"result,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *OptResult) Reset() { *m = OptResult{} }
func (m *OptResult) String() string { return proto.CompactTextString(m) }
func (*OptResult) ProtoMessage() {}
func (*OptResult) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{13}
}
func (m *OptResult) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OptResult.Unmarshal(m, b)
}
func (m *OptResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_OptResult.Marshal(b, m, deterministic)
}
func (dst *OptResult) XXX_Merge(src proto.Message) {
xxx_messageInfo_OptResult.Merge(dst, src)
}
func (m *OptResult) XXX_Size() int {
return xxx_messageInfo_OptResult.Size(m)
}
func (m *OptResult) XXX_DiscardUnknown() {
xxx_messageInfo_OptResult.DiscardUnknown(m)
}
var xxx_messageInfo_OptResult proto.InternalMessageInfo
func (m *OptResult) GetConversationId() string {
if m != nil {
return m.ConversationId
}
return ""
}
func (m *OptResult) GetResult() int32 {
if m != nil {
return m.Result
}
return 0
}
type GetReceiveMessageOptResp struct {
ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"`
ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"`
ConversationOptResult []*OptResult `protobuf:"bytes,3,rep,name=conversationOptResult" json:"conversationOptResult,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetReceiveMessageOptResp) Reset() { *m = GetReceiveMessageOptResp{} }
func (m *GetReceiveMessageOptResp) String() string { return proto.CompactTextString(m) }
func (*GetReceiveMessageOptResp) ProtoMessage() {}
func (*GetReceiveMessageOptResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{14}
}
func (m *GetReceiveMessageOptResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetReceiveMessageOptResp.Unmarshal(m, b)
}
func (m *GetReceiveMessageOptResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetReceiveMessageOptResp.Marshal(b, m, deterministic)
}
func (dst *GetReceiveMessageOptResp) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetReceiveMessageOptResp.Merge(dst, src)
}
func (m *GetReceiveMessageOptResp) XXX_Size() int {
return xxx_messageInfo_GetReceiveMessageOptResp.Size(m)
}
func (m *GetReceiveMessageOptResp) XXX_DiscardUnknown() {
xxx_messageInfo_GetReceiveMessageOptResp.DiscardUnknown(m)
}
var xxx_messageInfo_GetReceiveMessageOptResp proto.InternalMessageInfo
func (m *GetReceiveMessageOptResp) GetErrCode() int32 {
if m != nil {
return m.ErrCode
}
return 0
}
func (m *GetReceiveMessageOptResp) GetErrMsg() string {
if m != nil {
return m.ErrMsg
}
return ""
}
func (m *GetReceiveMessageOptResp) GetConversationOptResult() []*OptResult {
if m != nil {
return m.ConversationOptResult
}
return nil
}
type GetAllConversationMsgOptReq struct {
UId string `protobuf:"bytes,1,opt,name=uId" json:"uId,omitempty"`
OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetAllConversationMsgOptReq) Reset() { *m = GetAllConversationMsgOptReq{} }
func (m *GetAllConversationMsgOptReq) String() string { return proto.CompactTextString(m) }
func (*GetAllConversationMsgOptReq) ProtoMessage() {}
func (*GetAllConversationMsgOptReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{15}
}
func (m *GetAllConversationMsgOptReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllConversationMsgOptReq.Unmarshal(m, b)
}
func (m *GetAllConversationMsgOptReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetAllConversationMsgOptReq.Marshal(b, m, deterministic)
}
func (dst *GetAllConversationMsgOptReq) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetAllConversationMsgOptReq.Merge(dst, src)
}
func (m *GetAllConversationMsgOptReq) XXX_Size() int {
return xxx_messageInfo_GetAllConversationMsgOptReq.Size(m)
}
func (m *GetAllConversationMsgOptReq) XXX_DiscardUnknown() {
xxx_messageInfo_GetAllConversationMsgOptReq.DiscardUnknown(m)
}
var xxx_messageInfo_GetAllConversationMsgOptReq proto.InternalMessageInfo
func (m *GetAllConversationMsgOptReq) GetUId() string {
if m != nil {
return m.UId
}
return ""
}
func (m *GetAllConversationMsgOptReq) GetOperationID() string {
if m != nil {
return m.OperationID
}
return ""
}
type GetAllConversationMsgOptResp struct {
ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"`
ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"`
ConversationOptResult []*OptResult `protobuf:"bytes,3,rep,name=conversationOptResult" json:"conversationOptResult,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetAllConversationMsgOptResp) Reset() { *m = GetAllConversationMsgOptResp{} }
func (m *GetAllConversationMsgOptResp) String() string { return proto.CompactTextString(m) }
func (*GetAllConversationMsgOptResp) ProtoMessage() {}
func (*GetAllConversationMsgOptResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{16}
}
func (m *GetAllConversationMsgOptResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllConversationMsgOptResp.Unmarshal(m, b)
}
func (m *GetAllConversationMsgOptResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetAllConversationMsgOptResp.Marshal(b, m, deterministic)
}
func (dst *GetAllConversationMsgOptResp) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetAllConversationMsgOptResp.Merge(dst, src)
}
func (m *GetAllConversationMsgOptResp) XXX_Size() int {
return xxx_messageInfo_GetAllConversationMsgOptResp.Size(m)
}
func (m *GetAllConversationMsgOptResp) XXX_DiscardUnknown() {
xxx_messageInfo_GetAllConversationMsgOptResp.DiscardUnknown(m)
}
var xxx_messageInfo_GetAllConversationMsgOptResp proto.InternalMessageInfo
func (m *GetAllConversationMsgOptResp) GetErrCode() int32 {
if m != nil {
return m.ErrCode
}
return 0
}
func (m *GetAllConversationMsgOptResp) GetErrMsg() string {
if m != nil {
return m.ErrMsg
}
return ""
}
func (m *GetAllConversationMsgOptResp) GetConversationOptResult() []*OptResult {
if m != nil {
return m.ConversationOptResult
}
return nil
}
func init() { func init() {
proto.RegisterType((*CommonResp)(nil), "user.CommonResp") proto.RegisterType((*CommonResp)(nil), "user.CommonResp")
proto.RegisterType((*DeleteUsersResp)(nil), "user.DeleteUsersResp") proto.RegisterType((*DeleteUsersResp)(nil), "user.DeleteUsersResp")
@ -630,6 +1000,13 @@ func init() {
proto.RegisterType((*UserInfo)(nil), "user.UserInfo") proto.RegisterType((*UserInfo)(nil), "user.UserInfo")
proto.RegisterType((*LogoutReq)(nil), "user.LogoutReq") proto.RegisterType((*LogoutReq)(nil), "user.LogoutReq")
proto.RegisterType((*UpdateUserInfoReq)(nil), "user.UpdateUserInfoReq") proto.RegisterType((*UpdateUserInfoReq)(nil), "user.UpdateUserInfoReq")
proto.RegisterType((*SetReceiveMessageOptReq)(nil), "user.SetReceiveMessageOptReq")
proto.RegisterType((*SetReceiveMessageOptResp)(nil), "user.SetReceiveMessageOptResp")
proto.RegisterType((*GetReceiveMessageOptReq)(nil), "user.GetReceiveMessageOptReq")
proto.RegisterType((*OptResult)(nil), "user.OptResult")
proto.RegisterType((*GetReceiveMessageOptResp)(nil), "user.GetReceiveMessageOptResp")
proto.RegisterType((*GetAllConversationMsgOptReq)(nil), "user.GetAllConversationMsgOptReq")
proto.RegisterType((*GetAllConversationMsgOptResp)(nil), "user.GetAllConversationMsgOptResp")
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
@ -647,6 +1024,9 @@ type UserClient interface {
UpdateUserInfo(ctx context.Context, in *UpdateUserInfoReq, opts ...grpc.CallOption) (*CommonResp, error) UpdateUserInfo(ctx context.Context, in *UpdateUserInfoReq, opts ...grpc.CallOption) (*CommonResp, error)
DeleteUsers(ctx context.Context, in *DeleteUsersReq, opts ...grpc.CallOption) (*DeleteUsersResp, error) DeleteUsers(ctx context.Context, in *DeleteUsersReq, opts ...grpc.CallOption) (*DeleteUsersResp, error)
GetAllUsersUid(ctx context.Context, in *GetAllUsersUidReq, opts ...grpc.CallOption) (*GetAllUsersUidResp, error) GetAllUsersUid(ctx context.Context, in *GetAllUsersUidReq, opts ...grpc.CallOption) (*GetAllUsersUidResp, error)
SetReceiveMessageOpt(ctx context.Context, in *SetReceiveMessageOptReq, opts ...grpc.CallOption) (*SetReceiveMessageOptResp, error)
GetReceiveMessageOpt(ctx context.Context, in *GetReceiveMessageOptReq, opts ...grpc.CallOption) (*GetReceiveMessageOptResp, error)
GetAllConversationMsgOpt(ctx context.Context, in *GetAllConversationMsgOptReq, opts ...grpc.CallOption) (*GetAllConversationMsgOptResp, error)
} }
type userClient struct { type userClient struct {
@ -693,6 +1073,33 @@ func (c *userClient) GetAllUsersUid(ctx context.Context, in *GetAllUsersUidReq,
return out, nil return out, nil
} }
func (c *userClient) SetReceiveMessageOpt(ctx context.Context, in *SetReceiveMessageOptReq, opts ...grpc.CallOption) (*SetReceiveMessageOptResp, error) {
out := new(SetReceiveMessageOptResp)
err := grpc.Invoke(ctx, "/user.user/SetReceiveMessageOpt", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *userClient) GetReceiveMessageOpt(ctx context.Context, in *GetReceiveMessageOptReq, opts ...grpc.CallOption) (*GetReceiveMessageOptResp, error) {
out := new(GetReceiveMessageOptResp)
err := grpc.Invoke(ctx, "/user.user/GetReceiveMessageOpt", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *userClient) GetAllConversationMsgOpt(ctx context.Context, in *GetAllConversationMsgOptReq, opts ...grpc.CallOption) (*GetAllConversationMsgOptResp, error) {
out := new(GetAllConversationMsgOptResp)
err := grpc.Invoke(ctx, "/user.user/GetAllConversationMsgOpt", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for User service // Server API for User service
type UserServer interface { type UserServer interface {
@ -700,6 +1107,9 @@ type UserServer interface {
UpdateUserInfo(context.Context, *UpdateUserInfoReq) (*CommonResp, error) UpdateUserInfo(context.Context, *UpdateUserInfoReq) (*CommonResp, error)
DeleteUsers(context.Context, *DeleteUsersReq) (*DeleteUsersResp, error) DeleteUsers(context.Context, *DeleteUsersReq) (*DeleteUsersResp, error)
GetAllUsersUid(context.Context, *GetAllUsersUidReq) (*GetAllUsersUidResp, error) GetAllUsersUid(context.Context, *GetAllUsersUidReq) (*GetAllUsersUidResp, error)
SetReceiveMessageOpt(context.Context, *SetReceiveMessageOptReq) (*SetReceiveMessageOptResp, error)
GetReceiveMessageOpt(context.Context, *GetReceiveMessageOptReq) (*GetReceiveMessageOptResp, error)
GetAllConversationMsgOpt(context.Context, *GetAllConversationMsgOptReq) (*GetAllConversationMsgOptResp, error)
} }
func RegisterUserServer(s *grpc.Server, srv UserServer) { func RegisterUserServer(s *grpc.Server, srv UserServer) {
@ -778,6 +1188,60 @@ func _User_GetAllUsersUid_Handler(srv interface{}, ctx context.Context, dec func
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _User_SetReceiveMessageOpt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SetReceiveMessageOptReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(UserServer).SetReceiveMessageOpt(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/user.user/SetReceiveMessageOpt",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(UserServer).SetReceiveMessageOpt(ctx, req.(*SetReceiveMessageOptReq))
}
return interceptor(ctx, in, info, handler)
}
func _User_GetReceiveMessageOpt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetReceiveMessageOptReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(UserServer).GetReceiveMessageOpt(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/user.user/GetReceiveMessageOpt",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(UserServer).GetReceiveMessageOpt(ctx, req.(*GetReceiveMessageOptReq))
}
return interceptor(ctx, in, info, handler)
}
func _User_GetAllConversationMsgOpt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetAllConversationMsgOptReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(UserServer).GetAllConversationMsgOpt(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/user.user/GetAllConversationMsgOpt",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(UserServer).GetAllConversationMsgOpt(ctx, req.(*GetAllConversationMsgOptReq))
}
return interceptor(ctx, in, info, handler)
}
var _User_serviceDesc = grpc.ServiceDesc{ var _User_serviceDesc = grpc.ServiceDesc{
ServiceName: "user.user", ServiceName: "user.user",
HandlerType: (*UserServer)(nil), HandlerType: (*UserServer)(nil),
@ -798,49 +1262,75 @@ var _User_serviceDesc = grpc.ServiceDesc{
MethodName: "GetAllUsersUid", MethodName: "GetAllUsersUid",
Handler: _User_GetAllUsersUid_Handler, Handler: _User_GetAllUsersUid_Handler,
}, },
{
MethodName: "SetReceiveMessageOpt",
Handler: _User_SetReceiveMessageOpt_Handler,
},
{
MethodName: "GetReceiveMessageOpt",
Handler: _User_GetReceiveMessageOpt_Handler,
},
{
MethodName: "GetAllConversationMsgOpt",
Handler: _User_GetAllConversationMsgOpt_Handler,
},
}, },
Streams: []grpc.StreamDesc{}, Streams: []grpc.StreamDesc{},
Metadata: "user/user.proto", Metadata: "user/user.proto",
} }
func init() { proto.RegisterFile("user/user.proto", fileDescriptor_user_23985c8245c722d0) } func init() { proto.RegisterFile("user/user.proto", fileDescriptor_user_2aac409c3ed42d0b) }
var fileDescriptor_user_23985c8245c722d0 = []byte{ var fileDescriptor_user_2aac409c3ed42d0b = []byte{
// 562 bytes of a gzipped FileDescriptorProto // 796 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x4d, 0x6f, 0xd3, 0x40, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0xcb, 0x6e, 0xdb, 0x3a,
0x10, 0x95, 0xed, 0x24, 0x8d, 0x27, 0x6a, 0x92, 0xae, 0x0a, 0xac, 0x22, 0x84, 0x22, 0x8b, 0x43, 0x10, 0x85, 0xfc, 0x8a, 0x35, 0x46, 0xec, 0x84, 0xc8, 0x83, 0xf0, 0xcd, 0x0d, 0x7c, 0x89, 0x8b,
0x4e, 0x01, 0x85, 0x1b, 0x3d, 0x41, 0x22, 0xaa, 0x88, 0xa2, 0x4a, 0x96, 0x7c, 0xe1, 0x84, 0xd3, 0xc2, 0x9b, 0xa6, 0x45, 0xba, 0x6b, 0x56, 0xad, 0xdd, 0x1a, 0x46, 0x12, 0x18, 0x55, 0xe1, 0x4d,
0x9d, 0xa6, 0x2b, 0x1c, 0xaf, 0xb1, 0x37, 0x52, 0x8f, 0xfc, 0x24, 0xfe, 0x1a, 0xff, 0x00, 0xed, 0x57, 0x55, 0xac, 0x89, 0x23, 0xd4, 0x16, 0x55, 0x49, 0x0e, 0x02, 0xf4, 0x03, 0xba, 0x2e, 0xba,
0x38, 0x4e, 0xfc, 0x55, 0x0e, 0x70, 0xb1, 0x76, 0xde, 0xae, 0xdf, 0xdb, 0x37, 0x33, 0x3b, 0x30, 0xe8, 0x6f, 0xf4, 0xd7, 0xfa, 0x07, 0x05, 0x49, 0xcb, 0xa2, 0x1e, 0x76, 0x82, 0xb6, 0x40, 0x37,
0xda, 0x67, 0x98, 0xbe, 0x31, 0x9f, 0x79, 0x92, 0x2a, 0xad, 0x58, 0xc7, 0xac, 0xbd, 0x4f, 0x00, 0x02, 0xe7, 0x90, 0x3c, 0xc3, 0x33, 0x33, 0xe4, 0x08, 0x5a, 0x8b, 0x10, 0x83, 0x27, 0xe2, 0x73,
0x4b, 0xb5, 0xdb, 0xa9, 0xd8, 0xc7, 0x2c, 0x61, 0x2f, 0xc1, 0xc5, 0x34, 0x55, 0xe9, 0x52, 0x09, 0xe2, 0x07, 0x3c, 0xe2, 0xa4, 0x22, 0xc6, 0xec, 0x35, 0x40, 0x8f, 0xcf, 0xe7, 0xdc, 0xb3, 0x30,
0xe4, 0xd6, 0xd4, 0x9a, 0x75, 0xfd, 0x13, 0xc0, 0x26, 0xd0, 0xa7, 0xe0, 0x4b, 0xb6, 0xe5, 0xf6, 0xf4, 0xc9, 0x11, 0x98, 0x18, 0x04, 0x3c, 0xe8, 0x71, 0x07, 0xa9, 0xd1, 0x31, 0xba, 0x55, 0x2b,
0xd4, 0x9a, 0xb9, 0xfe, 0x31, 0xf6, 0x24, 0x8c, 0x56, 0x18, 0xa1, 0xc6, 0x20, 0xc3, 0x34, 0x23, 0x01, 0x48, 0x1b, 0xea, 0xd2, 0xb8, 0x0c, 0xa7, 0xb4, 0xd4, 0x31, 0xba, 0xa6, 0xb5, 0xb2, 0x99,
0xb2, 0xb7, 0x00, 0x77, 0x47, 0x6a, 0x62, 0x1b, 0x2c, 0xc6, 0x73, 0xba, 0xc1, 0x49, 0xd2, 0x2f, 0x0b, 0xad, 0x3e, 0xce, 0x30, 0xc2, 0x71, 0x88, 0x41, 0x28, 0xc9, 0x9e, 0x02, 0x4c, 0x56, 0xd4,
0x9d, 0x61, 0xaf, 0xe1, 0xfc, 0x3e, 0x94, 0x11, 0x8a, 0x40, 0x8a, 0x1b, 0x99, 0x69, 0x6e, 0x4f, 0x92, 0xad, 0x71, 0xba, 0x73, 0x22, 0x4f, 0x90, 0xb8, 0xb4, 0xb4, 0x35, 0xe4, 0x7f, 0xd8, 0xbe,
0x9d, 0x99, 0xeb, 0x57, 0x41, 0x2f, 0x86, 0x61, 0x45, 0xea, 0x87, 0xf9, 0x4f, 0xe4, 0x48, 0xf5, 0xb6, 0xdd, 0x19, 0x3a, 0x63, 0xd7, 0xb9, 0x70, 0xc3, 0x88, 0x96, 0x3a, 0xe5, 0xae, 0x69, 0xa5,
0xbf, 0x0a, 0xc8, 0x2e, 0xa1, 0xab, 0xd5, 0x77, 0x8c, 0xb9, 0x43, 0x77, 0xcf, 0x03, 0x36, 0x85, 0x41, 0xe6, 0x41, 0x33, 0xe5, 0xea, 0xa3, 0xd8, 0xe7, 0x28, 0x24, 0xbd, 0x2f, 0x05, 0x92, 0x3d,
0xc1, 0x6d, 0x82, 0x69, 0xa8, 0xa5, 0x8a, 0xd7, 0x2b, 0xde, 0xa1, 0xbd, 0x32, 0xe4, 0x7d, 0x86, 0xa8, 0x46, 0xfc, 0x03, 0x7a, 0xb4, 0x2c, 0xcf, 0xae, 0x0c, 0xd2, 0x81, 0xc6, 0xc8, 0xc7, 0xc0,
0x8b, 0x6b, 0xd4, 0x1f, 0xa2, 0x88, 0xf4, 0x02, 0x29, 0x8c, 0xe4, 0x91, 0xcc, 0xae, 0x91, 0xa9, 0x8e, 0x5c, 0xee, 0x0d, 0xfb, 0xb4, 0x22, 0xe7, 0x74, 0x88, 0x9d, 0xc3, 0xee, 0x00, 0xa3, 0x17,
0x12, 0x59, 0x2e, 0x54, 0x86, 0xbc, 0x6f, 0xc0, 0xea, 0x64, 0xff, 0x94, 0x2a, 0x0e, 0x67, 0xfb, 0xb3, 0x99, 0xf4, 0x37, 0x76, 0x1d, 0xe1, 0x72, 0x45, 0x56, 0xca, 0x90, 0x71, 0x8d, 0x4c, 0x39,
0x8a, 0xd9, 0x22, 0xf4, 0x1e, 0x60, 0x78, 0x8d, 0xda, 0xd0, 0xaf, 0xe3, 0x7b, 0x65, 0xee, 0xfa, 0xd2, 0x21, 0xf6, 0x1e, 0x48, 0x96, 0xec, 0x97, 0x42, 0x45, 0x61, 0x6b, 0x91, 0x12, 0x1b, 0x9b,
0x0a, 0xc0, 0x50, 0xad, 0x57, 0x74, 0xdc, 0xa2, 0xe3, 0x25, 0xe4, 0x69, 0x2f, 0xb7, 0x4d, 0x2f, 0xec, 0x06, 0x9a, 0x03, 0x8c, 0x04, 0xfd, 0xd0, 0xbb, 0xe6, 0xe2, 0xac, 0xc7, 0x00, 0x82, 0x6a,
0xe5, 0xc4, 0x28, 0x18, 0x55, 0x94, 0xfe, 0xa7, 0x81, 0x98, 0x07, 0x9d, 0x55, 0xa8, 0x43, 0xee, 0xd8, 0x97, 0xcb, 0x0d, 0xb9, 0x5c, 0x43, 0xd6, 0x6b, 0x19, 0xe5, 0xb5, 0xe8, 0x81, 0xe1, 0xd0,
0x4c, 0x9d, 0xd9, 0x60, 0x31, 0xcc, 0xcd, 0x1f, 0xb9, 0x69, 0xcf, 0xfb, 0x65, 0x41, 0xbf, 0x80, 0x4a, 0x79, 0xfa, 0x9d, 0x02, 0x22, 0x0c, 0x2a, 0x7d, 0x3b, 0xb2, 0x69, 0xb9, 0x53, 0xee, 0x36,
0xd8, 0x18, 0x9c, 0xbd, 0x14, 0x24, 0xe2, 0xfa, 0x66, 0xc9, 0x18, 0x74, 0xe2, 0x70, 0x87, 0x07, 0x4e, 0x9b, 0x4a, 0xfc, 0x8a, 0x5b, 0xce, 0xb1, 0xef, 0x06, 0xd4, 0x63, 0x88, 0xec, 0x40, 0x79,
0x6a, 0x5a, 0x1b, 0x4c, 0xde, 0xa9, 0xa2, 0xe6, 0xb4, 0x66, 0xcf, 0xa1, 0xb7, 0xc5, 0x58, 0x60, 0xe1, 0x3a, 0xd2, 0x89, 0x69, 0x89, 0x21, 0x21, 0x50, 0xf1, 0xec, 0x39, 0x2e, 0xa9, 0xe5, 0x58,
0x4a, 0xd5, 0xee, 0xfa, 0x87, 0xc8, 0xe0, 0x3b, 0xb5, 0x91, 0x11, 0xf2, 0x2e, 0x9d, 0x3e, 0x44, 0x60, 0xee, 0x84, 0xc7, 0x39, 0x97, 0x63, 0x72, 0x00, 0xb5, 0x29, 0x7a, 0x0e, 0x06, 0x32, 0xdb,
0x26, 0x3f, 0x1b, 0x99, 0xea, 0x07, 0xde, 0xcb, 0xf3, 0x43, 0x81, 0x41, 0x71, 0x17, 0xca, 0x88, 0x55, 0x6b, 0x69, 0x09, 0x7c, 0xce, 0xaf, 0xdc, 0x19, 0xd2, 0xaa, 0x5c, 0xbd, 0xb4, 0x44, 0x7c,
0x9f, 0xe5, 0x28, 0x05, 0x6c, 0x08, 0x36, 0x3e, 0xf2, 0x3e, 0x41, 0x36, 0x3e, 0x7a, 0x4b, 0x70, 0xae, 0xdc, 0x20, 0xba, 0xa1, 0x35, 0x15, 0x1f, 0x69, 0x08, 0x14, 0xe7, 0xb6, 0x3b, 0xa3, 0x5b,
0x6f, 0xd4, 0x56, 0xed, 0xb5, 0x29, 0x44, 0x2d, 0xa5, 0x56, 0x23, 0xa5, 0xed, 0xa5, 0xf0, 0x7e, 0x0a, 0x95, 0x06, 0x69, 0x42, 0x09, 0xef, 0x68, 0x5d, 0x42, 0x25, 0xbc, 0x63, 0x3d, 0x30, 0x2f,
0x5b, 0x70, 0x11, 0x24, 0x22, 0xcc, 0x5b, 0xbe, 0x28, 0x6b, 0x61, 0xcd, 0x2a, 0x59, 0x6b, 0x4b, 0xf8, 0x94, 0x2f, 0x22, 0x91, 0x88, 0x4c, 0x48, 0x8d, 0x5c, 0x48, 0x8b, 0x53, 0xc1, 0x7e, 0x18,
0xc1, 0xc9, 0xae, 0xf3, 0x84, 0xdd, 0x4e, 0xbb, 0xdd, 0x6e, 0xab, 0xdd, 0x5e, 0xd3, 0xee, 0x59, 0xb0, 0x3b, 0xf6, 0x1d, 0x5b, 0x95, 0x7c, 0x9c, 0xd6, 0x58, 0x9a, 0xa1, 0x49, 0x2b, 0x0a, 0x41,
0x61, 0xf7, 0x74, 0xff, 0xfe, 0x5f, 0x5a, 0xc9, 0x6d, 0xfa, 0x1e, 0x83, 0x13, 0x48, 0xc1, 0x21, 0x22, 0xb7, 0xbc, 0x46, 0x6e, 0xa5, 0x58, 0x6e, 0xb5, 0x50, 0x6e, 0x2d, 0x2f, 0x77, 0x2b, 0x96,
0x2f, 0x66, 0x20, 0xc5, 0xe2, 0xa7, 0x0d, 0x34, 0xa1, 0xd8, 0x7b, 0x18, 0x6c, 0x4f, 0x5d, 0xc6, 0x9b, 0x9c, 0xbf, 0xbe, 0xa1, 0x94, 0xcc, 0xbc, 0xee, 0x1d, 0x28, 0x8f, 0x5d, 0x87, 0x82, 0x4a,
0x2e, 0xf3, 0xce, 0xa8, 0xb6, 0xf8, 0xe4, 0x59, 0x0b, 0x9a, 0x25, 0xec, 0x0a, 0x86, 0xd5, 0xbc, 0xe6, 0xd8, 0x75, 0xd8, 0x67, 0x03, 0x0e, 0xdf, 0x62, 0x64, 0xe1, 0x04, 0xdd, 0x5b, 0xbc, 0xc4,
0xb1, 0x17, 0x87, 0xc6, 0xaa, 0x67, 0x73, 0xd2, 0x78, 0x6e, 0x46, 0xb8, 0x34, 0x67, 0x0a, 0xe1, 0x30, 0xb4, 0xa7, 0x38, 0xf2, 0x65, 0x1c, 0x45, 0xea, 0x87, 0x49, 0xea, 0x87, 0x8e, 0x40, 0xb8,
0xea, 0xe8, 0x29, 0x84, 0xeb, 0xb3, 0x6f, 0x49, 0x8f, 0xb0, 0xf4, 0xcc, 0x0b, 0xe1, 0xc6, 0x24, 0x1f, 0x49, 0xd9, 0x55, 0x4b, 0x0c, 0xc9, 0x23, 0x68, 0x4e, 0xb8, 0x77, 0x8b, 0x41, 0xa8, 0x7c,
0x99, 0xf0, 0xf6, 0x8d, 0x2c, 0xf9, 0x78, 0xfe, 0x75, 0x30, 0xa7, 0x89, 0x7d, 0x65, 0x3e, 0x9b, 0x38, 0xb2, 0xb2, 0x4c, 0x2b, 0x83, 0x66, 0xaf, 0x6c, 0x25, 0x7f, 0x65, 0x3f, 0x01, 0x2d, 0x3e,
0x1e, 0xcd, 0xed, 0x77, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x30, 0xbd, 0x59, 0x5b, 0xca, 0x05, 0x88, 0xba, 0x86, 0x18, 0xe8, 0xd5, 0x1e, 0x9b, 0x22, 0xba, 0x18, 0x68, 0x95, 0xbe, 0xb4, 0xc8,
0x00, 0x00, 0x63, 0x30, 0xb9, 0xdc, 0xbc, 0x98, 0x45, 0xcb, 0x62, 0x6f, 0xa9, 0x62, 0x1f, 0xc5, 0xb0, 0x95,
0xac, 0x60, 0x0b, 0x38, 0x1c, 0x3c, 0x38, 0x0a, 0x79, 0xcd, 0xa5, 0x87, 0x68, 0x2e, 0x78, 0xa6,
0xce, 0xc1, 0x5c, 0x1d, 0xa7, 0x80, 0x56, 0xf9, 0xcc, 0xd2, 0x1e, 0x40, 0x2d, 0x50, 0xba, 0x54,
0x1e, 0x96, 0x16, 0xfb, 0x6a, 0x00, 0x1d, 0xfc, 0xb9, 0x08, 0xbe, 0x82, 0x7d, 0xdd, 0xf1, 0xe8,
0xbe, 0x68, 0x16, 0xaf, 0x66, 0x6f, 0xe0, 0x1f, 0xf5, 0x12, 0xf7, 0xb4, 0xe9, 0xcb, 0x70, 0xba,
0x36, 0xba, 0x99, 0xa8, 0x95, 0xf2, 0x51, 0xfb, 0x66, 0xc0, 0xd1, 0x7a, 0xce, 0xbf, 0x28, 0xf6,
0xf4, 0x4b, 0x05, 0x64, 0xbf, 0x27, 0xcf, 0xa1, 0x31, 0x4d, 0xde, 0x6c, 0xb2, 0xa7, 0xf6, 0xa7,
0x1b, 0x46, 0x7b, 0xbf, 0x00, 0x0d, 0x7d, 0x72, 0x06, 0xcd, 0xf4, 0x2b, 0x44, 0x0e, 0x97, 0xcf,
0x74, 0xf6, 0x6d, 0x6a, 0xe7, 0x9a, 0x97, 0x70, 0xac, 0x75, 0xed, 0xd8, 0x71, 0xba, 0x91, 0xc7,
0x8e, 0xb3, 0x7f, 0x12, 0x3d, 0xd9, 0xd2, 0xb4, 0xa6, 0x19, 0x3b, 0xce, 0xf5, 0xe5, 0x36, 0x2d,
0x9e, 0x08, 0x7d, 0x32, 0x86, 0xbd, 0xa2, 0x6b, 0x4c, 0xfe, 0x55, 0x3b, 0xd6, 0xbc, 0x35, 0xed,
0xe3, 0x4d, 0xd3, 0x8a, 0x76, 0xb0, 0x81, 0x76, 0xb0, 0x99, 0x76, 0xed, 0xb5, 0xb0, 0xe5, 0x95,
0x29, 0xac, 0x24, 0xf2, 0x9f, 0xae, 0xb1, 0xb0, 0x7a, 0xdb, 0xec, 0xbe, 0x25, 0xa1, 0xff, 0x72,
0xfb, 0x5d, 0xe3, 0x44, 0xfe, 0x10, 0x9e, 0x89, 0xcf, 0x55, 0x4d, 0xfe, 0x16, 0x3e, 0xfb, 0x19,
0x00, 0x00, 0xff, 0xff, 0xac, 0xcf, 0xd3, 0x1b, 0x29, 0x0a, 0x00, 0x00,
} }

@ -65,11 +65,55 @@ message UpdateUserInfoReq{
string Uid = 10; string Uid = 10;
} }
message SetReceiveMessageOptReq{
string uId = 1;
int32 opt = 2;
repeated string conversationId = 3;
string operationID = 4;
}
message SetReceiveMessageOptResp{
int32 errCode = 1;
string errMsg = 2;
repeated OptResult optResult = 3;
}
message GetReceiveMessageOptReq{
string uId = 1;
repeated string conversationId = 2;
string operationID = 3;
}
message OptResult{
string conversationId = 1;
int32 result = 2; //-1: failed; 0:default; 1: not receive ; 2: not jpush
}
message GetReceiveMessageOptResp{
int32 errCode = 1;
string errMsg = 2;
repeated OptResult conversationOptResult = 3;
}
message GetAllConversationMsgOptReq{
string uId = 1;
string operationID = 2;
}
message GetAllConversationMsgOptResp{
int32 errCode = 1;
string errMsg = 2;
repeated OptResult conversationOptResult = 3;
}
service user { service user {
rpc getUserInfo(GetUserInfoReq) returns(GetUserInfoResp); rpc getUserInfo(GetUserInfoReq) returns(GetUserInfoResp);
rpc UpdateUserInfo(UpdateUserInfoReq) returns(CommonResp); rpc UpdateUserInfo(UpdateUserInfoReq) returns(CommonResp);
rpc DeleteUsers(DeleteUsersReq)returns(DeleteUsersResp); rpc DeleteUsers(DeleteUsersReq)returns(DeleteUsersResp);
rpc GetAllUsersUid(GetAllUsersUidReq)returns(GetAllUsersUidResp); rpc GetAllUsersUid(GetAllUsersUidReq)returns(GetAllUsersUidResp);
rpc SetReceiveMessageOpt(SetReceiveMessageOptReq)returns(SetReceiveMessageOptResp);
rpc GetReceiveMessageOpt(GetReceiveMessageOptReq)returns(GetReceiveMessageOptResp);
rpc GetAllConversationMsgOpt(GetAllConversationMsgOptReq)returns(GetAllConversationMsgOptResp);
} }

@ -111,13 +111,16 @@ func MapIntToJsonString(param map[string]int32) string {
dataString := string(dataType) dataString := string(dataType)
return dataString return dataString
} }
func JsonStringToMap(str string) (tempMap map[string]interface{}) { func JsonStringToMap(str string) (tempMap map[string]int32) {
_ = json.Unmarshal([]byte(str), &tempMap) _ = json.Unmarshal([]byte(str), &tempMap)
return tempMap return tempMap
} }
func GetSwitchFromOptions(Options map[string]interface{}, key string) (result bool) { func GetSwitchFromOptions(Options map[string]int32, key string) (result bool) {
if flag, ok := Options[key]; !ok || flag == 1 { if flag, ok := Options[key]; !ok || flag == 1 {
return true return true
} }
return false return false
} }
func SetSwitchFromOptions(Options map[string]int32, key string, value int32) {
Options[key] = value
}

@ -7,6 +7,7 @@
package utils package utils
import ( import (
"Open_IM/pkg/common/constant"
"encoding/json" "encoding/json"
"math/rand" "math/rand"
"strconv" "strconv"
@ -63,6 +64,15 @@ func GetMsgID(sendID string) string {
t := int64ToString(GetCurrentTimestampByNano()) t := int64ToString(GetCurrentTimestampByNano())
return Md5(t + sendID + int64ToString(rand.Int63n(GetCurrentTimestampByNano()))) return Md5(t + sendID + int64ToString(rand.Int63n(GetCurrentTimestampByNano())))
} }
func GetConversationIDBySessionType(sourceID string, sessionType int) string {
switch sessionType {
case constant.SingleChatType:
return "single_" + sourceID
case constant.GroupChatType:
return "group_" + sourceID
}
return ""
}
func int64ToString(i int64) string { func int64ToString(i int64) string {
return strconv.FormatInt(i, 10) return strconv.FormatInt(i, 10)
} }

@ -0,0 +1,52 @@
package utils
import (
"fmt"
"math/rand"
"reflect"
"strconv"
"time"
)
// copy a by b b->a
func CopyStructFields(a interface{}, b interface{}, fields ...string) (err error) {
at := reflect.TypeOf(a)
av := reflect.ValueOf(a)
bt := reflect.TypeOf(b)
bv := reflect.ValueOf(b)
if at.Kind() != reflect.Ptr {
err = fmt.Errorf("a must be a struct pointer")
return err
}
av = reflect.ValueOf(av.Interface())
_fields := make([]string, 0)
if len(fields) > 0 {
_fields = fields
} else {
for i := 0; i < bv.NumField(); i++ {
_fields = append(_fields, bt.Field(i).Name)
}
}
if len(_fields) == 0 {
err = fmt.Errorf("no fields to copy")
return err
}
for i := 0; i < len(_fields); i++ {
name := _fields[i]
f := av.Elem().FieldByName(name)
bValue := bv.FieldByName(name)
if f.IsValid() && f.Kind() == bValue.Kind() {
f.Set(bValue)
}
}
return nil
}
func OperationIDGenerator() string {
return strconv.FormatInt(time.Now().UnixNano()+int64(rand.Uint32()), 10)
}
Loading…
Cancel
Save