diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 94cb88831..c99094c83 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -163,6 +163,11 @@ func main() { chatGroup.POST("/batch_send_msg", manage.ManagementBatchSendMsg) chatGroup.POST("/check_msg_is_send_success", manage.CheckMsgIsSendSuccess) chatGroup.POST("/set_msg_min_seq", apiChat.SetMsgMinSeq) + + chatGroup.POST("/set_message_reaction_extensions", apiChat.SetMessageReactionExtensions) + chatGroup.POST("/get_message_list_reaction_extensions", apiChat.GetMessageListReactionExtensions) + chatGroup.POST("/add_message_reaction_extensions", apiChat.AddMessageReactionExtensions) + chatGroup.POST("/delete_message_reaction_extensions", apiChat.DeleteMessageReactionExtensions) } //Conversation conversationGroup := r.Group("/conversation") @@ -232,7 +237,7 @@ func main() { if config.Config.Api.ListenIP != "" { address = config.Config.Api.ListenIP + ":" + strconv.Itoa(*ginPort) } - fmt.Println("start api server, address: ", address, "OpenIM version: ", constant.CurrentVersion, "\n") + fmt.Println("start api server, address: ", address, ", OpenIM version: ", constant.CurrentVersion) err := r.Run(address) if err != nil { log.Error("", "api run failed ", address, err.Error()) diff --git a/cmd/open_im_cms_api/main.go b/cmd/open_im_cms_api/main.go index 94c662b0b..0e42781e1 100644 --- a/cmd/open_im_cms_api/main.go +++ b/cmd/open_im_cms_api/main.go @@ -25,6 +25,6 @@ func main() { address = config.Config.Api.ListenIP + ":" + strconv.Itoa(*ginPort) } address = config.Config.CmsApi.ListenIP + ":" + strconv.Itoa(*ginPort) - fmt.Println("start cms api server, address: ", address, "OpenIM version: ", constant.CurrentVersion, "\n") + fmt.Println("start cms api server, address: ", address, ", OpenIM version: ", constant.CurrentVersion, "\n") router.Run(address) } diff --git a/cmd/open_im_cron_task/main.go b/cmd/open_im_cron_task/main.go index 1e7396d61..8428f0b56 100644 --- a/cmd/open_im_cron_task/main.go +++ b/cmd/open_im_cron_task/main.go @@ -2,10 +2,15 @@ package main import ( "Open_IM/internal/cron_task" + "flag" "fmt" + "time" ) func main() { - fmt.Println("start cronTask") - cronTask.StartCronTask() + var userID = flag.String("userID", "", "userID to clear msg and reset seq") + var workingGroupID = flag.String("workingGroupID", "", "workingGroupID to clear msg and reset seq") + flag.Parse() + fmt.Println(time.Now(), "start cronTask", *userID, *workingGroupID) + cronTask.StartCronTask(*userID, *workingGroupID) } diff --git a/cmd/open_im_demo/main.go b/cmd/open_im_demo/main.go index 9d8152218..56d76a7b7 100644 --- a/cmd/open_im_demo/main.go +++ b/cmd/open_im_demo/main.go @@ -70,7 +70,7 @@ func main() { address = config.Config.Api.ListenIP + ":" + strconv.Itoa(*ginPort) } address = config.Config.CmsApi.ListenIP + ":" + strconv.Itoa(*ginPort) - fmt.Println("start demo api server address: ", address, "OpenIM version: ", constant.CurrentVersion, "\n") + fmt.Println("start demo api server address: ", address, ", OpenIM version: ", constant.CurrentVersion, "\n") go register.OnboardingProcessRoutine() go register.ImportFriendRoutine() err := r.Run(address) diff --git a/cmd/open_im_msg_gateway/main.go b/cmd/open_im_msg_gateway/main.go index 44f55ce19..0eb8adb1a 100644 --- a/cmd/open_im_msg_gateway/main.go +++ b/cmd/open_im_msg_gateway/main.go @@ -21,7 +21,7 @@ func main() { flag.Parse() var wg sync.WaitGroup wg.Add(1) - fmt.Println("start rpc/msg_gateway server, port: ", *rpcPort, *wsPort, *prometheusPort, "OpenIM version: ", constant.CurrentVersion, "\n") + fmt.Println("start rpc/msg_gateway server, port: ", *rpcPort, *wsPort, *prometheusPort, ", OpenIM version: ", constant.CurrentVersion, "\n") gate.Init(*rpcPort, *wsPort) gate.Run(*prometheusPort) wg.Wait() diff --git a/cmd/open_im_msg_transfer/main.go b/cmd/open_im_msg_transfer/main.go index b11fa5a1a..969b76119 100644 --- a/cmd/open_im_msg_transfer/main.go +++ b/cmd/open_im_msg_transfer/main.go @@ -17,7 +17,7 @@ func main() { flag.Parse() log.NewPrivateLog(constant.LogFileName) logic.Init() - fmt.Println("start msg_transfer server ", "OpenIM version: ", constant.CurrentVersion, "\n") + fmt.Println("start msg_transfer server ", ", OpenIM version: ", constant.CurrentVersion, "\n") logic.Run(*prometheusPort) wg.Wait() } diff --git a/cmd/open_im_push/main.go b/cmd/open_im_push/main.go index b14581690..8bcb23081 100644 --- a/cmd/open_im_push/main.go +++ b/cmd/open_im_push/main.go @@ -18,7 +18,7 @@ func main() { var wg sync.WaitGroup wg.Add(1) log.NewPrivateLog(constant.LogFileName) - fmt.Println("start push rpc server, port: ", *rpcPort, "OpenIM version: ", constant.CurrentVersion, "\n") + fmt.Println("start push rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n") logic.Init(*rpcPort) logic.Run(*prometheusPort) wg.Wait() diff --git a/cmd/rpc/open_im_admin_cms/main.go b/cmd/rpc/open_im_admin_cms/main.go index f35b71300..d7f58dafd 100644 --- a/cmd/rpc/open_im_admin_cms/main.go +++ b/cmd/rpc/open_im_admin_cms/main.go @@ -14,7 +14,7 @@ func main() { rpcPort := flag.Int("port", defaultPorts[0], "rpc listening port") prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.AdminCmsPrometheusPort[0], "adminCMSPrometheusPort default listen port") flag.Parse() - fmt.Println("start cms rpc server, port: ", *rpcPort, "OpenIM version: ", constant.CurrentVersion, "\n") + fmt.Println("start cms rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n") rpcServer := rpcMessageCMS.NewAdminCMSServer(*rpcPort) go func() { err := promePkg.StartPromeSrv(*prometheusPort) diff --git a/cmd/rpc/open_im_auth/main.go b/cmd/rpc/open_im_auth/main.go index 56f2df0df..b9485454d 100644 --- a/cmd/rpc/open_im_auth/main.go +++ b/cmd/rpc/open_im_auth/main.go @@ -14,7 +14,7 @@ func main() { rpcPort := flag.Int("port", defaultPorts[0], "RpcToken default listen port 10800") prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.AuthPrometheusPort[0], "authPrometheusPort default listen port") flag.Parse() - fmt.Println("start auth rpc server, port: ", *rpcPort, "OpenIM version: ", constant.CurrentVersion, "\n") + fmt.Println("start auth rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n") rpcServer := rpcAuth.NewRpcAuthServer(*rpcPort) go func() { err := promePkg.StartPromeSrv(*prometheusPort) diff --git a/cmd/rpc/open_im_cache/main.go b/cmd/rpc/open_im_cache/main.go index 7df5d80f7..94fdabec3 100644 --- a/cmd/rpc/open_im_cache/main.go +++ b/cmd/rpc/open_im_cache/main.go @@ -15,7 +15,7 @@ func main() { rpcPort := flag.Int("port", defaultPorts[0], "RpcToken default listen port 10800") prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.CachePrometheusPort[0], "cachePrometheusPort default listen port") flag.Parse() - fmt.Println("start cache rpc server, port: ", *rpcPort, "OpenIM version: ", constant.CurrentVersion, "\n") + fmt.Println("start cache rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n") rpcServer := rpcCache.NewCacheServer(*rpcPort) go func() { err := promePkg.StartPromeSrv(*prometheusPort) diff --git a/cmd/rpc/open_im_conversation/main.go b/cmd/rpc/open_im_conversation/main.go index f3c746ade..f3aef03fc 100644 --- a/cmd/rpc/open_im_conversation/main.go +++ b/cmd/rpc/open_im_conversation/main.go @@ -14,7 +14,7 @@ func main() { rpcPort := flag.Int("port", defaultPorts[0], "RpcConversation default listen port 11300") prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.ConversationPrometheusPort[0], "conversationPrometheusPort default listen port") flag.Parse() - fmt.Println("start conversation rpc server, port: ", *rpcPort, "OpenIM version: ", constant.CurrentVersion, "\n") + fmt.Println("start conversation rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n") rpcServer := rpcConversation.NewRpcConversationServer(*rpcPort) go func() { err := promePkg.StartPromeSrv(*prometheusPort) diff --git a/cmd/rpc/open_im_friend/main.go b/cmd/rpc/open_im_friend/main.go index ae5ae0090..3b88d6964 100644 --- a/cmd/rpc/open_im_friend/main.go +++ b/cmd/rpc/open_im_friend/main.go @@ -14,7 +14,7 @@ func main() { rpcPort := flag.Int("port", defaultPorts[0], "get RpcFriendPort from cmd,default 12000 as port") prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.FriendPrometheusPort[0], "friendPrometheusPort default listen port") flag.Parse() - fmt.Println("start friend rpc server, port: ", *rpcPort, "OpenIM version: ", constant.CurrentVersion, "\n") + fmt.Println("start friend rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n") rpcServer := friend.NewFriendServer(*rpcPort) go func() { err := promePkg.StartPromeSrv(*prometheusPort) diff --git a/cmd/rpc/open_im_group/main.go b/cmd/rpc/open_im_group/main.go index 42b7f1f5c..8a5f26cfd 100644 --- a/cmd/rpc/open_im_group/main.go +++ b/cmd/rpc/open_im_group/main.go @@ -14,7 +14,7 @@ func main() { rpcPort := flag.Int("port", defaultPorts[0], "get RpcGroupPort from cmd,default 16000 as port") prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.GroupPrometheusPort[0], "groupPrometheusPort default listen port") flag.Parse() - fmt.Println("start group rpc server, port: ", *rpcPort, "OpenIM version: ", constant.CurrentVersion, "\n") + fmt.Println("start group rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n") rpcServer := group.NewGroupServer(*rpcPort) go func() { err := promePkg.StartPromeSrv(*prometheusPort) diff --git a/cmd/rpc/open_im_msg/main.go b/cmd/rpc/open_im_msg/main.go index a9d87a7ba..c9bcecf9c 100644 --- a/cmd/rpc/open_im_msg/main.go +++ b/cmd/rpc/open_im_msg/main.go @@ -14,7 +14,7 @@ func main() { rpcPort := flag.Int("port", defaultPorts[0], "rpc listening port") prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.MessagePrometheusPort[0], "msgPrometheusPort default listen port") flag.Parse() - fmt.Println("start msg rpc server, port: ", *rpcPort, "OpenIM version: ", constant.CurrentVersion, "\n") + fmt.Println("start msg rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n") rpcServer := msg.NewRpcChatServer(*rpcPort) go func() { err := promePkg.StartPromeSrv(*prometheusPort) diff --git a/cmd/rpc/open_im_office/main.go b/cmd/rpc/open_im_office/main.go index 0af5444d6..a22bc4c97 100644 --- a/cmd/rpc/open_im_office/main.go +++ b/cmd/rpc/open_im_office/main.go @@ -14,7 +14,7 @@ func main() { rpcPort := flag.Int("port", defaultPorts[0], "rpc listening port") prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.OfficePrometheusPort[0], "officePrometheusPort default listen port") flag.Parse() - fmt.Println("start office rpc server, port: ", *rpcPort, "OpenIM version: ", constant.CurrentVersion, "\n") + fmt.Println("start office rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n") rpcServer := rpc.NewOfficeServer(*rpcPort) go func() { err := promePkg.StartPromeSrv(*prometheusPort) diff --git a/cmd/rpc/open_im_organization/main.go b/cmd/rpc/open_im_organization/main.go index 5dc27ccd5..1de97bfcb 100644 --- a/cmd/rpc/open_im_organization/main.go +++ b/cmd/rpc/open_im_organization/main.go @@ -14,7 +14,7 @@ func main() { rpcPort := flag.Int("port", defaultPorts[0], "get RpcOrganizationPort from cmd,default 11200 as port") prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.OrganizationPrometheusPort[0], "organizationPrometheusPort default listen port") flag.Parse() - fmt.Println("start organization rpc server, port: ", *rpcPort, "OpenIM version: ", constant.CurrentVersion, "\n") + fmt.Println("start organization rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n") rpcServer := organization.NewServer(*rpcPort) go func() { err := promePkg.StartPromeSrv(*prometheusPort) diff --git a/cmd/rpc/open_im_user/main.go b/cmd/rpc/open_im_user/main.go index 3e64ac805..f6191280f 100644 --- a/cmd/rpc/open_im_user/main.go +++ b/cmd/rpc/open_im_user/main.go @@ -14,7 +14,7 @@ func main() { rpcPort := flag.Int("port", defaultPorts[0], "rpc listening port") prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.UserPrometheusPort[0], "userPrometheusPort default listen port") flag.Parse() - fmt.Println("start user rpc server, port: ", *rpcPort, "OpenIM version: ", constant.CurrentVersion, "\n") + fmt.Println("start user rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n") rpcServer := user.NewUserServer(*rpcPort) go func() { err := promePkg.StartPromeSrv(*prometheusPort) diff --git a/config/config.yaml b/config/config.yaml index a25b39fd8..7980eaa6f 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -36,7 +36,7 @@ mongo: dbPassword: #mongo密码,建议先不设置 dbMaxPoolSize: 100 dbRetainChatRecords: 3650 #mongo保存离线消息时间(天),根据需求修改 - chatRecordsClearTime: "* * * * *" # 每天凌晨3点清除消息,该配置和linux定时任务一样, 清理操作建议设置在用户活跃少的时候 # 0 3 * * * + chatRecordsClearTime: "0 3 * * *" # 每天凌晨3点清除消息,该配置和linux定时任务一样, 清理操作建议设置在用户活跃少的时候 # 0 3 * * * redis: dbAddress: [ 127.0.0.1:16379 ] #redis地址 单机时,填写一个地址即可,使用redis集群时候,填写集群中多个节点地址(主从地址都可以填写,增加容灾能力),默认即可 @@ -62,12 +62,15 @@ kafka: ms2pschat: addr: [ 127.0.0.1:9092 ] #kafka配置,默认即可 topic: "ms2ps_chat" #消息push + msgtomodify: + addr: [ 127.0.0.1:9092 ] #kafka配置,默认即可 + topic: "msg_to_modify" consumergroupid: msgToTransfer: mongo msgToMongo: mongo_ex msgToMySql: mysql msgToPush: push - + msgToModify: modify #---------------Internal service configuration---------------------# @@ -341,6 +344,19 @@ callback: enable: false callbackTimeOut: 2 callbackFailedContinue: true # 回调超时是否继续 + callbackBeforeMemberJoinGroup: + enable: false + callbackTimeOut: 2 + callbackFailedContinue: true # 回调超时是否继续 + callbackBeforeSetGroupMemberInfo: + enable: false + callbackTimeOut: 2 + callbackFailedContinue: true # 回调超时是否继续 + callbackSetMessageReactionExtensions: + enable: false + callbackTimeOut: 2 + callbackFailedContinue: true # 回调超时是否继续 + notification: groupCreated: @@ -661,6 +677,19 @@ notification: defaultTips: tips: "Remove a blocked user" + friendInfoUpdated: + conversation: + reliabilityLevel: 2 + unreadCount: false + offlinePush: + switch: true + title: "friend info updated" + desc: "friend info updated" + ext: "friend info updated" + defaultTips: + tips: "friend info updated" + + #####################user######################### userInfoUpdated: conversation: diff --git a/docker-compose.yaml b/docker-compose.yaml index 4188bbdf8..37d704349 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -115,7 +115,7 @@ services: open_im_server: - image: openim/open_im_server:v2.3.6 + image: openim/open_im_server:v2.3.7 container_name: open_im_server volumes: - ./logs:/Open-IM-Server/logs @@ -139,7 +139,7 @@ services: max-file: "2" open_im_enterprise: - image: openim/open_im_enterprise:v1.0.2 + image: openim/open_im_enterprise:v1.0.3 container_name: open_im_enterprise volumes: - ./logs:/Open-IM-Enterprise/logs diff --git a/go.mod b/go.mod index 3c231e7ff..330008db8 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,6 @@ require ( github.com/gorilla/websocket v1.4.2 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 github.com/jinzhu/copier v0.3.4 - github.com/jinzhu/gorm v1.9.16 github.com/jonboulle/clockwork v0.2.2 // indirect github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible github.com/lestrrat-go/strftime v1.0.4 // indirect diff --git a/go.sum b/go.sum index d2621af33..c3a219fcb 100644 --- a/go.sum +++ b/go.sum @@ -368,8 +368,6 @@ github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZ github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= github.com/jinzhu/copier v0.3.4 h1:mfU6jI9PtCeUjkjQ322dlff9ELjGDu975C2p/nrubVI= github.com/jinzhu/copier v0.3.4/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= -github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o= -github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= diff --git a/internal/api/auth/auth.go b/internal/api/auth/auth.go index b50e9e2ae..ec2503675 100644 --- a/internal/api/auth/auth.go +++ b/internal/api/auth/auth.go @@ -199,7 +199,6 @@ func ForceLogout(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": errMsg}) return } - req := &rpc.ForceLogoutReq{} utils.CopyStructFields(req, ¶ms) diff --git a/internal/api/client_init/init_config.go b/internal/api/client_init/init_config.go index de08fc90c..2138603c4 100644 --- a/internal/api/client_init/init_config.go +++ b/internal/api/client_init/init_config.go @@ -9,7 +9,6 @@ import ( "net/http" "github.com/gin-gonic/gin" - "github.com/jinzhu/gorm" ) func SetClientInitConfig(c *gin.Context) { @@ -62,11 +61,10 @@ func GetClientInitConfig(c *gin.Context) { } config, err := imdb.GetClientInitConfig() if err != nil { - if !gorm.IsRecordNotFoundError(err) { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } + log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error()) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) + return + } resp.Data.DiscoverPageURL = config.DiscoverPageURL log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp ", resp) diff --git a/internal/api/manage/management_chat.go b/internal/api/manage/management_chat.go index a2254a70a..78e441d82 100644 --- a/internal/api/manage/management_chat.go +++ b/internal/api/manage/management_chat.go @@ -52,6 +52,10 @@ func newUserSendMsgReq(params *api.ManagementSendMsgReq) *pbChat.SendMsgReq { fallthrough case constant.File: fallthrough + case constant.CustomNotTriggerConversation: + fallthrough + case constant.CustomOnlineOnly: + fallthrough case constant.AdvancedRevoke: newContent = utils.StructToJsonString(params.Content) case constant.Revoke: diff --git a/internal/api/msg/extend_msg.go b/internal/api/msg/extend_msg.go new file mode 100644 index 000000000..b6920825d --- /dev/null +++ b/internal/api/msg/extend_msg.go @@ -0,0 +1,203 @@ +package msg + +import ( + api "Open_IM/pkg/base_info" + "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/log" + "Open_IM/pkg/common/token_verify" + "Open_IM/pkg/grpc-etcdv3/getcdv3" + rpc "Open_IM/pkg/proto/msg" + "Open_IM/pkg/utils" + "context" + "github.com/gin-gonic/gin" + "net/http" + "strings" +) + +func SetMessageReactionExtensions(c *gin.Context) { + var ( + req api.SetMessageReactionExtensionsCallbackReq + resp api.SetMessageReactionExtensionsCallbackResp + reqPb rpc.SetMessageReactionExtensionsReq + ) + + if err := c.BindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req) + + if err := utils.CopyStructFields(&reqPb, &req); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields", err.Error()) + } + var ok bool + var errInfo string + ok, reqPb.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + if !ok { + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + grpcConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, req.OperationID) + if grpcConn == nil { + errMsg := req.OperationID + " getcdv3.GetDefaultConn == nil" + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + msgClient := rpc.NewMsgClient(grpcConn) + respPb, err := msgClient.SetMessageReactionExtensions(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelMsgList failed", err.Error(), reqPb) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": constant.ErrServer.ErrCode, "errMsg": constant.ErrServer.ErrMsg + err.Error()}) + return + } + resp.ErrCode = respPb.ErrCode + resp.ErrMsg = respPb.ErrMsg + resp.Data.ResultKeyValue = respPb.Result + resp.Data.MsgFirstModifyTime = reqPb.MsgFirstModifyTime + resp.Data.IsReact = reqPb.IsReact + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp) + c.JSON(http.StatusOK, resp) + +} + +func GetMessageListReactionExtensions(c *gin.Context) { + var ( + req api.GetMessageListReactionExtensionsReq + resp api.GetMessageListReactionExtensionsResp + reqPb rpc.GetMessageListReactionExtensionsReq + ) + if err := c.BindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req) + + if err := utils.CopyStructFields(&reqPb, &req); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields", err.Error()) + } + var ok bool + var errInfo string + ok, reqPb.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + if !ok { + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + grpcConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, req.OperationID) + if grpcConn == nil { + errMsg := req.OperationID + " getcdv3.GetDefaultConn == nil" + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + msgClient := rpc.NewMsgClient(grpcConn) + respPb, err := msgClient.GetMessageListReactionExtensions(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelMsgList failed", err.Error(), reqPb) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": constant.ErrServer.ErrCode, "errMsg": constant.ErrServer.ErrMsg + err.Error()}) + return + } + resp.ErrCode = respPb.ErrCode + resp.ErrMsg = respPb.ErrMsg + resp.Data = respPb.SingleMessageResult + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp) + c.JSON(http.StatusOK, resp) +} + +func AddMessageReactionExtensions(c *gin.Context) { + var ( + req api.AddMessageReactionExtensionsReq + resp api.AddMessageReactionExtensionsResp + reqPb rpc.ModifyMessageReactionExtensionsReq + ) + if err := c.BindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req) + + if err := utils.CopyStructFields(&reqPb, &req); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields", err.Error()) + } + var ok bool + var errInfo string + ok, reqPb.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + if !ok { + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + grpcConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, req.OperationID) + if grpcConn == nil { + errMsg := req.OperationID + " getcdv3.GetDefaultConn == nil" + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + msgClient := rpc.NewMsgClient(grpcConn) + respPb, err := msgClient.AddMessageReactionExtensions(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelMsgList failed", err.Error(), reqPb) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": constant.ErrServer.ErrCode, "errMsg": constant.ErrServer.ErrMsg + err.Error()}) + return + } + resp.ErrCode = respPb.ErrCode + resp.ErrMsg = respPb.ErrMsg + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp) + c.JSON(http.StatusOK, resp) +} + +func DeleteMessageReactionExtensions(c *gin.Context) { + var ( + req api.DeleteMessageReactionExtensionsReq + resp api.DeleteMessageReactionExtensionsResp + reqPb rpc.DeleteMessageListReactionExtensionsReq + ) + if err := c.BindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req) + + if err := utils.CopyStructFields(&reqPb, &req); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields", err.Error()) + } + var ok bool + var errInfo string + ok, reqPb.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + if !ok { + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + grpcConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, req.OperationID) + if grpcConn == nil { + errMsg := req.OperationID + " getcdv3.GetDefaultConn == nil" + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + msgClient := rpc.NewMsgClient(grpcConn) + respPb, err := msgClient.DeleteMessageReactionExtensions(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelMsgList failed", err.Error(), reqPb) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": constant.ErrServer.ErrCode, "errMsg": constant.ErrServer.ErrMsg + err.Error()}) + return + } + resp.ErrCode = respPb.ErrCode + resp.ErrMsg = respPb.ErrMsg + resp.Data = respPb.Result + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp) + c.JSON(http.StatusOK, resp) +} diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 2c98502da..ca0e880aa 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -58,6 +58,40 @@ func init() { } } +func GetUserToken(c *gin.Context) { + var ( + req apiStruct.GetUserTokenRequest + resp apiStruct.GetUserTokenResponse + reqPb pbAdmin.GetUserTokenReq + respPb *pbAdmin.GetUserTokenResp + ) + if err := c.BindJSON(&req); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + reqPb.OperationID = req.OperationID + reqPb.UserID = req.UserID + reqPb.PlatformID = req.PlatFormID + etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAdminCMSName, reqPb.OperationID) + if etcdConn == nil { + errMsg := reqPb.OperationID + "getcdv3.GetDefaultConn == nil" + log.NewError(reqPb.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + client := pbAdmin.NewAdminCMSClient(etcdConn) + respPb, err := client.GetUserToken(context.Background(), &reqPb) + if err != nil { + log.NewError(reqPb.OperationID, utils.GetSelfFuncName(), "rpc failed", err.Error()) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) + return + } + resp.Token = respPb.Token + resp.ExpTime = respPb.ExpTime + c.JSON(http.StatusOK, gin.H{"errCode": respPb.CommonResp.ErrCode, "errMsg": respPb.CommonResp.ErrMsg, "data": resp}) +} + // register func AdminLogin(c *gin.Context) { var ( diff --git a/internal/cms_api/middleware/jwt_auth.go b/internal/cms_api/middleware/jwt_auth.go index 5ab3ffbbf..e546c0de1 100644 --- a/internal/cms_api/middleware/jwt_auth.go +++ b/internal/cms_api/middleware/jwt_auth.go @@ -1,6 +1,7 @@ package middleware import ( + "Open_IM/pkg/common/config" "Open_IM/pkg/common/log" "Open_IM/pkg/common/token_verify" "Open_IM/pkg/utils" @@ -20,6 +21,11 @@ func JWTAuth() gin.HandlerFunc { c.JSON(http.StatusOK, gin.H{"errCode": 400, "errMsg": errInfo}) return } else { + if !utils.IsContain(userID, config.Config.Manager.AppManagerUid) { + c.Abort() + c.JSON(http.StatusOK, gin.H{"errCode": 400, "errMsg": "user is not admin"}) + return + } log.NewInfo("0", utils.GetSelfFuncName(), "failed: ", errInfo) } } diff --git a/internal/cms_api/router.go b/internal/cms_api/router.go index af9137633..98aa8fce2 100644 --- a/internal/cms_api/router.go +++ b/internal/cms_api/router.go @@ -29,6 +29,8 @@ func NewGinRouter() *gin.Engine { { adminRouterGroup.POST("/login", admin.AdminLogin) adminRouterGroup.Use(middleware.JWTAuth()) + adminRouterGroup.POST("/get_user_token", admin.GetUserToken) + adminRouterGroup.POST("/add_user_register_add_friend_id", admin.AddUserRegisterAddFriendIDList) adminRouterGroup.POST("/reduce_user_register_reduce_friend_id", admin.ReduceUserRegisterAddFriendIDList) adminRouterGroup.POST("/get_user_register_reduce_friend_id_list", admin.GetUserRegisterAddFriendIDList) diff --git a/internal/cron_task/clear_msg.go b/internal/cron_task/clear_msg.go index 1db1c0b6c..08ef74cef 100644 --- a/internal/cron_task/clear_msg.go +++ b/internal/cron_task/clear_msg.go @@ -7,11 +7,12 @@ import ( "Open_IM/pkg/common/log" server_api_params "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" - goRedis "github.com/go-redis/redis/v8" - "github.com/golang/protobuf/proto" "math" "strconv" "strings" + + goRedis "github.com/go-redis/redis/v8" + "github.com/golang/protobuf/proto" ) const oldestList = 0 @@ -54,7 +55,7 @@ func DeleteMongoMsgAndResetRedisSeq(operationID, userID string) error { if minSeq == 0 { return nil } - log.NewDebug(operationID, utils.GetSelfFuncName(), "delMsgIDMap: ", delStruct, "minSeq", minSeq) + log.NewDebug(operationID, utils.GetSelfFuncName(), "delMsgIDStruct: ", delStruct, "minSeq", minSeq) err = db.DB.SetUserMinSeq(userID, minSeq) return utils.Wrap(err, "") } @@ -82,7 +83,7 @@ func (d *delMsgRecursionStruct) getSetMinSeq() uint32 { // index 0....19(del) 20...69 // seq 70 // set minSeq 21 -// recursion +// recursion 删除list并且返回设置的最小seq func deleteMongoMsg(operationID string, ID string, index int64, delStruct *delMsgRecursionStruct) (uint32, error) { // find from oldest list msgs, err := db.DB.GetUserMsgListByIndex(ID, index) @@ -105,49 +106,52 @@ func deleteMongoMsg(operationID string, ID string, index int64, delStruct *delMs if len(msgs.Msg) > db.GetSingleGocMsgNum() { log.NewWarn(operationID, utils.GetSelfFuncName(), "msgs too large", len(msgs.Msg), msgs.UID) } - for i, msg := range msgs.Msg { - // 找到列表中不需要删除的消息了, 表示为递归到最后一个块 - if utils.GetCurrentTimestampByMill() < msg.SendTime+(int64(config.Config.Mongo.DBRetainChatRecords)*24*60*60*1000) { - log.NewDebug(operationID, ID, "find uid", msgs.UID) - // 删除块失败 递归结束 返回0 - if err := delMongoMsgsPhysical(delStruct.delUidList); err != nil { - return 0, err + if msgs.Msg[len(msgs.Msg)-1].SendTime+(int64(config.Config.Mongo.DBRetainChatRecords)*24*60*60*1000) < utils.GetCurrentTimestampByMill() && msgListIsFull(msgs) { + delStruct.delUidList = append(delStruct.delUidList, msgs.UID) + lastMsgPb := &server_api_params.MsgData{} + err = proto.Unmarshal(msgs.Msg[len(msgs.Msg)-1].Msg, lastMsgPb) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), len(msgs.Msg)-1, msgs.UID) + return 0, utils.Wrap(err, "proto.Unmarshal failed") + } + delStruct.minSeq = lastMsgPb.Seq + 1 + log.NewDebug(operationID, utils.GetSelfFuncName(), msgs.UID, "add to delUidList", "minSeq", lastMsgPb.Seq+1) + } else { + var hasMarkDelFlag bool + for index, msg := range msgs.Msg { + if msg.SendTime == 0 { + continue } - // unMarshall失败 块删除成功 设置为最小seq msgPb := &server_api_params.MsgData{} - if err = proto.Unmarshal(msg.Msg, msgPb); err != nil { - return delStruct.getSetMinSeq(), utils.Wrap(err, "") + err = proto.Unmarshal(msg.Msg, msgPb) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), len(msgs.Msg)-1, msgs.UID) + return 0, utils.Wrap(err, "proto.Unmarshal failed") } - // 如果不是块中第一个,就把前面比他早插入的全部设置空 seq字段除外。 - if i > 0 { - err = db.DB.ReplaceMsgToBlankByIndex(msgs.UID, i-1) - if err != nil { - log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), msgs.UID, i) - return delStruct.getSetMinSeq(), utils.Wrap(err, "") + if utils.GetCurrentTimestampByMill() > msg.SendTime+(int64(config.Config.Mongo.DBRetainChatRecords)*24*60*60*1000) { + msgPb.Status = constant.MsgDeleted + bytes, _ := proto.Marshal(msgPb) + msgs.Msg[index].Msg = bytes + msgs.Msg[index].SendTime = 0 + hasMarkDelFlag = true + } else { + if err := delMongoMsgsPhysical(delStruct.delUidList); err != nil { + return 0, err } + if hasMarkDelFlag { + log.NewInfo(operationID, ID, "hasMarkDelFlag", "index:", index, "msgPb:", msgPb, msgs.UID) + if err := db.DB.UpdateOneMsgList(msgs); err != nil { + return delStruct.getSetMinSeq(), utils.Wrap(err, "") + } + } + return msgPb.Seq, nil } - // 递归结束 - return msgPb.Seq, nil } } - // 该列表中消息全部为老消息并且列表满了, 加入删除列表继续递归 - lastMsgPb := &server_api_params.MsgData{} - err = proto.Unmarshal(msgs.Msg[len(msgs.Msg)-1].Msg, lastMsgPb) - if err != nil { - log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), len(msgs.Msg)-1, msgs.UID) - return 0, utils.Wrap(err, "proto.Unmarshal failed") - } - delStruct.minSeq = lastMsgPb.Seq - if msgListIsFull(msgs) { - delStruct.delUidList = append(delStruct.delUidList, msgs.UID) - } - log.NewDebug(operationID, ID, "continue", delStruct) + log.NewDebug(operationID, ID, "continue to", delStruct) // 继续递归 index+1 seq, err := deleteMongoMsg(operationID, ID, index+1, delStruct) - if err != nil { - return seq, utils.Wrap(err, "deleteMongoMsg failed") - } - return seq, nil + return seq, utils.Wrap(err, "deleteMongoMsg failed") } func msgListIsFull(chat *db.UserChat) bool { @@ -184,17 +188,10 @@ func checkMaxSeqWithMongo(operationID, ID string, diffusionType int) error { if msg == nil { return nil } - var seqMongo uint32 - msgPb := &server_api_params.MsgData{} - err = proto.Unmarshal(msg.Msg, msgPb) - if err != nil { - return utils.Wrap(err, "") - } - seqMongo = msgPb.Seq - if math.Abs(float64(seqMongo-uint32(seqRedis))) > 10 { - log.NewWarn(operationID, utils.GetSelfFuncName(), seqMongo, seqRedis, "redis maxSeq is different with msg.Seq > 10", ID, diffusionType) + if math.Abs(float64(msg.Seq-uint32(seqRedis))) > 10 { + log.NewWarn(operationID, utils.GetSelfFuncName(), "seqMongo, seqRedis", msg.Seq, seqRedis, ID, "redis maxSeq is different with msg.Seq > 10", "status: ", msg.Status, msg.SendTime) } else { - log.NewInfo(operationID, utils.GetSelfFuncName(), diffusionType, ID, "seq and msg OK", seqMongo, seqRedis) + log.NewInfo(operationID, utils.GetSelfFuncName(), "seqMongo, seqRedis", msg.Seq, seqRedis, ID, "seq and msg OK", "status:", msg.Status, msg.SendTime) } return nil } diff --git a/internal/cron_task/clear_msg_test.go b/internal/cron_task/clear_msg_test.go index b1621c26d..465216ce9 100644 --- a/internal/cron_task/clear_msg_test.go +++ b/internal/cron_task/clear_msg_test.go @@ -2,33 +2,225 @@ package cronTask import ( "Open_IM/pkg/common/constant" - "Open_IM/pkg/common/log" + "Open_IM/pkg/common/db" + server_api_params "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" + "context" + "fmt" + "strconv" + + "github.com/go-redis/redis/v8" + "github.com/golang/protobuf/proto" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" + "gopkg.in/mgo.v2/bson" + "testing" + "time" ) +var ( + redisClient *redis.Client + mongoClient *mongo.Collection +) + +func GenUserChat(startSeq, stopSeq, delSeq, index uint32, userID string) *db.UserChat { + chat := &db.UserChat{UID: userID + ":" + strconv.Itoa(int(index))} + for i := startSeq; i <= stopSeq; i++ { + msg := server_api_params.MsgData{ + SendID: "sendID1", + RecvID: "recvID1", + GroupID: "", + ClientMsgID: "xxx", + ServerMsgID: "xxx", + SenderPlatformID: 1, + SenderNickname: "testNickName", + SenderFaceURL: "testFaceURL", + SessionType: 1, + MsgFrom: 100, + ContentType: 101, + Content: []byte("testFaceURL"), + Seq: uint32(i), + SendTime: time.Now().Unix(), + CreateTime: time.Now().Unix(), + Status: 1, + } + bytes, _ := proto.Marshal(&msg) + var sendTime int64 + if i <= delSeq { + sendTime = 10000 + } else { + sendTime = utils.GetCurrentTimestampByMill() + } + chat.Msg = append(chat.Msg, db.MsgInfo{SendTime: int64(sendTime), Msg: bytes}) + } + return chat +} + +func SetUserMaxSeq(userID string, seq int) error { + return redisClient.Set(context.Background(), "REDIS_USER_INCR_SEQ"+userID, seq, 0).Err() +} + +func GetUserMinSeq(userID string) (uint64, error) { + key := "REDIS_USER_MIN_SEQ:" + userID + seq, err := redisClient.Get(context.Background(), key).Result() + return uint64(utils.StringToInt(seq)), err +} + +func CreateChat(userChat *db.UserChat) error { + _, err := mongoClient.InsertOne(context.Background(), userChat) + return err +} + +func DelChat(uid string, index int) error { + _, err := mongoClient.DeleteOne(context.Background(), bson.M{"uid": uid + ":" + strconv.Itoa(index)}) + return err +} + func TestDeleteMongoMsgAndResetRedisSeq(t *testing.T) { operationID := getCronTaskOperationID() - testUserIDList := []string{"test_del_id1", "test_del_id2", "test_del_id3", "test_del_id4", "test_del_id5"} - for _, userID := range testUserIDList { - operationID = userID + "-" + operationID - if err := DeleteMongoMsgAndResetRedisSeq(operationID, userID); err != nil { - t.Error("checkMaxSeqWithMongo failed", userID) - } - if err := checkMaxSeqWithMongo(operationID, userID, constant.WriteDiffusion); err != nil { - t.Error("checkMaxSeqWithMongo failed", userID) - } + redisClient = redis.NewClient(&redis.Options{ + Addr: "127.0.0.1:16379", + Password: "openIM123", // no password set + DB: 0, // use default DB + }) + mongoUri := fmt.Sprintf("mongodb://%s:%s@%s/%s?maxPoolSize=%d&authSource=admin", + "root", "openIM123", "127.0.0.1:37017", + "openIM", 100) + client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(mongoUri)) + mongoClient = client.Database("openIM").Collection("msg") + testUID1 := "test_del_id1" + err = DelChat(testUID1, 0) + err = SetUserMaxSeq(testUID1, 600) + userChat := GenUserChat(1, 600, 200, 0, testUID1) + err = CreateChat(userChat) + if err := DeleteMongoMsgAndResetRedisSeq(operationID, testUID1); err != nil { + t.Error("checkMaxSeqWithMongo failed", testUID1) + } + if err := checkMaxSeqWithMongo(operationID, testUID1, constant.WriteDiffusion); err != nil { + t.Error("checkMaxSeqWithMongo failed", testUID1) + } + minSeq, err := GetUserMinSeq(testUID1) + if err != nil { + t.Error("err is not nil", testUID1, err.Error()) + } + if minSeq != 201 { + t.Error("test1 is not the same", "minSeq:", minSeq, "targetSeq", 201) } - testWorkingGroupIDList := []string{"test_del_id1", "test_del_id2", "test_del_id3", "test_del_id4", "test_del_id5"} - for _, groupID := range testWorkingGroupIDList { - operationID = groupID + "-" + operationID - log.NewDebug(operationID, utils.GetSelfFuncName(), "groupID:", groupID, "userIDList:", testUserIDList) - if err := ResetUserGroupMinSeq(operationID, groupID, testUserIDList); err != nil { - t.Error("checkMaxSeqWithMongo failed", groupID) - } - if err := checkMaxSeqWithMongo(operationID, groupID, constant.ReadDiffusion); err != nil { - t.Error("checkMaxSeqWithMongo failed", groupID) - } + testUID2 := "test_del_id2" + err = DelChat(testUID2, 0) + err = DelChat(testUID2, 1) + err = SetUserMaxSeq(testUID2, 7000) + userChat = GenUserChat(1, 4999, 5000, 0, testUID2) + userChat2 := GenUserChat(5000, 7000, 6000, 1, testUID2) + err = CreateChat(userChat) + err = CreateChat(userChat2) + + if err := DeleteMongoMsgAndResetRedisSeq(operationID, testUID2); err != nil { + t.Error("checkMaxSeqWithMongo failed", testUID2) + } + if err := checkMaxSeqWithMongo(operationID, testUID2, constant.WriteDiffusion); err != nil { + t.Error("checkMaxSeqWithMongo failed", testUID2) + } + minSeq, err = GetUserMinSeq(testUID2) + if err != nil { + t.Error("err is not nil", testUID2, err.Error()) + } + if minSeq != 6001 { + t.Error("test2 is not the same", "minSeq:", minSeq, "targetSeq", 6001) + } + + testUID3 := "test_del_id3" + err = DelChat(testUID3, 0) + err = SetUserMaxSeq(testUID3, 4999) + userChat = GenUserChat(1, 4999, 5000, 0, testUID3) + err = CreateChat(userChat) + if err := DeleteMongoMsgAndResetRedisSeq(operationID, testUID3); err != nil { + t.Error("checkMaxSeqWithMongo failed", testUID3) + } + if err := checkMaxSeqWithMongo(operationID, testUID3, constant.WriteDiffusion); err != nil { + t.Error("checkMaxSeqWithMongo failed", testUID3) + } + minSeq, err = GetUserMinSeq(testUID3) + if err != nil { + t.Error("err is not nil", testUID3, err.Error()) + } + if minSeq != 5000 { + t.Error("test3 is not the same", "minSeq:", minSeq, "targetSeq", 5000) + } + + testUID4 := "test_del_id4" + err = DelChat(testUID4, 0) + err = DelChat(testUID4, 1) + err = DelChat(testUID4, 2) + err = SetUserMaxSeq(testUID4, 12000) + userChat = GenUserChat(1, 4999, 5000, 0, testUID4) + userChat2 = GenUserChat(5000, 9999, 10000, 1, testUID4) + userChat3 := GenUserChat(10000, 12000, 11000, 2, testUID4) + err = CreateChat(userChat) + err = CreateChat(userChat2) + err = CreateChat(userChat3) + if err := DeleteMongoMsgAndResetRedisSeq(operationID, testUID4); err != nil { + t.Error("checkMaxSeqWithMongo failed", testUID4) + } + if err := checkMaxSeqWithMongo(operationID, testUID4, constant.WriteDiffusion); err != nil { + t.Error("checkMaxSeqWithMongo failed", testUID4) + } + minSeq, err = GetUserMinSeq(testUID4) + if err != nil { + t.Error("err is not nil", testUID4, err.Error()) + } + if minSeq != 11001 { + t.Error("test4 is not the same", "minSeq:", minSeq, "targetSeq", 11001) + } + + testUID5 := "test_del_id5" + err = DelChat(testUID5, 0) + err = DelChat(testUID5, 1) + err = SetUserMaxSeq(testUID5, 9999) + userChat = GenUserChat(1, 4999, 5000, 0, testUID5) + userChat2 = GenUserChat(5000, 9999, 10000, 1, testUID5) + err = CreateChat(userChat) + err = CreateChat(userChat2) + if err := DeleteMongoMsgAndResetRedisSeq(operationID, testUID5); err != nil { + t.Error("checkMaxSeqWithMongo failed", testUID4) + } + if err := checkMaxSeqWithMongo(operationID, testUID5, constant.WriteDiffusion); err != nil { + t.Error("checkMaxSeqWithMongo failed", testUID5) + } + minSeq, err = GetUserMinSeq(testUID5) + if err != nil { + t.Error("err is not nil", testUID5, err.Error()) + } + if minSeq != 10000 { + t.Error("test5 is not the same", "minSeq:", minSeq, "targetSeq", 10000) + } + + testUID6 := "test_del_id6" + err = DelChat(testUID5, 0) + err = DelChat(testUID5, 1) + err = DelChat(testUID5, 2) + err = DelChat(testUID5, 3) + userChat = GenUserChat(1, 4999, 5000, 0, testUID6) + userChat2 = GenUserChat(5000, 9999, 10000, 1, testUID6) + userChat3 = GenUserChat(10000, 14999, 13000, 2, testUID6) + userChat4 := GenUserChat(15000, 19999, 0, 3, testUID6) + err = CreateChat(userChat) + err = CreateChat(userChat2) + err = CreateChat(userChat3) + err = CreateChat(userChat4) + if err := DeleteMongoMsgAndResetRedisSeq(operationID, testUID6); err != nil { + t.Error("checkMaxSeqWithMongo failed", testUID6) + } + if err := checkMaxSeqWithMongo(operationID, testUID6, constant.WriteDiffusion); err != nil { + t.Error("checkMaxSeqWithMongo failed", testUID6) + } + minSeq, err = GetUserMinSeq(testUID6) + if err != nil { + t.Error("err is not nil", testUID6, err.Error()) + } + if minSeq != 13001 { + t.Error("test3 is not the same", "minSeq:", minSeq, "targetSeq", 13001) } } diff --git a/internal/cron_task/cron_task.go b/internal/cron_task/cron_task.go index b493b1f37..484def4f5 100644 --- a/internal/cron_task/cron_task.go +++ b/internal/cron_task/cron_task.go @@ -8,66 +8,35 @@ import ( "Open_IM/pkg/common/log" "Open_IM/pkg/utils" "fmt" - "github.com/robfig/cron/v3" "time" + + "github.com/robfig/cron/v3" ) const cronTaskOperationID = "cronTaskOperationID-" -func StartCronTask() { +func StartCronTask(userID, workingGroupID string) { log.NewPrivateLog("cron") log.NewInfo(utils.OperationIDGenerator(), "start cron task", "cron config", config.Config.Mongo.ChatRecordsClearTime) - c := cron.New() fmt.Println("cron config", config.Config.Mongo.ChatRecordsClearTime) - _, err := c.AddFunc(config.Config.Mongo.ChatRecordsClearTime, func() { - // user msg clear + if userID != "" { operationID := getCronTaskOperationID() - log.NewInfo(operationID, "====================== start del cron task ======================") - userIDList, err := im_mysql_model.SelectAllUserID() - if err == nil { - log.NewDebug(operationID, utils.GetSelfFuncName(), "userIDList: ", userIDList) - userIDList = []string{"4158779020"} - for _, userID := range userIDList { - if err := DeleteMongoMsgAndResetRedisSeq(operationID, userID); err != nil { - log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), userID) - } - //if err := checkMaxSeqWithMongo(operationID, userID, constant.WriteDiffusion); err != nil { - // log.NewError(operationID, utils.GetSelfFuncName(), userID, err) - //} - } - } else { - log.NewError(operationID, utils.GetSelfFuncName(), err.Error()) - } + StartClearMsg(operationID, []string{userID}) + } + if workingGroupID != "" { + operationID := getCronTaskOperationID() + StartClearWorkingGroupMsg(operationID, []string{workingGroupID}) + } + if userID != "" || workingGroupID != "" { + fmt.Println("clear msg finished") return - // working group msg clear - workingGroupIDList, err := im_mysql_model.GetGroupIDListByGroupType(constant.WorkingGroup) - if err == nil { - log.NewDebug(operationID, utils.GetSelfFuncName(), "workingGroupIDList: ", workingGroupIDList) - for _, groupID := range workingGroupIDList { - userIDList, err = rocksCache.GetGroupMemberIDListFromCache(groupID) - if err != nil { - log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupID) - continue - } - log.NewDebug(operationID, utils.GetSelfFuncName(), "groupID:", groupID, "userIDList:", userIDList) - if err := ResetUserGroupMinSeq(operationID, groupID, userIDList); err != nil { - log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupID, userIDList) - } - //if err := checkMaxSeqWithMongo(operationID, groupID, constant.ReadDiffusion); err != nil { - // log.NewError(operationID, utils.GetSelfFuncName(), groupID, err) - //} - } - } else { - log.NewError(operationID, utils.GetSelfFuncName(), err.Error()) - } - - log.NewInfo(operationID, "====================== start del cron finished ======================") - }) + } + c := cron.New() + _, err := c.AddFunc(config.Config.Mongo.ChatRecordsClearTime, ClearAll) if err != nil { fmt.Println("start cron failed", err.Error(), config.Config.Mongo.ChatRecordsClearTime) panic(err) } - c.Start() fmt.Println("start cron task success") for { @@ -78,3 +47,55 @@ func StartCronTask() { func getCronTaskOperationID() string { return cronTaskOperationID + utils.OperationIDGenerator() } + +func ClearAll() { + operationID := getCronTaskOperationID() + log.NewInfo(operationID, "====================== start del cron task ======================") + var err error + userIDList, err := im_mysql_model.SelectAllUserID() + if err == nil { + StartClearMsg(operationID, userIDList) + } else { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error()) + } + + // working group msg clear + workingGroupIDList, err := im_mysql_model.GetGroupIDListByGroupType(constant.WorkingGroup) + if err == nil { + StartClearWorkingGroupMsg(operationID, workingGroupIDList) + } else { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error()) + } + + log.NewInfo(operationID, "====================== start del cron finished ======================") +} + +func StartClearMsg(operationID string, userIDList []string) { + log.NewDebug(operationID, utils.GetSelfFuncName(), "userIDList: ", userIDList) + for _, userID := range userIDList { + if err := DeleteMongoMsgAndResetRedisSeq(operationID, userID); err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), userID) + } + if err := checkMaxSeqWithMongo(operationID, userID, constant.WriteDiffusion); err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), userID, err) + } + } +} + +func StartClearWorkingGroupMsg(operationID string, workingGroupIDList []string) { + log.NewDebug(operationID, utils.GetSelfFuncName(), "workingGroupIDList: ", workingGroupIDList) + for _, groupID := range workingGroupIDList { + userIDList, err := rocksCache.GetGroupMemberIDListFromCache(groupID) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupID) + continue + } + log.NewDebug(operationID, utils.GetSelfFuncName(), "groupID:", groupID, "workingGroupIDList:", userIDList) + if err := ResetUserGroupMinSeq(operationID, groupID, userIDList); err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupID, userIDList) + } + if err := checkMaxSeqWithMongo(operationID, groupID, constant.ReadDiffusion); err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), groupID, err) + } + } +} diff --git a/internal/cron_task/test/main.go b/internal/cron_task/test/main.go deleted file mode 100644 index 5a2b3f44a..000000000 --- a/internal/cron_task/test/main.go +++ /dev/null @@ -1,6 +0,0 @@ -package main - -// -//func main() { -// db.DB.BatchInsertChat() -//} diff --git a/internal/demo/register/ip_limit.go b/internal/demo/register/ip_limit.go index a94e51e74..401927613 100644 --- a/internal/demo/register/ip_limit.go +++ b/internal/demo/register/ip_limit.go @@ -10,7 +10,6 @@ import ( "github.com/gin-gonic/gin" - //"github.com/jinzhu/gorm" "net/http" "time" ) diff --git a/internal/msg_gateway/gate/callback.go b/internal/msg_gateway/gate/callback.go index 1b8c29a90..20d4837f1 100644 --- a/internal/msg_gateway/gate/callback.go +++ b/internal/msg_gateway/gate/callback.go @@ -9,7 +9,7 @@ import ( "time" ) -func callbackUserOnline(operationID, userID string, platformID int, token string) cbApi.CommonCallbackResp { +func callbackUserOnline(operationID, userID string, platformID int, token string, isAppBackground bool, connID string) cbApi.CommonCallbackResp { callbackResp := cbApi.CommonCallbackResp{OperationID: operationID} if !config.Config.Callback.CallbackUserOnline.Enable { return callbackResp @@ -25,7 +25,9 @@ func callbackUserOnline(operationID, userID string, platformID int, token string }, UserID: userID, }, - Seq: int(time.Now().UnixNano() / 1e6), + Seq: int(time.Now().UnixNano() / 1e6), + IsAppBackground: isAppBackground, + ConnID: connID, } callbackUserOnlineResp := &cbApi.CallbackUserOnlineResp{CommonCallbackResp: &callbackResp} if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackUserOnlineCommand, callbackUserOnlineReq, callbackUserOnlineResp, config.Config.Callback.CallbackUserOnline.CallbackTimeOut); err != nil { @@ -35,7 +37,7 @@ func callbackUserOnline(operationID, userID string, platformID int, token string return callbackResp } -func callbackUserOffline(operationID, userID string, platformID int) cbApi.CommonCallbackResp { +func callbackUserOffline(operationID, userID string, platformID int, connID string) cbApi.CommonCallbackResp { callbackResp := cbApi.CommonCallbackResp{OperationID: operationID} if !config.Config.Callback.CallbackUserOffline.Enable { return callbackResp @@ -50,7 +52,8 @@ func callbackUserOffline(operationID, userID string, platformID int) cbApi.Commo }, UserID: userID, }, - Seq: int(time.Now().UnixNano() / 1e6), + Seq: int(time.Now().UnixNano() / 1e6), + ConnID: connID, } callbackUserOfflineResp := &cbApi.CallbackUserOfflineResp{CommonCallbackResp: &callbackResp} if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackUserOfflineCommand, callbackOfflineReq, callbackUserOfflineResp, config.Config.Callback.CallbackUserOffline.CallbackTimeOut); err != nil { diff --git a/internal/msg_gateway/gate/logic.go b/internal/msg_gateway/gate/logic.go index 7fa144bd0..4715def1e 100644 --- a/internal/msg_gateway/gate/logic.go +++ b/internal/msg_gateway/gate/logic.go @@ -15,10 +15,12 @@ import ( "bytes" "context" "encoding/gob" - "github.com/golang/protobuf/proto" - "github.com/gorilla/websocket" "runtime" "strings" + + "github.com/golang/protobuf/proto" + "github.com/gorilla/websocket" + "google.golang.org/grpc" ) func (ws *WServer) msgParse(conn *UserConn, binaryMsg []byte) { @@ -65,6 +67,9 @@ func (ws *WServer) msgParse(conn *UserConn, binaryMsg []byte) { case constant.WsLogoutMsg: log.NewInfo(m.OperationID, "conn.Close()", m.SendID, m.MsgIncr, m.ReqIdentifier) ws.userLogoutReq(conn, &m) + case constant.WsSetBackgroundStatus: + log.NewInfo(m.OperationID, "WsSetBackgroundStatus", m.SendID, m.MsgIncr, m.ReqIdentifier) + ws.setUserDeviceBackground(conn, &m) default: log.Error(m.OperationID, "ReqIdentifier failed ", m.SendID, m.MsgIncr, m.ReqIdentifier) } @@ -147,7 +152,8 @@ func (ws *WServer) pullMsgBySeqListReq(conn *UserConn, m *Req) { return } msgClient := pbChat.NewMsgClient(grpcConn) - reply, err := msgClient.PullMessageBySeqList(context.Background(), &rpcReq) + maxSizeOption := grpc.MaxCallRecvMsgSize(1024 * 1024 * 20) + reply, err := msgClient.PullMessageBySeqList(context.Background(), &rpcReq, maxSizeOption) if err != nil { log.NewError(rpcReq.OperationID, "pullMsgBySeqListReq err", err.Error()) nReply.ErrCode = 200 @@ -180,8 +186,10 @@ func (ws *WServer) pullMsgBySeqListResp(conn *UserConn, m *Req, pb *sdk_ws.PullM } func (ws *WServer) userLogoutReq(conn *UserConn, m *Req) { log.NewInfo(m.OperationID, "Ws call success to userLogoutReq start", m.SendID, m.ReqIdentifier, m.MsgIncr, string(m.Data)) + rpcReq := push.DelUserPushTokenReq{} rpcReq.UserID = m.SendID + rpcReq.PlatformID = conn.PlatformID rpcReq.OperationID = m.OperationID grpcConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImPushName, m.OperationID) if grpcConn == nil { @@ -394,3 +402,28 @@ func SetTokenKicked(userID string, platformID int, operationID string) { return } } + +func (ws *WServer) setUserDeviceBackground(conn *UserConn, m *Req) { + isPass, errCode, errMsg, pData := ws.argsValidate(m, constant.WsSetBackgroundStatus, m.OperationID) + if isPass { + req := pData.(*sdk_ws.SetAppBackgroundStatusReq) + conn.IsBackground = req.IsBackground + callbackResp := callbackUserOnline(m.OperationID, conn.userID, int(conn.PlatformID), conn.token, conn.IsBackground, conn.connID) + if callbackResp.ErrCode != 0 { + log.NewError(m.OperationID, utils.GetSelfFuncName(), "callbackUserOffline failed", callbackResp) + } + log.NewInfo(m.OperationID, "SetUserDeviceBackground", "success", *conn, req.IsBackground) + } + ws.setUserDeviceBackgroundResp(conn, m, errCode, errMsg) +} + +func (ws *WServer) setUserDeviceBackgroundResp(conn *UserConn, m *Req, errCode int32, errMsg string) { + mReply := Resp{ + ReqIdentifier: m.ReqIdentifier, + MsgIncr: m.MsgIncr, + OperationID: m.OperationID, + ErrCode: errCode, + ErrMsg: errMsg, + } + ws.sendMsg(conn, mReply) +} diff --git a/internal/msg_gateway/gate/relay_rpc_server.go b/internal/msg_gateway/gate/relay_rpc_server.go index d6b076a29..47889ad25 100644 --- a/internal/msg_gateway/gate/relay_rpc_server.go +++ b/internal/msg_gateway/gate/relay_rpc_server.go @@ -159,6 +159,8 @@ func (r *RPCServer) GetUsersOnlineStatus(_ context.Context, req *pbRelay.GetUser ps := new(pbRelay.GetUsersOnlineStatusResp_SuccessDetail) ps.Platform = constant.PlatformIDToName(platform) ps.Status = constant.OnlineStatus + ps.ConnID = userConn.connID + ps.IsBackground = userConn.IsBackground temp.Status = constant.OnlineStatus temp.DetailPlatformStatus = append(temp.DetailPlatformStatus, ps) } @@ -196,24 +198,75 @@ func (r *RPCServer) SuperGroupOnlineBatchPushOneMsg(_ context.Context, req *pbRe userConnMap := ws.getUserAllCons(v) for platform, userConn := range userConnMap { if userConn != nil { - resultCode := sendMsgBatchToUser(userConn, replyBytes.Bytes(), req, platform, v) - if resultCode == 0 && utils.IsContainInt(platform, r.pushTerminal) { - tempT.OnlinePush = true - promePkg.PromeInc(promePkg.MsgOnlinePushSuccessCounter) - log.Info(req.OperationID, "PushSuperMsgToUser is success By Ws", "args", req.String(), "recvPlatForm", constant.PlatformIDToName(platform), "recvID", v) - temp := &pbRelay.SingleMsgToUserPlatform{ - ResultCode: resultCode, - RecvID: v, - RecvPlatFormID: int32(platform), + temp := &pbRelay.SingleMsgToUserPlatform{ + RecvID: v, + RecvPlatFormID: int32(platform), + } + if !userConn.IsBackground { + resultCode := sendMsgBatchToUser(userConn, replyBytes.Bytes(), req, platform, v) + if resultCode == 0 && utils.IsContainInt(platform, r.pushTerminal) { + tempT.OnlinePush = true + promePkg.PromeInc(promePkg.MsgOnlinePushSuccessCounter) + log.Info(req.OperationID, "PushSuperMsgToUser is success By Ws", "args", req.String(), "recvPlatForm", constant.PlatformIDToName(platform), "recvID", v) + temp.ResultCode = resultCode + resp = append(resp, temp) } + } else { + temp.ResultCode = -2 resp = append(resp, temp) } - } } tempT.Resp = resp singleUserResult = append(singleUserResult, tempT) + } + return &pbRelay.OnlineBatchPushOneMsgResp{ + SinglePushResult: singleUserResult, + }, nil +} +func (r *RPCServer) SuperGroupBackgroundOnlinePush(_ context.Context, req *pbRelay.OnlineBatchPushOneMsgReq) (*pbRelay.OnlineBatchPushOneMsgResp, error) { + log.NewInfo(req.OperationID, "BatchPushMsgToUser is arriving", req.String()) + var singleUserResult []*pbRelay.SingelMsgToUserResultList + //r.GetBatchMsgForPush(req.OperationID,req.MsgData,req.PushToUserIDList,) + msgBytes, _ := proto.Marshal(req.MsgData) + mReply := Resp{ + ReqIdentifier: constant.WSPushMsg, + OperationID: req.OperationID, + Data: msgBytes, + } + var replyBytes bytes.Buffer + enc := gob.NewEncoder(&replyBytes) + err := enc.Encode(mReply) + if err != nil { + log.NewError(req.OperationID, "data encode err", err.Error()) + } + for _, v := range req.PushToUserIDList { + var resp []*pbRelay.SingleMsgToUserPlatform + tempT := &pbRelay.SingelMsgToUserResultList{ + UserID: v, + } + userConnMap := ws.getUserAllCons(v) + for platform, userConn := range userConnMap { + if userConn != nil && userConn.IsBackground { + temp := &pbRelay.SingleMsgToUserPlatform{ + RecvID: v, + RecvPlatFormID: int32(platform), + } + if constant.PlatformIDToClass(int(userConn.PlatformID)) == constant.TerminalPC || userConn.PlatformID == constant.WebPlatformID { + resultCode := sendMsgBatchToUser(userConn, replyBytes.Bytes(), req, platform, v) + if resultCode == 0 && utils.IsContainInt(platform, r.pushTerminal) { + tempT.OnlinePush = true + promePkg.PromeInc(promePkg.MsgOnlinePushSuccessCounter) + log.Info(req.OperationID, "PushSuperMsgToUser is success By Ws", "args", req.String(), "recvPlatForm", constant.PlatformIDToName(platform), "recvID", v) + temp.ResultCode = resultCode + resp = append(resp, temp) + } + } + } + } + tempT.Resp = resp + singleUserResult = append(singleUserResult, tempT) } return &pbRelay.OnlineBatchPushOneMsgResp{ diff --git a/internal/msg_gateway/gate/validate.go b/internal/msg_gateway/gate/validate.go index 9a5558528..51a665122 100644 --- a/internal/msg_gateway/gate/validate.go +++ b/internal/msg_gateway/gate/validate.go @@ -107,6 +107,18 @@ func (ws *WServer) argsValidate(m *Req, r int32, operationID string) (isPass boo } return true, 0, "", data + case constant.WsSetBackgroundStatus: + data := open_im_sdk.SetAppBackgroundStatusReq{} + if err := proto.Unmarshal(m.Data, &data); err != nil { + log.Error(operationID, "Decode Data struct err", err.Error(), r) + return false, 203, err.Error(), nil + } + if err := validate.Struct(data); err != nil { + log.Error(operationID, "data args validate err", err.Error(), r) + return false, 204, err.Error(), nil + + } + return true, 0, "", &data default: } return false, 204, "args err", nil diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 5994bb793..e442443f9 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -15,6 +15,7 @@ import ( "context" "encoding/gob" "io/ioutil" + "strconv" "strings" go_redis "github.com/go-redis/redis/v8" @@ -31,11 +32,15 @@ import ( type UserConn struct { *websocket.Conn w *sync.Mutex - platformID int32 + PlatformID int32 PushedMaxSeq uint32 IsCompress bool userID string + IsBackground bool + token string + connID string } + type WServer struct { wsAddr string wsMaxConnNum int @@ -73,20 +78,15 @@ func (ws *WServer) wsHandler(w http.ResponseWriter, r *http.Request) { operationID = utils.OperationIDGenerator() } log.Debug(operationID, utils.GetSelfFuncName(), " args: ", query) - if ws.headerCheck(w, r, operationID) { + if isPass, compression := ws.headerCheck(w, r, operationID); isPass { conn, err := ws.wsUpGrader.Upgrade(w, r, nil) //Conn is obtained through the upgraded escalator if err != nil { log.Error(operationID, "upgrade http conn err", err.Error(), query) return } else { - var isCompress = false - if r.Header.Get("compression") == "gzip" { - log.NewDebug(operationID, query["sendID"][0], "enable compression") - isCompress = true - } - newConn := &UserConn{conn, new(sync.Mutex), utils.StringToInt32(query["platformID"][0]), 0, isCompress, query["sendID"][0]} + newConn := &UserConn{conn, new(sync.Mutex), utils.StringToInt32(query["platformID"][0]), 0, compression, query["sendID"][0], false, query["token"][0], conn.RemoteAddr().String() + "_" + strconv.Itoa(int(utils.GetCurrentTimestampByMill()))} userCount++ - ws.addUserConn(query["sendID"][0], utils.StringToInt(query["platformID"][0]), newConn, query["token"][0], operationID) + ws.addUserConn(query["sendID"][0], utils.StringToInt(query["platformID"][0]), newConn, query["token"][0], newConn.connID, operationID) go ws.readMsg(newConn) } } else { @@ -221,7 +221,7 @@ func (ws *WServer) MultiTerminalLoginCheckerWithLock(uid string, platformID int, return } err = oldConn.Close() - delete(oldConnMap, platformID) + //delete(oldConnMap, platformID) ws.wsUserToConn[uid] = oldConnMap if len(oldConnMap) == 0 { delete(ws.wsUserToConn, uid) @@ -321,11 +321,11 @@ func (ws *WServer) sendKickMsg(oldConn *UserConn) { } } -func (ws *WServer) addUserConn(uid string, platformID int, conn *UserConn, token string, operationID string) { +func (ws *WServer) addUserConn(uid string, platformID int, conn *UserConn, token string, connID, operationID string) { rwLock.Lock() defer rwLock.Unlock() log.Info(operationID, utils.GetSelfFuncName(), " args: ", uid, platformID, conn, token, "ip: ", conn.RemoteAddr().String()) - callbackResp := callbackUserOnline(operationID, uid, platformID, token) + callbackResp := callbackUserOnline(operationID, uid, platformID, token, false, connID) if callbackResp.ErrCode != 0 { log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOnline resp:", callbackResp) } @@ -363,7 +363,7 @@ func (ws *WServer) delUserConn(conn *UserConn) { operationID := utils.OperationIDGenerator() var uid string var platform int - if oldStringMap, ok := ws.wsConnToUser[conn]; ok { + if oldStringMap, okg := ws.wsConnToUser[conn]; okg { for k, v := range oldStringMap { platform = k uid = v @@ -383,17 +383,20 @@ func (ws *WServer) delUserConn(conn *UserConn) { log.Debug(operationID, "WS delete operation", "", "wsUser deleted", ws.wsUserToConn, "disconnection_uid", uid, "disconnection_platform", platform, "online_user_num", len(ws.wsUserToConn)) } delete(ws.wsConnToUser, conn) - } err := conn.Close() if err != nil { log.Error(operationID, " close err", "", "uid", uid, "platform", platform) } - callbackResp := callbackUserOffline(operationID, uid, platform) + if conn.PlatformID == 0 || conn.connID == "" { + log.NewWarn(operationID, utils.GetSelfFuncName(), "PlatformID or connID is null", conn.PlatformID, conn.connID) + } + callbackResp := callbackUserOffline(operationID, conn.userID, int(conn.PlatformID), conn.connID) if callbackResp.ErrCode != 0 { log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOffline failed", callbackResp) } promePkg.PromeGaugeDec(promePkg.OnlineUserGauge) + } func (ws *WServer) getUserConn(uid string, platform int) *UserConn { @@ -432,7 +435,7 @@ func (ws *WServer) getUserAllCons(uid string) map[int]*UserConn { // } // return "", 0 //} -func (ws *WServer) headerCheck(w http.ResponseWriter, r *http.Request, operationID string) bool { +func (ws *WServer) headerCheck(w http.ResponseWriter, r *http.Request, operationID string) (isPass, compression bool) { status := http.StatusUnauthorized query := r.URL.Query() if len(query["token"]) != 0 && len(query["sendID"]) != 0 && len(query["platformID"]) != 0 { @@ -484,10 +487,16 @@ func (ws *WServer) headerCheck(w http.ResponseWriter, r *http.Request, operation w.Header().Set("Sec-Websocket-Version", "13") w.Header().Set("ws_err_msg", err.Error()) http.Error(w, err.Error(), status) - return false + return false, false } else { - log.Info(operationID, "Connection Authentication Success", "", "token ", query["token"][0], "userID ", query["sendID"][0], "platformID ", query["platformID"][0]) - return true + if r.Header.Get("compression") == "gzip" { + compression = true + } + if len(query["compression"]) != 0 && query["compression"][0] == "gzip" { + compression = true + } + log.Info(operationID, "Connection Authentication Success", "", "token ", query["token"][0], "userID ", query["sendID"][0], "platformID ", query["platformID"][0], "compression", compression) + return true, compression } } else { status = int(constant.ErrArgs.ErrCode) @@ -496,6 +505,6 @@ func (ws *WServer) headerCheck(w http.ResponseWriter, r *http.Request, operation errMsg := "args err, need token, sendID, platformID" w.Header().Set("ws_err_msg", errMsg) http.Error(w, errMsg, status) - return false + return false, false } } diff --git a/internal/msg_transfer/logic/init.go b/internal/msg_transfer/logic/init.go index 201c6ee41..ebe0d1aa9 100644 --- a/internal/msg_transfer/logic/init.go +++ b/internal/msg_transfer/logic/init.go @@ -22,7 +22,9 @@ var ( persistentCH PersistentConsumerHandler historyCH OnlineHistoryRedisConsumerHandler historyMongoCH OnlineHistoryMongoConsumerHandler + modifyCH ModifyMsgConsumerHandler producer *kafka.Producer + producerToModify *kafka.Producer producerToMongo *kafka.Producer cmdCh chan Cmd2Value onlineTopicStatus int @@ -43,11 +45,13 @@ func Init() { persistentCH.Init() // ws2mschat save mysql historyCH.Init(cmdCh) // historyMongoCH.Init() + modifyCH.Init() onlineTopicStatus = OnlineTopicVacancy //offlineHistoryCH.Init(cmdCh) statistics.NewStatistics(&singleMsgSuccessCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second singleMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) statistics.NewStatistics(&groupMsgCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second groupMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) producer = kafka.NewKafkaProducer(config.Config.Kafka.Ms2pschat.Addr, config.Config.Kafka.Ms2pschat.Topic) + producerToModify = kafka.NewKafkaProducer(config.Config.Kafka.MsgToModify.Addr, config.Config.Kafka.MsgToModify.Topic) producerToMongo = kafka.NewKafkaProducer(config.Config.Kafka.MsgToMongo.Addr, config.Config.Kafka.MsgToMongo.Topic) } func Run(promethuesPort int) { @@ -59,6 +63,7 @@ func Run(promethuesPort int) { } go historyCH.historyConsumerGroup.RegisterHandleAndConsumer(&historyCH) go historyMongoCH.historyConsumerGroup.RegisterHandleAndConsumer(&historyMongoCH) + go modifyCH.modifyMsgConsumerGroup.RegisterHandleAndConsumer(&modifyCH) //go offlineHistoryCH.historyConsumerGroup.RegisterHandleAndConsumer(&offlineHistoryCH) go func() { err := promePkg.StartPromeSrv(promethuesPort) diff --git a/internal/msg_transfer/logic/modify_msg_handler.go b/internal/msg_transfer/logic/modify_msg_handler.go new file mode 100644 index 000000000..782c6fcc0 --- /dev/null +++ b/internal/msg_transfer/logic/modify_msg_handler.go @@ -0,0 +1,121 @@ +package logic + +import ( + "Open_IM/pkg/base_info" + "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/db" + kfk "Open_IM/pkg/common/kafka" + "Open_IM/pkg/common/log" + pbMsg "Open_IM/pkg/proto/msg" + server_api_params "Open_IM/pkg/proto/sdk_ws" + "Open_IM/pkg/utils" + "encoding/json" + "github.com/Shopify/sarama" + + "github.com/golang/protobuf/proto" +) + +type ModifyMsgConsumerHandler struct { + msgHandle map[string]fcb + modifyMsgConsumerGroup *kfk.MConsumerGroup +} + +func (mmc *ModifyMsgConsumerHandler) Init() { + mmc.msgHandle = make(map[string]fcb) + mmc.msgHandle[config.Config.Kafka.MsgToModify.Topic] = mmc.ModifyMsg + mmc.modifyMsgConsumerGroup = kfk.NewMConsumerGroup(&kfk.MConsumerGroupConfig{KafkaVersion: sarama.V2_0_0_0, + OffsetsInitial: sarama.OffsetNewest, IsReturnErr: false}, []string{config.Config.Kafka.MsgToModify.Topic}, + config.Config.Kafka.MsgToModify.Addr, config.Config.Kafka.ConsumerGroupID.MsgToModify) +} + +func (ModifyMsgConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error { return nil } +func (ModifyMsgConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return nil } +func (mmc *ModifyMsgConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession, + claim sarama.ConsumerGroupClaim) error { + for msg := range claim.Messages() { + log.NewDebug("", "kafka get info to mysql", "ModifyMsgConsumerHandler", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value), "key", string(msg.Key)) + if len(msg.Value) != 0 { + mmc.msgHandle[msg.Topic](msg, string(msg.Key), sess) + } else { + log.Error("", "msg get from kafka but is nil", msg.Key) + } + sess.MarkMessage(msg, "") + } + return nil +} + +func (mmc *ModifyMsgConsumerHandler) ModifyMsg(cMsg *sarama.ConsumerMessage, msgKey string, _ sarama.ConsumerGroupSession) { + log.NewInfo("msg come here ModifyMsg!!!", "", "msg", string(cMsg.Value), msgKey) + msgFromMQ := pbMsg.MsgDataToModifyByMQ{} + err := proto.Unmarshal(cMsg.Value, &msgFromMQ) + if err != nil { + log.NewError(msgFromMQ.TriggerID, "msg_transfer Unmarshal msg err", "msg", string(cMsg.Value), "err", err.Error()) + return + } + log.Debug(msgFromMQ.TriggerID, "proto.Unmarshal MsgDataToMQ", msgFromMQ.String()) + for _, msgDataToMQ := range msgFromMQ.MessageList { + isReactionFromCache := utils.GetSwitchFromOptions(msgDataToMQ.MsgData.Options, constant.IsReactionFromCache) + if !isReactionFromCache { + continue + } + if msgDataToMQ.MsgData.ContentType == constant.ReactionMessageModifier { + notification := &base_info.ReactionMessageModifierNotification{} + if err := json.Unmarshal(msgDataToMQ.MsgData.Content, notification); err != nil { + continue + } + if notification.IsExternalExtensions { + log.NewInfo(msgDataToMQ.OperationID, "msg:", notification, "this is external extensions") + continue + } + if !notification.IsReact { + // first time to modify + var reactionExtensionList = make(map[string]db.KeyValue) + extendMsg := db.ExtendMsg{ + ReactionExtensionList: reactionExtensionList, + ClientMsgID: notification.ClientMsgID, + MsgFirstModifyTime: notification.MsgFirstModifyTime, + } + for _, v := range notification.SuccessReactionExtensionList { + reactionExtensionList[v.TypeKey] = db.KeyValue{ + TypeKey: v.TypeKey, + Value: v.Value, + LatestUpdateTime: v.LatestUpdateTime, + } + } + + if err := db.DB.InsertExtendMsg(notification.SourceID, notification.SessionType, &extendMsg); err != nil { + log.NewError(msgDataToMQ.OperationID, "MsgFirstModify InsertExtendMsg failed", notification.SourceID, notification.SessionType, extendMsg, err.Error()) + continue + } + } else { + var reactionExtensionList = make(map[string]*server_api_params.KeyValue) + for _, v := range notification.SuccessReactionExtensionList { + reactionExtensionList[v.TypeKey] = &server_api_params.KeyValue{ + TypeKey: v.TypeKey, + Value: v.Value, + LatestUpdateTime: v.LatestUpdateTime, + } + } + // is already modify + if err := db.DB.InsertOrUpdateReactionExtendMsgSet(notification.SourceID, notification.SessionType, notification.ClientMsgID, notification.MsgFirstModifyTime, reactionExtensionList); err != nil { + log.NewError(msgDataToMQ.OperationID, "InsertOrUpdateReactionExtendMsgSet failed") + } + } + } else if msgDataToMQ.MsgData.ContentType == constant.ReactionMessageDeleter { + notification := &base_info.ReactionMessageDeleteNotification{} + if err := json.Unmarshal(msgDataToMQ.MsgData.Content, notification); err != nil { + continue + } + if err := db.DB.DeleteReactionExtendMsgSet(notification.SourceID, notification.SessionType, notification.ClientMsgID, notification.MsgFirstModifyTime, notification.SuccessReactionExtensionList); err != nil { + log.NewError(msgDataToMQ.OperationID, "InsertOrUpdateReactionExtendMsgSet failed") + } + } + } + +} + +func UnMarshallSetReactionMsgContent(content []byte) (notification *base_info.ReactionMessageModifierNotification, err error) { + + return notification, nil +} diff --git a/internal/msg_transfer/logic/online_history_msg_handler.go b/internal/msg_transfer/logic/online_history_msg_handler.go index 35a388e8e..af22e9259 100644 --- a/internal/msg_transfer/logic/online_history_msg_handler.go +++ b/internal/msg_transfer/logic/online_history_msg_handler.go @@ -72,6 +72,7 @@ func (och *OnlineHistoryRedisConsumerHandler) Run(channelID int) { storageMsgList := make([]*pbMsg.MsgDataToMQ, 0, 80) notStoragePushMsgList := make([]*pbMsg.MsgDataToMQ, 0, 80) log.Debug(triggerID, "msg arrived channel", "channel id", channelID, msgList, msgChannelValue.aggregationID, len(msgList)) + var modifyMsgList []*pbMsg.MsgDataToMQ for _, v := range msgList { log.Debug(triggerID, "msg come to storage center", v.String()) isHistory := utils.GetSwitchFromOptions(v.MsgData.Options, constant.IsHistory) @@ -83,11 +84,15 @@ func (och *OnlineHistoryRedisConsumerHandler) Run(channelID int) { if !(!isSenderSync && msgChannelValue.aggregationID == v.MsgData.SendID) { notStoragePushMsgList = append(notStoragePushMsgList, v) } - } + if v.MsgData.ContentType == constant.ReactionMessageModifier || v.MsgData.ContentType == constant.ReactionMessageDeleter { + modifyMsgList = append(modifyMsgList, v) + } + } + if len(modifyMsgList) > 0 { + sendMessageToModifyMQ(msgChannelValue.aggregationID, triggerID, modifyMsgList) } - //switch msgChannelValue.msg.MsgData.SessionType { //case constant.SingleChatType: //case constant.GroupChatType: @@ -107,6 +112,7 @@ func (och *OnlineHistoryRedisConsumerHandler) Run(channelID int) { singleMsgSuccessCount += uint64(len(storageMsgList)) singleMsgSuccessCountMutex.Unlock() och.SendMessageToMongoCH(msgChannelValue.aggregationID, triggerID, storageMsgList, lastSeq) + for _, v := range storageMsgList { sendMessageToPushMQ(v, msgChannelValue.aggregationID) } @@ -552,6 +558,17 @@ func sendMessageToPushMQ(message *pbMsg.MsgDataToMQ, pushToUserID string) { return } +func sendMessageToModifyMQ(aggregationID string, triggerID string, messages []*pbMsg.MsgDataToMQ) { + if len(messages) > 0 { + pid, offset, err := producerToModify.SendMessage(&pbMsg.MsgDataToModifyByMQ{AggregationID: aggregationID, MessageList: messages, TriggerID: triggerID}, aggregationID, triggerID) + if err != nil { + log.Error(triggerID, "kafka send failed", "send data", len(messages), "pid", pid, "offset", offset, "err", err.Error(), "key", aggregationID) + } else { + // log.NewWarn(m.OperationID, "sendMsgToKafka client msgID ", m.MsgData.ClientMsgID) + } + } +} + // String hashes a string to a unique hashcode. // // crc32 returns a uint32, but for our use we need diff --git a/internal/msg_transfer/logic/online_msg_to_mongo_handler.go b/internal/msg_transfer/logic/online_msg_to_mongo_handler.go index f08b59965..4a6362a05 100644 --- a/internal/msg_transfer/logic/online_msg_to_mongo_handler.go +++ b/internal/msg_transfer/logic/online_msg_to_mongo_handler.go @@ -61,7 +61,6 @@ func (mc *OnlineHistoryMongoConsumerHandler) handleChatWs2Mongo(cMsg *sarama.Con if unexistSeqList, err := db.DB.DelMsgBySeqList(DeleteMessageTips.UserID, DeleteMessageTips.SeqList, v.OperationID); err != nil { log.NewError(v.OperationID, utils.GetSelfFuncName(), "DelMsgBySeqList args: ", DeleteMessageTips.UserID, DeleteMessageTips.SeqList, v.OperationID, err.Error(), unexistSeqList) } - } } } diff --git a/internal/push/getui/push.go b/internal/push/getui/push.go index 5e7786e6a..0c337dba8 100644 --- a/internal/push/getui/push.go +++ b/internal/push/getui/push.go @@ -26,8 +26,10 @@ var ( ) const ( - PushURL = "/push/single/alias" - AuthURL = "/auth" + PushURL = "/push/single/alias" + AuthURL = "/auth" + TaskURL = "/push/list/message" + BatchPushURL = "/push/list/alias" ) func init() { @@ -53,23 +55,42 @@ type AuthResp struct { Token string `json:"token"` } +type TaskResp struct { + TaskID string `json:"taskID"` +} + +type Settings struct { + TTL *int64 `json:"ttl"` +} + +type Audience struct { + Alias []string `json:"alias"` +} + +type PushMessage struct { + Notification *Notification `json:"notification,omitempty"` + Transmission *string `json:"transmission,omitempty"` +} + +type PushChannel struct { + Ios *Ios `json:"ios"` + Android *Android `json:"android"` +} + type PushReq struct { - RequestID string `json:"request_id"` - Audience struct { - Alias []string `json:"alias"` - } `json:"audience"` - PushMessage struct { - Notification Notification `json:"notification,omitempty"` - Transmission string `json:"transmission,omitempty"` - } `json:"push_message"` - PushChannel struct { - Ios Ios `json:"ios"` - Android Android `json:"android"` - } `json:"push_channel"` + RequestID *string `json:"request_id"` + Settings *Settings `json:"settings"` + Audience *Audience `json:"audience"` + PushMessage *PushMessage `json:"push_message"` + PushChannel *PushChannel `json:"push_channel"` + IsAsync *bool `json:"is_async"` + Taskid *string `json:"taskid"` } type Ios struct { - Aps struct { + NotiType *string `json:"type"` + AutoBadge *string `json:"auto_badge"` + Aps struct { Sound string `json:"sound"` Alert Alert `json:"alert"` } `json:"aps"` @@ -119,9 +140,9 @@ func newGetuiClient() *Getui { func (g *Getui) Push(userIDList []string, title, detailContent, operationID string, opts push.PushOpts) (resp string, err error) { token, err := db.DB.GetGetuiToken() - log.NewDebug(operationID, utils.GetSelfFuncName(), "token:", token) + log.NewDebug(operationID, utils.GetSelfFuncName(), "token:", token, userIDList) if err != nil { - log.NewError(operationID, utils.OperationIDGenerator(), "GetGetuiToken failed", err.Error()) + log.NewError(operationID, utils.GetSelfFuncName(), "GetGetuiToken failed", err.Error()) } if token == "" || err != nil { token, err = g.getTokenAndSave2Redis(operationID) @@ -130,47 +151,32 @@ func (g *Getui) Push(userIDList []string, title, detailContent, operationID stri return "", utils.Wrap(err, "") } } - pushReq := PushReq{ - RequestID: utils.OperationIDGenerator(), - Audience: struct { - Alias []string `json:"alias"` - }{Alias: []string{userIDList[0]}}, - } - pushReq.PushMessage.Notification = Notification{ + + pushReq := PushReq{PushMessage: &PushMessage{Notification: &Notification{ Title: title, Body: detailContent, ClickType: "startapp", ChannelID: config.Config.Push.Getui.ChannelID, ChannelName: config.Config.Push.Getui.ChannelName, - } - pushReq.PushChannel.Ios.Aps.Sound = "default" - pushReq.PushChannel.Ios.Aps.Alert = Alert{ - Title: title, - Body: title, - } - pushReq.PushChannel.Android.Ups.Notification = Notification{ - Title: title, - Body: title, - ClickType: "startapp", - } - pushReq.PushChannel.Android.Ups.Options = Options{ - HW: struct { - DefaultSound bool `json:"/message/android/notification/default_sound"` - ChannelID string `json:"/message/android/notification/channel_id"` - Sound string `json:"/message/android/notification/sound"` - Importance string `json:"/message/android/notification/importance"` - }{ChannelID: "RingRing4", Sound: "/raw/ring001", Importance: "NORMAL"}, - XM: struct { - ChannelID string `json:"/extra.channel_id"` - }{ChannelID: "high_system"}, - VV: struct { - Classification int "json:\"/classification\"" - }{ - Classification: 1, - }, - } + }}} + pushReq.setPushChannel(title, detailContent) pushResp := PushResp{} - err = g.request(PushURL, pushReq, token, &pushResp, operationID) + if len(userIDList) > 1 { + taskID, err := g.GetTaskID(operationID, token, pushReq) + if err != nil { + return "", utils.Wrap(err, "GetTaskIDAndSave2Redis failed") + } + pushReq = PushReq{Audience: &Audience{Alias: userIDList}} + var IsAsync = true + pushReq.IsAsync = &IsAsync + pushReq.Taskid = &taskID + err = g.request(BatchPushURL, pushReq, token, &pushResp, operationID) + } else { + reqID := utils.OperationIDGenerator() + pushReq.RequestID = &reqID + pushReq.Audience = &Audience{Alias: []string{userIDList[0]}} + err = g.request(PushURL, pushReq, token, &pushResp, operationID) + } switch err { case TokenExpireError: token, err = g.getTokenAndSave2Redis(operationID) @@ -209,6 +215,17 @@ func (g *Getui) Auth(operationID string, timeStamp int64) (token string, expireT return respAuth.Token, int64(expire), err } +func (g *Getui) GetTaskID(operationID, token string, pushReq PushReq) (string, error) { + respTask := TaskResp{} + ttl := int64(1000 * 60 * 5) + pushReq.Settings = &Settings{TTL: &ttl} + err := g.request(TaskURL, pushReq, token, &respTask, operationID) + if err != nil { + return "", utils.Wrap(err, "") + } + return respTask.TaskID, nil +} + func (g *Getui) request(url string, content interface{}, token string, returnStruct interface{}, operationID string) error { con, err := json.Marshal(content) if err != nil { @@ -245,6 +262,41 @@ func (g *Getui) request(url string, content interface{}, token string, returnStr return nil } +func (pushReq *PushReq) setPushChannel(title string, body string) { + pushReq.PushChannel = &PushChannel{} + autoBadge := "+1" + pushReq.PushChannel.Ios = &Ios{AutoBadge: &autoBadge} + notify := "notify" + pushReq.PushChannel.Ios.NotiType = ¬ify + pushReq.PushChannel.Ios.Aps.Sound = "default" + pushReq.PushChannel.Ios.Aps.Alert = Alert{ + Title: title, + Body: body, + } + pushReq.PushChannel.Android = &Android{} + pushReq.PushChannel.Android.Ups.Notification = Notification{ + Title: title, + Body: body, + ClickType: "startapp", + } + pushReq.PushChannel.Android.Ups.Options = Options{ + HW: struct { + DefaultSound bool `json:"/message/android/notification/default_sound"` + ChannelID string `json:"/message/android/notification/channel_id"` + Sound string `json:"/message/android/notification/sound"` + Importance string `json:"/message/android/notification/importance"` + }{ChannelID: "RingRing4", Sound: "/raw/ring001", Importance: "NORMAL"}, + XM: struct { + ChannelID string `json:"/extra.channel_id"` + }{ChannelID: "high_system"}, + VV: struct { + Classification int "json:\"/classification\"" + }{ + Classification: 1, + }, + } +} + func (g *Getui) getTokenAndSave2Redis(operationID string) (token string, err error) { token, expireTime, err := g.Auth(operationID, time.Now().UnixNano()/1e6) if err != nil { @@ -257,3 +309,17 @@ func (g *Getui) getTokenAndSave2Redis(operationID string) (token string, err err } return token, nil } + +func (g *Getui) GetTaskIDAndSave2Redis(operationID, token string, pushReq PushReq) (taskID string, err error) { + ttl := int64(1000 * 60 * 60 * 24) + pushReq.Settings = &Settings{TTL: &ttl} + taskID, err = g.GetTaskID(operationID, token, pushReq) + if err != nil { + return "", utils.Wrap(err, "GetTaskIDAndSave2Redis failed") + } + err = db.DB.SetGetuiTaskID(taskID, 60*60*23) + if err != nil { + return "", utils.Wrap(err, "Auth failed") + } + return token, nil +} diff --git a/internal/push/logic/callback.go b/internal/push/logic/callback.go index a7cff2c20..0f0649558 100644 --- a/internal/push/logic/callback.go +++ b/internal/push/logic/callback.go @@ -75,14 +75,14 @@ func callbackOnlinePush(operationID string, userIDList []string, msg *commonPb.M }, UserIDList: userIDList, }, - OfflinePushInfo: msg.OfflinePushInfo, - ClientMsgID: msg.ClientMsgID, - SendID: msg.SendID, - GroupID: msg.GroupID, - ContentType: msg.ContentType, - SessionType: msg.SessionType, - AtUserIDList: msg.AtUserIDList, - Content: callback.GetContent(msg), + //OfflinePushInfo: msg.OfflinePushInfo, + ClientMsgID: msg.ClientMsgID, + SendID: msg.SendID, + GroupID: msg.GroupID, + ContentType: msg.ContentType, + SessionType: msg.SessionType, + AtUserIDList: msg.AtUserIDList, + Content: callback.GetContent(msg), } resp := &cbApi.CallbackBeforePushResp{CommonCallbackResp: &callbackResp} if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackOnlinePushCommand, req, resp, config.Config.Callback.CallbackOnlinePush.CallbackTimeOut); err != nil { @@ -97,9 +97,9 @@ func callbackOnlinePush(operationID string, userIDList []string, msg *commonPb.M } } if resp.ErrCode == constant.CallbackHandleSuccess && resp.ActionCode == constant.ActionAllow { - if resp.OfflinePushInfo != nil { - msg.OfflinePushInfo = resp.OfflinePushInfo - } + //if resp.OfflinePushInfo != nil { + // msg.OfflinePushInfo = resp.OfflinePushInfo + //} } return callbackResp } @@ -117,14 +117,15 @@ func callbackBeforeSuperGroupOnlinePush(operationID string, groupID string, msg PlatformID: msg.SenderPlatformID, Platform: constant.PlatformIDToName(int(msg.SenderPlatformID)), }, - OfflinePushInfo: msg.OfflinePushInfo, - ClientMsgID: msg.ClientMsgID, - SendID: msg.SendID, - GroupID: groupID, - ContentType: msg.ContentType, - SessionType: msg.SessionType, - AtUserIDList: msg.AtUserIDList, - Content: callback.GetContent(msg), + //OfflinePushInfo: msg.OfflinePushInfo, + ClientMsgID: msg.ClientMsgID, + SendID: msg.SendID, + GroupID: groupID, + ContentType: msg.ContentType, + SessionType: msg.SessionType, + AtUserIDList: msg.AtUserIDList, + Content: callback.GetContent(msg), + Seq: msg.Seq, } resp := &cbApi.CallbackBeforeSuperGroupOnlinePushResp{CommonCallbackResp: &callbackResp} if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackSuperGroupOnlinePushCommand, req, resp, config.Config.Callback.CallbackBeforeSuperGroupOnlinePush.CallbackTimeOut); err != nil { @@ -142,9 +143,9 @@ func callbackBeforeSuperGroupOnlinePush(operationID string, groupID string, msg if len(resp.UserIDList) != 0 { *pushToUserList = resp.UserIDList } - if resp.OfflinePushInfo != nil { - msg.OfflinePushInfo = resp.OfflinePushInfo - } + //if resp.OfflinePushInfo != nil { + // msg.OfflinePushInfo = resp.OfflinePushInfo + //} } log.NewDebug(operationID, utils.GetSelfFuncName(), pushToUserList, resp.UserIDList) return callbackResp diff --git a/internal/push/logic/push_rpc_server.go b/internal/push/logic/push_rpc_server.go index b2ac3570c..296d23512 100644 --- a/internal/push/logic/push_rpc_server.go +++ b/internal/push/logic/push_rpc_server.go @@ -93,10 +93,11 @@ func (r *RPCServer) PushMsg(_ context.Context, pbData *pbPush.PushMsgReq) (*pbPu } func (r *RPCServer) DelUserPushToken(c context.Context, req *pbPush.DelUserPushTokenReq) (*pbPush.DelUserPushTokenResp, error) { + log.Debug(req.OperationID, utils.GetSelfFuncName(), "req", req.String()) var resp pbPush.DelUserPushTokenResp err := db.DB.DelFcmToken(req.UserID, int(req.PlatformID)) if err != nil { - errMsg := req.OperationID + " " + "SetFcmToken failed " + err.Error() + errMsg := req.OperationID + " " + "DelFcmToken failed " + err.Error() log.NewError(req.OperationID, errMsg) resp.ErrCode = 500 resp.ErrMsg = errMsg diff --git a/internal/push/logic/push_to_client.go b/internal/push/logic/push_to_client.go index cff59c1a6..1a0076289 100644 --- a/internal/push/logic/push_to_client.go +++ b/internal/push/logic/push_to_client.go @@ -70,7 +70,7 @@ func MsgToUser(pushMsg *pbPush.PushMsgReq) { wsResult = append(wsResult, reply.SinglePushResult...) } } - log.NewInfo(pushMsg.OperationID, "push_result", wsResult, "sendData", pushMsg.MsgData) + log.NewInfo(pushMsg.OperationID, "push_result", wsResult, "sendData", pushMsg.MsgData, "isOfflinePush", isOfflinePush) successCount++ if isOfflinePush && pushMsg.PushToUserID != pushMsg.MsgData.SendID { // save invitation info for offline push @@ -79,6 +79,9 @@ func MsgToUser(pushMsg *pbPush.PushMsgReq) { return } } + if pushMsg.MsgData.ContentType > constant.NotificationBegin && pushMsg.MsgData.ContentType < constant.NotificationEnd && pushMsg.MsgData.ContentType != constant.SignalingNotification { + return + } if pushMsg.MsgData.ContentType == constant.SignalingNotification { isSend, err := db.DB.HandleSignalInfo(pushMsg.OperationID, pushMsg.MsgData, pushMsg.PushToUserID) if err != nil { @@ -198,12 +201,29 @@ func MsgToSuperGroupUser(pushMsg *pbPush.PushMsgReq) { log.Debug(pushMsg.OperationID, "push_result", wsResult, "sendData", pushMsg.MsgData) successCount++ if isOfflinePush { + if pushMsg.MsgData.ContentType > constant.NotificationBegin && pushMsg.MsgData.ContentType < constant.NotificationEnd && pushMsg.MsgData.ContentType != constant.SignalingNotification { + return + } var onlineSuccessUserIDList []string + var WebAndPcBackgroundUserIDList []string onlineSuccessUserIDList = append(onlineSuccessUserIDList, pushMsg.MsgData.SendID) for _, v := range wsResult { if v.OnlinePush && v.UserID != pushMsg.MsgData.SendID { onlineSuccessUserIDList = append(onlineSuccessUserIDList, v.UserID) } + if !v.OnlinePush { + if len(v.Resp) != 0 { + for _, singleResult := range v.Resp { + if singleResult.ResultCode == -2 { + if constant.PlatformIDToClass(int(singleResult.RecvPlatFormID)) == constant.TerminalPC || + singleResult.RecvPlatFormID == constant.WebPlatformID { + WebAndPcBackgroundUserIDList = append(WebAndPcBackgroundUserIDList, v.UserID) + } + } + } + } + + } } onlineFailedUserIDList := utils.DifferenceString(onlineSuccessUserIDList, pushToUserIDList) //Use offline push messaging @@ -237,7 +257,7 @@ func MsgToSuperGroupUser(pushMsg *pbPush.PushMsgReq) { if err != nil { log.NewError(pushMsg.OperationID, utils.GetSelfFuncName(), "GetOfflinePushOpts failed", pushMsg, err.Error()) } - log.NewInfo(pushMsg.OperationID, utils.GetSelfFuncName(), onlineFailedUserIDList, title, detailContent, "opts:", opts) + log.NewInfo(pushMsg.OperationID, utils.GetSelfFuncName(), needOfflinePushUserIDList, title, detailContent, "opts:", opts) if title == "" { switch pushMsg.MsgData.ContentType { case constant.Text: @@ -274,6 +294,22 @@ func MsgToSuperGroupUser(pushMsg *pbPush.PushMsgReq) { promePkg.PromeInc(promePkg.MsgOfflinePushSuccessCounter) log.NewDebug(pushMsg.OperationID, "offline push return result is ", pushResult, pushMsg.MsgData) } + needBackgroupPushUserID := utils.IntersectString(needOfflinePushUserIDList, WebAndPcBackgroundUserIDList) + grpcCons := getcdv3.GetDefaultGatewayConn4Unique(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), pushMsg.OperationID) + if len(needBackgroupPushUserID) > 0 { + //Online push message + log.Debug(pushMsg.OperationID, "len grpc", len(grpcCons), "data", pushMsg.String()) + for _, v := range grpcCons { + msgClient := pbRelay.NewRelayClient(v) + _, err := msgClient.SuperGroupBackgroundOnlinePush(context.Background(), &pbRelay.OnlineBatchPushOneMsgReq{OperationID: pushMsg.OperationID, MsgData: pushMsg.MsgData, + PushToUserIDList: needBackgroupPushUserID}) + if err != nil { + log.NewError("push data to client rpc err", pushMsg.OperationID, "err", err) + continue + } + } + } + } } } diff --git a/internal/push/push_interface.go b/internal/push/push_interface.go index 187c2d296..4cd8bae9a 100644 --- a/internal/push/push_interface.go +++ b/internal/push/push_interface.go @@ -2,7 +2,7 @@ package push import "Open_IM/pkg/common/constant" -var PushTerminal = []int{constant.IOSPlatformID, constant.AndroidPlatformID} +var PushTerminal = []int{constant.IOSPlatformID, constant.AndroidPlatformID, constant.WebPlatformID} type OfflinePusher interface { Push(userIDList []string, title, detailContent, operationID string, opts PushOpts) (resp string, err error) diff --git a/internal/rpc/admin_cms/admin_cms.go b/internal/rpc/admin_cms/admin_cms.go index c1d83b6dc..fe7ff68f6 100644 --- a/internal/rpc/admin_cms/admin_cms.go +++ b/internal/rpc/admin_cms/admin_cms.go @@ -133,6 +133,24 @@ func (s *adminCMSServer) AdminLogin(_ context.Context, req *pbAdminCMS.AdminLogi return resp, nil } +func (s *adminCMSServer) GetUserToken(_ context.Context, req *pbAdminCMS.GetUserTokenReq) (*pbAdminCMS.GetUserTokenResp, error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp := &pbAdminCMS.GetUserTokenResp{ + CommonResp: &pbAdminCMS.CommonResp{}, + } + token, expTime, err := token_verify.CreateToken(req.UserID, int(req.PlatformID)) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "generate token failed", "userID: ", req.UserID, req.PlatformID, err.Error()) + resp.CommonResp.ErrCode = constant.ErrTokenUnknown.ErrCode + resp.CommonResp.ErrMsg = err.Error() + return resp, nil + } + resp.Token = token + resp.ExpTime = expTime + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", resp.String()) + return resp, nil +} + func (s *adminCMSServer) AddUserRegisterAddFriendIDList(_ context.Context, req *pbAdminCMS.AddUserRegisterAddFriendIDListReq) (*pbAdminCMS.AddUserRegisterAddFriendIDListResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbAdminCMS.AddUserRegisterAddFriendIDListResp{CommonResp: &pbAdminCMS.CommonResp{}} @@ -197,37 +215,50 @@ func (s *adminCMSServer) GetUserRegisterAddFriendIDList(_ context.Context, req * func (s *adminCMSServer) GetChatLogs(_ context.Context, req *pbAdminCMS.GetChatLogsReq) (*pbAdminCMS.GetChatLogsResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "GetChatLogs", req.String()) resp := &pbAdminCMS.GetChatLogsResp{CommonResp: &pbAdminCMS.CommonResp{}, Pagination: &server_api_params.ResponsePagination{}} - time, err := utils.TimeStringToTime(req.SendTime) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "time string parse error", err.Error()) - resp.CommonResp.ErrCode = constant.ErrArgs.ErrCode - resp.CommonResp.ErrMsg = err.Error() - return resp, nil - } chatLog := db.ChatLog{ Content: req.Content, - SendTime: time, ContentType: req.ContentType, SessionType: req.SessionType, RecvID: req.RecvID, SendID: req.SendID, } - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "chat_log: ", chatLog) - nums, err := imdb.GetChatLogCount(chatLog) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetChatLogCount", err.Error()) - resp.CommonResp.ErrCode = constant.ErrDB.ErrCode - resp.CommonResp.ErrMsg = err.Error() - return resp, nil + if req.SendTime != "" { + sendTime, err := utils.TimeStringToTime(req.SendTime) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "time string parse error", err.Error()) + resp.CommonResp.ErrCode = constant.ErrArgs.ErrCode + resp.CommonResp.ErrMsg = err.Error() + return resp, nil + } + chatLog.SendTime = sendTime } - resp.ChatLogsNum = int32(nums) - chatLogs, err := imdb.GetChatLog(chatLog, req.Pagination.PageNumber, req.Pagination.ShowNumber) + + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "chat_log: ", chatLog) + + num, chatLogs, err := imdb.GetChatLog(&chatLog, req.Pagination.PageNumber, req.Pagination.ShowNumber, []int32{ + constant.Text, + constant.Picture, + constant.Voice, + constant.Video, + constant.File, + constant.AtText, + constant.Merger, + constant.Card, + constant.Location, + constant.Custom, + constant.Revoke, + constant.Quote, + constant.AdvancedText, + constant.AdvancedRevoke, + constant.CustomNotTriggerConversation, + }) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetChatLog", err.Error()) resp.CommonResp.ErrCode = constant.ErrDB.ErrCode resp.CommonResp.ErrMsg = err.Error() return resp, nil } + resp.ChatLogsNum = int32(num) for _, chatLog := range chatLogs { pbChatLog := &pbAdminCMS.ChatLog{} utils.CopyStructFields(pbChatLog, chatLog) @@ -265,7 +296,6 @@ func (s *adminCMSServer) GetChatLogs(_ context.Context, req *pbAdminCMS.GetChatL CurrentPage: req.Pagination.PageNumber, ShowNumber: req.Pagination.ShowNumber, } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp output: ", resp.String()) return resp, nil } diff --git a/internal/rpc/auth/auth.go b/internal/rpc/auth/auth.go index 5e929fd4e..5c47713c0 100644 --- a/internal/rpc/auth/auth.go +++ b/internal/rpc/auth/auth.go @@ -50,6 +50,11 @@ func (rpc *rpcAuth) UserRegister(_ context.Context, req *pbAuth.UserRegisterReq) func (rpc *rpcAuth) UserToken(_ context.Context, req *pbAuth.UserTokenReq) (*pbAuth.UserTokenResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) + _, err := imdb.GetUserByUserID(req.FromUserID) + if err != nil { + log.NewError(req.OperationID, "not this user:", req.FromUserID, req.String()) + return &pbAuth.UserTokenResp{CommonResp: &pbAuth.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil + } tokens, expTime, err := token_verify.CreateToken(req.FromUserID, int(req.Platform)) if err != nil { errMsg := req.OperationID + " token_verify.CreateToken failed " + err.Error() + req.FromUserID + utils.Int32ToString(req.Platform) diff --git a/internal/rpc/group/callback.go b/internal/rpc/group/callback.go index b74c89918..5bf450a69 100644 --- a/internal/rpc/group/callback.go +++ b/internal/rpc/group/callback.go @@ -4,11 +4,14 @@ import ( cbApi "Open_IM/pkg/call_back_struct" "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/db" "Open_IM/pkg/common/http" "Open_IM/pkg/common/log" pbGroup "Open_IM/pkg/proto/group" "Open_IM/pkg/utils" http2 "net/http" + + "google.golang.org/protobuf/types/known/wrapperspb" ) func callbackBeforeCreateGroup(req *pbGroup.CreateGroupReq) cbApi.CommonCallbackResp { @@ -19,6 +22,9 @@ func callbackBeforeCreateGroup(req *pbGroup.CreateGroupReq) cbApi.CommonCallback log.NewDebug(req.OperationID, utils.GetSelfFuncName(), req.String()) commonCallbackReq := &cbApi.CallbackBeforeCreateGroupReq{ CallbackCommand: constant.CallbackBeforeCreateGroupCommand, + OperationID: req.OperationID, + GroupInfo: *req.GroupInfo, + InitMemberList: req.InitMemberList, } resp := &cbApi.CallbackBeforeCreateGroupResp{ CommonCallbackResp: &callbackResp, @@ -41,7 +47,7 @@ func callbackBeforeCreateGroup(req *pbGroup.CreateGroupReq) cbApi.CommonCallback req.GroupInfo.GroupID = *resp.GroupID } if resp.GroupName != nil { - req.GroupInfo.GroupName = *resp.GroupID + req.GroupInfo.GroupName = *resp.GroupName } if resp.Notification != nil { req.GroupInfo.Notification = *resp.Notification @@ -68,7 +74,7 @@ func callbackBeforeCreateGroup(req *pbGroup.CreateGroupReq) cbApi.CommonCallback req.GroupInfo.GroupType = *resp.GroupType } if resp.NeedVerification != nil { - req.GroupInfo.NeedVerification = *resp.GroupType + req.GroupInfo.NeedVerification = *resp.NeedVerification } if resp.LookMemberInfo != nil { req.GroupInfo.LookMemberInfo = *resp.LookMemberInfo @@ -76,3 +82,102 @@ func callbackBeforeCreateGroup(req *pbGroup.CreateGroupReq) cbApi.CommonCallback } return callbackResp } + +func CallbackBeforeMemberJoinGroup(operationID string, groupMember *db.GroupMember, groupEx string) cbApi.CommonCallbackResp { + callbackResp := cbApi.CommonCallbackResp{OperationID: operationID} + if !config.Config.Callback.CallbackBeforeMemberJoinGroup.Enable { + return callbackResp + } + log.NewDebug(operationID, "args: ", *groupMember) + callbackReq := cbApi.CallbackBeforeMemberJoinGroupReq{ + CallbackCommand: constant.CallbackBeforeMemberJoinGroupCommand, + OperationID: operationID, + GroupID: groupMember.GroupID, + UserID: groupMember.UserID, + Ex: groupMember.Ex, + GroupEx: groupEx, + } + resp := &cbApi.CallbackBeforeMemberJoinGroupResp{ + CommonCallbackResp: &callbackResp, + } + if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeMemberJoinGroupCommand, callbackReq, resp, config.Config.Callback.CallbackBeforeMemberJoinGroup.CallbackTimeOut); err != nil { + callbackResp.ErrCode = http2.StatusInternalServerError + callbackResp.ErrMsg = err.Error() + if !config.Config.Callback.CallbackBeforeMemberJoinGroup.CallbackFailedContinue { + callbackResp.ActionCode = constant.ActionForbidden + return callbackResp + } else { + callbackResp.ActionCode = constant.ActionAllow + return callbackResp + } + } + if resp.MuteEndTime != nil { + groupMember.MuteEndTime = utils.UnixSecondToTime(*resp.MuteEndTime) + } + if resp.FaceURL != nil { + groupMember.FaceURL = *resp.FaceURL + } + if resp.Ex != nil { + groupMember.Ex = *resp.Ex + } + if resp.NickName != nil { + groupMember.Nickname = *resp.NickName + } + if resp.RoleLevel != nil { + groupMember.RoleLevel = *resp.RoleLevel + } + return callbackResp +} + +func CallbackBeforeSetGroupMemberInfo(req *pbGroup.SetGroupMemberInfoReq) cbApi.CommonCallbackResp { + callbackResp := cbApi.CommonCallbackResp{OperationID: req.OperationID} + if !config.Config.Callback.CallbackBeforeSetGroupMemberInfo.Enable { + return callbackResp + } + callbackReq := cbApi.CallbackBeforeSetGroupMemberInfoReq{ + CallbackCommand: constant.CallbackBeforeSetGroupMemberInfoCommand, + OperationID: req.OperationID, + GroupID: req.GroupID, + UserID: req.UserID, + } + if req.Nickname != nil { + callbackReq.Nickname = req.Nickname.Value + } + if req.FaceURL != nil { + callbackReq.FaceURL = req.FaceURL.Value + } + if req.RoleLevel != nil { + callbackReq.RoleLevel = req.RoleLevel.Value + } + if req.Ex != nil { + callbackReq.Ex = req.Ex.Value + } + resp := &cbApi.CallbackBeforeSetGroupMemberInfoResp{ + CommonCallbackResp: &callbackResp, + } + + if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeSetGroupMemberInfoCommand, callbackReq, resp, config.Config.Callback.CallbackBeforeSetGroupMemberInfo.CallbackTimeOut); err != nil { + callbackResp.ErrCode = http2.StatusInternalServerError + callbackResp.ErrMsg = err.Error() + if !config.Config.Callback.CallbackBeforeSetGroupMemberInfo.CallbackFailedContinue { + callbackResp.ActionCode = constant.ActionForbidden + return callbackResp + } else { + callbackResp.ActionCode = constant.ActionAllow + return callbackResp + } + } + if resp.FaceURL != nil { + req.FaceURL = &wrapperspb.StringValue{Value: *resp.FaceURL} + } + if resp.Nickname != nil { + req.Nickname = &wrapperspb.StringValue{Value: *resp.Nickname} + } + if resp.RoleLevel != nil { + req.RoleLevel = &wrapperspb.Int32Value{Value: *resp.RoleLevel} + } + if resp.Ex != nil { + req.Ex = &wrapperspb.StringValue{Value: *resp.Ex} + } + return callbackResp +} diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index c5597ab1f..bc623c0d8 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -20,6 +20,7 @@ import ( "Open_IM/pkg/utils" "context" "errors" + "fmt" "math/big" "net" "strconv" @@ -29,6 +30,7 @@ import ( grpcPrometheus "github.com/grpc-ecosystem/go-grpc-prometheus" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/wrapperspb" "gorm.io/gorm" ) @@ -157,6 +159,16 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR groupMember := db.GroupMember{} us := &db.User{} if req.OwnerUserID != "" { + var userIDList []string + for _, v := range req.InitMemberList { + userIDList = append(userIDList, v.UserID) + } + userIDList = append(userIDList, req.OwnerUserID) + if err := s.DelGroupAndUserCache(req.OperationID, "", userIDList); err != nil { + log.NewError(req.OperationID, "DelGroupAndUserCache failed, ", err.Error(), userIDList) + return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}, nil + } + us, err = imdb.GetUserByUserID(req.OwnerUserID) if err != nil { log.NewError(req.OperationID, "GetUserByUserID failed ", err.Error(), req.OwnerUserID) @@ -165,6 +177,21 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR //to group member groupMember = db.GroupMember{GroupID: groupId, RoleLevel: constant.GroupOwner, OperatorUserID: req.OpUserID, JoinSource: constant.JoinByInvitation, InviterUserID: req.OpUserID} utils.CopyStructFields(&groupMember, us) + callbackResp := CallbackBeforeMemberJoinGroup(req.OperationID, &groupMember, groupInfo.Ex) + if callbackResp.ErrCode != 0 { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "CallbackBeforeMemberJoinGroup resp: ", callbackResp) + } + if callbackResp.ActionCode != constant.ActionAllow { + if callbackResp.ErrCode == 0 { + callbackResp.ErrCode = 201 + } + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CallbackBeforeMemberJoinGroup result", "end rpc and return", callbackResp) + return &pbGroup.CreateGroupResp{ + ErrCode: int32(callbackResp.ErrCode), + ErrMsg: callbackResp.ErrMsg, + }, nil + } + err = imdb.InsertIntoGroupMember(groupMember) if err != nil { log.NewError(req.OperationID, "InsertIntoGroupMember failed ", err.Error(), groupMember) @@ -188,6 +215,17 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR groupMember.JoinSource = constant.JoinByInvitation groupMember.InviterUserID = req.OpUserID utils.CopyStructFields(&groupMember, us) + callbackResp := CallbackBeforeMemberJoinGroup(req.OperationID, &groupMember, groupInfo.Ex) + if callbackResp.ErrCode != 0 { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg resp: ", callbackResp) + } + if callbackResp.ActionCode != constant.ActionAllow { + if callbackResp.ErrCode == 0 { + callbackResp.ErrCode = 201 + } + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg result", "end rpc and return", callbackResp) + continue + } err = imdb.InsertIntoGroupMember(groupMember) if err != nil { log.NewError(req.OperationID, "InsertIntoGroupMember failed ", err.Error(), groupMember) @@ -231,11 +269,6 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR if len(okUserIDList) != 0 { log.NewInfo(req.OperationID, "rpc CreateGroup return ", resp.String()) if req.GroupInfo.GroupType != constant.SuperGroup { - for _, userID := range okUserIDList { - if err := rocksCache.DelJoinedGroupIDListFromCache(userID); err != nil { - log.NewWarn(req.OperationID, utils.GetSelfFuncName(), userID, err.Error()) - } - } chat.GroupCreatedNotification(req.OperationID, req.OpUserID, groupId, okUserIDList) } else { for _, userID := range okUserIDList { @@ -332,6 +365,14 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite var resp pbGroup.InviteUserToGroupResp joinReq := pbGroup.JoinGroupReq{} for _, v := range req.InvitedUserIDList { + if imdb.IsExistGroupMember(req.GroupID, v) { + log.NewError(req.OperationID, "IsExistGroupMember ", req.GroupID, v) + var resultNode pbGroup.Id2Result + resultNode.Result = -1 + resultNode.UserID = v + resp.Id2ResultList = append(resp.Id2ResultList, &resultNode) + continue + } var groupRequest db.GroupRequest groupRequest.UserID = v groupRequest.GroupID = req.GroupID @@ -362,7 +403,10 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite log.NewInfo(req.OperationID, "InviteUserToGroup rpc return ", resp) return &resp, nil } - // + if err := s.DelGroupAndUserCache(req.OperationID, req.GroupID, req.InvitedUserIDList); err != nil { + log.NewError(req.OperationID, "DelGroupAndUserCache failed", err.Error()) + return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}, nil + } //from User: invite: applicant //to user: invite: invited var okUserIDList []string @@ -392,6 +436,15 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite toInsertInfo.OperatorUserID = req.OpUserID toInsertInfo.InviterUserID = req.OpUserID toInsertInfo.JoinSource = constant.JoinByInvitation + callbackResp := CallbackBeforeMemberJoinGroup(req.OperationID, &toInsertInfo, groupInfo.Ex) + if callbackResp.ErrCode != 0 { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg resp: ", callbackResp) + } + if callbackResp.ActionCode != constant.ActionAllow { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg result", "end rpc and return", callbackResp) + continue + } + err = imdb.InsertIntoGroupMember(toInsertInfo) if err != nil { log.NewError(req.OperationID, "InsertIntoGroupMember failed ", req.GroupID, toUserInfo.UserID, toUserInfo.Nickname, toUserInfo.FaceURL) @@ -406,107 +459,95 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite } resp.Id2ResultList = append(resp.Id2ResultList, &resultNode) } - var haveConUserID []string - conversations, err := imdb.GetConversationsByConversationIDMultipleOwner(okUserIDList, utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType)) - if err != nil { - log.NewError(req.OperationID, "GetConversationsByConversationIDMultipleOwner failed ", err.Error(), req.GroupID, constant.GroupChatType) - } - for _, v := range conversations { - haveConUserID = append(haveConUserID, v.OwnerUserID) - } - var reqPb pbUser.SetConversationReq - var c pbConversation.Conversation - for _, v := range conversations { - reqPb.OperationID = req.OperationID - c.OwnerUserID = v.OwnerUserID - c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType) - c.RecvMsgOpt = v.RecvMsgOpt - c.ConversationType = constant.GroupChatType - c.GroupID = req.GroupID - c.IsPinned = v.IsPinned - c.AttachedInfo = v.AttachedInfo - c.IsPrivateChat = v.IsPrivateChat - c.GroupAtType = v.GroupAtType - c.IsNotInGroup = false - c.Ex = v.Ex - reqPb.Conversation = &c - etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}, nil - } - client := pbUser.NewUserClient(etcdConn) - respPb, err := client.SetConversation(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error(), v.OwnerUserID) - } else { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String(), v.OwnerUserID) - } - } - for _, v := range utils.DifferenceString(haveConUserID, okUserIDList) { - reqPb.OperationID = req.OperationID - c.OwnerUserID = v - c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType) - c.ConversationType = constant.GroupChatType - c.GroupID = req.GroupID - c.IsNotInGroup = false - reqPb.Conversation = &c - etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}, nil - } - client := pbUser.NewUserClient(etcdConn) - respPb, err := client.SetConversation(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error(), v) - } else { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String(), v) - } - } } else { - okUserIDList = req.InvitedUserIDList - if err := db.DB.AddUserToSuperGroup(req.GroupID, req.InvitedUserIDList); err != nil { + for _, v := range req.InvitedUserIDList { + if imdb.IsExistGroupMember(req.GroupID, v) { + log.NewError(req.OperationID, "IsExistGroupMember ", req.GroupID, v) + var resultNode pbGroup.Id2Result + resultNode.Result = -1 + resp.Id2ResultList = append(resp.Id2ResultList, &resultNode) + continue + } else { + okUserIDList = append(okUserIDList, v) + } + } + //okUserIDList = req.InvitedUserIDList + if err := db.DB.AddUserToSuperGroup(req.GroupID, okUserIDList); err != nil { log.NewError(req.OperationID, "AddUserToSuperGroup failed ", req.GroupID, err) return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}, nil } } - etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}, nil + // set conversations + var haveConUserID []string + var sessionType int + if groupInfo.GroupType == constant.NormalGroup { + sessionType = constant.GroupChatType + } else { + sessionType = constant.SuperGroupChatType } - cacheClient := pbCache.NewCacheClient(etcdConn) - cacheResp, err := cacheClient.DelGroupMemberIDListFromCache(context.Background(), &pbCache.DelGroupMemberIDListFromCacheReq{ - GroupID: req.GroupID, - OperationID: req.OperationID, - }) + conversations, err := imdb.GetConversationsByConversationIDMultipleOwner(okUserIDList, utils.GetConversationIDBySessionType(req.GroupID, sessionType)) if err != nil { - log.NewError(req.OperationID, "DelGroupMemberIDListFromCache rpc call failed ", err.Error()) - return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil + log.NewError(req.OperationID, "GetConversationsByConversationIDMultipleOwner failed ", err.Error(), req.GroupID, sessionType) } - if cacheResp.CommonResp.ErrCode != 0 { - log.NewError(req.OperationID, "DelGroupMemberIDListFromCache rpc logic call failed ", cacheResp.String()) - return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil + for _, v := range conversations { + haveConUserID = append(haveConUserID, v.OwnerUserID) } - if err := rocksCache.DelGroupMemberListHashFromCache(req.GroupID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), req.GroupID, err.Error()) - } - if err := rocksCache.DelGroupMemberNumFromCache(req.GroupID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) - } - if groupInfo.GroupType != constant.SuperGroup { - for _, userID := range okUserIDList { - err = rocksCache.DelJoinedGroupIDListFromCache(userID) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), userID) - } + var reqPb pbUser.SetConversationReq + var c pbConversation.Conversation + for _, v := range conversations { + reqPb.OperationID = req.OperationID + c.OwnerUserID = v.OwnerUserID + c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, sessionType) + c.RecvMsgOpt = v.RecvMsgOpt + c.ConversationType = int32(sessionType) + c.GroupID = req.GroupID + c.IsPinned = v.IsPinned + c.AttachedInfo = v.AttachedInfo + c.IsPrivateChat = v.IsPrivateChat + c.GroupAtType = v.GroupAtType + c.IsNotInGroup = false + c.Ex = v.Ex + reqPb.Conversation = &c + etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" + log.NewError(req.OperationID, errMsg) + return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}, nil } + client := pbUser.NewUserClient(etcdConn) + respPb, err := client.SetConversation(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error(), v.OwnerUserID) + } else { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String(), v.OwnerUserID) + } + } + for _, v := range utils.DifferenceString(haveConUserID, okUserIDList) { + reqPb.OperationID = req.OperationID + c.OwnerUserID = v + c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, sessionType) + c.ConversationType = int32(sessionType) + c.GroupID = req.GroupID + c.IsNotInGroup = false + c.UpdateUnreadCountTime = utils.GetCurrentTimestampByMill() + reqPb.Conversation = &c + etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) + if etcdConn == nil { + errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" + log.NewError(req.OperationID, errMsg) + return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}, nil + } + client := pbUser.NewUserClient(etcdConn) + respPb, err := client.SetConversation(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error(), v) + } else { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String(), v) + } + } + if groupInfo.GroupType != constant.SuperGroup { chat.MemberInvitedNotification(req.OperationID, req.GroupID, req.OpUserID, req.Reason, okUserIDList) } else { for _, v := range req.InvitedUserIDList { @@ -634,7 +675,10 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou log.NewError(req.OperationID, "failed, kick list 0") return &pbGroup.KickGroupMemberResp{ErrCode: constant.ErrArgs.ErrCode, ErrMsg: constant.ErrArgs.ErrMsg}, nil } - + if err := s.DelGroupAndUserCache(req.OperationID, req.GroupID, req.KickedUserIDList); err != nil { + log.NewError(req.OperationID, "DelGroupAndUserCache failed", err.Error()) + return &pbGroup.KickGroupMemberResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}, nil + } //remove for _, v := range req.KickedUserIDList { kickedInfo, err := rocksCache.GetGroupMemberInfoFromCache(req.GroupID, v) @@ -701,42 +745,12 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou } } - etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - return &pbGroup.KickGroupMemberResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}, nil - } - cacheClient := pbCache.NewCacheClient(etcdConn) - cacheResp, err := cacheClient.DelGroupMemberIDListFromCache(context.Background(), &pbCache.DelGroupMemberIDListFromCacheReq{ - GroupID: req.GroupID, - OperationID: req.OperationID, - }) - if err != nil { - log.NewError(req.OperationID, "DelGroupMemberIDListFromCache rpc call failed ", err.Error()) - return &pbGroup.KickGroupMemberResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil - } - if cacheResp.CommonResp.ErrCode != 0 { - log.NewError(req.OperationID, "DelGroupMemberIDListFromCache rpc logic call failed ", cacheResp.String()) - return &pbGroup.KickGroupMemberResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil - } - if err := rocksCache.DelGroupMemberListHashFromCache(req.GroupID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), req.GroupID, err.Error()) - } - if groupInfo.GroupType != constant.SuperGroup { for _, userID := range okUserIDList { - err = rocksCache.DelJoinedGroupIDListFromCache(userID) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), userID) - } if err := rocksCache.DelGroupMemberInfoFromCache(req.GroupID, userID); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) } } - if err := rocksCache.DelGroupMemberNumFromCache(req.GroupID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) - } chat.MemberKickedNotification(req, okUserIDList) } else { for _, userID := range okUserIDList { @@ -761,7 +775,6 @@ func (s *groupServer) GetGroupMembersInfo(ctx context.Context, req *pbGroup.GetG log.NewInfo(req.OperationID, "GetGroupMembersInfo args ", req.String()) var resp pbGroup.GetGroupMembersInfoResp resp.MemberList = []*open_im_sdk.GroupMemberFullInfo{} - for _, userID := range req.MemberList { groupMember, err := rocksCache.GetGroupMemberInfoFromCache(req.GroupID, userID) if err != nil { @@ -773,24 +786,6 @@ func (s *groupServer) GetGroupMembersInfo(ctx context.Context, req *pbGroup.GetG memberNode.JoinTime = int32(groupMember.JoinTime.Unix()) resp.MemberList = append(resp.MemberList, &memberNode) } - - //groupMembers, err := rocksCache.GetAllGroupMembersInfoFromCache(req.GroupID) - //if err != nil { - // log.NewError(req.OperationID, utils.GetSelfFuncName(), req.GroupID, err.Error()) - // resp.ErrCode = constant.ErrDB.ErrCode - // resp.ErrMsg = constant.ErrDB.ErrMsg - // return &resp, nil - //} - //for _, member := range groupMembers { - // if utils.IsContain(member.UserID, req.MemberList) { - // var memberNode open_im_sdk.GroupMemberFullInfo - // utils.CopyStructFields(&memberNode, member) - // memberNode.JoinTime = int32(member.JoinTime.Unix()) - // resp.MemberList = append(resp.MemberList, &memberNode) - // } - //} - - resp.ErrCode = 0 log.NewInfo(req.OperationID, "GetGroupMembersInfo rpc return ", resp.String()) return &resp, nil } @@ -875,13 +870,21 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), req.GroupID, req.FromUserID) return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } - + groupInfo, err := rocksCache.GetGroupInfoFromCache(req.GroupID) + if err != nil { + log.NewError(req.OperationID, "GetGroupInfoFromCache failed ", err.Error(), req.GroupID, req.FromUserID) + return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil + } if req.HandleResult == constant.GroupResponseAgree { user, err := imdb.GetUserByUserID(req.FromUserID) if err != nil { log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), req.FromUserID) return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } + if imdb.IsExistGroupMember(req.GroupID, req.FromUserID) { + log.NewInfo(req.OperationID, "GroupApplicationResponse user in group", req.GroupID, req.FromUserID) + return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{}}, nil + } member := db.GroupMember{} member.GroupID = req.GroupID member.UserID = req.FromUserID @@ -891,26 +894,49 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G member.Nickname = user.Nickname member.JoinSource = request.JoinSource member.InviterUserID = request.InviterUserID + callbackResp := CallbackBeforeMemberJoinGroup(req.OperationID, &member, groupInfo.Ex) + if callbackResp.ErrCode != 0 { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg resp: ", callbackResp) + } + if callbackResp.ActionCode != constant.ActionAllow { + if callbackResp.ErrCode == 0 { + callbackResp.ErrCode = 201 + } + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg result", "end rpc and return", callbackResp) + return &pbGroup.GroupApplicationResponseResp{ + CommonResp: &pbGroup.CommonResp{ + ErrCode: int32(callbackResp.ErrCode), + ErrMsg: callbackResp.ErrMsg, + }, + }, nil + } err = imdb.InsertIntoGroupMember(member) if err != nil { log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), member) return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } + var sessionType int + if groupInfo.GroupType == constant.NormalGroup { + sessionType = constant.GroupChatType + } else { + sessionType = constant.SuperGroupChatType + } var reqPb pbUser.SetConversationReq reqPb.OperationID = req.OperationID var c pbConversation.Conversation - conversation, err := imdb.GetConversation(req.FromUserID, utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType)) + conversation, err := imdb.GetConversation(req.FromUserID, utils.GetConversationIDBySessionType(req.GroupID, sessionType)) if err != nil { c.OwnerUserID = req.FromUserID - c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType) - c.ConversationType = constant.GroupChatType + c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, sessionType) + c.ConversationType = int32(sessionType) c.GroupID = req.GroupID c.IsNotInGroup = false + c.UpdateUnreadCountTime = utils.GetCurrentTimestampByMill() } else { c.OwnerUserID = conversation.OwnerUserID - c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType) + c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, sessionType) c.RecvMsgOpt = conversation.RecvMsgOpt - c.ConversationType = constant.GroupChatType + c.ConversationType = int32(sessionType) c.GroupID = req.GroupID c.IsPinned = conversation.IsPinned c.AttachedInfo = conversation.AttachedInfo @@ -974,13 +1000,16 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) (*pbGroup.JoinGroupResp, error) { log.NewInfo(req.OperationID, "JoinGroup args ", req.String()) + if imdb.IsExistGroupMember(req.GroupID, req.OpUserID) { + log.NewInfo(req.OperationID, "IsExistGroupMember", req.GroupID, req.OpUserID) + return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{}}, nil + } _, err := imdb.GetUserByUserID(req.OpUserID) if err != nil { log.NewError(req.OperationID, "GetUserByUserID failed ", err.Error(), req.OpUserID) return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } - - groupInfo, err := imdb.GetGroupInfoByGroupID(req.GroupID) + groupInfo, err := rocksCache.GetGroupInfoFromCache(req.GroupID) if err != nil { log.NewError(req.OperationID, "GetGroupInfoByGroupID failed ", req.GroupID, err) return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil @@ -1000,40 +1029,65 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) //to group member groupMember := db.GroupMember{GroupID: req.GroupID, RoleLevel: constant.GroupOrdinaryUsers, OperatorUserID: req.OpUserID} utils.CopyStructFields(&groupMember, us) + callbackResp := CallbackBeforeMemberJoinGroup(req.OperationID, &groupMember, groupInfo.Ex) + if callbackResp.ErrCode != 0 { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg resp: ", callbackResp) + } + if callbackResp.ActionCode != constant.ActionAllow { + if callbackResp.ErrCode == 0 { + callbackResp.ErrCode = 201 + } + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg result", "end rpc and return", callbackResp) + return &pbGroup.JoinGroupResp{ + CommonResp: &pbGroup.CommonResp{ + ErrCode: int32(callbackResp.ErrCode), + ErrMsg: callbackResp.ErrMsg, + }, + }, nil + } + + if err := s.DelGroupAndUserCache(req.OperationID, req.GroupID, []string{req.OpUserID}); err != nil { + log.NewError(req.OperationID, "DelGroupAndUserCache failed, ", err.Error(), req.OpUserID) + return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil + } + err = imdb.InsertIntoGroupMember(groupMember) if err != nil { log.NewError(req.OperationID, "InsertIntoGroupMember failed ", err.Error(), groupMember) return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } - etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.OperationID) + //} + + var sessionType int + if groupInfo.GroupType == constant.NormalGroup { + sessionType = constant.GroupChatType + } else { + sessionType = constant.SuperGroupChatType + } + var reqPb pbUser.SetConversationReq + var c pbConversation.Conversation + reqPb.OperationID = req.OperationID + c.OwnerUserID = req.OpUserID + c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, sessionType) + c.ConversationType = int32(sessionType) + c.GroupID = req.GroupID + c.IsNotInGroup = false + c.UpdateUnreadCountTime = utils.GetCurrentTimestampByMill() + reqPb.Conversation = &c + etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID) if etcdConn == nil { errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" log.NewError(req.OperationID, errMsg) - return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: constant.ErrInternal.ErrMsg}}, nil + return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: errMsg}}, nil } - cacheClient := pbCache.NewCacheClient(etcdConn) - cacheResp, err := cacheClient.DelGroupMemberIDListFromCache(context.Background(), &pbCache.DelGroupMemberIDListFromCacheReq{ - GroupID: req.GroupID, - OperationID: req.OperationID, - }) + client := pbUser.NewUserClient(etcdConn) + respPb, err := client.SetConversation(context.Background(), &reqPb) if err != nil { - log.NewError(req.OperationID, "DelGroupMemberIDListFromCache rpc call failed ", err.Error()) - return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil - } - if cacheResp.CommonResp.ErrCode != 0 { - log.NewError(req.OperationID, "DelGroupMemberIDListFromCache rpc logic call failed ", cacheResp.String()) - return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil - } - err = rocksCache.DelJoinedGroupIDListFromCache(req.OpUserID) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error()) - } - if err := rocksCache.DelGroupMemberListHashFromCache(req.GroupID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), req.GroupID, err.Error()) - } - if err := rocksCache.DelGroupMemberNumFromCache(req.GroupID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) + log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error()) + } else { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String()) } + chat.MemberEnterDirectlyNotification(req.GroupID, req.OpUserID, req.OperationID) log.NewInfo(req.OperationID, "JoinGroup rpc return ") return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil @@ -1042,7 +1096,6 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrArgs.ErrCode, ErrMsg: constant.ErrArgs.ErrMsg}}, nil } } - var groupRequest db.GroupRequest groupRequest.UserID = req.OpUserID groupRequest.ReqMsg = req.ReqMessage @@ -1053,12 +1106,10 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) log.NewError(req.OperationID, "InsertIntoGroupRequest failed ", err.Error(), groupRequest) return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } - //_, err = imdb.GetGroupMemberListByGroupIDAndRoleLevel(req.GroupID, constant.GroupOwner) //if err != nil { // log.NewError(req.OperationID, "GetGroupMemberListByGroupIDAndRoleLevel failed ", err.Error(), req.GroupID, constant.GroupOwner) // return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil - //} chat.JoinGroupApplicationNotification(req) log.NewInfo(req.OperationID, "JoinGroup rpc return ") @@ -1079,6 +1130,11 @@ func (s *groupServer) QuitGroup(ctx context.Context, req *pbGroup.QuitGroupReq) return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } + if err := s.DelGroupAndUserCache(req.OperationID, req.GroupID, []string{req.OpUserID}); err != nil { + log.NewError(req.OperationID, "DelGroupAndUserCache failed, ", err.Error(), req.OpUserID) + return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil + } + err = imdb.DeleteGroupMemberByGroupIDAndUserID(req.GroupID, req.OpUserID) if err != nil { log.NewError(req.OperationID, "DeleteGroupMemberByGroupIdAndUserId failed ", err.Error(), req.GroupID, req.OpUserID) @@ -1121,35 +1177,7 @@ func (s *groupServer) QuitGroup(ctx context.Context, req *pbGroup.QuitGroupReq) } } - etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: constant.ErrInternal.ErrMsg}}, nil - } - cacheClient := pbCache.NewCacheClient(etcdConn) - cacheResp, err := cacheClient.DelGroupMemberIDListFromCache(context.Background(), &pbCache.DelGroupMemberIDListFromCacheReq{ - GroupID: req.GroupID, - OperationID: req.OperationID, - }) - if err != nil { - log.NewError(req.OperationID, "DelGroupMemberIDListFromCache rpc call failed ", err.Error()) - return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil - } - if cacheResp.CommonResp.ErrCode != 0 { - log.NewError(req.OperationID, "DelGroupMemberIDListFromCache rpc logic call failed ", cacheResp.String()) - return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil - } - if err := rocksCache.DelGroupMemberListHashFromCache(req.GroupID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), req.GroupID, err.Error()) - } if groupInfo.GroupType != constant.SuperGroup { - if err := rocksCache.DelJoinedGroupIDListFromCache(req.OpUserID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.OpUserID) - } - if err := rocksCache.DelGroupMemberNumFromCache(req.GroupID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) - } if err := rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.OpUserID); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) } @@ -1158,10 +1186,13 @@ func (s *groupServer) QuitGroup(ctx context.Context, req *pbGroup.QuitGroupReq) if err := rocksCache.DelJoinedSuperGroupIDListFromCache(req.OpUserID); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.OpUserID) } + if err := rocksCache.DelGroupMemberListHashFromCache(req.GroupID); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), req.GroupID, err.Error()) + } chat.SuperGroupNotification(req.OperationID, req.OpUserID, req.OpUserID) } - log.NewInfo(req.OperationID, "rpc QuitGroup return ", pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}) - return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil + log.NewInfo(req.OperationID, "rpc QuitGroup return ", pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{}}) + return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{}}, nil } func hasAccess(req *pbGroup.SetGroupInfoReq) bool { @@ -1259,16 +1290,15 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInf groupInfo.NotificationUserID = req.OpUserID groupInfo.NotificationUpdateTime = time.Now() } + if err := rocksCache.DelGroupInfoFromCache(req.GroupInfoForSet.GroupID); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelGroupInfoFromCache failed ", err.Error(), req.GroupInfoForSet.GroupID) + return &pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil + } err = imdb.SetGroupInfo(groupInfo) if err != nil { log.NewError(req.OperationID, "SetGroupInfo failed ", err.Error(), groupInfo) return &pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } - if err := rocksCache.DelGroupInfoFromCache(req.GroupInfoForSet.GroupID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelGroupInfoFromCache failed ", err.Error(), req.GroupInfoForSet.GroupID) - return &pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil - } - log.NewInfo(req.OperationID, "SetGroupInfo rpc return ", pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{}}) if changedType != 0 { chat.GroupInfoSetNotification(req.OperationID, req.OpUserID, req.GroupInfoForSet.GroupID, groupName, notification, introduction, faceURL, req.GroupInfoForSet.NeedVerification) @@ -1339,6 +1369,18 @@ func (s *groupServer) TransferGroupOwner(_ context.Context, req *pbGroup.Transfe log.NewError(req.OperationID, "same owner ", req.OldOwnerUserID, req.NewOwnerUserID) return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrArgs.ErrCode, ErrMsg: constant.ErrArgs.ErrMsg}}, nil } + err = rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.NewOwnerUserID) + if err != nil { + log.NewError(req.OperationID, "DelGroupMemberInfoFromCache failed ", req.GroupID, req.NewOwnerUserID) + return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil + + } + err = rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.OldOwnerUserID) + if err != nil { + log.NewError(req.OperationID, "DelGroupMemberInfoFromCache failed ", req.GroupID, req.OldOwnerUserID) + return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil + } + groupMemberInfo := db.GroupMember{GroupID: req.GroupID, UserID: req.OldOwnerUserID, RoleLevel: constant.GroupOrdinaryUsers} err = imdb.UpdateGroupMemberInfo(groupMemberInfo) if err != nil { @@ -1351,14 +1393,7 @@ func (s *groupServer) TransferGroupOwner(_ context.Context, req *pbGroup.Transfe log.NewError(req.OperationID, "UpdateGroupMemberInfo failed ", groupMemberInfo) return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } - err = rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.NewOwnerUserID) - if err != nil { - log.NewError(req.OperationID, "DelGroupMemberInfoFromCache failed ", req.GroupID, req.NewOwnerUserID) - } - err = rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.OldOwnerUserID) - if err != nil { - log.NewError(req.OperationID, "DelGroupMemberInfoFromCache failed ", req.GroupID, req.OldOwnerUserID) - } + chat.GroupOwnerTransferredNotification(req) return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil @@ -1503,6 +1538,15 @@ func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGrou return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil } + if err := rocksCache.DelGroupInfoFromCache(req.GroupID); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) + return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil + } + if err := s.DelGroupAndUserCache(req.OperationID, req.GroupID, nil); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) + return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil + } + err := imdb.OperateGroupStatus(req.GroupID, constant.GroupStatusDismissed) if err != nil { log.NewError(req.OperationID, "OperateGroupStatus failed ", req.GroupID, constant.GroupStatusDismissed) @@ -1554,34 +1598,8 @@ func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGrou if err != nil { log.NewError(req.OperationID, "DeleteGroupMemberByGroupID failed ", req.GroupID) return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil - } } - etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 500, ErrMsg: errMsg}}, nil - } - cacheClient := pbCache.NewCacheClient(etcdConn) - cacheResp, err := cacheClient.DelGroupMemberIDListFromCache(context.Background(), &pbCache.DelGroupMemberIDListFromCacheReq{ - GroupID: req.GroupID, - OperationID: req.OperationID, - }) - if err != nil { - log.NewError(req.OperationID, "DelGroupMemberIDListFromCache rpc call failed ", err.Error()) - return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 500, ErrMsg: err.Error()}}, nil - } - if cacheResp.CommonResp.ErrCode != 0 { - log.NewError(req.OperationID, "DelGroupMemberIDListFromCache rpc logic call failed ", cacheResp.String()) - return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: cacheResp.CommonResp.ErrCode, ErrMsg: cacheResp.CommonResp.ErrMsg}}, nil - } - if err := rocksCache.DelGroupInfoFromCache(req.GroupID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) - } - if err := rocksCache.DelGroupMemberListHashFromCache(req.GroupID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) - } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return ", pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}) return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil } @@ -1605,7 +1623,7 @@ func (s *groupServer) MuteGroupMember(ctx context.Context, req *pbGroup.MuteGrou return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil } - mutedInfo, err := imdb.GetGroupMemberInfoByGroupIDAndUserID(req.GroupID, req.UserID) + mutedInfo, err := rocksCache.GetGroupMemberInfoFromCache(req.GroupID, req.UserID) if err != nil { errMsg := req.OperationID + " GetGroupMemberInfoByGroupIDAndUserID failed " + req.GroupID + req.UserID + err.Error() return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil @@ -1619,17 +1637,17 @@ func (s *groupServer) MuteGroupMember(ctx context.Context, req *pbGroup.MuteGrou return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil } + if err := rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.UserID); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID, req.UserID) + return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil + } groupMemberInfo := db.GroupMember{GroupID: req.GroupID, UserID: req.UserID} - groupMemberInfo.MuteEndTime = time.Unix(int64(time.Now().Second())+int64(req.MutedSeconds), time.Now().UnixNano()) err = imdb.UpdateGroupMemberInfo(groupMemberInfo) if err != nil { log.Error(req.OperationID, "UpdateGroupMemberInfo failed ", err.Error(), groupMemberInfo) return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } - if err := rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.UserID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) - } chat.GroupMemberMutedNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID, req.MutedSeconds) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return ", pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}) return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil @@ -1663,6 +1681,10 @@ func (s *groupServer) CancelMuteGroupMember(ctx context.Context, req *pbGroup.Ca errMsg := req.OperationID + " mutedInfo.RoleLevel == constant.GroupAdmin " + req.GroupID + req.UserID return &pbGroup.CancelMuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil } + if err := rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.UserID); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) + return &pbGroup.CancelMuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil + } groupMemberInfo := db.GroupMember{GroupID: req.GroupID, UserID: req.UserID} groupMemberInfo.MuteEndTime = time.Unix(0, 0) @@ -1671,9 +1693,7 @@ func (s *groupServer) CancelMuteGroupMember(ctx context.Context, req *pbGroup.Ca log.Error(req.OperationID, "UpdateGroupMemberInfo failed ", err.Error(), groupMemberInfo) return &pbGroup.CancelMuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } - if err := rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.UserID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) - } + chat.GroupMemberCancelMutedNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return ", pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}) return &pbGroup.CancelMuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil @@ -1707,15 +1727,17 @@ func (s *groupServer) MuteGroup(ctx context.Context, req *pbGroup.MuteGroupReq) // errMsg := req.OperationID + " mutedInfo.RoleLevel == constant.GroupAdmin " + req.GroupID + req.OpUserID + err.Error() // return &pbGroup.MuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil //} + if err := rocksCache.DelGroupInfoFromCache(req.GroupID); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) + return &pbGroup.MuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil + } err = imdb.OperateGroupStatus(req.GroupID, constant.GroupStatusMuted) if err != nil { log.Error(req.OperationID, "OperateGroupStatus failed ", err.Error(), req.GroupID, constant.GroupStatusMuted) return &pbGroup.MuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } - if err := rocksCache.DelGroupInfoFromCache(req.GroupID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) - } + chat.GroupMutedNotification(req.OperationID, req.OpUserID, req.GroupID) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return ", pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}) return &pbGroup.MuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil @@ -1723,7 +1745,6 @@ func (s *groupServer) MuteGroup(ctx context.Context, req *pbGroup.MuteGroupReq) func (s *groupServer) CancelMuteGroup(ctx context.Context, req *pbGroup.CancelMuteGroupReq) (*pbGroup.CancelMuteGroupResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String()) - opFlag, err := s.getGroupUserLevel(req.GroupID, req.OpUserID) if err != nil { errMsg := req.OperationID + " getGroupUserLevel failed " + req.GroupID + req.OpUserID + err.Error() @@ -1735,7 +1756,6 @@ func (s *groupServer) CancelMuteGroup(ctx context.Context, req *pbGroup.CancelMu log.Error(req.OperationID, errMsg) return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil } - //mutedInfo, err := imdb.GetGroupMemberInfoByGroupIDAndUserID(req.GroupID, req.) //if err != nil { // errMsg := req.OperationID + " GetGroupMemberInfoByGroupIDAndUserID failed " + req.GroupID + req.OpUserID + err.Error() @@ -1750,14 +1770,16 @@ func (s *groupServer) CancelMuteGroup(ctx context.Context, req *pbGroup.CancelMu // return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil //} log.Debug(req.OperationID, "UpdateGroupInfoDefaultZero ", req.GroupID, map[string]interface{}{"status": constant.GroupOk}) + if err := rocksCache.DelGroupInfoFromCache(req.GroupID); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) + return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil + } err = imdb.UpdateGroupInfoDefaultZero(req.GroupID, map[string]interface{}{"status": constant.GroupOk}) if err != nil { log.Error(req.OperationID, "UpdateGroupInfoDefaultZero failed ", err.Error(), req.GroupID) return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } - if err := rocksCache.DelGroupInfoFromCache(req.GroupID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) - } + chat.GroupCancelMutedNotification(req.OperationID, req.OpUserID, req.GroupID) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return ", pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}) return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil @@ -1770,11 +1792,35 @@ func (s *groupServer) SetGroupMemberNickname(ctx context.Context, req *pbGroup.S log.Error(req.OperationID, errMsg) return &pbGroup.SetGroupMemberNicknameResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil } + cbReq := &pbGroup.SetGroupMemberInfoReq{ + GroupID: req.GroupID, + UserID: req.UserID, + OperationID: req.OperationID, + OpUserID: req.OpUserID, + Nickname: &wrapperspb.StringValue{Value: req.Nickname}, + } + callbackResp := CallbackBeforeSetGroupMemberInfo(cbReq) + if callbackResp.ErrCode != 0 { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "CallbackBeforeMemberJoinGroup resp: ", callbackResp) + } + if callbackResp.ActionCode != constant.ActionAllow { + if callbackResp.ErrCode == 0 { + callbackResp.ErrCode = 201 + } + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CallbackBeforeMemberJoinGroup result", "end rpc and return", callbackResp) + return &pbGroup.SetGroupMemberNicknameResp{ + CommonResp: &pbGroup.CommonResp{ + ErrCode: int32(callbackResp.ErrCode), + ErrMsg: callbackResp.ErrMsg, + }, + }, nil + } + nickName := cbReq.Nickname.Value groupMemberInfo := db.GroupMember{} groupMemberInfo.UserID = req.UserID groupMemberInfo.GroupID = req.GroupID - if req.Nickname == "" { + if nickName == "" { userNickname, err := imdb.GetUserNameByUserID(groupMemberInfo.UserID) if err != nil { errMsg := req.OperationID + " GetUserNameByUserID failed " + err.Error() @@ -1783,7 +1829,12 @@ func (s *groupServer) SetGroupMemberNickname(ctx context.Context, req *pbGroup.S } groupMemberInfo.Nickname = userNickname } else { - groupMemberInfo.Nickname = req.Nickname + groupMemberInfo.Nickname = nickName + } + + if err := rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.UserID); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) + return &pbGroup.SetGroupMemberNicknameResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil } err := imdb.UpdateGroupMemberInfo(groupMemberInfo) if err != nil { @@ -1791,9 +1842,6 @@ func (s *groupServer) SetGroupMemberNickname(ctx context.Context, req *pbGroup.S log.Error(req.OperationID, errMsg) return &pbGroup.SetGroupMemberNicknameResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } - if err := rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.UserID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) - } chat.GroupMemberInfoSetNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return ", pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}) return &pbGroup.SetGroupMemberNicknameResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil @@ -1802,6 +1850,29 @@ func (s *groupServer) SetGroupMemberNickname(ctx context.Context, req *pbGroup.S func (s *groupServer) SetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGroupMemberInfoReq) (resp *pbGroup.SetGroupMemberInfoResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp = &pbGroup.SetGroupMemberInfoResp{CommonResp: &pbGroup.CommonResp{}} + if err := rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.UserID); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) + resp.CommonResp.ErrCode = constant.ErrDB.ErrCode + resp.CommonResp.ErrMsg = err.Error() + return resp, nil + } + callbackResp := CallbackBeforeSetGroupMemberInfo(req) + if callbackResp.ErrCode != 0 { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "CallbackBeforeMemberJoinGroup resp: ", callbackResp) + } + if callbackResp.ActionCode != constant.ActionAllow { + if callbackResp.ErrCode == 0 { + callbackResp.ErrCode = 201 + } + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CallbackBeforeMemberJoinGroup result", "end rpc and return", callbackResp) + return &pbGroup.SetGroupMemberInfoResp{ + CommonResp: &pbGroup.CommonResp{ + ErrCode: int32(callbackResp.ErrCode), + ErrMsg: callbackResp.ErrMsg, + }, + }, nil + } + groupMember := db.GroupMember{ GroupID: req.GroupID, UserID: req.UserID, @@ -1818,6 +1889,8 @@ func (s *groupServer) SetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGr } if req.Ex != nil { m["ex"] = req.Ex.Value + } else { + m["ex"] = nil } err = imdb.UpdateGroupMemberInfoByMap(groupMember, m) if err != nil { @@ -1826,9 +1899,6 @@ func (s *groupServer) SetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGr resp.CommonResp.ErrMsg = constant.ErrDB.ErrMsg + ":" + err.Error() return resp, nil } - if err := rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.UserID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID, req.UserID) - } if req.RoleLevel != nil { switch req.RoleLevel.Value { case constant.GroupOrdinaryUsers: @@ -1867,3 +1937,47 @@ func (s *groupServer) GetGroupAbstractInfo(c context.Context, req *pbGroup.GetGr log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", resp.String()) return resp, nil } + +func (s *groupServer) DelGroupAndUserCache(operationID, groupID string, userIDList []string) error { + if groupID != "" { + etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, operationID) + if etcdConn == nil { + errMsg := operationID + "getcdv3.GetDefaultConn == nil" + log.NewError(operationID, errMsg) + return errors.New("etcdConn is nil") + } + cacheClient := pbCache.NewCacheClient(etcdConn) + cacheResp, err := cacheClient.DelGroupMemberIDListFromCache(context.Background(), &pbCache.DelGroupMemberIDListFromCacheReq{ + GroupID: groupID, + OperationID: operationID, + }) + if err != nil { + log.NewError(operationID, "DelGroupMemberIDListFromCache rpc call failed ", err.Error()) + return utils.Wrap(err, "") + } + if cacheResp.CommonResp.ErrCode != 0 { + log.NewError(operationID, "DelGroupMemberIDListFromCache rpc logic call failed ", cacheResp.String()) + return errors.New(fmt.Sprintf("errMsg is %s, errCode is %d", cacheResp.CommonResp.ErrMsg, cacheResp.CommonResp.ErrCode)) + } + err = rocksCache.DelGroupMemberListHashFromCache(groupID) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), groupID, err.Error()) + return utils.Wrap(err, "") + } + err = rocksCache.DelGroupMemberNumFromCache(groupID) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupID) + return utils.Wrap(err, "") + } + } + if userIDList != nil { + for _, userID := range userIDList { + err := rocksCache.DelJoinedGroupIDListFromCache(userID) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error()) + return utils.Wrap(err, "") + } + } + } + return nil +} diff --git a/internal/rpc/group/super_group.go b/internal/rpc/group/super_group.go index b667abe76..070c95256 100644 --- a/internal/rpc/group/super_group.go +++ b/internal/rpc/group/super_group.go @@ -8,6 +8,7 @@ import ( commonPb "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" "context" + "github.com/go-redis/redis/v8" ) diff --git a/internal/rpc/msg/extend_msg.go b/internal/rpc/msg/extend_msg.go new file mode 100644 index 000000000..3d8fa83bc --- /dev/null +++ b/internal/rpc/msg/extend_msg.go @@ -0,0 +1,435 @@ +package msg + +import ( + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/db" + "Open_IM/pkg/common/log" + "Open_IM/pkg/proto/msg" + "Open_IM/pkg/proto/sdk_ws" + "Open_IM/pkg/utils" + "context" + go_redis "github.com/go-redis/redis/v8" + + "time" +) + +func (rpc *rpcChat) SetMessageReactionExtensions(ctx context.Context, req *msg.SetMessageReactionExtensionsReq) (resp *msg.SetMessageReactionExtensionsResp, err error) { + log.Debug(req.OperationID, utils.GetSelfFuncName(), "rpc args is:", req.String()) + var rResp msg.SetMessageReactionExtensionsResp + rResp.ClientMsgID = req.ClientMsgID + rResp.MsgFirstModifyTime = req.MsgFirstModifyTime + callbackResp := callbackSetMessageReactionExtensions(req) + if callbackResp.ActionCode != constant.ActionAllow || callbackResp.ErrCode != 0 { + rResp.ErrCode = int32(callbackResp.ErrCode) + rResp.ErrMsg = callbackResp.ErrMsg + for _, value := range req.ReactionExtensionList { + temp := new(msg.KeyValueResp) + temp.KeyValue = value + temp.ErrMsg = callbackResp.ErrMsg + temp.ErrCode = 100 + rResp.Result = append(rResp.Result, temp) + } + return &rResp, nil + } + //if ExternalExtension + if req.IsExternalExtensions { + var isHistory bool + if req.IsReact { + isHistory = false + } else { + isHistory = true + } + rResp.MsgFirstModifyTime = callbackResp.MsgFirstModifyTime + rResp.Result = callbackResp.ResultReactionExtensionList + ExtendMessageUpdatedNotification(req.OperationID, req.OpUserID, req.SourceID, req.SessionType, req, &rResp, isHistory, false) + return &rResp, nil + } + for _, v := range callbackResp.ResultReactionExtensionList { + if v.ErrCode == 0 { + req.ReactionExtensionList[v.KeyValue.TypeKey] = v.KeyValue + } else { + delete(req.ReactionExtensionList, v.KeyValue.TypeKey) + rResp.Result = append(rResp.Result, v) + } + } + isExists, err := db.DB.JudgeMessageReactionEXISTS(req.ClientMsgID, req.SessionType) + if err != nil { + rResp.ErrCode = 100 + rResp.ErrMsg = err.Error() + for _, value := range req.ReactionExtensionList { + temp := new(msg.KeyValueResp) + temp.KeyValue = value + temp.ErrMsg = err.Error() + temp.ErrCode = 100 + rResp.Result = append(rResp.Result, temp) + } + return &rResp, nil + } + + if !isExists { + if !req.IsReact { + log.Debug(req.OperationID, "redis handle firstly", req.String()) + rResp.MsgFirstModifyTime = utils.GetCurrentTimestampByMill() + for k, v := range req.ReactionExtensionList { + err := rpc.dMessageLocker.LockMessageTypeKey(req.ClientMsgID, k) + if err != nil { + setKeyResultInfo(&rResp, 100, err.Error(), req.ClientMsgID, k, v) + continue + } + v.LatestUpdateTime = utils.GetCurrentTimestampByMill() + newerr := db.DB.SetMessageTypeKeyValue(req.ClientMsgID, req.SessionType, k, utils.StructToJsonString(v)) + if newerr != nil { + setKeyResultInfo(&rResp, 201, newerr.Error(), req.ClientMsgID, k, v) + continue + } + setKeyResultInfo(&rResp, 0, "", req.ClientMsgID, k, v) + } + rResp.IsReact = true + _, err := db.DB.SetMessageReactionExpire(req.ClientMsgID, req.SessionType, time.Duration(24*3)*time.Hour) + if err != nil { + log.Error(req.OperationID, "SetMessageReactionExpire err:", err.Error(), req.String()) + } + } else { + err := rpc.dMessageLocker.LockGlobalMessage(req.ClientMsgID) + if err != nil { + rResp.ErrCode = 100 + rResp.ErrMsg = err.Error() + for _, value := range req.ReactionExtensionList { + temp := new(msg.KeyValueResp) + temp.KeyValue = value + temp.ErrMsg = err.Error() + temp.ErrCode = 100 + rResp.Result = append(rResp.Result, temp) + } + return &rResp, nil + } + mongoValue, err := db.DB.GetExtendMsg(req.SourceID, req.SessionType, req.ClientMsgID, req.MsgFirstModifyTime) + if err != nil { + rResp.ErrCode = 200 + rResp.ErrMsg = err.Error() + for _, value := range req.ReactionExtensionList { + temp := new(msg.KeyValueResp) + temp.KeyValue = value + temp.ErrMsg = err.Error() + temp.ErrCode = 100 + rResp.Result = append(rResp.Result, temp) + } + return &rResp, nil + } + setValue := make(map[string]*server_api_params.KeyValue) + for k, v := range req.ReactionExtensionList { + + temp := new(server_api_params.KeyValue) + if vv, ok := mongoValue.ReactionExtensionList[k]; ok { + utils.CopyStructFields(temp, &vv) + if v.LatestUpdateTime != vv.LatestUpdateTime { + setKeyResultInfo(&rResp, 300, "message have update", req.ClientMsgID, k, temp) + continue + } + } + temp.TypeKey = k + temp.Value = v.Value + temp.LatestUpdateTime = utils.GetCurrentTimestampByMill() + setValue[k] = temp + } + err = db.DB.InsertOrUpdateReactionExtendMsgSet(req.SourceID, req.SessionType, req.ClientMsgID, req.MsgFirstModifyTime, setValue) + if err != nil { + for _, value := range setValue { + temp := new(msg.KeyValueResp) + temp.KeyValue = value + temp.ErrMsg = err.Error() + temp.ErrCode = 100 + rResp.Result = append(rResp.Result, temp) + } + } else { + for _, value := range setValue { + temp := new(msg.KeyValueResp) + temp.KeyValue = value + rResp.Result = append(rResp.Result, temp) + } + } + lockErr := rpc.dMessageLocker.UnLockGlobalMessage(req.ClientMsgID) + if lockErr != nil { + log.Error(req.OperationID, "UnLockGlobalMessage err:", lockErr.Error()) + } + } + + } else { + log.Debug(req.OperationID, "redis handle secondly", req.String()) + + for k, v := range req.ReactionExtensionList { + err := rpc.dMessageLocker.LockMessageTypeKey(req.ClientMsgID, k) + if err != nil { + setKeyResultInfo(&rResp, 100, err.Error(), req.ClientMsgID, k, v) + continue + } + redisValue, err := db.DB.GetMessageTypeKeyValue(req.ClientMsgID, req.SessionType, k) + if err != nil && err != go_redis.Nil { + setKeyResultInfo(&rResp, 200, err.Error(), req.ClientMsgID, k, v) + continue + } + temp := new(server_api_params.KeyValue) + utils.JsonStringToStruct(redisValue, temp) + if v.LatestUpdateTime != temp.LatestUpdateTime { + setKeyResultInfo(&rResp, 300, "message have update", req.ClientMsgID, k, temp) + continue + } else { + v.LatestUpdateTime = utils.GetCurrentTimestampByMill() + newerr := db.DB.SetMessageTypeKeyValue(req.ClientMsgID, req.SessionType, k, utils.StructToJsonString(v)) + if newerr != nil { + setKeyResultInfo(&rResp, 201, newerr.Error(), req.ClientMsgID, k, temp) + continue + } + setKeyResultInfo(&rResp, 0, "", req.ClientMsgID, k, v) + } + + } + } + if !isExists { + if !req.IsReact { + ExtendMessageUpdatedNotification(req.OperationID, req.OpUserID, req.SourceID, req.SessionType, req, &rResp, true, true) + } else { + ExtendMessageUpdatedNotification(req.OperationID, req.OpUserID, req.SourceID, req.SessionType, req, &rResp, false, false) + } + } else { + ExtendMessageUpdatedNotification(req.OperationID, req.OpUserID, req.SourceID, req.SessionType, req, &rResp, false, true) + } + log.Debug(req.OperationID, utils.GetSelfFuncName(), "rpc return is:", rResp.String()) + return &rResp, nil + +} +func setKeyResultInfo(r *msg.SetMessageReactionExtensionsResp, errCode int32, errMsg, clientMsgID, typeKey string, keyValue *server_api_params.KeyValue) { + temp := new(msg.KeyValueResp) + temp.KeyValue = keyValue + temp.ErrCode = errCode + temp.ErrMsg = errMsg + r.Result = append(r.Result, temp) + _ = db.DB.UnLockMessageTypeKey(clientMsgID, typeKey) +} +func setDeleteKeyResultInfo(r *msg.DeleteMessageListReactionExtensionsResp, errCode int32, errMsg, clientMsgID, typeKey string, keyValue *server_api_params.KeyValue) { + temp := new(msg.KeyValueResp) + temp.KeyValue = keyValue + temp.ErrCode = errCode + temp.ErrMsg = errMsg + r.Result = append(r.Result, temp) + _ = db.DB.UnLockMessageTypeKey(clientMsgID, typeKey) +} + +func (rpc *rpcChat) GetMessageListReactionExtensions(ctx context.Context, req *msg.GetMessageListReactionExtensionsReq) (resp *msg.GetMessageListReactionExtensionsResp, err error) { + log.Debug(req.OperationID, utils.GetSelfFuncName(), "rpc args is:", req.String()) + var rResp msg.GetMessageListReactionExtensionsResp + if req.IsExternalExtensions { + callbackResp := callbackGetMessageListReactionExtensions(req) + if callbackResp.ActionCode != constant.ActionAllow || callbackResp.ErrCode != 0 { + rResp.ErrCode = int32(callbackResp.ErrCode) + rResp.ErrMsg = callbackResp.ErrMsg + return &rResp, nil + } else { + rResp.SingleMessageResult = callbackResp.MessageResultList + return &rResp, nil + } + } + for _, messageValue := range req.MessageReactionKeyList { + var oneMessage msg.SingleMessageExtensionResult + oneMessage.ClientMsgID = messageValue.ClientMsgID + + isExists, err := db.DB.JudgeMessageReactionEXISTS(messageValue.ClientMsgID, req.SessionType) + if err != nil { + rResp.ErrCode = 100 + rResp.ErrMsg = err.Error() + return &rResp, nil + } + if isExists { + redisValue, err := db.DB.GetOneMessageAllReactionList(messageValue.ClientMsgID, req.SessionType) + if err != nil { + oneMessage.ErrCode = 100 + oneMessage.ErrMsg = err.Error() + rResp.SingleMessageResult = append(rResp.SingleMessageResult, &oneMessage) + continue + } + keyMap := make(map[string]*server_api_params.KeyValue) + + for k, v := range redisValue { + temp := new(server_api_params.KeyValue) + utils.JsonStringToStruct(v, temp) + keyMap[k] = temp + } + oneMessage.ReactionExtensionList = keyMap + + } else { + mongoValue, err := db.DB.GetExtendMsg(req.SourceID, req.SessionType, messageValue.ClientMsgID, messageValue.MsgFirstModifyTime) + if err != nil { + oneMessage.ErrCode = 100 + oneMessage.ErrMsg = err.Error() + rResp.SingleMessageResult = append(rResp.SingleMessageResult, &oneMessage) + continue + } + keyMap := make(map[string]*server_api_params.KeyValue) + + for k, v := range mongoValue.ReactionExtensionList { + temp := new(server_api_params.KeyValue) + temp.TypeKey = v.TypeKey + temp.Value = v.Value + temp.LatestUpdateTime = v.LatestUpdateTime + keyMap[k] = temp + } + oneMessage.ReactionExtensionList = keyMap + } + rResp.SingleMessageResult = append(rResp.SingleMessageResult, &oneMessage) + } + log.Debug(req.OperationID, utils.GetSelfFuncName(), "rpc return is:", rResp.String()) + return &rResp, nil + +} + +func (rpc *rpcChat) AddMessageReactionExtensions(ctx context.Context, req *msg.ModifyMessageReactionExtensionsReq) (resp *msg.ModifyMessageReactionExtensionsResp, err error) { + return +} + +func (rpc *rpcChat) DeleteMessageReactionExtensions(ctx context.Context, req *msg.DeleteMessageListReactionExtensionsReq) (resp *msg.DeleteMessageListReactionExtensionsResp, err error) { + log.Debug(req.OperationID, utils.GetSelfFuncName(), "rpc args is:", req.String()) + var rResp msg.DeleteMessageListReactionExtensionsResp + callbackResp := callbackDeleteMessageReactionExtensions(req) + if callbackResp.ActionCode != constant.ActionAllow || callbackResp.ErrCode != 0 { + rResp.ErrCode = int32(callbackResp.ErrCode) + rResp.ErrMsg = callbackResp.ErrMsg + for _, value := range req.ReactionExtensionList { + temp := new(msg.KeyValueResp) + temp.KeyValue = value + temp.ErrMsg = callbackResp.ErrMsg + temp.ErrCode = 100 + rResp.Result = append(rResp.Result, temp) + } + return &rResp, nil + } + //if ExternalExtension + if req.IsExternalExtensions { + rResp.Result = callbackResp.ResultReactionExtensionList + ExtendMessageDeleteNotification(req.OperationID, req.OpUserID, req.SourceID, req.SessionType, req, &rResp, false, false) + return &rResp, nil + + } + for _, v := range callbackResp.ResultReactionExtensionList { + if v.ErrCode != 0 { + func(req *[]*server_api_params.KeyValue, typeKey string) { + for i := 0; i < len(*req); i++ { + if (*req)[i].TypeKey == typeKey { + *req = append((*req)[:i], (*req)[i+1:]...) + } + } + }(&req.ReactionExtensionList, v.KeyValue.TypeKey) + rResp.Result = append(rResp.Result, v) + } + } + isExists, err := db.DB.JudgeMessageReactionEXISTS(req.ClientMsgID, req.SessionType) + if err != nil { + rResp.ErrCode = 100 + rResp.ErrMsg = err.Error() + for _, value := range req.ReactionExtensionList { + temp := new(msg.KeyValueResp) + temp.KeyValue = value + temp.ErrMsg = err.Error() + temp.ErrCode = 100 + rResp.Result = append(rResp.Result, temp) + } + return &rResp, nil + } + + if isExists { + log.Debug(req.OperationID, "redis handle this delete", req.String()) + for _, v := range req.ReactionExtensionList { + err := rpc.dMessageLocker.LockMessageTypeKey(req.ClientMsgID, v.TypeKey) + if err != nil { + setDeleteKeyResultInfo(&rResp, 100, err.Error(), req.ClientMsgID, v.TypeKey, v) + continue + } + + redisValue, err := db.DB.GetMessageTypeKeyValue(req.ClientMsgID, req.SessionType, v.TypeKey) + if err != nil && err != go_redis.Nil { + setDeleteKeyResultInfo(&rResp, 200, err.Error(), req.ClientMsgID, v.TypeKey, v) + continue + } + temp := new(server_api_params.KeyValue) + utils.JsonStringToStruct(redisValue, temp) + if v.LatestUpdateTime != temp.LatestUpdateTime { + setDeleteKeyResultInfo(&rResp, 300, "message have update", req.ClientMsgID, v.TypeKey, temp) + continue + } else { + newErr := db.DB.DeleteOneMessageKey(req.ClientMsgID, req.SessionType, v.TypeKey) + if newErr != nil { + setDeleteKeyResultInfo(&rResp, 201, newErr.Error(), req.ClientMsgID, v.TypeKey, temp) + continue + } + setDeleteKeyResultInfo(&rResp, 0, "", req.ClientMsgID, v.TypeKey, v) + } + } + } else { + err := rpc.dMessageLocker.LockGlobalMessage(req.ClientMsgID) + if err != nil { + rResp.ErrCode = 100 + rResp.ErrMsg = err.Error() + for _, value := range req.ReactionExtensionList { + temp := new(msg.KeyValueResp) + temp.KeyValue = value + temp.ErrMsg = err.Error() + temp.ErrCode = 100 + rResp.Result = append(rResp.Result, temp) + } + return &rResp, nil + } + mongoValue, err := db.DB.GetExtendMsg(req.SourceID, req.SessionType, req.ClientMsgID, req.MsgFirstModifyTime) + if err != nil { + rResp.ErrCode = 200 + rResp.ErrMsg = err.Error() + for _, value := range req.ReactionExtensionList { + temp := new(msg.KeyValueResp) + temp.KeyValue = value + temp.ErrMsg = err.Error() + temp.ErrCode = 100 + rResp.Result = append(rResp.Result, temp) + } + return &rResp, nil + } + setValue := make(map[string]*server_api_params.KeyValue) + for _, v := range req.ReactionExtensionList { + + temp := new(server_api_params.KeyValue) + if vv, ok := mongoValue.ReactionExtensionList[v.TypeKey]; ok { + utils.CopyStructFields(temp, &vv) + if v.LatestUpdateTime != vv.LatestUpdateTime { + setDeleteKeyResultInfo(&rResp, 300, "message have update", req.ClientMsgID, v.TypeKey, temp) + continue + } + } else { + setDeleteKeyResultInfo(&rResp, 400, "key not in", req.ClientMsgID, v.TypeKey, v) + continue + } + temp.TypeKey = v.TypeKey + setValue[v.TypeKey] = temp + } + err = db.DB.DeleteReactionExtendMsgSet(req.SourceID, req.SessionType, req.ClientMsgID, req.MsgFirstModifyTime, setValue) + if err != nil { + for _, value := range setValue { + temp := new(msg.KeyValueResp) + temp.KeyValue = value + temp.ErrMsg = err.Error() + temp.ErrCode = 100 + rResp.Result = append(rResp.Result, temp) + } + } else { + for _, value := range setValue { + temp := new(msg.KeyValueResp) + temp.KeyValue = value + rResp.Result = append(rResp.Result, temp) + } + } + lockErr := rpc.dMessageLocker.UnLockGlobalMessage(req.ClientMsgID) + if lockErr != nil { + log.Error(req.OperationID, "UnLockGlobalMessage err:", lockErr.Error()) + } + + } + ExtendMessageDeleteNotification(req.OperationID, req.OpUserID, req.SourceID, req.SessionType, req, &rResp, false, isExists) + log.Debug(req.OperationID, utils.GetSelfFuncName(), "rpc return is:", rResp.String()) + return &rResp, nil +} diff --git a/internal/rpc/msg/extend_msg.notification.go b/internal/rpc/msg/extend_msg.notification.go new file mode 100644 index 000000000..971f2f797 --- /dev/null +++ b/internal/rpc/msg/extend_msg.notification.go @@ -0,0 +1,106 @@ +package msg + +import ( + "Open_IM/pkg/base_info" + "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/log" + "Open_IM/pkg/grpc-etcdv3/getcdv3" + "Open_IM/pkg/proto/msg" + open_im_sdk "Open_IM/pkg/proto/sdk_ws" + "Open_IM/pkg/utils" + "context" + "strings" +) + +func ExtendMessageUpdatedNotification(operationID, sendID string, sourceID string, sessionType int32, + req *msg.SetMessageReactionExtensionsReq, resp *msg.SetMessageReactionExtensionsResp, isHistory bool, isReactionFromCache bool) { + var m base_info.ReactionMessageModifierNotification + m.SourceID = req.SourceID + m.OpUserID = req.OpUserID + m.SessionType = req.SessionType + keyMap := make(map[string]*open_im_sdk.KeyValue) + for _, valueResp := range resp.Result { + if valueResp.ErrCode == 0 { + keyMap[valueResp.KeyValue.TypeKey] = valueResp.KeyValue + } + } + if len(keyMap) == 0 { + log.NewWarn(operationID, "all key set failed can not send notification", *req) + return + } + m.SuccessReactionExtensionList = keyMap + m.ClientMsgID = req.ClientMsgID + m.IsReact = resp.IsReact + m.IsExternalExtensions = req.IsExternalExtensions + m.MsgFirstModifyTime = resp.MsgFirstModifyTime + messageReactionSender(operationID, sendID, sourceID, sessionType, constant.ReactionMessageModifier, utils.StructToJsonString(m), isHistory, isReactionFromCache) +} +func ExtendMessageDeleteNotification(operationID, sendID string, sourceID string, sessionType int32, + req *msg.DeleteMessageListReactionExtensionsReq, resp *msg.DeleteMessageListReactionExtensionsResp, isHistory bool, isReactionFromCache bool) { + var m base_info.ReactionMessageDeleteNotification + m.SourceID = req.SourceID + m.OpUserID = req.OpUserID + m.SessionType = req.SessionType + keyMap := make(map[string]*open_im_sdk.KeyValue) + for _, valueResp := range resp.Result { + if valueResp.ErrCode == 0 { + keyMap[valueResp.KeyValue.TypeKey] = valueResp.KeyValue + } + } + if len(keyMap) == 0 { + log.NewWarn(operationID, "all key set failed can not send notification", *req) + return + } + m.SuccessReactionExtensionList = keyMap + m.ClientMsgID = req.ClientMsgID + m.MsgFirstModifyTime = req.MsgFirstModifyTime + + messageReactionSender(operationID, sendID, sourceID, sessionType, constant.ReactionMessageDeleter, utils.StructToJsonString(m), isHistory, isReactionFromCache) +} +func messageReactionSender(operationID, sendID string, sourceID string, sessionType, contentType int32, content string, isHistory bool, isReactionFromCache bool) { + options := make(map[string]bool, 5) + utils.SetSwitchFromOptions(options, constant.IsOfflinePush, false) + utils.SetSwitchFromOptions(options, constant.IsConversationUpdate, false) + utils.SetSwitchFromOptions(options, constant.IsSenderConversationUpdate, false) + utils.SetSwitchFromOptions(options, constant.IsUnreadCount, false) + utils.SetSwitchFromOptions(options, constant.IsReactionFromCache, isReactionFromCache) + if !isHistory { + utils.SetSwitchFromOptions(options, constant.IsHistory, false) + utils.SetSwitchFromOptions(options, constant.IsPersistent, false) + } + pbData := msg.SendMsgReq{ + OperationID: operationID, + MsgData: &open_im_sdk.MsgData{ + SendID: sendID, + ClientMsgID: utils.GetMsgID(sendID), + SessionType: sessionType, + MsgFrom: constant.SysMsgType, + ContentType: contentType, + Content: []byte(content), + // ForceList: params.ForceList, + CreateTime: utils.GetCurrentTimestampByMill(), + Options: options, + }, + } + switch sessionType { + case constant.SingleChatType, constant.NotificationChatType: + pbData.MsgData.RecvID = sourceID + case constant.GroupChatType, constant.SuperGroupChatType: + pbData.MsgData.GroupID = sourceID + } + etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMsgName, operationID) + if etcdConn == nil { + errMsg := operationID + "getcdv3.GetDefaultConn == nil" + log.NewError(operationID, errMsg) + return + } + client := msg.NewMsgClient(etcdConn) + reply, err := client.SendMsg(context.Background(), &pbData) + if err != nil { + log.NewError(operationID, "SendMsg rpc failed, ", pbData.String(), err.Error()) + } else if reply.ErrCode != 0 { + log.NewError(operationID, "SendMsg rpc failed, ", pbData.String(), reply.ErrCode, reply.ErrMsg) + } + +} diff --git a/internal/rpc/msg/extend_msg_callback.go b/internal/rpc/msg/extend_msg_callback.go new file mode 100644 index 000000000..eb2595456 --- /dev/null +++ b/internal/rpc/msg/extend_msg_callback.go @@ -0,0 +1,79 @@ +package msg + +import ( + cbApi "Open_IM/pkg/call_back_struct" + "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/http" + "Open_IM/pkg/common/log" + "Open_IM/pkg/proto/msg" + "Open_IM/pkg/utils" + http2 "net/http" +) + +func callbackSetMessageReactionExtensions(setReq *msg.SetMessageReactionExtensionsReq) *cbApi.CallbackBeforeSetMessageReactionExtResp { + callbackResp := cbApi.CommonCallbackResp{OperationID: setReq.OperationID} + log.NewDebug(setReq.OperationID, utils.GetSelfFuncName(), setReq.String()) + req := cbApi.CallbackBeforeSetMessageReactionExtReq{ + OperationID: setReq.OperationID, + CallbackCommand: constant.CallbackBeforeSetMessageReactionExtensionCommand, + SourceID: setReq.SourceID, + OpUserID: setReq.OpUserID, + SessionType: setReq.SessionType, + ReactionExtensionList: setReq.ReactionExtensionList, + ClientMsgID: setReq.ClientMsgID, + IsReact: setReq.IsReact, + IsExternalExtensions: setReq.IsExternalExtensions, + MsgFirstModifyTime: setReq.MsgFirstModifyTime, + } + resp := &cbApi.CallbackBeforeSetMessageReactionExtResp{CommonCallbackResp: &callbackResp} + defer log.NewDebug(setReq.OperationID, utils.GetSelfFuncName(), req, *resp) + if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeSetMessageReactionExtensionCommand, req, resp, config.Config.Callback.CallbackAfterSendGroupMsg.CallbackTimeOut); err != nil { + callbackResp.ErrCode = http2.StatusInternalServerError + callbackResp.ErrMsg = err.Error() + } + return resp + +} + +func callbackDeleteMessageReactionExtensions(setReq *msg.DeleteMessageListReactionExtensionsReq) *cbApi.CallbackDeleteMessageReactionExtResp { + callbackResp := cbApi.CommonCallbackResp{OperationID: setReq.OperationID} + log.NewDebug(setReq.OperationID, utils.GetSelfFuncName(), setReq.String()) + req := cbApi.CallbackDeleteMessageReactionExtReq{ + OperationID: setReq.OperationID, + CallbackCommand: constant.CallbackBeforeDeleteMessageReactionExtensionsCommand, + SourceID: setReq.SourceID, + OpUserID: setReq.OpUserID, + SessionType: setReq.SessionType, + ReactionExtensionList: setReq.ReactionExtensionList, + ClientMsgID: setReq.ClientMsgID, + IsExternalExtensions: setReq.IsExternalExtensions, + MsgFirstModifyTime: setReq.MsgFirstModifyTime, + } + resp := &cbApi.CallbackDeleteMessageReactionExtResp{CommonCallbackResp: &callbackResp} + defer log.NewDebug(setReq.OperationID, utils.GetSelfFuncName(), req, *resp) + if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeDeleteMessageReactionExtensionsCommand, req, resp, config.Config.Callback.CallbackAfterSendGroupMsg.CallbackTimeOut); err != nil { + callbackResp.ErrCode = http2.StatusInternalServerError + callbackResp.ErrMsg = err.Error() + } + return resp +} +func callbackGetMessageListReactionExtensions(setReq *msg.GetMessageListReactionExtensionsReq) *cbApi.CallbackGetMessageListReactionExtResp { + callbackResp := cbApi.CommonCallbackResp{OperationID: setReq.OperationID} + log.NewDebug(setReq.OperationID, utils.GetSelfFuncName(), setReq.String()) + req := cbApi.CallbackGetMessageListReactionExtReq{ + OperationID: setReq.OperationID, + CallbackCommand: constant.CallbackGetMessageListReactionExtensionsCommand, + SourceID: setReq.SourceID, + OpUserID: setReq.OpUserID, + SessionType: setReq.SessionType, + MessageKeyList: setReq.MessageReactionKeyList, + } + resp := &cbApi.CallbackGetMessageListReactionExtResp{CommonCallbackResp: &callbackResp} + defer log.NewDebug(setReq.OperationID, utils.GetSelfFuncName(), req, *resp) + if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackGetMessageListReactionExtensionsCommand, req, resp, config.Config.Callback.CallbackAfterSendGroupMsg.CallbackTimeOut); err != nil { + callbackResp.ErrCode = http2.StatusInternalServerError + callbackResp.ErrMsg = err.Error() + } + return resp +} diff --git a/internal/rpc/msg/friend_notification.go b/internal/rpc/msg/friend_notification.go index 91d926bf9..1755c2d78 100644 --- a/internal/rpc/msg/friend_notification.go +++ b/internal/rpc/msg/friend_notification.go @@ -68,6 +68,8 @@ func friendNotification(commID *pbFriend.CommID, contentType int32, m proto.Mess tips.DefaultTips = cn.BlackDeleted.DefaultTips.Tips + toUserNickname case constant.UserInfoUpdatedNotification: tips.DefaultTips = cn.UserInfoUpdated.DefaultTips.Tips + case constant.FriendInfoUpdatedNotification: + tips.DefaultTips = cn.FriendInfoUpdated.DefaultTips.Tips + toUserNickname default: log.Error(commID.OperationID, "contentType failed ", contentType) return @@ -158,8 +160,15 @@ func BlackDeletedNotification(req *pbFriend.RemoveBlacklistReq) { friendNotification(req.CommID, constant.BlackDeletedNotification, &blackDeletedTips) } -func UserInfoUpdatedNotification(operationID, userID string, needNotifiedUserID string) { - selfInfoUpdatedTips := open_im_sdk.UserInfoUpdatedTips{UserID: userID} - commID := pbFriend.CommID{FromUserID: userID, ToUserID: needNotifiedUserID, OpUserID: userID, OperationID: operationID} +//send to myself +func UserInfoUpdatedNotification(operationID, opUserID string, changedUserID string) { + selfInfoUpdatedTips := open_im_sdk.UserInfoUpdatedTips{UserID: changedUserID} + commID := pbFriend.CommID{FromUserID: opUserID, ToUserID: changedUserID, OpUserID: opUserID, OperationID: operationID} friendNotification(&commID, constant.UserInfoUpdatedNotification, &selfInfoUpdatedTips) } + +func FriendInfoUpdatedNotification(operationID, changedUserID string, needNotifiedUserID string, opUserID string) { + selfInfoUpdatedTips := open_im_sdk.UserInfoUpdatedTips{UserID: changedUserID} + commID := pbFriend.CommID{FromUserID: opUserID, ToUserID: needNotifiedUserID, OpUserID: opUserID, OperationID: operationID} + friendNotification(&commID, constant.FriendInfoUpdatedNotification, &selfInfoUpdatedTips) +} diff --git a/internal/rpc/msg/group_notification.go b/internal/rpc/msg/group_notification.go index 697e51824..82255b5b0 100644 --- a/internal/rpc/msg/group_notification.go +++ b/internal/rpc/msg/group_notification.go @@ -416,8 +416,6 @@ func MemberQuitNotification(req *pbGroup.QuitGroupReq) { } groupNotification(constant.MemberQuitNotification, &MemberQuitTips, req.OpUserID, req.GroupID, "", req.OperationID) - // groupNotification(constant.MemberQuitNotification, &MemberQuitTips, req.OpUserID, "", req.OpUserID, req.OperationID) - } //message ApplicationProcessedTips{ @@ -437,7 +435,20 @@ func GroupApplicationAcceptedNotification(req *pbGroup.GroupApplicationResponseR log.Error(req.OperationID, "setOpUserInfo failed", req.OpUserID, req.GroupID, GroupApplicationAcceptedTips.OpUser) return } + groupNotification(constant.GroupApplicationAcceptedNotification, &GroupApplicationAcceptedTips, req.OpUserID, "", req.FromUserID, req.OperationID) + adminList, err := imdb.GetOwnerManagerByGroupID(req.GroupID) + if err != nil { + log.Error(req.OperationID, "GetOwnerManagerByGroupID failed", req.GroupID) + return + } + for _, v := range adminList { + if v.UserID == req.OpUserID { + continue + } + GroupApplicationAcceptedTips.ReceiverAs = 1 + groupNotification(constant.GroupApplicationAcceptedNotification, &GroupApplicationAcceptedTips, req.OpUserID, "", v.UserID, req.OperationID) + } } func GroupApplicationRejectedNotification(req *pbGroup.GroupApplicationResponseReq) { @@ -451,6 +462,18 @@ func GroupApplicationRejectedNotification(req *pbGroup.GroupApplicationResponseR return } groupNotification(constant.GroupApplicationRejectedNotification, &GroupApplicationRejectedTips, req.OpUserID, "", req.FromUserID, req.OperationID) + adminList, err := imdb.GetOwnerManagerByGroupID(req.GroupID) + if err != nil { + log.Error(req.OperationID, "GetOwnerManagerByGroupID failed", req.GroupID) + return + } + for _, v := range adminList { + if v.UserID == req.OpUserID { + continue + } + GroupApplicationRejectedTips.ReceiverAs = 1 + groupNotification(constant.GroupApplicationRejectedNotification, &GroupApplicationRejectedTips, req.OpUserID, "", v.UserID, req.OperationID) + } } func GroupOwnerTransferredNotification(req *pbGroup.TransferGroupOwnerReq) { diff --git a/internal/rpc/msg/lock.go b/internal/rpc/msg/lock.go new file mode 100644 index 000000000..cef59cb1a --- /dev/null +++ b/internal/rpc/msg/lock.go @@ -0,0 +1,52 @@ +package msg + +import ( + "Open_IM/pkg/common/db" + "time" +) + +const GlOBLLOCK = "GLOBAL_LOCK" + +type MessageLocker interface { + LockMessageTypeKey(clientMsgID, typeKey string) (err error) + UnLockMessageTypeKey(clientMsgID string, typeKey string) error + LockGlobalMessage(clientMsgID string) (err error) + UnLockGlobalMessage(clientMsgID string) (err error) +} +type LockerMessage struct{} + +func NewLockerMessage() *LockerMessage { + return &LockerMessage{} +} +func (l *LockerMessage) LockMessageTypeKey(clientMsgID, typeKey string) (err error) { + for i := 0; i < 3; i++ { + err = db.DB.LockMessageTypeKey(clientMsgID, typeKey) + if err != nil { + time.Sleep(time.Millisecond * 100) + continue + } else { + break + } + } + return err + +} +func (l *LockerMessage) LockGlobalMessage(clientMsgID string) (err error) { + for i := 0; i < 3; i++ { + err = db.DB.LockMessageTypeKey(clientMsgID, GlOBLLOCK) + if err != nil { + time.Sleep(time.Millisecond * 100) + continue + } else { + break + } + } + return err + +} +func (l *LockerMessage) UnLockMessageTypeKey(clientMsgID string, typeKey string) error { + return db.DB.UnLockMessageTypeKey(clientMsgID, typeKey) +} +func (l *LockerMessage) UnLockGlobalMessage(clientMsgID string) error { + return db.DB.UnLockMessageTypeKey(clientMsgID, GlOBLLOCK) +} diff --git a/internal/rpc/msg/rpcChat.go b/internal/rpc/msg/rpcChat.go index 415d6fff1..470325deb 100644 --- a/internal/rpc/msg/rpcChat.go +++ b/internal/rpc/msg/rpcChat.go @@ -10,11 +10,12 @@ import ( "Open_IM/pkg/grpc-etcdv3/getcdv3" "Open_IM/pkg/proto/msg" "Open_IM/pkg/utils" - "github.com/golang/protobuf/proto" "net" "strconv" "strings" + "github.com/golang/protobuf/proto" + grpcPrometheus "github.com/grpc-ecosystem/go-grpc-prometheus" "google.golang.org/grpc" @@ -30,7 +31,8 @@ type rpcChat struct { etcdAddr []string messageWriter MessageWriter //offlineProducer *kafka.Producer - delMsgCh chan deleteMsg + delMsgCh chan deleteMsg + dMessageLocker MessageLocker } type deleteMsg struct { @@ -47,6 +49,7 @@ func NewRpcChatServer(port int) *rpcChat { rpcRegisterName: config.Config.RpcRegisterName.OpenImMsgName, etcdSchema: config.Config.Etcd.EtcdSchema, etcdAddr: config.Config.Etcd.EtcdAddr, + dMessageLocker: NewLockerMessage(), } rc.messageWriter = kafka.NewKafkaProducer(config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.Ws2mschat.Topic) //rc.offlineProducer = kafka.NewKafkaProducer(config.Config.Kafka.Ws2mschatOffline.Addr, config.Config.Kafka.Ws2mschatOffline.Topic) @@ -94,8 +97,12 @@ func (rpc *rpcChat) Run() { panic("listening err:" + err.Error() + rpc.rpcRegisterName) } log.Info("", "listen network success, address ", address) - - var grpcOpts []grpc.ServerOption + recvSize := 1024 * 1024 * 30 + sendSize := 1024 * 1024 * 30 + var grpcOpts = []grpc.ServerOption{ + grpc.MaxRecvMsgSize(recvSize), + grpc.MaxSendMsgSize(sendSize), + } if config.Config.Prometheus.Enable { promePkg.NewGrpcRequestCounter() promePkg.NewGrpcRequestFailedCounter() diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 035043de1..39380b003 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -25,6 +25,7 @@ import ( "time" promePkg "Open_IM/pkg/common/prometheus" + go_redis "github.com/go-redis/redis/v8" "github.com/golang/protobuf/proto" ) @@ -96,12 +97,24 @@ func isMessageHasReadEnabled(pb *pbChat.SendMsgReq) (bool, int32, string) { return true, 0, "" } -func userIsMuteInGroup(groupID, userID string) (bool, error) { +func userIsMuteAndIsAdminInGroup(groupID, userID string) (isMute bool, isAdmin bool, err error) { groupMemberInfo, err := rocksCache.GetGroupMemberInfoFromCache(groupID, userID) if err != nil { - return false, utils.Wrap(err, "") + return false, false, utils.Wrap(err, "") } + if groupMemberInfo.MuteEndTime.Unix() >= time.Now().Unix() { + return true, groupMemberInfo.RoleLevel > constant.GroupOrdinaryUsers, nil + } + return false, groupMemberInfo.RoleLevel > constant.GroupOrdinaryUsers, nil +} + +func groupIsMuted(groupID string) (bool, error) { + groupInfo, err := rocksCache.GetGroupInfoFromCache(groupID) + if err != nil { + return false, utils.Wrap(err, "GetGroupInfoFromCache failed") + } + if groupInfo.Status == constant.GroupStatusMuted { return true, nil } return false, nil @@ -113,7 +126,7 @@ func (rpc *rpcChat) messageVerification(data *pbChat.SendMsgReq) (bool, int32, s if utils.IsContain(data.MsgData.SendID, config.Config.Manager.AppManagerUid) { return true, 0, "", nil } - if data.MsgData.ContentType <= constant.NotificationEnd && data.MsgData.ContentType >= constant.NotificationBegin { + if data.MsgData.ContentType <= constant.NotificationEnd && data.MsgData.ContentType >= constant.NotificationBegin && data.MsgData.ContentType != constant.SignalingNotification { return true, 0, "", nil } log.NewDebug(data.OperationID, *config.Config.MessageVerify.FriendVerify) @@ -171,16 +184,18 @@ func (rpc *rpcChat) messageVerification(data *pbChat.SendMsgReq) (bool, int32, s log.NewError(data.OperationID, errMsg) return false, 201, errMsg, nil } - if !token_verify.IsManagerUserID(data.MsgData.SendID) { - if data.MsgData.ContentType <= constant.NotificationEnd && data.MsgData.ContentType >= constant.NotificationBegin { - return true, 0, "", userIDList - } + if token_verify.IsManagerUserID(data.MsgData.SendID) { + return true, 0, "", userIDList + } + if data.MsgData.ContentType <= constant.NotificationEnd && data.MsgData.ContentType >= constant.NotificationBegin { + return true, 0, "", userIDList + } else { if !utils.IsContain(data.MsgData.SendID, userIDList) { //return returnMsg(&replay, pb, 202, "you are not in group", "", 0) return false, 202, "you are not in group", nil } } - isMute, err := userIsMuteInGroup(data.MsgData.GroupID, data.MsgData.SendID) + isMute, isAdmin, err := userIsMuteAndIsAdminInGroup(data.MsgData.GroupID, data.MsgData.SendID) if err != nil { errMsg := data.OperationID + err.Error() return false, 223, errMsg, nil @@ -188,6 +203,17 @@ func (rpc *rpcChat) messageVerification(data *pbChat.SendMsgReq) (bool, int32, s if isMute { return false, 224, "you are muted", nil } + if isAdmin { + return true, 0, "", userIDList + } + isMute, err = groupIsMuted(data.MsgData.GroupID) + if err != nil { + errMsg := data.OperationID + err.Error() + return false, 223, errMsg, nil + } + if isMute { + return false, 225, "group id muted", nil + } return true, 0, "", userIDList case constant.SuperGroupChatType: groupInfo, err := rocksCache.GetGroupInfoFromCache(data.MsgData.GroupID) @@ -232,16 +258,18 @@ func (rpc *rpcChat) messageVerification(data *pbChat.SendMsgReq) (bool, int32, s log.NewError(data.OperationID, errMsg) return false, 201, errMsg, nil } - if !token_verify.IsManagerUserID(data.MsgData.SendID) { - if data.MsgData.ContentType <= constant.NotificationEnd && data.MsgData.ContentType >= constant.NotificationBegin { - return true, 0, "", userIDList - } + if token_verify.IsManagerUserID(data.MsgData.SendID) { + return true, 0, "", userIDList + } + if data.MsgData.ContentType <= constant.NotificationEnd && data.MsgData.ContentType >= constant.NotificationBegin { + return true, 0, "", userIDList + } else { if !utils.IsContain(data.MsgData.SendID, userIDList) { //return returnMsg(&replay, pb, 202, "you are not in group", "", 0) return false, 202, "you are not in group", nil } } - isMute, err := userIsMuteInGroup(data.MsgData.GroupID, data.MsgData.SendID) + isMute, isAdmin, err := userIsMuteAndIsAdminInGroup(data.MsgData.GroupID, data.MsgData.SendID) if err != nil { errMsg := data.OperationID + err.Error() return false, 223, errMsg, nil @@ -249,6 +277,17 @@ func (rpc *rpcChat) messageVerification(data *pbChat.SendMsgReq) (bool, int32, s if isMute { return false, 224, "you are muted", nil } + if isAdmin { + return true, 0, "", userIDList + } + isMute, err = groupIsMuted(data.MsgData.GroupID) + if err != nil { + errMsg := data.OperationID + err.Error() + return false, 223, errMsg, nil + } + if isMute { + return false, 225, "group id muted", nil + } return true, 0, "", userIDList } default: @@ -962,6 +1001,13 @@ func Notification(n *NotificationMsg) { ex = config.Config.Notification.ConversationSetPrivate.OfflinePush.Ext reliabilityLevel = config.Config.Notification.ConversationSetPrivate.Conversation.ReliabilityLevel unReadCount = config.Config.Notification.ConversationSetPrivate.Conversation.UnreadCount + case constant.FriendInfoUpdatedNotification: + pushSwitch = config.Config.Notification.FriendInfoUpdated.OfflinePush.PushSwitch + title = config.Config.Notification.FriendInfoUpdated.OfflinePush.Title + desc = config.Config.Notification.FriendInfoUpdated.OfflinePush.Desc + ex = config.Config.Notification.FriendInfoUpdated.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.FriendInfoUpdated.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.FriendInfoUpdated.Conversation.UnreadCount case constant.DeleteMessageNotification: reliabilityLevel = constant.ReliableNotificationNoMsg case constant.ConversationUnreadNotification, constant.SuperGroupUpdateNotification: diff --git a/internal/rpc/msg/super_group_notification.go b/internal/rpc/msg/super_group_notification.go index 9369c7910..f1966a586 100644 --- a/internal/rpc/msg/super_group_notification.go +++ b/internal/rpc/msg/super_group_notification.go @@ -10,15 +10,6 @@ import ( ) func SuperGroupNotification(operationID, sendID, recvID string) { - - //var tips sdk.TipsComm - //var err error - //marshaler := jsonpb.Marshaler{ - // OrigName: true, - // EnumsAsInts: false, - // EmitDefaults: false, - //} - //tips.JsonDetail, _ = marshaler.MarshalToString(m) n := &NotificationMsg{ SendID: sendID, RecvID: recvID, @@ -27,11 +18,6 @@ func SuperGroupNotification(operationID, sendID, recvID string) { SessionType: constant.SingleChatType, OperationID: operationID, } - //n.Content, err = proto.Marshal(&tips) - //if err != nil { - // log.NewError(operationID, utils.GetSelfFuncName(), "proto.Marshal failed") - // return - //} log.NewInfo(operationID, utils.GetSelfFuncName(), string(n.Content)) Notification(n) } diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go index 27db600ec..b6a55ca0f 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -444,13 +444,15 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbUser.UpdateUserI } for _, v := range rpcResp.FriendInfoList { log.Info(req.OperationID, "UserInfoUpdatedNotification ", req.UserInfo.UserID, v.FriendUser.UserID) - chat.UserInfoUpdatedNotification(req.OperationID, req.UserInfo.UserID, v.FriendUser.UserID) + // chat.UserInfoUpdatedNotification(req.OperationID, req.UserInfo.UserID, v.FriendUser.UserID) + chat.FriendInfoUpdatedNotification(req.OperationID, req.UserInfo.UserID, v.FriendUser.UserID, req.OpUserID) } if err := rocksCache.DelUserInfoFromCache(user.UserID); err != nil { log.NewError(req.OperationID, "GetFriendList failed ", err.Error(), newReq) return &pbUser.UpdateUserInfoResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil } - chat.UserInfoUpdatedNotification(req.OperationID, req.UserInfo.UserID, req.OpUserID) + //chat.UserInfoUpdatedNotification(req.OperationID, req.OpUserID, req.UserInfo.UserID) + chat.UserInfoUpdatedNotification(req.OperationID, req.OpUserID, req.UserInfo.UserID) log.Info(req.OperationID, "UserInfoUpdatedNotification ", req.UserInfo.UserID, req.OpUserID) if req.UserInfo.FaceURL != "" { s.SyncJoinedGroupMemberFaceURL(req.UserInfo.UserID, req.UserInfo.FaceURL, req.OperationID, req.OpUserID) diff --git a/pkg/base_info/msg.go b/pkg/base_info/msg.go index 2b12a2b2e..56a539b52 100644 --- a/pkg/base_info/msg.go +++ b/pkg/base_info/msg.go @@ -1,5 +1,10 @@ package base_info +import ( + "Open_IM/pkg/proto/msg" + sdk_ws "Open_IM/pkg/proto/sdk_ws" +) + type DelMsgReq struct { UserID string `json:"userID,omitempty" binding:"required"` SeqList []uint32 `json:"seqList,omitempty" binding:"required"` @@ -18,6 +23,7 @@ type CleanUpMsgReq struct { type CleanUpMsgResp struct { CommResp } + type DelSuperGroupMsgReq struct { UserID string `json:"userID" binding:"required"` GroupID string `json:"groupID" binding:"required"` @@ -29,23 +35,108 @@ type DelSuperGroupMsgReq struct { type DelSuperGroupMsgResp struct { CommResp } + type MsgDeleteNotificationElem struct { GroupID string `json:"groupID"` IsAllDelete bool `json:"isAllDelete"` SeqList []uint32 `json:"seqList"` } -//UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` -// GroupID string `protobuf:"bytes,2,opt,name=groupID" json:"groupID,omitempty"` -// MinSeq uint32 `protobuf:"varint,3,opt,name=minSeq" json:"minSeq,omitempty"` -// OperationID string `protobuf:"bytes,4,opt,name=operationID" json:"operationID,omitempty"` -// OpUserID string `protobuf:"bytes,5,opt,name=opUserID" json:"opUserID,omitempty"` type SetMsgMinSeqReq struct { UserID string `json:"userID" binding:"required"` GroupID string `json:"groupID"` MinSeq uint32 `json:"minSeq" binding:"required"` OperationID string `json:"operationID" binding:"required"` } + type SetMsgMinSeqResp struct { CommResp } + +type ModifyMessageReactionExtensionsReq struct { + OperationID string `json:"operationID" binding:"required"` + SourceID string `json:"sourceID" binding:"required"` + SessionType int32 `json:"sessionType" binding:"required"` + ReactionExtensionList map[string]*sdk_ws.KeyValue `json:"reactionExtensionList,omitempty" binding:"required"` + ClientMsgID string `json:"clientMsgID" binding:"required"` + Ex *string `json:"ex"` + AttachedInfo *string `json:"attachedInfo"` + IsReact bool `json:"isReact"` + IsExternalExtensions bool `json:"isExternalExtensions"` + MsgFirstModifyTime int64 `json:"msgFirstModifyTime"` +} + +type ModifyMessageReactionExtensionsResp struct { + CommResp + Data struct { + ResultKeyValue []*msg.KeyValueResp `json:"result"` + MsgFirstModifyTime int64 `json:"msgFirstModifyTime"` + IsReact bool `json:"isReact"` + } `json:"data"` +} + +type OperateMessageListReactionExtensionsReq struct { + OperationID string `json:"operationID" binding:"required"` + SourceID string `json:"sourceID" binding:"required"` + SessionType string `json:"sessionType" binding:"required"` + IsExternalExtensions bool `json:"isExternalExtensions"` + MessageReactionKeyList []*msg.GetMessageListReactionExtensionsReq_MessageReactionKey `json:"messageReactionKeyList" binding:"required"` +} + +type OperateMessageListReactionExtensionsResp struct { + CommResp + Data struct { + SuccessList []*msg.ExtendMsgResp `json:"successList"` + FailedList []*msg.ExtendMsgResp `json:"failedList"` + } `json:"data"` +} + +type SetMessageReactionExtensionsCallbackReq ModifyMessageReactionExtensionsReq + +type SetMessageReactionExtensionsCallbackResp ModifyMessageReactionExtensionsResp + +type GetMessageListReactionExtensionsReq OperateMessageListReactionExtensionsReq + +type GetMessageListReactionExtensionsResp struct { + CommResp + Data []*msg.SingleMessageExtensionResult `json:"data"` +} + +type AddMessageReactionExtensionsReq ModifyMessageReactionExtensionsReq + +type AddMessageReactionExtensionsResp ModifyMessageReactionExtensionsResp + +type DeleteMessageReactionExtensionsReq struct { + OperationID string `json:"operationID" binding:"required"` + SourceID string `json:"sourceID" binding:"required"` + SessionType int32 `json:"sessionType" binding:"required"` + ClientMsgID string `json:"clientMsgID" binding:"required"` + IsExternalExtensions bool `json:"isExternalExtensions"` + MsgFirstModifyTime int64 `json:"msgFirstModifyTime" binding:"required"` + ReactionExtensionList []*sdk_ws.KeyValue `json:"reactionExtensionList" binding:"required"` +} + +type DeleteMessageReactionExtensionsResp struct { + CommResp + Data []*msg.KeyValueResp +} + +type ReactionMessageModifierNotification struct { + SourceID string `json:"sourceID" binding:"required"` + OpUserID string `json:"opUserID" binding:"required"` + SessionType int32 `json:"sessionType" binding:"required"` + SuccessReactionExtensionList map[string]*sdk_ws.KeyValue `json:"reactionExtensionList,omitempty" binding:"required"` + ClientMsgID string `json:"clientMsgID" binding:"required"` + IsReact bool `json:"isReact"` + IsExternalExtensions bool `json:"isExternalExtensions"` + MsgFirstModifyTime int64 `json:"msgFirstModifyTime"` +} + +type ReactionMessageDeleteNotification struct { + SourceID string `json:"sourceID" binding:"required"` + OpUserID string `json:"opUserID" binding:"required"` + SessionType int32 `json:"sessionType" binding:"required"` + SuccessReactionExtensionList map[string]*sdk_ws.KeyValue `json:"reactionExtensionList,omitempty" binding:"required"` + ClientMsgID string `json:"clientMsgID" binding:"required"` + MsgFirstModifyTime int64 `json:"msgFirstModifyTime"` +} diff --git a/pkg/call_back_struct/group.go b/pkg/call_back_struct/group.go index 92d5c77dd..a040adcf0 100644 --- a/pkg/call_back_struct/group.go +++ b/pkg/call_back_struct/group.go @@ -1,12 +1,15 @@ package call_back_struct import ( + "Open_IM/pkg/proto/group" commonPb "Open_IM/pkg/proto/sdk_ws" ) type CallbackBeforeCreateGroupReq struct { CallbackCommand string `json:"callbackCommand"` + OperationID string `json:"operationID"` commonPb.GroupInfo + InitMemberList []*group.GroupAddMemberInfo `json:"initMemberList"` } type CallbackBeforeCreateGroupResp struct { @@ -25,3 +28,40 @@ type CallbackBeforeCreateGroupResp struct { LookMemberInfo *int32 `json:"lookMemberInfo"` ApplyMemberFriend *int32 `json:"applyMemberFriend"` } + +type CallbackBeforeMemberJoinGroupReq struct { + CallbackCommand string `json:"callbackCommand"` + OperationID string `json:"operationID"` + GroupID string `json:"groupID"` + UserID string `json:"userID"` + Ex string `json:"ex"` + GroupEx string `json:"groupEx"` +} + +type CallbackBeforeMemberJoinGroupResp struct { + *CommonCallbackResp + NickName *string `json:"nickName"` + FaceURL *string `json:"faceURL"` + RoleLevel *int32 `json:"roleLevel"` + MuteEndTime *int64 `json:"muteEndTime"` + Ex *string `json:"ex"` +} + +type CallbackBeforeSetGroupMemberInfoReq struct { + CallbackCommand string `json:"callbackCommand"` + OperationID string `json:"operationID"` + GroupID string `json:"groupID"` + UserID string `json:"userID"` + Nickname string `json:"nickName"` + FaceURL string `json:"faceURL"` + RoleLevel int32 `json:"roleLevel"` + Ex string `json:"ex"` +} + +type CallbackBeforeSetGroupMemberInfoResp struct { + *CommonCallbackResp + Ex *string `json:"ex"` + Nickname *string `json:"nickName"` + FaceURL *string `json:"faceURL"` + RoleLevel *int32 `json:"roleLevel"` +} diff --git a/pkg/call_back_struct/message.go b/pkg/call_back_struct/message.go index b28615030..9e6ea0697 100644 --- a/pkg/call_back_struct/message.go +++ b/pkg/call_back_struct/message.go @@ -1,6 +1,9 @@ package call_back_struct -import sdk_ws "Open_IM/pkg/proto/sdk_ws" +import ( + "Open_IM/pkg/proto/msg" + sdk_ws "Open_IM/pkg/proto/sdk_ws" +) type CallbackBeforeSendSingleMsgReq struct { CommonCallbackReq @@ -63,3 +66,48 @@ type CallbackMsgModifyCommandResp struct { AttachedInfo *string `json:"attachedInfo"` Ex *string `json:"ex"` } +type CallbackBeforeSetMessageReactionExtReq struct { + OperationID string `json:"operationID"` + CallbackCommand string `json:"callbackCommand"` + SourceID string `json:"sourceID"` + OpUserID string `json:"opUserID"` + SessionType int32 `json:"sessionType"` + ReactionExtensionList map[string]*sdk_ws.KeyValue `json:"reactionExtensionList"` + ClientMsgID string `json:"clientMsgID"` + IsReact bool `json:"isReact"` + IsExternalExtensions bool `json:"isExternalExtensions"` + MsgFirstModifyTime int64 `json:"msgFirstModifyTime"` +} +type CallbackBeforeSetMessageReactionExtResp struct { + *CommonCallbackResp + ResultReactionExtensionList []*msg.KeyValueResp `json:"resultReactionExtensionList"` + MsgFirstModifyTime int64 `json:"msgFirstModifyTime"` +} +type CallbackDeleteMessageReactionExtReq struct { + OperationID string `json:"operationID"` + CallbackCommand string `json:"callbackCommand"` + SourceID string `json:"sourceID"` + OpUserID string `json:"opUserID"` + SessionType int32 `json:"sessionType"` + ReactionExtensionList []*sdk_ws.KeyValue `json:"reactionExtensionList"` + ClientMsgID string `json:"clientMsgID"` + IsExternalExtensions bool `json:"isExternalExtensions"` + MsgFirstModifyTime int64 `json:"msgFirstModifyTime"` +} +type CallbackDeleteMessageReactionExtResp struct { + *CommonCallbackResp + ResultReactionExtensionList []*msg.KeyValueResp `json:"resultReactionExtensionList"` + MsgFirstModifyTime int64 `json:"msgFirstModifyTime"` +} +type CallbackGetMessageListReactionExtReq struct { + OperationID string `json:"operationID"` + CallbackCommand string `json:"callbackCommand"` + SourceID string `json:"sourceID"` + OpUserID string `json:"opUserID"` + SessionType int32 `json:"sessionType"` + MessageKeyList []*msg.GetMessageListReactionExtensionsReq_MessageReactionKey `json:"messageKeyList"` +} +type CallbackGetMessageListReactionExtResp struct { + *CommonCallbackResp + MessageResultList []*msg.SingleMessageExtensionResult `json:"messageResultList"` +} diff --git a/pkg/call_back_struct/msg_gateway.go b/pkg/call_back_struct/msg_gateway.go index df3219339..65d173829 100644 --- a/pkg/call_back_struct/msg_gateway.go +++ b/pkg/call_back_struct/msg_gateway.go @@ -2,8 +2,10 @@ package call_back_struct type CallbackUserOnlineReq struct { UserStatusCallbackReq - Token string `json:"token"` - Seq int `json:"seq"` + Token string `json:"token"` + Seq int `json:"seq"` + IsAppBackground bool `json:"isAppBackground"` + ConnID string `json:"connID"` } type CallbackUserOnlineResp struct { @@ -12,7 +14,8 @@ type CallbackUserOnlineResp struct { type CallbackUserOfflineReq struct { UserStatusCallbackReq - Seq int `json:"seq"` + Seq int `json:"seq"` + ConnID string `json:"connID"` } type CallbackUserOfflineResp struct { diff --git a/pkg/call_back_struct/push.go b/pkg/call_back_struct/push.go index 1fa0fbff6..68510efda 100644 --- a/pkg/call_back_struct/push.go +++ b/pkg/call_back_struct/push.go @@ -21,7 +21,7 @@ type CallbackBeforePushResp struct { } type CallbackBeforeSuperGroupOnlinePushReq struct { - *commonPb.OfflinePushInfo + //*commonPb.OfflinePushInfo UserStatusBaseCallback ClientMsgID string `json:"clientMsgID"` SendID string `json:"sendID"` @@ -30,6 +30,7 @@ type CallbackBeforeSuperGroupOnlinePushReq struct { SessionType int32 `json:"sessionType"` AtUserIDList []string `json:"atUserIDList"` Content string `json:"content"` + Seq uint32 `json:"seq"` } type CallbackBeforeSuperGroupOnlinePushResp struct { diff --git a/pkg/cms_api_struct/admin.go b/pkg/cms_api_struct/admin.go index 9925224bf..0cde6c978 100644 --- a/pkg/cms_api_struct/admin.go +++ b/pkg/cms_api_struct/admin.go @@ -17,6 +17,17 @@ type AdminLoginResponse struct { FaceURL string `json:"faceURL"` } +type GetUserTokenRequest struct { + UserID string `json:"userID" binding:"required"` + OperationID string `json:"operationID" binding:"required"` + PlatFormID int32 `json:"platformID" binding:"required"` +} + +type GetUserTokenResponse struct { + Token string `json:"token"` + ExpTime int64 `json:"expTime"` +} + type AddUserRegisterAddFriendIDListRequest struct { OperationID string `json:"operationID" binding:"required"` UserIDList []string `json:"userIDList" binding:"required"` diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 4fce63c19..1913bac79 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -248,11 +248,16 @@ type config struct { Addr []string `yaml:"addr"` Topic string `yaml:"topic"` } + MsgToModify struct { + Addr []string `yaml:"addr"` + Topic string `yaml:"topic"` + } ConsumerGroupID struct { - MsgToRedis string `yaml:"msgToTransfer"` - MsgToMongo string `yaml:"msgToMongo"` - MsgToMySql string `yaml:"msgToMySql"` - MsgToPush string `yaml:"msgToPush"` + MsgToRedis string `yaml:"msgToTransfer"` + MsgToMongo string `yaml:"msgToMongo"` + MsgToMySql string `yaml:"msgToMySql"` + MsgToPush string `yaml:"msgToPush"` + MsgToModify string `yaml:"msgToModify"` } } Secret string `yaml:"secret"` @@ -291,6 +296,8 @@ type config struct { CallbackBeforeSuperGroupOnlinePush callBackConfig `yaml:"callbackSuperGroupOnlinePush"` CallbackBeforeAddFriend callBackConfig `yaml:"callbackBeforeAddFriend"` CallbackBeforeCreateGroup callBackConfig `yaml:"callbackBeforeCreateGroup"` + CallbackBeforeMemberJoinGroup callBackConfig `yaml:"callbackBeforeMemberJoinGroup"` + CallbackBeforeSetGroupMemberInfo callBackConfig `yaml:"callbackBeforeSetGroupMemberInfo"` } `yaml:"callback"` Notification struct { ///////////////////////group///////////////////////////// @@ -455,6 +462,12 @@ type config struct { OfflinePush POfflinePush `yaml:"offlinePush"` DefaultTips PDefaultTips `yaml:"defaultTips"` } `yaml:"blackDeleted"` + FriendInfoUpdated struct { + Conversation PConversation `yaml:"conversation"` + OfflinePush POfflinePush `yaml:"offlinePush"` + DefaultTips PDefaultTips `yaml:"defaultTips"` + } `yaml:"friendInfoUpdated"` + ConversationOptUpdate struct { Conversation PConversation `yaml:"conversation"` OfflinePush POfflinePush `yaml:"offlinePush"` @@ -640,7 +653,7 @@ func unmarshalConfig(config interface{}, configName string) { } else { bytes, err := ioutil.ReadFile(fmt.Sprintf("../config/%s", configName)) if err != nil { - panic(err.Error()) + panic(err.Error() + configName) } if err = yaml.Unmarshal(bytes, config); err != nil { panic(err.Error()) diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index a817ab02c..87d796ab0 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -17,14 +17,15 @@ const ( RefuseFriendFlag = -1 //Websocket Protocol - WSGetNewestSeq = 1001 - WSPullMsgBySeqList = 1002 - WSSendMsg = 1003 - WSSendSignalMsg = 1004 - WSPushMsg = 2001 - WSKickOnlineMsg = 2002 - WsLogoutMsg = 2003 - WSDataError = 3001 + WSGetNewestSeq = 1001 + WSPullMsgBySeqList = 1002 + WSSendMsg = 1003 + WSSendSignalMsg = 1004 + WSPushMsg = 2001 + WSKickOnlineMsg = 2002 + WsLogoutMsg = 2003 + WsSetBackgroundStatus = 2004 + WSDataError = 3001 ///ContentType //UserRelated @@ -47,6 +48,8 @@ const ( AdvancedRevoke = 118 //影响前者消息 CustomNotTriggerConversation = 119 CustomOnlineOnly = 120 + ReactionMessageModifier = 121 + ReactionMessageDeleter = 122 Common = 200 GroupMsg = 201 @@ -64,11 +67,12 @@ const ( FriendRemarkSetNotification = 1206 //set_friend_remark? BlackAddedNotification = 1207 //add_black BlackDeletedNotification = 1208 //remove_black + FriendInfoUpdatedNotification = 1209 ConversationOptChangeNotification = 1300 // change conversation opt UserNotificationBegin = 1301 - UserInfoUpdatedNotification = 1303 //SetSelfInfoTip = 204 + UserInfoUpdatedNotification = 1303 //SetSelfInfoTip = 204 UserNotificationEnd = 1399 OANotification = 1400 @@ -110,6 +114,10 @@ const ( WorkMomentNotificationBegin = 1900 WorkMomentNotification = 1901 + BusinessNotificationBegin = 2000 + BusinessNotification = 2001 + BusinessNotificationEnd = 2099 + NotificationEnd = 3000 //status @@ -163,6 +171,7 @@ const ( IsNotPrivate = "notPrivate" IsSenderConversationUpdate = "senderConversationUpdate" IsSenderNotificationPush = "senderNotificationPush" + IsReactionFromCache = "reactionFromCache" //GroupStatus GroupOk = 0 @@ -196,19 +205,24 @@ const ( VerificationCodeForResetSuffix = "_forReset" //callbackCommand - CallbackBeforeSendSingleMsgCommand = "callbackBeforeSendSingleMsgCommand" - CallbackAfterSendSingleMsgCommand = "callbackAfterSendSingleMsgCommand" - CallbackBeforeSendGroupMsgCommand = "callbackBeforeSendGroupMsgCommand" - CallbackAfterSendGroupMsgCommand = "callbackAfterSendGroupMsgCommand" - CallbackMsgModifyCommand = "callbackMsgModifyCommand" - CallbackUserOnlineCommand = "callbackUserOnlineCommand" - CallbackUserOfflineCommand = "callbackUserOfflineCommand" - CallbackUserKickOffCommand = "callbackUserKickOffCommand" - CallbackOfflinePushCommand = "callbackOfflinePushCommand" - CallbackOnlinePushCommand = "callbackOnlinePushCommand" - CallbackSuperGroupOnlinePushCommand = "callbackSuperGroupOnlinePushCommand" - CallbackBeforeAddFriendCommand = "callbackBeforeAddFriendCommand" - CallbackBeforeCreateGroupCommand = "callbackBeforeCreateGroup" + CallbackBeforeSendSingleMsgCommand = "callbackBeforeSendSingleMsgCommand" + CallbackAfterSendSingleMsgCommand = "callbackAfterSendSingleMsgCommand" + CallbackBeforeSendGroupMsgCommand = "callbackBeforeSendGroupMsgCommand" + CallbackAfterSendGroupMsgCommand = "callbackAfterSendGroupMsgCommand" + CallbackMsgModifyCommand = "callbackMsgModifyCommand" + CallbackUserOnlineCommand = "callbackUserOnlineCommand" + CallbackUserOfflineCommand = "callbackUserOfflineCommand" + CallbackUserKickOffCommand = "callbackUserKickOffCommand" + CallbackOfflinePushCommand = "callbackOfflinePushCommand" + CallbackOnlinePushCommand = "callbackOnlinePushCommand" + CallbackSuperGroupOnlinePushCommand = "callbackSuperGroupOnlinePushCommand" + CallbackBeforeAddFriendCommand = "callbackBeforeAddFriendCommand" + CallbackBeforeCreateGroupCommand = "callbackBeforeCreateGroupCommand" + CallbackBeforeMemberJoinGroupCommand = "callbackBeforeMemberJoinGroupCommand" + CallbackBeforeSetGroupMemberInfoCommand = "CallbackBeforeSetGroupMemberInfoCommand" + CallbackBeforeSetMessageReactionExtensionCommand = "callbackBeforeSetMessageReactionExtensionCommand" + CallbackBeforeDeleteMessageReactionExtensionsCommand = "callbackBeforeDeleteMessageReactionExtensionsCommand" + CallbackGetMessageListReactionExtensionsCommand = "callbackGetMessageListReactionExtensionsCommand" //callback actionCode ActionAllow = 0 @@ -339,6 +353,6 @@ const LogFileName = "OpenIM.log" const StatisticsTimeInterval = 60 -const MaxNotificationNum = 100 +const MaxNotificationNum = 500 const CurrentVersion = "v2.3.4-rc0" diff --git a/pkg/common/constant/error.go b/pkg/common/constant/error.go index c621951b6..ceffa1425 100644 --- a/pkg/common/constant/error.go +++ b/pkg/common/constant/error.go @@ -33,6 +33,7 @@ var ( ErrSendLimit = ErrInfo{ErrCode: 810, ErrMsg: "send msg limit, to many request, try again later"} ErrMessageHasReadDisable = ErrInfo{ErrCode: 811, ErrMsg: "message has read disable"} ErrInternal = ErrInfo{ErrCode: 812, ErrMsg: "internal error"} + ErrWsConnNotExist = ErrInfo{ErrCode: 813, ErrMsg: "ws conn not exist"} ) var ( diff --git a/pkg/common/constant/platform_number_id_to_name.go b/pkg/common/constant/platform_number_id_to_name.go index 0480db01b..e8bb129eb 100644 --- a/pkg/common/constant/platform_number_id_to_name.go +++ b/pkg/common/constant/platform_number_id_to_name.go @@ -14,6 +14,7 @@ const ( LinuxPlatformID = 7 AndroidPadPlatformID = 8 IPadPlatformID = 9 + AdminPlatformID = 10 //Platform string match to Platform ID IOSPlatformStr = "IOS" @@ -25,6 +26,7 @@ const ( LinuxPlatformStr = "Linux" AndroidPadPlatformStr = "APad" IPadPlatformStr = "IPad" + AdminPlatformStr = "Admin" //terminal types TerminalPC = "PC" @@ -41,6 +43,7 @@ var PlatformID2Name = map[int]string{ LinuxPlatformID: LinuxPlatformStr, AndroidPadPlatformID: AndroidPadPlatformStr, IPadPlatformID: IPadPlatformStr, + AdminPlatformID: AdminPlatformStr, } var PlatformName2ID = map[string]int{ IOSPlatformStr: IOSPlatformID, @@ -52,8 +55,9 @@ var PlatformName2ID = map[string]int{ LinuxPlatformStr: LinuxPlatformID, AndroidPadPlatformStr: AndroidPadPlatformID, IPadPlatformStr: IPadPlatformID, + AdminPlatformStr: AdminPlatformID, } -var Platform2class = map[string]string{ +var PlatformName2class = map[string]string{ IOSPlatformStr: TerminalMobile, AndroidPlatformStr: TerminalMobile, MiniWebPlatformStr: WebPlatformStr, @@ -62,6 +66,15 @@ var Platform2class = map[string]string{ OSXPlatformStr: TerminalPC, LinuxPlatformStr: TerminalPC, } +var PlatformID2class = map[int]string{ + IOSPlatformID: TerminalMobile, + AndroidPlatformID: TerminalMobile, + MiniWebPlatformID: WebPlatformStr, + WebPlatformID: WebPlatformStr, + WindowsPlatformID: TerminalPC, + OSXPlatformID: TerminalPC, + LinuxPlatformID: TerminalPC, +} func PlatformIDToName(num int) string { return PlatformID2Name[num] @@ -70,5 +83,8 @@ func PlatformNameToID(name string) int { return PlatformName2ID[name] } func PlatformNameToClass(name string) string { - return Platform2class[name] + return PlatformName2class[name] +} +func PlatformIDToClass(num int) string { + return PlatformID2class[num] } diff --git a/pkg/common/db/RedisModel.go b/pkg/common/db/RedisModel.go index a0eab5c30..29e2772a0 100644 --- a/pkg/common/db/RedisModel.go +++ b/pkg/common/db/RedisModel.go @@ -28,6 +28,7 @@ const ( uidPidToken = "UID_PID_TOKEN_STATUS:" conversationReceiveMessageOpt = "CON_RECV_MSG_OPT:" getuiToken = "GETUI_TOKEN" + getuiTaskID = "GETUI_TASK_ID" messageCache = "MESSAGE_CACHE:" SignalCache = "SIGNAL_CACHE:" SignalListCache = "SIGNAL_LIST_CACHE:" @@ -38,6 +39,7 @@ const ( groupMinSeq = "GROUP_MIN_SEQ:" sendMsgFailedFlag = "SEND_MSG_FAILED_FLAG:" userBadgeUnreadCountSum = "USER_BADGE_UNREAD_COUNT_SUM:" + exTypeKeyLocker = "EX_LOCK:" ) func (d *DataBases) JudgeAccountEXISTS(account string) (bool, error) { @@ -397,6 +399,15 @@ func (d *DataBases) GetGetuiToken() (string, error) { return result, err } +func (d *DataBases) SetGetuiTaskID(taskID string, expireTime int64) error { + return d.RDB.Set(context.Background(), getuiTaskID, taskID, time.Duration(expireTime)*time.Second).Err() +} + +func (d *DataBases) GetGetuiTaskID() (string, error) { + result, err := d.RDB.Get(context.Background(), getuiTaskID).Result() + return result, err +} + func (d *DataBases) SetSendMsgStatus(status int32, operationID string) error { return d.RDB.Set(context.Background(), sendMsgFailedFlag+operationID, status, time.Hour*24).Err() } @@ -437,3 +448,61 @@ func (d *DataBases) GetUserBadgeUnreadCountSum(uid string) (int, error) { seq, err := d.RDB.Get(context.Background(), key).Result() return utils.StringToInt(seq), err } +func (d *DataBases) JudgeMessageReactionEXISTS(clientMsgID string, sessionType int32) (bool, error) { + key := getMessageReactionExPrefix(clientMsgID, sessionType) + n, err := d.RDB.Exists(context.Background(), key).Result() + if n > 0 { + return true, err + } else { + return false, err + } +} + +func (d *DataBases) GetOneMessageAllReactionList(clientMsgID string, sessionType int32) (map[string]string, error) { + key := getMessageReactionExPrefix(clientMsgID, sessionType) + return d.RDB.HGetAll(context.Background(), key).Result() + +} +func (d *DataBases) DeleteOneMessageKey(clientMsgID string, sessionType int32, subKey string) error { + key := getMessageReactionExPrefix(clientMsgID, sessionType) + return d.RDB.HDel(context.Background(), key, subKey).Err() + +} +func (d *DataBases) SetMessageReactionExpire(clientMsgID string, sessionType int32, expiration time.Duration) (bool, error) { + key := getMessageReactionExPrefix(clientMsgID, sessionType) + return d.RDB.Expire(context.Background(), key, expiration).Result() +} +func (d *DataBases) GetMessageTypeKeyValue(clientMsgID string, sessionType int32, typeKey string) (string, error) { + key := getMessageReactionExPrefix(clientMsgID, sessionType) + result, err := d.RDB.HGet(context.Background(), key, typeKey).Result() + return result, err + +} +func (d *DataBases) SetMessageTypeKeyValue(clientMsgID string, sessionType int32, typeKey, value string) error { + key := getMessageReactionExPrefix(clientMsgID, sessionType) + return d.RDB.HSet(context.Background(), key, typeKey, value).Err() + +} +func (d *DataBases) LockMessageTypeKey(clientMsgID string, TypeKey string) error { + key := exTypeKeyLocker + clientMsgID + "_" + TypeKey + return d.RDB.SetNX(context.Background(), key, 1, time.Minute).Err() +} +func (d *DataBases) UnLockMessageTypeKey(clientMsgID string, TypeKey string) error { + key := exTypeKeyLocker + clientMsgID + "_" + TypeKey + return d.RDB.Del(context.Background(), key).Err() + +} + +func getMessageReactionExPrefix(clientMsgID string, sessionType int32) string { + switch sessionType { + case constant.SingleChatType: + return "EX_SINGLE_" + clientMsgID + case constant.GroupChatType: + return "EX_GROUP_" + clientMsgID + case constant.SuperGroupChatType: + return "EX_SUPER_GROUP_" + clientMsgID + case constant.NotificationChatType: + return "EX_NOTIFICATION" + clientMsgID + } + return "" +} diff --git a/pkg/common/db/extend_msg_mongo_model.go b/pkg/common/db/extend_msg_mongo_model.go new file mode 100644 index 000000000..07d853418 --- /dev/null +++ b/pkg/common/db/extend_msg_mongo_model.go @@ -0,0 +1,205 @@ +package db + +import ( + "Open_IM/pkg/common/config" + server_api_params "Open_IM/pkg/proto/sdk_ws" + "Open_IM/pkg/utils" + "context" + "errors" + "fmt" + "go.mongodb.org/mongo-driver/bson/primitive" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" + "strconv" + "strings" + "time" + + "go.mongodb.org/mongo-driver/bson" +) + +const cExtendMsgSet = "extend_msgs" +const MaxNum = 100 + +type ExtendMsgSet struct { + SourceID string `bson:"source_id" json:"sourceID"` + SessionType int32 `bson:"session_type" json:"sessionType"` + ExtendMsgs map[string]ExtendMsg `bson:"extend_msgs" json:"extendMsgs"` + ExtendMsgNum int32 `bson:"extend_msg_num" json:"extendMsgNum"` + CreateTime int64 `bson:"create_time" json:"createTime"` // this block's create time + MaxMsgUpdateTime int64 `bson:"max_msg_update_time" json:"maxMsgUpdateTime"` // index find msg +} + +type KeyValue struct { + TypeKey string `bson:"type_key" json:"typeKey"` + Value string `bson:"value" json:"value"` + LatestUpdateTime int64 `bson:"latest_update_time" json:"latestUpdateTime"` +} + +type ExtendMsg struct { + ReactionExtensionList map[string]KeyValue `bson:"reaction_extension_list" json:"reactionExtensionList"` + ClientMsgID string `bson:"client_msg_id" json:"clientMsgID"` + MsgFirstModifyTime int64 `bson:"msg_first_modify_time" json:"msgFirstModifyTime"` // this extendMsg create time + AttachedInfo string `bson:"attached_info" json:"attachedInfo"` + Ex string `bson:"ex" json:"ex"` +} + +func GetExtendMsgMaxNum() int32 { + return MaxNum +} + +func GetExtendMsgSourceID(ID string, index int32) string { + return ID + ":" + strconv.Itoa(int(index)) +} + +func SplitSourceIDAndGetIndex(sourceID string) int32 { + l := strings.Split(sourceID, ":") + index, _ := strconv.Atoi(l[len(l)-1]) + return int32(index) +} + +func (d *DataBases) CreateExtendMsgSet(set *ExtendMsgSet) error { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cExtendMsgSet) + _, err := c.InsertOne(ctx, set) + return err +} + +type GetAllExtendMsgSetOpts struct { + ExcludeExtendMsgs bool +} + +func (d *DataBases) GetAllExtendMsgSet(ID string, opts *GetAllExtendMsgSetOpts) (sets []*ExtendMsgSet, err error) { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cExtendMsgSet) + regex := fmt.Sprintf("^%s", ID) + var findOpts *options.FindOptions + if opts != nil { + if opts.ExcludeExtendMsgs { + findOpts = &options.FindOptions{} + findOpts.SetProjection(bson.M{"extend_msgs": 0}) + } + } + cursor, err := c.Find(ctx, bson.M{"uid": primitive.Regex{Pattern: regex}}, findOpts) + if err != nil { + return nil, utils.Wrap(err, "") + } + err = cursor.All(context.Background(), &sets) + if err != nil { + return nil, utils.Wrap(err, fmt.Sprintf("cursor is %s", cursor.Current.String())) + } + return sets, nil +} + +func (d *DataBases) GetExtendMsgSet(ctx context.Context, sourceID string, sessionType int32, maxMsgUpdateTime int64, c *mongo.Collection) (*ExtendMsgSet, error) { + regex := fmt.Sprintf("^%s", sourceID) + var err error + findOpts := options.Find().SetLimit(1).SetSkip(0).SetSort(bson.M{"source_id": -1}).SetProjection(bson.M{"extend_msgs": 0}) + // update newest + find := bson.M{"source_id": primitive.Regex{Pattern: regex}, "session_type": sessionType} + if maxMsgUpdateTime > 0 { + find["max_msg_update_time"] = maxMsgUpdateTime + } + result, err := c.Find(ctx, find, findOpts) + if err != nil { + return nil, utils.Wrap(err, "") + } + var setList []ExtendMsgSet + if err := result.All(ctx, &setList); err != nil { + return nil, utils.Wrap(err, "") + } + if len(setList) == 0 { + return nil, nil + } + return &setList[0], nil +} + +// first modify msg +func (d *DataBases) InsertExtendMsg(sourceID string, sessionType int32, msg *ExtendMsg) error { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cExtendMsgSet) + set, err := d.GetExtendMsgSet(ctx, sourceID, sessionType, 0, c) + if err != nil { + return utils.Wrap(err, "") + } + if set == nil || set.ExtendMsgNum >= GetExtendMsgMaxNum() { + var index int32 + if set != nil { + index = SplitSourceIDAndGetIndex(set.SourceID) + } + err = d.CreateExtendMsgSet(&ExtendMsgSet{ + SourceID: GetExtendMsgSourceID(sourceID, index), + SessionType: sessionType, + ExtendMsgs: map[string]ExtendMsg{msg.ClientMsgID: *msg}, + ExtendMsgNum: 1, + CreateTime: msg.MsgFirstModifyTime, + MaxMsgUpdateTime: msg.MsgFirstModifyTime, + }) + } else { + _, err = c.UpdateOne(ctx, bson.M{"source_id": set.SourceID, "session_type": sessionType}, bson.M{"$set": bson.M{"max_msg_update_time": msg.MsgFirstModifyTime, "$inc": bson.M{"extend_msg_num": 1}, fmt.Sprintf("extend_msgs.%s", msg.ClientMsgID): msg}}) + } + return utils.Wrap(err, "") +} + +// insert or update +func (d *DataBases) InsertOrUpdateReactionExtendMsgSet(sourceID string, sessionType int32, clientMsgID string, msgFirstModifyTime int64, reactionExtensionList map[string]*server_api_params.KeyValue) error { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cExtendMsgSet) + var updateBson = bson.M{} + for _, v := range reactionExtensionList { + updateBson[fmt.Sprintf("extend_msgs.%s.%s", clientMsgID, v.TypeKey)] = v + } + upsert := true + opt := &options.UpdateOptions{ + Upsert: &upsert, + } + set, err := d.GetExtendMsgSet(ctx, sourceID, sessionType, msgFirstModifyTime, c) + if err != nil { + return utils.Wrap(err, "") + } + if set == nil { + return errors.New(fmt.Sprintf("sourceID %s has no set", sourceID)) + } + _, err = c.UpdateOne(ctx, bson.M{"source_id": set.SourceID, "session_type": sessionType}, bson.M{"$set": updateBson}, opt) + return utils.Wrap(err, "") +} + +// delete TypeKey +func (d *DataBases) DeleteReactionExtendMsgSet(sourceID string, sessionType int32, clientMsgID string, msgFirstModifyTime int64, reactionExtensionList map[string]*server_api_params.KeyValue) error { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cExtendMsgSet) + var updateBson = bson.M{} + for _, v := range reactionExtensionList { + updateBson[fmt.Sprintf("extend_msgs.%s.%s", clientMsgID, v.TypeKey)] = "" + } + set, err := d.GetExtendMsgSet(ctx, sourceID, sessionType, msgFirstModifyTime, c) + if err != nil { + return utils.Wrap(err, "") + } + if set == nil { + return errors.New(fmt.Sprintf("sourceID %s has no set", sourceID)) + } + _, err = c.UpdateOne(ctx, bson.M{"source_id": set.SourceID, "session_type": sessionType}, bson.M{"$unset": updateBson}) + return err +} + +func (d *DataBases) GetExtendMsg(sourceID string, sessionType int32, clientMsgID string, maxMsgUpdateTime int64) (extendMsg *ExtendMsg, err error) { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cExtendMsgSet) + findOpts := options.Find().SetLimit(1).SetSkip(0).SetSort(bson.M{"source_id": -1}).SetProjection(bson.M{fmt.Sprintf("extend_msgs.%s", clientMsgID): 1}) + regex := fmt.Sprintf("^%s", sourceID) + result, err := c.Find(ctx, bson.M{"source_id": primitive.Regex{Pattern: regex}, "session_type": sessionType, "max_msg_update_time": bson.M{"$lte": maxMsgUpdateTime}}, findOpts) + if err != nil { + return nil, utils.Wrap(err, "") + } + var setList []ExtendMsgSet + if err := result.All(ctx, &setList); err != nil { + return nil, utils.Wrap(err, "") + } + if len(setList) == 0 { + return nil, utils.Wrap(errors.New("GetExtendMsg failed, len(setList) == 0"), "") + } + if v, ok := setList[0].ExtendMsgs[clientMsgID]; ok { + return &v, nil + } + return nil, errors.New(fmt.Sprintf("cant find client msg id: %s", clientMsgID)) +} diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index 5cdd83bb0..bf2058e51 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -46,10 +46,10 @@ func key(dbAddress, dbName string) string { } func init() { - //log.NewPrivateLog(constant.LogFileName) var mongoClient *mongo.Client var err1 error - //mysql init + fmt.Println("init mysql redis mongo ") + initMysqlDB() // mongo init // "mongodb://sysop:moon@localhost/records" @@ -84,45 +84,34 @@ func init() { mongoClient, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri)) if err != nil { - fmt.Println(" mongo.Connect failed, try ", utils.GetSelfFuncName(), err.Error(), uri) time.Sleep(time.Duration(30) * time.Second) mongoClient, err1 = mongo.Connect(context.TODO(), options.Client().ApplyURI(uri)) if err1 != nil { - fmt.Println(" mongo.Connect retry failed, panic", err.Error(), uri) - panic(err1.Error()) + panic(err1.Error() + " mongo.Connect failed " + uri) } } - fmt.Println("mongo driver client init success: ", uri) // mongodb create index if err := createMongoIndex(mongoClient, cSendLog, false, "send_id", "-send_time"); err != nil { - fmt.Println("send_id", "-send_time", "index create failed", err.Error()) - panic(err.Error()) + panic(err.Error() + " index create failed " + cSendLog + " send_id, -send_time") } if err := createMongoIndex(mongoClient, cChat, false, "uid"); err != nil { - fmt.Println("uid", " index create failed", err.Error()) - //panic(err.Error()) + fmt.Println(err.Error() + " index create failed " + cChat + " uid ") } if err := createMongoIndex(mongoClient, cWorkMoment, true, "-create_time", "work_moment_id"); err != nil { - fmt.Println("-create_time", "work_moment_id", "index create failed", err.Error()) - panic(err.Error()) + panic(err.Error() + "index create failed " + cWorkMoment + " -create_time, work_moment_id") } if err := createMongoIndex(mongoClient, cWorkMoment, true, "work_moment_id"); err != nil { - fmt.Println("work_moment_id", "index create failed", err.Error()) - panic(err.Error()) + panic(err.Error() + "index create failed " + cWorkMoment + " work_moment_id ") } if err := createMongoIndex(mongoClient, cWorkMoment, false, "user_id", "-create_time"); err != nil { - fmt.Println("user_id", "-create_time", "index create failed", err.Error()) - panic(err.Error()) + panic(err.Error() + "index create failed " + cWorkMoment + "user_id, -create_time") } if err := createMongoIndex(mongoClient, cTag, false, "user_id", "-create_time"); err != nil { - fmt.Println("user_id", "-create_time", "index create failed", err.Error()) - panic(err.Error()) + panic(err.Error() + "index create failed " + cTag + " user_id, -create_time") } if err := createMongoIndex(mongoClient, cTag, true, "tag_id"); err != nil { - fmt.Println("tag_id", "index create failed", err.Error()) - panic(err.Error()) + panic(err.Error() + "index create failed " + cTag + " tag_id") } - fmt.Println("createMongoIndex success") DB.mongoClient = mongoClient ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) @@ -136,7 +125,8 @@ func init() { }) _, err = DB.RDB.Ping(ctx).Result() if err != nil { - panic(err.Error()) + fmt.Println("redis cluster failed address ", config.Config.Redis.DBAddress) + panic(err.Error() + " redis cluster " + config.Config.Redis.DBUserName + config.Config.Redis.DBPassWord) } } else { DB.RDB = go_redis.NewClient(&go_redis.Options{ @@ -148,7 +138,7 @@ func init() { }) _, err = DB.RDB.Ping(ctx).Result() if err != nil { - panic(err.Error()) + panic(err.Error() + " redis " + config.Config.Redis.DBAddress[0] + config.Config.Redis.DBUserName + config.Config.Redis.DBPassWord) } } // 强一致性缓存,当一个key被标记删除,其他请求线程会被锁住轮询直到新的key生成,适合各种同步的拉取, 如果弱一致可能导致拉取还是老数据,毫无意义 @@ -158,6 +148,8 @@ func init() { // 弱一致性缓存,当一个key被标记删除,其他请求线程直接返回该key的value,适合高频并且生成很缓存很慢的情况 如大群发消息缓存的缓存 DB.WeakRc = rockscache.NewClient(DB.RDB, rockscache.NewDefaultOptions()) DB.WeakRc.Options.StrongConsistency = false + + fmt.Println("init mysql redis mongo ok ") } func createMongoIndex(client *mongo.Client, collection string, isUnique bool, keys ...string) error { diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 88805b902..4d7d01f80 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -10,13 +10,14 @@ import ( "context" "errors" "fmt" + "math/rand" + "sync" + "github.com/go-redis/redis/v8" "github.com/gogo/protobuf/sortkeys" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" - "math/rand" - "sync" //"github.com/garyburd/redigo/redis" "github.com/golang/protobuf/proto" @@ -206,6 +207,13 @@ func (d *DataBases) ReplaceMsgBySeq(uid string, msg *open_im_sdk.MsgData, operat return nil } +func (d *DataBases) UpdateOneMsgList(msg *UserChat) error { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cChat) + _, err := c.UpdateOne(ctx, bson.M{"uid": msg.UID}, bson.M{"$set": bson.M{"msg": msg.Msg}}) + return err +} + func (d *DataBases) GetMsgBySeqList(uid string, seqList []uint32, operationID string) (seqMsg []*open_im_sdk.MsgData, err error) { log.NewInfo(operationID, utils.GetSelfFuncName(), uid, seqList) var hasSeqList []uint32 @@ -291,13 +299,13 @@ func (d *DataBases) DelMongoMsgs(IDList []string) error { return err } -func (d *DataBases) ReplaceMsgToBlankByIndex(suffixID string, index int) error { +func (d *DataBases) ReplaceMsgToBlankByIndex(suffixID string, index int) (replaceMaxSeq uint32, err error) { ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cChat) userChat := &UserChat{} - err := c.FindOne(ctx, bson.M{"uid": suffixID}).Decode(&userChat) + err = c.FindOne(ctx, bson.M{"uid": suffixID}).Decode(&userChat) if err != nil { - return err + return 0, err } for i, msg := range userChat.Msg { if i <= index { @@ -312,13 +320,14 @@ func (d *DataBases) ReplaceMsgToBlankByIndex(suffixID string, index int) error { } msg.Msg = bytes msg.SendTime = 0 + replaceMaxSeq = msgPb.Seq } } _, err = c.UpdateOne(ctx, bson.M{"uid": suffixID}, bson.M{"$set": bson.M{"msg": userChat.Msg}}) - return err + return replaceMaxSeq, err } -func (d *DataBases) GetNewestMsg(ID string) (msg *MsgInfo, err error) { +func (d *DataBases) GetNewestMsg(ID string) (msg *open_im_sdk.MsgData, err error) { ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cChat) regex := fmt.Sprintf("^%s", ID) @@ -334,13 +343,53 @@ func (d *DataBases) GetNewestMsg(ID string) (msg *MsgInfo, err error) { } if len(userChats) > 0 { if len(userChats[0].Msg) > 0 { - return &userChats[0].Msg[len(userChats[0].Msg)-1], nil + msgPb := &open_im_sdk.MsgData{} + err = proto.Unmarshal(userChats[0].Msg[len(userChats[0].Msg)-1].Msg, msgPb) + if err != nil { + return nil, utils.Wrap(err, "") + } + return msgPb, nil } return nil, errors.New("len(userChats[0].Msg) < 0") } return nil, nil } +func (d *DataBases) GetOldestMsg(ID string) (msg *open_im_sdk.MsgData, err error) { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cChat) + regex := fmt.Sprintf("^%s", ID) + findOpts := options.Find().SetLimit(1).SetSort(bson.M{"uid": 1}) + var userChats []UserChat + cursor, err := c.Find(ctx, bson.M{"uid": bson.M{"$regex": regex}}, findOpts) + if err != nil { + return nil, err + } + err = cursor.All(ctx, &userChats) + if err != nil { + return nil, utils.Wrap(err, "") + } + var oldestMsg []byte + if len(userChats) > 0 { + for _, v := range userChats[0].Msg { + if v.SendTime != 0 { + oldestMsg = v.Msg + break + } + } + if len(oldestMsg) == 0 { + oldestMsg = userChats[0].Msg[len(userChats[0].Msg)-1].Msg + } + msgPb := &open_im_sdk.MsgData{} + err = proto.Unmarshal(oldestMsg, msgPb) + if err != nil { + return nil, utils.Wrap(err, "") + } + return msgPb, nil + } + return nil, nil +} + func (d *DataBases) GetMsgBySeqListMongo2(uid string, seqList []uint32, operationID string) (seqMsg []*open_im_sdk.MsgData, err error) { var hasSeqList []uint32 singleCount := 0 diff --git a/pkg/common/db/mysql.go b/pkg/common/db/mysql.go index ca0e62008..9c8bc93df 100644 --- a/pkg/common/db/mysql.go +++ b/pkg/common/db/mysql.go @@ -22,37 +22,26 @@ func (w Writer) Printf(format string, args ...interface{}) { } func initMysqlDB() { - fmt.Println("init mysqlDB start") - //When there is no open IM database, connect to the mysql built-in database to create openIM database dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=true&loc=Local", config.Config.Mysql.DBUserName, config.Config.Mysql.DBPassword, config.Config.Mysql.DBAddress[0], "mysql") var db *gorm.DB var err1 error db, err := gorm.Open(mysql.Open(dsn), nil) - if err != nil { - fmt.Println("Open failed ", err.Error(), dsn) - } if err != nil { time.Sleep(time.Duration(30) * time.Second) db, err1 = gorm.Open(mysql.Open(dsn), nil) if err1 != nil { - fmt.Println("Open failed ", err1.Error(), dsn) - panic(err1.Error()) + panic(err1.Error() + " open failed " + dsn) } } - //Check the database and table during initialization sql := fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s default charset utf8 COLLATE utf8_general_ci;", config.Config.Mysql.DBDatabaseName) - fmt.Println("exec sql: ", sql, " begin") err = db.Exec(sql).Error if err != nil { - fmt.Println("Exec failed ", err.Error(), sql) - panic(err.Error()) + panic(err.Error() + " Exec failed " + sql) } - fmt.Println("exec sql: ", sql, " end") dsn = fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=true&loc=Local", config.Config.Mysql.DBUserName, config.Config.Mysql.DBPassword, config.Config.Mysql.DBAddress[0], config.Config.Mysql.DBDatabaseName) - newLogger := logger.New( Writer{}, logger.Config{ @@ -66,20 +55,18 @@ func initMysqlDB() { Logger: newLogger, }) if err != nil { - fmt.Println("Open failed ", err.Error(), dsn) - panic(err.Error()) + panic(err.Error() + " Open failed " + dsn) } sqlDB, err := db.DB() if err != nil { - panic(err.Error()) + panic(err.Error() + " db.DB() failed ") } sqlDB.SetConnMaxLifetime(time.Second * time.Duration(config.Config.Mysql.DBMaxLifeTime)) sqlDB.SetMaxOpenConns(config.Config.Mysql.DBMaxOpenConns) sqlDB.SetMaxIdleConns(config.Config.Mysql.DBMaxIdleConns) - fmt.Println("open mysql ok ", dsn) db.AutoMigrate( &Register{}, &Friend{}, @@ -94,99 +81,69 @@ func initMysqlDB() { db.Set("gorm:table_options", "collation=utf8_unicode_ci") if !db.Migrator().HasTable(&Friend{}) { - fmt.Println("CreateTable Friend") db.Migrator().CreateTable(&Friend{}) } - if !db.Migrator().HasTable(&FriendRequest{}) { - fmt.Println("CreateTable FriendRequest") db.Migrator().CreateTable(&FriendRequest{}) } - if !db.Migrator().HasTable(&Group{}) { - fmt.Println("CreateTable Group") db.Migrator().CreateTable(&Group{}) } - if !db.Migrator().HasTable(&GroupMember{}) { - fmt.Println("CreateTable GroupMember") db.Migrator().CreateTable(&GroupMember{}) } if !db.Migrator().HasTable(&GroupRequest{}) { - fmt.Println("CreateTable GroupRequest") db.Migrator().CreateTable(&GroupRequest{}) } if !db.Migrator().HasTable(&User{}) { - fmt.Println("CreateTable User") db.Migrator().CreateTable(&User{}) } if !db.Migrator().HasTable(&Black{}) { - fmt.Println("CreateTable Black") db.Migrator().CreateTable(&Black{}) } if !db.Migrator().HasTable(&ChatLog{}) { - fmt.Println("CreateTable ChatLog") db.Migrator().CreateTable(&ChatLog{}) } if !db.Migrator().HasTable(&Register{}) { - fmt.Println("CreateTable Register") db.Migrator().CreateTable(&Register{}) } if !db.Migrator().HasTable(&Conversation{}) { - fmt.Println("CreateTable Conversation") db.Migrator().CreateTable(&Conversation{}) } - if !db.Migrator().HasTable(&Department{}) { - fmt.Println("CreateTable Department") db.Migrator().CreateTable(&Department{}) } if !db.Migrator().HasTable(&OrganizationUser{}) { - fmt.Println("CreateTable OrganizationUser") db.Migrator().CreateTable(&OrganizationUser{}) } if !db.Migrator().HasTable(&DepartmentMember{}) { - fmt.Println("CreateTable DepartmentMember") db.Migrator().CreateTable(&DepartmentMember{}) } if !db.Migrator().HasTable(&AppVersion{}) { - fmt.Println("CreateTable DepartmentMember") db.Migrator().CreateTable(&AppVersion{}) } if !db.Migrator().HasTable(&BlackList{}) { - fmt.Println("CreateTable BlackList") db.Migrator().CreateTable(&BlackList{}) } if !db.Migrator().HasTable(&IpLimit{}) { - fmt.Println("CreateTable IpLimit") db.Migrator().CreateTable(&IpLimit{}) } if !db.Migrator().HasTable(&UserIpLimit{}) { - fmt.Println("CreateTable UserIpLimit") db.Migrator().CreateTable(&UserIpLimit{}) } - if !db.Migrator().HasTable(&RegisterAddFriend{}) { - fmt.Println("CreateTable RegisterAddFriend") db.Migrator().CreateTable(&RegisterAddFriend{}) } if !db.Migrator().HasTable(&Invitation{}) { - fmt.Println("CreateTable Invitation") db.Migrator().CreateTable(&Invitation{}) } - if !db.Migrator().HasTable(&ClientInitConfig{}) { - fmt.Println("CreateTable ClientInitConfig") db.Migrator().CreateTable(&ClientInitConfig{}) } - if !db.Migrator().HasTable(&UserIpRecord{}) { - fmt.Println("CreateTable Friend") db.Migrator().CreateTable(&UserIpRecord{}) } - DB.MysqlDB.db = db - return } func (m *mysqlDB) DefaultGormDB() *gorm.DB { diff --git a/pkg/common/db/mysql_model/im_mysql_model/friend_model.go b/pkg/common/db/mysql_model/im_mysql_model/friend_model.go index 7cae9f9d0..4e4340d84 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/friend_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/friend_model.go @@ -4,8 +4,6 @@ import ( "Open_IM/pkg/common/db" "fmt" "time" - - _ "github.com/jinzhu/gorm/dialects/mysql" ) func InsertToFriend(toInsertFollow *db.Friend) error { diff --git a/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go b/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go index a9dd6d98e..f6f5b2637 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go @@ -27,7 +27,9 @@ func UpdateGroupRequest(groupRequest db.GroupRequest) error { } func InsertIntoGroupRequest(toInsertInfo db.GroupRequest) error { - DelGroupRequestByGroupIDAndUserID(toInsertInfo.GroupID, toInsertInfo.UserID) + if err := DelGroupRequestByGroupIDAndUserID(toInsertInfo.GroupID, toInsertInfo.UserID); err != nil { + return err + } if toInsertInfo.HandledTime.Unix() < 0 { toInsertInfo.HandledTime = utils.UnixSecondToTime(0) } @@ -70,7 +72,7 @@ func GetGroupRequestByGroupID(groupID string) ([]db.GroupRequest, error) { return groupRequestList, nil } -//received +// received func GetGroupApplicationList(userID string) ([]db.GroupRequest, error) { var groupRequestList []db.GroupRequest memberList, err := GetGroupMemberListByUserID(userID) diff --git a/pkg/common/db/mysql_model/im_mysql_model/invitation_model.go b/pkg/common/db/mysql_model/im_mysql_model/invitation_model.go index ddbe974c5..80d2f768a 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/invitation_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/invitation_model.go @@ -5,8 +5,6 @@ import ( "errors" "math/rand" "time" - - "github.com/jinzhu/gorm" ) /** @@ -89,9 +87,6 @@ func GetInvitationCode(code string) (*db.Invitation, error) { InvitationCode: code, } err := db.DB.MysqlDB.DefaultGormDB().Model(invitation).Find(invitation).Error - if gorm.IsRecordNotFoundError(err) { - return invitation, nil - } return invitation, err } diff --git a/pkg/common/db/mysql_model/im_mysql_model/message_cms.go b/pkg/common/db/mysql_model/im_mysql_model/message_cms.go index 615b09d7a..2add70b12 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/message_cms.go +++ b/pkg/common/db/mysql_model/im_mysql_model/message_cms.go @@ -3,65 +3,42 @@ package im_mysql_model import ( "Open_IM/pkg/common/constant" "Open_IM/pkg/common/db" - "Open_IM/pkg/common/log" - "Open_IM/pkg/utils" "fmt" ) -func GetChatLog(chatLog db.ChatLog, pageNumber, showNumber int32) ([]db.ChatLog, error) { - var chatLogs []db.ChatLog - db := db.DB.MysqlDB.DefaultGormDB().Table("chat_logs"). - Limit(int(showNumber)).Offset(int(showNumber * (pageNumber - 1))) +func GetChatLog(chatLog *db.ChatLog, pageNumber, showNumber int32, contentTypeList []int32) (int64, []db.ChatLog, error) { + mdb := db.DB.MysqlDB.DefaultGormDB().Table("chat_logs") if chatLog.SendTime.Unix() > 0 { - db = db.Where("send_time > ? and send_time < ?", chatLog.SendTime, chatLog.SendTime.AddDate(0, 0, 1)) + mdb = mdb.Where("send_time > ? and send_time < ?", chatLog.SendTime, chatLog.SendTime.AddDate(0, 0, 1)) } if chatLog.Content != "" { - db = db.Where(" content like ? ", fmt.Sprintf("%%%s%%", chatLog.Content)) + mdb = mdb.Where(" content like ? ", fmt.Sprintf("%%%s%%", chatLog.Content)) } if chatLog.SessionType == 1 { - db = db.Where("session_type = ?", chatLog.SessionType) + mdb = mdb.Where("session_type = ?", chatLog.SessionType) } else if chatLog.SessionType == 2 { - db = db.Where("session_type in (?)", []int{constant.GroupChatType, constant.SuperGroupChatType}) + mdb = mdb.Where("session_type in (?)", []int{constant.GroupChatType, constant.SuperGroupChatType}) } if chatLog.ContentType != 0 { - db = db.Where("content_type = ?", chatLog.ContentType) + mdb = mdb.Where("content_type = ?", chatLog.ContentType) } if chatLog.SendID != "" { - db = db.Where("send_id = ?", chatLog.SendID) + mdb = mdb.Where("send_id = ?", chatLog.SendID) } if chatLog.RecvID != "" { - db = db.Where("recv_id = ?", chatLog.RecvID) + mdb = mdb.Where("recv_id = ?", chatLog.RecvID) + } + if len(contentTypeList) > 0 { + mdb = mdb.Where("content_type in (?)", contentTypeList) } - - err := db.Find(&chatLogs).Error - return chatLogs, err -} - -func GetChatLogCount(chatLog db.ChatLog) (int64, error) { var count int64 - db := db.DB.MysqlDB.DefaultGormDB().Table("chat_logs") - if chatLog.SendTime.Unix() > 0 { - log.NewDebug("", utils.GetSelfFuncName(), chatLog.SendTime, chatLog.SendTime.AddDate(0, 0, 1)) - db = db.Where("send_time > ? and send_time < ?", chatLog.SendTime, chatLog.SendTime.AddDate(0, 0, 1)) + if err := mdb.Count(&count).Error; err != nil { + return 0, nil, err } - if chatLog.Content != "" { - db = db.Where(" content like ? ", fmt.Sprintf("%%%s%%", chatLog.Content)) + var chatLogs []db.ChatLog + mdb = mdb.Limit(int(showNumber)).Offset(int(showNumber * (pageNumber - 1))) + if err := mdb.Find(&chatLogs).Error; err != nil { + return 0, nil, err } - if chatLog.SessionType == 1 { - db = db.Where("session_type = ?", chatLog.SessionType) - } else if chatLog.SessionType == 2 { - db = db.Where("session_type in (?)", []int{constant.GroupChatType, constant.SuperGroupChatType}) - } - if chatLog.ContentType != 0 { - db = db.Where("content_type = ?", chatLog.ContentType) - } - if chatLog.SendID != "" { - db = db.Where("send_id = ?", chatLog.SendID) - } - if chatLog.RecvID != "" { - db = db.Where("recv_id = ?", chatLog.RecvID) - } - - err := db.Count(&count).Error - return count, err + return count, chatLogs, nil } diff --git a/pkg/common/db/rocks_cache/rocks_cache.go b/pkg/common/db/rocks_cache/rocks_cache.go index be9822b3e..3b054d37f 100644 --- a/pkg/common/db/rocks_cache/rocks_cache.go +++ b/pkg/common/db/rocks_cache/rocks_cache.go @@ -8,7 +8,6 @@ import ( "Open_IM/pkg/utils" "context" "encoding/json" - "errors" "fmt" "math/big" "sort" @@ -34,6 +33,8 @@ const ( groupMemberNumCache = "GROUP_MEMBER_NUM_CACHE:" conversationCache = "CONVERSATION_CACHE:" conversationIDListCache = "CONVERSATION_ID_LIST_CACHE:" + extendMsgSetCache = "EXTEND_MSG_SET_CACHE:" + extendMsgCache = "EXTEND_MSG_CACHE:" ) func DelKeys() { @@ -408,9 +409,6 @@ func GetJoinedSuperGroupListFromCache(userID string) ([]string, error) { if err != nil { return "", utils.Wrap(err, "") } - if len(userToSuperGroup.GroupIDList) == 0 { - return "", errors.New("GroupIDList == 0") - } bytes, err := json.Marshal(userToSuperGroup.GroupIDList) if err != nil { return "", utils.Wrap(err, "") @@ -568,3 +566,32 @@ func GetUserAllConversationList(ownerUserID string) ([]db.Conversation, error) { func DelConversationFromCache(ownerUserID, conversationID string) error { return utils.Wrap(db.DB.Rc.TagAsDeleted(conversationCache+ownerUserID+":"+conversationID), "DelConversationFromCache err") } + +func GetExtendMsg(sourceID string, sessionType int32, clientMsgID string, firstModifyTime int64) (*db.ExtendMsg, error) { + getExtendMsg := func() (string, error) { + extendMsg, err := db.DB.GetExtendMsg(sourceID, sessionType, clientMsgID, firstModifyTime) + if err != nil { + return "", utils.Wrap(err, "GetExtendMsgList failed") + } + bytes, err := json.Marshal(extendMsg) + if err != nil { + return "", utils.Wrap(err, "Marshal failed") + } + return string(bytes), nil + } + + extendMsgStr, err := db.DB.Rc.Fetch(extendMsgCache+clientMsgID, time.Second*30*60, getExtendMsg) + if err != nil { + return nil, utils.Wrap(err, "Fetch failed") + } + extendMsg := &db.ExtendMsg{} + err = json.Unmarshal([]byte(extendMsgStr), extendMsg) + if err != nil { + return nil, utils.Wrap(err, "Unmarshal failed") + } + return extendMsg, nil +} + +func DelExtendMsg(ID string, index int32, clientMsgID string) error { + return utils.Wrap(db.DB.Rc.TagAsDeleted(extendMsgCache+clientMsgID), "DelExtendMsg err") +} diff --git a/pkg/common/kafka/consumer_group.go b/pkg/common/kafka/consumer_group.go index 6da75972d..57017136c 100644 --- a/pkg/common/kafka/consumer_group.go +++ b/pkg/common/kafka/consumer_group.go @@ -9,6 +9,7 @@ package kafka import ( "context" "fmt" + "github.com/Shopify/sarama" ) @@ -29,9 +30,10 @@ func NewMConsumerGroup(consumerConfig *MConsumerGroupConfig, topics, addrs []str config.Version = consumerConfig.KafkaVersion config.Consumer.Offsets.Initial = consumerConfig.OffsetsInitial config.Consumer.Return.Errors = consumerConfig.IsReturnErr - fmt.Println("init address is ", addrs, "topics is ", topics) + //fmt.Println("init address is ", addrs, "topics is ", topics) consumerGroup, err := sarama.NewConsumerGroup(addrs, groupID, config) if err != nil { + fmt.Println("args:", addrs, groupID, config) panic(err.Error()) } return &MConsumerGroup{ diff --git a/pkg/proto/admin_cms/admin_cms.pb.go b/pkg/proto/admin_cms/admin_cms.pb.go index 707609b6d..970a98788 100644 --- a/pkg/proto/admin_cms/admin_cms.pb.go +++ b/pkg/proto/admin_cms/admin_cms.pb.go @@ -1,4762 +1,3028 @@ // Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.27.1 -// protoc v3.15.5 // source: admin_cms/admin_cms.proto -package admin_cms +package admin_cms // import "Open_IM/pkg/proto/admin_cms" + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import sdk_ws "Open_IM/pkg/proto/sdk_ws" import ( - sdk_ws "Open_IM/pkg/proto/sdk_ws" - context "context" + context "golang.org/x/net/context" grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package type CommonResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ErrCode int32 `protobuf:"varint,1,opt,name=errCode,proto3" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg,proto3" json:"errMsg,omitempty"` + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CommonResp) Reset() { - *x = CommonResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CommonResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CommonResp) ProtoMessage() {} - -func (x *CommonResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CommonResp.ProtoReflect.Descriptor instead. +func (m *CommonResp) Reset() { *m = CommonResp{} } +func (m *CommonResp) String() string { return proto.CompactTextString(m) } +func (*CommonResp) ProtoMessage() {} func (*CommonResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{0} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{0} +} +func (m *CommonResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommonResp.Unmarshal(m, b) +} +func (m *CommonResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommonResp.Marshal(b, m, deterministic) +} +func (dst *CommonResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommonResp.Merge(dst, src) +} +func (m *CommonResp) XXX_Size() int { + return xxx_messageInfo_CommonResp.Size(m) +} +func (m *CommonResp) XXX_DiscardUnknown() { + xxx_messageInfo_CommonResp.DiscardUnknown(m) } -func (x *CommonResp) GetErrCode() int32 { - if x != nil { - return x.ErrCode +var xxx_messageInfo_CommonResp proto.InternalMessageInfo + +func (m *CommonResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode } return 0 } -func (x *CommonResp) GetErrMsg() string { - if x != nil { - return x.ErrMsg +func (m *CommonResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg } return "" } type AdminLoginReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=operationID,proto3" json:"operationID,omitempty"` - AdminID string `protobuf:"bytes,2,opt,name=adminID,proto3" json:"adminID,omitempty"` - Secret string `protobuf:"bytes,3,opt,name=secret,proto3" json:"secret,omitempty"` + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + AdminID string `protobuf:"bytes,2,opt,name=adminID" json:"adminID,omitempty"` + Secret string `protobuf:"bytes,3,opt,name=secret" json:"secret,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *AdminLoginReq) Reset() { - *x = AdminLoginReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AdminLoginReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AdminLoginReq) ProtoMessage() {} - -func (x *AdminLoginReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AdminLoginReq.ProtoReflect.Descriptor instead. +func (m *AdminLoginReq) Reset() { *m = AdminLoginReq{} } +func (m *AdminLoginReq) String() string { return proto.CompactTextString(m) } +func (*AdminLoginReq) ProtoMessage() {} func (*AdminLoginReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{1} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{1} +} +func (m *AdminLoginReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_AdminLoginReq.Unmarshal(m, b) +} +func (m *AdminLoginReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_AdminLoginReq.Marshal(b, m, deterministic) +} +func (dst *AdminLoginReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_AdminLoginReq.Merge(dst, src) +} +func (m *AdminLoginReq) XXX_Size() int { + return xxx_messageInfo_AdminLoginReq.Size(m) +} +func (m *AdminLoginReq) XXX_DiscardUnknown() { + xxx_messageInfo_AdminLoginReq.DiscardUnknown(m) } -func (x *AdminLoginReq) GetOperationID() string { - if x != nil { - return x.OperationID +var xxx_messageInfo_AdminLoginReq proto.InternalMessageInfo + +func (m *AdminLoginReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *AdminLoginReq) GetAdminID() string { - if x != nil { - return x.AdminID +func (m *AdminLoginReq) GetAdminID() string { + if m != nil { + return m.AdminID } return "" } -func (x *AdminLoginReq) GetSecret() string { - if x != nil { - return x.Secret +func (m *AdminLoginReq) GetSecret() string { + if m != nil { + return m.Secret } return "" } type AdminLoginResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` - UserName string `protobuf:"bytes,2,opt,name=userName,proto3" json:"userName,omitempty"` - FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL,omitempty"` - CommonResp *CommonResp `protobuf:"bytes,4,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + Token string `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=userName" json:"userName,omitempty"` + FaceURL string `protobuf:"bytes,3,opt,name=faceURL" json:"faceURL,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,4,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *AdminLoginResp) Reset() { - *x = AdminLoginResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AdminLoginResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AdminLoginResp) ProtoMessage() {} - -func (x *AdminLoginResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AdminLoginResp.ProtoReflect.Descriptor instead. +func (m *AdminLoginResp) Reset() { *m = AdminLoginResp{} } +func (m *AdminLoginResp) String() string { return proto.CompactTextString(m) } +func (*AdminLoginResp) ProtoMessage() {} func (*AdminLoginResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{2} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{2} +} +func (m *AdminLoginResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_AdminLoginResp.Unmarshal(m, b) +} +func (m *AdminLoginResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_AdminLoginResp.Marshal(b, m, deterministic) +} +func (dst *AdminLoginResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_AdminLoginResp.Merge(dst, src) +} +func (m *AdminLoginResp) XXX_Size() int { + return xxx_messageInfo_AdminLoginResp.Size(m) +} +func (m *AdminLoginResp) XXX_DiscardUnknown() { + xxx_messageInfo_AdminLoginResp.DiscardUnknown(m) } -func (x *AdminLoginResp) GetToken() string { - if x != nil { - return x.Token +var xxx_messageInfo_AdminLoginResp proto.InternalMessageInfo + +func (m *AdminLoginResp) GetToken() string { + if m != nil { + return m.Token } return "" } -func (x *AdminLoginResp) GetUserName() string { - if x != nil { - return x.UserName +func (m *AdminLoginResp) GetUserName() string { + if m != nil { + return m.UserName } return "" } -func (x *AdminLoginResp) GetFaceURL() string { - if x != nil { - return x.FaceURL +func (m *AdminLoginResp) GetFaceURL() string { + if m != nil { + return m.FaceURL } return "" } -func (x *AdminLoginResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +func (m *AdminLoginResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } -type AddUserRegisterAddFriendIDListReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=operationID,proto3" json:"operationID,omitempty"` - UserIDList []string `protobuf:"bytes,2,rep,name=userIDList,proto3" json:"userIDList,omitempty"` +type GetUserTokenReq struct { + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` + PlatformID int32 `protobuf:"varint,3,opt,name=platformID" json:"platformID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *AddUserRegisterAddFriendIDListReq) Reset() { - *x = AddUserRegisterAddFriendIDListReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *GetUserTokenReq) Reset() { *m = GetUserTokenReq{} } +func (m *GetUserTokenReq) String() string { return proto.CompactTextString(m) } +func (*GetUserTokenReq) ProtoMessage() {} +func (*GetUserTokenReq) Descriptor() ([]byte, []int) { + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{3} +} +func (m *GetUserTokenReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserTokenReq.Unmarshal(m, b) +} +func (m *GetUserTokenReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserTokenReq.Marshal(b, m, deterministic) +} +func (dst *GetUserTokenReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserTokenReq.Merge(dst, src) +} +func (m *GetUserTokenReq) XXX_Size() int { + return xxx_messageInfo_GetUserTokenReq.Size(m) +} +func (m *GetUserTokenReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserTokenReq.DiscardUnknown(m) } -func (x *AddUserRegisterAddFriendIDListReq) String() string { - return protoimpl.X.MessageStringOf(x) -} +var xxx_messageInfo_GetUserTokenReq proto.InternalMessageInfo -func (*AddUserRegisterAddFriendIDListReq) ProtoMessage() {} - -func (x *AddUserRegisterAddFriendIDListReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AddUserRegisterAddFriendIDListReq.ProtoReflect.Descriptor instead. -func (*AddUserRegisterAddFriendIDListReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{3} -} - -func (x *AddUserRegisterAddFriendIDListReq) GetOperationID() string { - if x != nil { - return x.OperationID +func (m *GetUserTokenReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *AddUserRegisterAddFriendIDListReq) GetUserIDList() []string { - if x != nil { - return x.UserIDList +func (m *GetUserTokenReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *GetUserTokenReq) GetPlatformID() int32 { + if m != nil { + return m.PlatformID + } + return 0 +} + +type GetUserTokenResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + Token string `protobuf:"bytes,2,opt,name=token" json:"token,omitempty"` + ExpTime int64 `protobuf:"varint,3,opt,name=expTime" json:"expTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserTokenResp) Reset() { *m = GetUserTokenResp{} } +func (m *GetUserTokenResp) String() string { return proto.CompactTextString(m) } +func (*GetUserTokenResp) ProtoMessage() {} +func (*GetUserTokenResp) Descriptor() ([]byte, []int) { + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{4} +} +func (m *GetUserTokenResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserTokenResp.Unmarshal(m, b) +} +func (m *GetUserTokenResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserTokenResp.Marshal(b, m, deterministic) +} +func (dst *GetUserTokenResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserTokenResp.Merge(dst, src) +} +func (m *GetUserTokenResp) XXX_Size() int { + return xxx_messageInfo_GetUserTokenResp.Size(m) +} +func (m *GetUserTokenResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserTokenResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserTokenResp proto.InternalMessageInfo + +func (m *GetUserTokenResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +func (m *GetUserTokenResp) GetToken() string { + if m != nil { + return m.Token + } + return "" +} + +func (m *GetUserTokenResp) GetExpTime() int64 { + if m != nil { + return m.ExpTime + } + return 0 +} + +type AddUserRegisterAddFriendIDListReq struct { + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + UserIDList []string `protobuf:"bytes,2,rep,name=userIDList" json:"userIDList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *AddUserRegisterAddFriendIDListReq) Reset() { *m = AddUserRegisterAddFriendIDListReq{} } +func (m *AddUserRegisterAddFriendIDListReq) String() string { return proto.CompactTextString(m) } +func (*AddUserRegisterAddFriendIDListReq) ProtoMessage() {} +func (*AddUserRegisterAddFriendIDListReq) Descriptor() ([]byte, []int) { + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{5} +} +func (m *AddUserRegisterAddFriendIDListReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_AddUserRegisterAddFriendIDListReq.Unmarshal(m, b) +} +func (m *AddUserRegisterAddFriendIDListReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_AddUserRegisterAddFriendIDListReq.Marshal(b, m, deterministic) +} +func (dst *AddUserRegisterAddFriendIDListReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_AddUserRegisterAddFriendIDListReq.Merge(dst, src) +} +func (m *AddUserRegisterAddFriendIDListReq) XXX_Size() int { + return xxx_messageInfo_AddUserRegisterAddFriendIDListReq.Size(m) +} +func (m *AddUserRegisterAddFriendIDListReq) XXX_DiscardUnknown() { + xxx_messageInfo_AddUserRegisterAddFriendIDListReq.DiscardUnknown(m) +} + +var xxx_messageInfo_AddUserRegisterAddFriendIDListReq proto.InternalMessageInfo + +func (m *AddUserRegisterAddFriendIDListReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *AddUserRegisterAddFriendIDListReq) GetUserIDList() []string { + if m != nil { + return m.UserIDList } return nil } type AddUserRegisterAddFriendIDListResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *AddUserRegisterAddFriendIDListResp) Reset() { - *x = AddUserRegisterAddFriendIDListResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AddUserRegisterAddFriendIDListResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddUserRegisterAddFriendIDListResp) ProtoMessage() {} - -func (x *AddUserRegisterAddFriendIDListResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AddUserRegisterAddFriendIDListResp.ProtoReflect.Descriptor instead. +func (m *AddUserRegisterAddFriendIDListResp) Reset() { *m = AddUserRegisterAddFriendIDListResp{} } +func (m *AddUserRegisterAddFriendIDListResp) String() string { return proto.CompactTextString(m) } +func (*AddUserRegisterAddFriendIDListResp) ProtoMessage() {} func (*AddUserRegisterAddFriendIDListResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{4} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{6} +} +func (m *AddUserRegisterAddFriendIDListResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_AddUserRegisterAddFriendIDListResp.Unmarshal(m, b) +} +func (m *AddUserRegisterAddFriendIDListResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_AddUserRegisterAddFriendIDListResp.Marshal(b, m, deterministic) +} +func (dst *AddUserRegisterAddFriendIDListResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_AddUserRegisterAddFriendIDListResp.Merge(dst, src) +} +func (m *AddUserRegisterAddFriendIDListResp) XXX_Size() int { + return xxx_messageInfo_AddUserRegisterAddFriendIDListResp.Size(m) +} +func (m *AddUserRegisterAddFriendIDListResp) XXX_DiscardUnknown() { + xxx_messageInfo_AddUserRegisterAddFriendIDListResp.DiscardUnknown(m) } -func (x *AddUserRegisterAddFriendIDListResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +var xxx_messageInfo_AddUserRegisterAddFriendIDListResp proto.InternalMessageInfo + +func (m *AddUserRegisterAddFriendIDListResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type ReduceUserRegisterAddFriendIDListReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=operationID,proto3" json:"operationID,omitempty"` - Operation int32 `protobuf:"varint,2,opt,name=operation,proto3" json:"operation,omitempty"` - UserIDList []string `protobuf:"bytes,3,rep,name=userIDList,proto3" json:"userIDList,omitempty"` + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + Operation int32 `protobuf:"varint,2,opt,name=operation" json:"operation,omitempty"` + UserIDList []string `protobuf:"bytes,3,rep,name=userIDList" json:"userIDList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ReduceUserRegisterAddFriendIDListReq) Reset() { - *x = ReduceUserRegisterAddFriendIDListReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ReduceUserRegisterAddFriendIDListReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReduceUserRegisterAddFriendIDListReq) ProtoMessage() {} - -func (x *ReduceUserRegisterAddFriendIDListReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReduceUserRegisterAddFriendIDListReq.ProtoReflect.Descriptor instead. +func (m *ReduceUserRegisterAddFriendIDListReq) Reset() { *m = ReduceUserRegisterAddFriendIDListReq{} } +func (m *ReduceUserRegisterAddFriendIDListReq) String() string { return proto.CompactTextString(m) } +func (*ReduceUserRegisterAddFriendIDListReq) ProtoMessage() {} func (*ReduceUserRegisterAddFriendIDListReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{5} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{7} +} +func (m *ReduceUserRegisterAddFriendIDListReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ReduceUserRegisterAddFriendIDListReq.Unmarshal(m, b) +} +func (m *ReduceUserRegisterAddFriendIDListReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ReduceUserRegisterAddFriendIDListReq.Marshal(b, m, deterministic) +} +func (dst *ReduceUserRegisterAddFriendIDListReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_ReduceUserRegisterAddFriendIDListReq.Merge(dst, src) +} +func (m *ReduceUserRegisterAddFriendIDListReq) XXX_Size() int { + return xxx_messageInfo_ReduceUserRegisterAddFriendIDListReq.Size(m) +} +func (m *ReduceUserRegisterAddFriendIDListReq) XXX_DiscardUnknown() { + xxx_messageInfo_ReduceUserRegisterAddFriendIDListReq.DiscardUnknown(m) } -func (x *ReduceUserRegisterAddFriendIDListReq) GetOperationID() string { - if x != nil { - return x.OperationID +var xxx_messageInfo_ReduceUserRegisterAddFriendIDListReq proto.InternalMessageInfo + +func (m *ReduceUserRegisterAddFriendIDListReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *ReduceUserRegisterAddFriendIDListReq) GetOperation() int32 { - if x != nil { - return x.Operation +func (m *ReduceUserRegisterAddFriendIDListReq) GetOperation() int32 { + if m != nil { + return m.Operation } return 0 } -func (x *ReduceUserRegisterAddFriendIDListReq) GetUserIDList() []string { - if x != nil { - return x.UserIDList +func (m *ReduceUserRegisterAddFriendIDListReq) GetUserIDList() []string { + if m != nil { + return m.UserIDList } return nil } type ReduceUserRegisterAddFriendIDListResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ReduceUserRegisterAddFriendIDListResp) Reset() { - *x = ReduceUserRegisterAddFriendIDListResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ReduceUserRegisterAddFriendIDListResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReduceUserRegisterAddFriendIDListResp) ProtoMessage() {} - -func (x *ReduceUserRegisterAddFriendIDListResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReduceUserRegisterAddFriendIDListResp.ProtoReflect.Descriptor instead. +func (m *ReduceUserRegisterAddFriendIDListResp) Reset() { *m = ReduceUserRegisterAddFriendIDListResp{} } +func (m *ReduceUserRegisterAddFriendIDListResp) String() string { return proto.CompactTextString(m) } +func (*ReduceUserRegisterAddFriendIDListResp) ProtoMessage() {} func (*ReduceUserRegisterAddFriendIDListResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{6} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{8} +} +func (m *ReduceUserRegisterAddFriendIDListResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ReduceUserRegisterAddFriendIDListResp.Unmarshal(m, b) +} +func (m *ReduceUserRegisterAddFriendIDListResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ReduceUserRegisterAddFriendIDListResp.Marshal(b, m, deterministic) +} +func (dst *ReduceUserRegisterAddFriendIDListResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_ReduceUserRegisterAddFriendIDListResp.Merge(dst, src) +} +func (m *ReduceUserRegisterAddFriendIDListResp) XXX_Size() int { + return xxx_messageInfo_ReduceUserRegisterAddFriendIDListResp.Size(m) +} +func (m *ReduceUserRegisterAddFriendIDListResp) XXX_DiscardUnknown() { + xxx_messageInfo_ReduceUserRegisterAddFriendIDListResp.DiscardUnknown(m) } -func (x *ReduceUserRegisterAddFriendIDListResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +var xxx_messageInfo_ReduceUserRegisterAddFriendIDListResp proto.InternalMessageInfo + +func (m *ReduceUserRegisterAddFriendIDListResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type GetUserRegisterAddFriendIDListReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=operationID,proto3" json:"operationID,omitempty"` - Pagination *sdk_ws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + Pagination *sdk_ws.RequestPagination `protobuf:"bytes,2,opt,name=pagination" json:"pagination,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetUserRegisterAddFriendIDListReq) Reset() { - *x = GetUserRegisterAddFriendIDListReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetUserRegisterAddFriendIDListReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUserRegisterAddFriendIDListReq) ProtoMessage() {} - -func (x *GetUserRegisterAddFriendIDListReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUserRegisterAddFriendIDListReq.ProtoReflect.Descriptor instead. +func (m *GetUserRegisterAddFriendIDListReq) Reset() { *m = GetUserRegisterAddFriendIDListReq{} } +func (m *GetUserRegisterAddFriendIDListReq) String() string { return proto.CompactTextString(m) } +func (*GetUserRegisterAddFriendIDListReq) ProtoMessage() {} func (*GetUserRegisterAddFriendIDListReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{7} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{9} +} +func (m *GetUserRegisterAddFriendIDListReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserRegisterAddFriendIDListReq.Unmarshal(m, b) +} +func (m *GetUserRegisterAddFriendIDListReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserRegisterAddFriendIDListReq.Marshal(b, m, deterministic) +} +func (dst *GetUserRegisterAddFriendIDListReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserRegisterAddFriendIDListReq.Merge(dst, src) +} +func (m *GetUserRegisterAddFriendIDListReq) XXX_Size() int { + return xxx_messageInfo_GetUserRegisterAddFriendIDListReq.Size(m) +} +func (m *GetUserRegisterAddFriendIDListReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserRegisterAddFriendIDListReq.DiscardUnknown(m) } -func (x *GetUserRegisterAddFriendIDListReq) GetOperationID() string { - if x != nil { - return x.OperationID +var xxx_messageInfo_GetUserRegisterAddFriendIDListReq proto.InternalMessageInfo + +func (m *GetUserRegisterAddFriendIDListReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *GetUserRegisterAddFriendIDListReq) GetPagination() *sdk_ws.RequestPagination { - if x != nil { - return x.Pagination +func (m *GetUserRegisterAddFriendIDListReq) GetPagination() *sdk_ws.RequestPagination { + if m != nil { + return m.Pagination } return nil } type GetUserRegisterAddFriendIDListResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserInfoList []*sdk_ws.UserInfo `protobuf:"bytes,1,rep,name=userInfoList,proto3" json:"userInfoList,omitempty"` - Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` - CommonResp *CommonResp `protobuf:"bytes,3,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + UserInfoList []*sdk_ws.UserInfo `protobuf:"bytes,1,rep,name=userInfoList" json:"userInfoList,omitempty"` + Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,2,opt,name=pagination" json:"pagination,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,3,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetUserRegisterAddFriendIDListResp) Reset() { - *x = GetUserRegisterAddFriendIDListResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetUserRegisterAddFriendIDListResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUserRegisterAddFriendIDListResp) ProtoMessage() {} - -func (x *GetUserRegisterAddFriendIDListResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUserRegisterAddFriendIDListResp.ProtoReflect.Descriptor instead. +func (m *GetUserRegisterAddFriendIDListResp) Reset() { *m = GetUserRegisterAddFriendIDListResp{} } +func (m *GetUserRegisterAddFriendIDListResp) String() string { return proto.CompactTextString(m) } +func (*GetUserRegisterAddFriendIDListResp) ProtoMessage() {} func (*GetUserRegisterAddFriendIDListResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{8} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{10} +} +func (m *GetUserRegisterAddFriendIDListResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserRegisterAddFriendIDListResp.Unmarshal(m, b) +} +func (m *GetUserRegisterAddFriendIDListResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserRegisterAddFriendIDListResp.Marshal(b, m, deterministic) +} +func (dst *GetUserRegisterAddFriendIDListResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserRegisterAddFriendIDListResp.Merge(dst, src) +} +func (m *GetUserRegisterAddFriendIDListResp) XXX_Size() int { + return xxx_messageInfo_GetUserRegisterAddFriendIDListResp.Size(m) +} +func (m *GetUserRegisterAddFriendIDListResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserRegisterAddFriendIDListResp.DiscardUnknown(m) } -func (x *GetUserRegisterAddFriendIDListResp) GetUserInfoList() []*sdk_ws.UserInfo { - if x != nil { - return x.UserInfoList +var xxx_messageInfo_GetUserRegisterAddFriendIDListResp proto.InternalMessageInfo + +func (m *GetUserRegisterAddFriendIDListResp) GetUserInfoList() []*sdk_ws.UserInfo { + if m != nil { + return m.UserInfoList } return nil } -func (x *GetUserRegisterAddFriendIDListResp) GetPagination() *sdk_ws.ResponsePagination { - if x != nil { - return x.Pagination +func (m *GetUserRegisterAddFriendIDListResp) GetPagination() *sdk_ws.ResponsePagination { + if m != nil { + return m.Pagination } return nil } -func (x *GetUserRegisterAddFriendIDListResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +func (m *GetUserRegisterAddFriendIDListResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type GetChatLogsReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` - SendID string `protobuf:"bytes,2,opt,name=sendID,proto3" json:"sendID,omitempty"` - RecvID string `protobuf:"bytes,3,opt,name=recvID,proto3" json:"recvID,omitempty"` - SendTime string `protobuf:"bytes,4,opt,name=sendTime,proto3" json:"sendTime,omitempty"` - SessionType int32 `protobuf:"varint,5,opt,name=sessionType,proto3" json:"sessionType,omitempty"` - ContentType int32 `protobuf:"varint,6,opt,name=contentType,proto3" json:"contentType,omitempty"` - Pagination *sdk_ws.RequestPagination `protobuf:"bytes,7,opt,name=pagination,proto3" json:"pagination,omitempty"` - OperationID string `protobuf:"bytes,8,opt,name=operationID,proto3" json:"operationID,omitempty"` + Content string `protobuf:"bytes,1,opt,name=content" json:"content,omitempty"` + SendID string `protobuf:"bytes,2,opt,name=sendID" json:"sendID,omitempty"` + RecvID string `protobuf:"bytes,3,opt,name=recvID" json:"recvID,omitempty"` + SendTime string `protobuf:"bytes,4,opt,name=sendTime" json:"sendTime,omitempty"` + SessionType int32 `protobuf:"varint,5,opt,name=sessionType" json:"sessionType,omitempty"` + ContentType int32 `protobuf:"varint,6,opt,name=contentType" json:"contentType,omitempty"` + Pagination *sdk_ws.RequestPagination `protobuf:"bytes,7,opt,name=pagination" json:"pagination,omitempty"` + OperationID string `protobuf:"bytes,8,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,9,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetChatLogsReq) Reset() { - *x = GetChatLogsReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetChatLogsReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetChatLogsReq) ProtoMessage() {} - -func (x *GetChatLogsReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetChatLogsReq.ProtoReflect.Descriptor instead. +func (m *GetChatLogsReq) Reset() { *m = GetChatLogsReq{} } +func (m *GetChatLogsReq) String() string { return proto.CompactTextString(m) } +func (*GetChatLogsReq) ProtoMessage() {} func (*GetChatLogsReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{9} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{11} +} +func (m *GetChatLogsReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetChatLogsReq.Unmarshal(m, b) +} +func (m *GetChatLogsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetChatLogsReq.Marshal(b, m, deterministic) +} +func (dst *GetChatLogsReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetChatLogsReq.Merge(dst, src) +} +func (m *GetChatLogsReq) XXX_Size() int { + return xxx_messageInfo_GetChatLogsReq.Size(m) +} +func (m *GetChatLogsReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetChatLogsReq.DiscardUnknown(m) } -func (x *GetChatLogsReq) GetContent() string { - if x != nil { - return x.Content +var xxx_messageInfo_GetChatLogsReq proto.InternalMessageInfo + +func (m *GetChatLogsReq) GetContent() string { + if m != nil { + return m.Content } return "" } -func (x *GetChatLogsReq) GetSendID() string { - if x != nil { - return x.SendID +func (m *GetChatLogsReq) GetSendID() string { + if m != nil { + return m.SendID } return "" } -func (x *GetChatLogsReq) GetRecvID() string { - if x != nil { - return x.RecvID +func (m *GetChatLogsReq) GetRecvID() string { + if m != nil { + return m.RecvID } return "" } -func (x *GetChatLogsReq) GetSendTime() string { - if x != nil { - return x.SendTime +func (m *GetChatLogsReq) GetSendTime() string { + if m != nil { + return m.SendTime } return "" } -func (x *GetChatLogsReq) GetSessionType() int32 { - if x != nil { - return x.SessionType +func (m *GetChatLogsReq) GetSessionType() int32 { + if m != nil { + return m.SessionType } return 0 } -func (x *GetChatLogsReq) GetContentType() int32 { - if x != nil { - return x.ContentType +func (m *GetChatLogsReq) GetContentType() int32 { + if m != nil { + return m.ContentType } return 0 } -func (x *GetChatLogsReq) GetPagination() *sdk_ws.RequestPagination { - if x != nil { - return x.Pagination +func (m *GetChatLogsReq) GetPagination() *sdk_ws.RequestPagination { + if m != nil { + return m.Pagination } return nil } -func (x *GetChatLogsReq) GetOperationID() string { - if x != nil { - return x.OperationID +func (m *GetChatLogsReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *GetChatLogsReq) GetOpUserID() string { + if m != nil { + return m.OpUserID } return "" } type ChatLog struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ServerMsgID string `protobuf:"bytes,1,opt,name=serverMsgID,proto3" json:"serverMsgID,omitempty"` - ClientMsgID string `protobuf:"bytes,2,opt,name=clientMsgID,proto3" json:"clientMsgID,omitempty"` - SendID string `protobuf:"bytes,3,opt,name=sendID,proto3" json:"sendID,omitempty"` - RecvID string `protobuf:"bytes,4,opt,name=recvID,proto3" json:"recvID,omitempty"` - GroupID string `protobuf:"bytes,5,opt,name=groupID,proto3" json:"groupID,omitempty"` - RecvNickname string `protobuf:"bytes,6,opt,name=recvNickname,proto3" json:"recvNickname,omitempty"` - SenderPlatformID int32 `protobuf:"varint,7,opt,name=senderPlatformID,proto3" json:"senderPlatformID,omitempty"` - SenderNickname string `protobuf:"bytes,8,opt,name=senderNickname,proto3" json:"senderNickname,omitempty"` - SenderFaceURL string `protobuf:"bytes,9,opt,name=senderFaceURL,proto3" json:"senderFaceURL,omitempty"` - GroupName string `protobuf:"bytes,10,opt,name=groupName,proto3" json:"groupName,omitempty"` - SessionType int32 `protobuf:"varint,11,opt,name=sessionType,proto3" json:"sessionType,omitempty"` - MsgFrom int32 `protobuf:"varint,12,opt,name=msgFrom,proto3" json:"msgFrom,omitempty"` - ContentType int32 `protobuf:"varint,13,opt,name=contentType,proto3" json:"contentType,omitempty"` - Content string `protobuf:"bytes,14,opt,name=content,proto3" json:"content,omitempty"` - Status int32 `protobuf:"varint,15,opt,name=status,proto3" json:"status,omitempty"` - SendTime int64 `protobuf:"varint,16,opt,name=sendTime,proto3" json:"sendTime,omitempty"` - CreateTime int64 `protobuf:"varint,17,opt,name=createTime,proto3" json:"createTime,omitempty"` - Ex string `protobuf:"bytes,18,opt,name=ex,proto3" json:"ex,omitempty"` + ServerMsgID string `protobuf:"bytes,1,opt,name=serverMsgID" json:"serverMsgID,omitempty"` + ClientMsgID string `protobuf:"bytes,2,opt,name=clientMsgID" json:"clientMsgID,omitempty"` + SendID string `protobuf:"bytes,3,opt,name=sendID" json:"sendID,omitempty"` + RecvID string `protobuf:"bytes,4,opt,name=recvID" json:"recvID,omitempty"` + GroupID string `protobuf:"bytes,5,opt,name=groupID" json:"groupID,omitempty"` + RecvNickname string `protobuf:"bytes,6,opt,name=recvNickname" json:"recvNickname,omitempty"` + SenderPlatformID int32 `protobuf:"varint,7,opt,name=senderPlatformID" json:"senderPlatformID,omitempty"` + SenderNickname string `protobuf:"bytes,8,opt,name=senderNickname" json:"senderNickname,omitempty"` + SenderFaceURL string `protobuf:"bytes,9,opt,name=senderFaceURL" json:"senderFaceURL,omitempty"` + GroupName string `protobuf:"bytes,10,opt,name=groupName" json:"groupName,omitempty"` + SessionType int32 `protobuf:"varint,11,opt,name=sessionType" json:"sessionType,omitempty"` + MsgFrom int32 `protobuf:"varint,12,opt,name=msgFrom" json:"msgFrom,omitempty"` + ContentType int32 `protobuf:"varint,13,opt,name=contentType" json:"contentType,omitempty"` + Content string `protobuf:"bytes,14,opt,name=content" json:"content,omitempty"` + Status int32 `protobuf:"varint,15,opt,name=status" json:"status,omitempty"` + SendTime int64 `protobuf:"varint,16,opt,name=sendTime" json:"sendTime,omitempty"` + CreateTime int64 `protobuf:"varint,17,opt,name=createTime" json:"createTime,omitempty"` + Ex string `protobuf:"bytes,18,opt,name=ex" json:"ex,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ChatLog) Reset() { - *x = ChatLog{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ChatLog) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ChatLog) ProtoMessage() {} - -func (x *ChatLog) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ChatLog.ProtoReflect.Descriptor instead. +func (m *ChatLog) Reset() { *m = ChatLog{} } +func (m *ChatLog) String() string { return proto.CompactTextString(m) } +func (*ChatLog) ProtoMessage() {} func (*ChatLog) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{10} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{12} +} +func (m *ChatLog) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ChatLog.Unmarshal(m, b) +} +func (m *ChatLog) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ChatLog.Marshal(b, m, deterministic) +} +func (dst *ChatLog) XXX_Merge(src proto.Message) { + xxx_messageInfo_ChatLog.Merge(dst, src) +} +func (m *ChatLog) XXX_Size() int { + return xxx_messageInfo_ChatLog.Size(m) +} +func (m *ChatLog) XXX_DiscardUnknown() { + xxx_messageInfo_ChatLog.DiscardUnknown(m) } -func (x *ChatLog) GetServerMsgID() string { - if x != nil { - return x.ServerMsgID +var xxx_messageInfo_ChatLog proto.InternalMessageInfo + +func (m *ChatLog) GetServerMsgID() string { + if m != nil { + return m.ServerMsgID } return "" } -func (x *ChatLog) GetClientMsgID() string { - if x != nil { - return x.ClientMsgID +func (m *ChatLog) GetClientMsgID() string { + if m != nil { + return m.ClientMsgID } return "" } -func (x *ChatLog) GetSendID() string { - if x != nil { - return x.SendID +func (m *ChatLog) GetSendID() string { + if m != nil { + return m.SendID } return "" } -func (x *ChatLog) GetRecvID() string { - if x != nil { - return x.RecvID +func (m *ChatLog) GetRecvID() string { + if m != nil { + return m.RecvID } return "" } -func (x *ChatLog) GetGroupID() string { - if x != nil { - return x.GroupID +func (m *ChatLog) GetGroupID() string { + if m != nil { + return m.GroupID } return "" } -func (x *ChatLog) GetRecvNickname() string { - if x != nil { - return x.RecvNickname +func (m *ChatLog) GetRecvNickname() string { + if m != nil { + return m.RecvNickname } return "" } -func (x *ChatLog) GetSenderPlatformID() int32 { - if x != nil { - return x.SenderPlatformID +func (m *ChatLog) GetSenderPlatformID() int32 { + if m != nil { + return m.SenderPlatformID } return 0 } -func (x *ChatLog) GetSenderNickname() string { - if x != nil { - return x.SenderNickname +func (m *ChatLog) GetSenderNickname() string { + if m != nil { + return m.SenderNickname } return "" } -func (x *ChatLog) GetSenderFaceURL() string { - if x != nil { - return x.SenderFaceURL +func (m *ChatLog) GetSenderFaceURL() string { + if m != nil { + return m.SenderFaceURL } return "" } -func (x *ChatLog) GetGroupName() string { - if x != nil { - return x.GroupName +func (m *ChatLog) GetGroupName() string { + if m != nil { + return m.GroupName } return "" } -func (x *ChatLog) GetSessionType() int32 { - if x != nil { - return x.SessionType +func (m *ChatLog) GetSessionType() int32 { + if m != nil { + return m.SessionType } return 0 } -func (x *ChatLog) GetMsgFrom() int32 { - if x != nil { - return x.MsgFrom +func (m *ChatLog) GetMsgFrom() int32 { + if m != nil { + return m.MsgFrom } return 0 } -func (x *ChatLog) GetContentType() int32 { - if x != nil { - return x.ContentType +func (m *ChatLog) GetContentType() int32 { + if m != nil { + return m.ContentType } return 0 } -func (x *ChatLog) GetContent() string { - if x != nil { - return x.Content +func (m *ChatLog) GetContent() string { + if m != nil { + return m.Content } return "" } -func (x *ChatLog) GetStatus() int32 { - if x != nil { - return x.Status +func (m *ChatLog) GetStatus() int32 { + if m != nil { + return m.Status } return 0 } -func (x *ChatLog) GetSendTime() int64 { - if x != nil { - return x.SendTime +func (m *ChatLog) GetSendTime() int64 { + if m != nil { + return m.SendTime } return 0 } -func (x *ChatLog) GetCreateTime() int64 { - if x != nil { - return x.CreateTime +func (m *ChatLog) GetCreateTime() int64 { + if m != nil { + return m.CreateTime } return 0 } -func (x *ChatLog) GetEx() string { - if x != nil { - return x.Ex +func (m *ChatLog) GetEx() string { + if m != nil { + return m.Ex } return "" } type GetChatLogsResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ChatLogs []*ChatLog `protobuf:"bytes,1,rep,name=chatLogs,proto3" json:"chatLogs,omitempty"` - Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` - ChatLogsNum int32 `protobuf:"varint,3,opt,name=chatLogsNum,proto3" json:"chatLogsNum,omitempty"` - CommonResp *CommonResp `protobuf:"bytes,4,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + ChatLogs []*ChatLog `protobuf:"bytes,1,rep,name=chatLogs" json:"chatLogs,omitempty"` + Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,2,opt,name=pagination" json:"pagination,omitempty"` + ChatLogsNum int32 `protobuf:"varint,3,opt,name=chatLogsNum" json:"chatLogsNum,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,4,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetChatLogsResp) Reset() { - *x = GetChatLogsResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetChatLogsResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetChatLogsResp) ProtoMessage() {} - -func (x *GetChatLogsResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetChatLogsResp.ProtoReflect.Descriptor instead. +func (m *GetChatLogsResp) Reset() { *m = GetChatLogsResp{} } +func (m *GetChatLogsResp) String() string { return proto.CompactTextString(m) } +func (*GetChatLogsResp) ProtoMessage() {} func (*GetChatLogsResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{11} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{13} +} +func (m *GetChatLogsResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetChatLogsResp.Unmarshal(m, b) +} +func (m *GetChatLogsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetChatLogsResp.Marshal(b, m, deterministic) +} +func (dst *GetChatLogsResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetChatLogsResp.Merge(dst, src) +} +func (m *GetChatLogsResp) XXX_Size() int { + return xxx_messageInfo_GetChatLogsResp.Size(m) +} +func (m *GetChatLogsResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetChatLogsResp.DiscardUnknown(m) } -func (x *GetChatLogsResp) GetChatLogs() []*ChatLog { - if x != nil { - return x.ChatLogs +var xxx_messageInfo_GetChatLogsResp proto.InternalMessageInfo + +func (m *GetChatLogsResp) GetChatLogs() []*ChatLog { + if m != nil { + return m.ChatLogs } return nil } -func (x *GetChatLogsResp) GetPagination() *sdk_ws.ResponsePagination { - if x != nil { - return x.Pagination +func (m *GetChatLogsResp) GetPagination() *sdk_ws.ResponsePagination { + if m != nil { + return m.Pagination } return nil } -func (x *GetChatLogsResp) GetChatLogsNum() int32 { - if x != nil { - return x.ChatLogsNum +func (m *GetChatLogsResp) GetChatLogsNum() int32 { + if m != nil { + return m.ChatLogsNum } return 0 } -func (x *GetChatLogsResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +func (m *GetChatLogsResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type StatisticsReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - To string `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"` + From string `protobuf:"bytes,1,opt,name=from" json:"from,omitempty"` + To string `protobuf:"bytes,2,opt,name=to" json:"to,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *StatisticsReq) Reset() { - *x = StatisticsReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StatisticsReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StatisticsReq) ProtoMessage() {} - -func (x *StatisticsReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StatisticsReq.ProtoReflect.Descriptor instead. +func (m *StatisticsReq) Reset() { *m = StatisticsReq{} } +func (m *StatisticsReq) String() string { return proto.CompactTextString(m) } +func (*StatisticsReq) ProtoMessage() {} func (*StatisticsReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{12} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{14} +} +func (m *StatisticsReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_StatisticsReq.Unmarshal(m, b) +} +func (m *StatisticsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_StatisticsReq.Marshal(b, m, deterministic) +} +func (dst *StatisticsReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_StatisticsReq.Merge(dst, src) +} +func (m *StatisticsReq) XXX_Size() int { + return xxx_messageInfo_StatisticsReq.Size(m) +} +func (m *StatisticsReq) XXX_DiscardUnknown() { + xxx_messageInfo_StatisticsReq.DiscardUnknown(m) } -func (x *StatisticsReq) GetFrom() string { - if x != nil { - return x.From +var xxx_messageInfo_StatisticsReq proto.InternalMessageInfo + +func (m *StatisticsReq) GetFrom() string { + if m != nil { + return m.From } return "" } -func (x *StatisticsReq) GetTo() string { - if x != nil { - return x.To +func (m *StatisticsReq) GetTo() string { + if m != nil { + return m.To } return "" } type GetActiveUserReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - StatisticsReq *StatisticsReq `protobuf:"bytes,1,opt,name=statisticsReq,proto3" json:"statisticsReq,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID,proto3" json:"operationID,omitempty"` + StatisticsReq *StatisticsReq `protobuf:"bytes,1,opt,name=statisticsReq" json:"statisticsReq,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 (x *GetActiveUserReq) Reset() { - *x = GetActiveUserReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetActiveUserReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetActiveUserReq) ProtoMessage() {} - -func (x *GetActiveUserReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetActiveUserReq.ProtoReflect.Descriptor instead. +func (m *GetActiveUserReq) Reset() { *m = GetActiveUserReq{} } +func (m *GetActiveUserReq) String() string { return proto.CompactTextString(m) } +func (*GetActiveUserReq) ProtoMessage() {} func (*GetActiveUserReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{13} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{15} +} +func (m *GetActiveUserReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetActiveUserReq.Unmarshal(m, b) +} +func (m *GetActiveUserReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetActiveUserReq.Marshal(b, m, deterministic) +} +func (dst *GetActiveUserReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetActiveUserReq.Merge(dst, src) +} +func (m *GetActiveUserReq) XXX_Size() int { + return xxx_messageInfo_GetActiveUserReq.Size(m) +} +func (m *GetActiveUserReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetActiveUserReq.DiscardUnknown(m) } -func (x *GetActiveUserReq) GetStatisticsReq() *StatisticsReq { - if x != nil { - return x.StatisticsReq +var xxx_messageInfo_GetActiveUserReq proto.InternalMessageInfo + +func (m *GetActiveUserReq) GetStatisticsReq() *StatisticsReq { + if m != nil { + return m.StatisticsReq } return nil } -func (x *GetActiveUserReq) GetOperationID() string { - if x != nil { - return x.OperationID +func (m *GetActiveUserReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } type UserResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - NickName string `protobuf:"bytes,1,opt,name=nickName,proto3" json:"nickName,omitempty"` - UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` - MessageNum int32 `protobuf:"varint,3,opt,name=messageNum,proto3" json:"messageNum,omitempty"` + NickName string `protobuf:"bytes,1,opt,name=nickName" json:"nickName,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` + MessageNum int32 `protobuf:"varint,3,opt,name=messageNum" json:"messageNum,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *UserResp) Reset() { - *x = UserResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UserResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UserResp) ProtoMessage() {} - -func (x *UserResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UserResp.ProtoReflect.Descriptor instead. +func (m *UserResp) Reset() { *m = UserResp{} } +func (m *UserResp) String() string { return proto.CompactTextString(m) } +func (*UserResp) ProtoMessage() {} func (*UserResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{14} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{16} +} +func (m *UserResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserResp.Unmarshal(m, b) +} +func (m *UserResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserResp.Marshal(b, m, deterministic) +} +func (dst *UserResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserResp.Merge(dst, src) +} +func (m *UserResp) XXX_Size() int { + return xxx_messageInfo_UserResp.Size(m) +} +func (m *UserResp) XXX_DiscardUnknown() { + xxx_messageInfo_UserResp.DiscardUnknown(m) } -func (x *UserResp) GetNickName() string { - if x != nil { - return x.NickName +var xxx_messageInfo_UserResp proto.InternalMessageInfo + +func (m *UserResp) GetNickName() string { + if m != nil { + return m.NickName } return "" } -func (x *UserResp) GetUserID() string { - if x != nil { - return x.UserID +func (m *UserResp) GetUserID() string { + if m != nil { + return m.UserID } return "" } -func (x *UserResp) GetMessageNum() int32 { - if x != nil { - return x.MessageNum +func (m *UserResp) GetMessageNum() int32 { + if m != nil { + return m.MessageNum } return 0 } type GetActiveUserResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Users []*UserResp `protobuf:"bytes,1,rep,name=Users,proto3" json:"Users,omitempty"` - CommonResp *CommonResp `protobuf:"bytes,2,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + Users []*UserResp `protobuf:"bytes,1,rep,name=Users" json:"Users,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,2,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetActiveUserResp) Reset() { - *x = GetActiveUserResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetActiveUserResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetActiveUserResp) ProtoMessage() {} - -func (x *GetActiveUserResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetActiveUserResp.ProtoReflect.Descriptor instead. +func (m *GetActiveUserResp) Reset() { *m = GetActiveUserResp{} } +func (m *GetActiveUserResp) String() string { return proto.CompactTextString(m) } +func (*GetActiveUserResp) ProtoMessage() {} func (*GetActiveUserResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{15} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{17} +} +func (m *GetActiveUserResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetActiveUserResp.Unmarshal(m, b) +} +func (m *GetActiveUserResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetActiveUserResp.Marshal(b, m, deterministic) +} +func (dst *GetActiveUserResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetActiveUserResp.Merge(dst, src) +} +func (m *GetActiveUserResp) XXX_Size() int { + return xxx_messageInfo_GetActiveUserResp.Size(m) +} +func (m *GetActiveUserResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetActiveUserResp.DiscardUnknown(m) } -func (x *GetActiveUserResp) GetUsers() []*UserResp { - if x != nil { - return x.Users +var xxx_messageInfo_GetActiveUserResp proto.InternalMessageInfo + +func (m *GetActiveUserResp) GetUsers() []*UserResp { + if m != nil { + return m.Users } return nil } -func (x *GetActiveUserResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +func (m *GetActiveUserResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type GetActiveGroupReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - StatisticsReq *StatisticsReq `protobuf:"bytes,1,opt,name=statisticsReq,proto3" json:"statisticsReq,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID,proto3" json:"operationID,omitempty"` + StatisticsReq *StatisticsReq `protobuf:"bytes,1,opt,name=statisticsReq" json:"statisticsReq,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 (x *GetActiveGroupReq) Reset() { - *x = GetActiveGroupReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetActiveGroupReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetActiveGroupReq) ProtoMessage() {} - -func (x *GetActiveGroupReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetActiveGroupReq.ProtoReflect.Descriptor instead. +func (m *GetActiveGroupReq) Reset() { *m = GetActiveGroupReq{} } +func (m *GetActiveGroupReq) String() string { return proto.CompactTextString(m) } +func (*GetActiveGroupReq) ProtoMessage() {} func (*GetActiveGroupReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{16} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{18} +} +func (m *GetActiveGroupReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetActiveGroupReq.Unmarshal(m, b) +} +func (m *GetActiveGroupReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetActiveGroupReq.Marshal(b, m, deterministic) +} +func (dst *GetActiveGroupReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetActiveGroupReq.Merge(dst, src) +} +func (m *GetActiveGroupReq) XXX_Size() int { + return xxx_messageInfo_GetActiveGroupReq.Size(m) +} +func (m *GetActiveGroupReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetActiveGroupReq.DiscardUnknown(m) } -func (x *GetActiveGroupReq) GetStatisticsReq() *StatisticsReq { - if x != nil { - return x.StatisticsReq +var xxx_messageInfo_GetActiveGroupReq proto.InternalMessageInfo + +func (m *GetActiveGroupReq) GetStatisticsReq() *StatisticsReq { + if m != nil { + return m.StatisticsReq } return nil } -func (x *GetActiveGroupReq) GetOperationID() string { - if x != nil { - return x.OperationID +func (m *GetActiveGroupReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } type GroupResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GroupName string `protobuf:"bytes,1,opt,name=GroupName,proto3" json:"GroupName,omitempty"` - GroupId string `protobuf:"bytes,2,opt,name=GroupId,proto3" json:"GroupId,omitempty"` - MessageNum int32 `protobuf:"varint,3,opt,name=MessageNum,proto3" json:"MessageNum,omitempty"` - CommonResp *CommonResp `protobuf:"bytes,4,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + GroupName string `protobuf:"bytes,1,opt,name=GroupName" json:"GroupName,omitempty"` + GroupId string `protobuf:"bytes,2,opt,name=GroupId" json:"GroupId,omitempty"` + MessageNum int32 `protobuf:"varint,3,opt,name=MessageNum" json:"MessageNum,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,4,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GroupResp) Reset() { - *x = GroupResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GroupResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GroupResp) ProtoMessage() {} - -func (x *GroupResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GroupResp.ProtoReflect.Descriptor instead. +func (m *GroupResp) Reset() { *m = GroupResp{} } +func (m *GroupResp) String() string { return proto.CompactTextString(m) } +func (*GroupResp) ProtoMessage() {} func (*GroupResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{17} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{19} +} +func (m *GroupResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GroupResp.Unmarshal(m, b) +} +func (m *GroupResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GroupResp.Marshal(b, m, deterministic) +} +func (dst *GroupResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GroupResp.Merge(dst, src) +} +func (m *GroupResp) XXX_Size() int { + return xxx_messageInfo_GroupResp.Size(m) +} +func (m *GroupResp) XXX_DiscardUnknown() { + xxx_messageInfo_GroupResp.DiscardUnknown(m) } -func (x *GroupResp) GetGroupName() string { - if x != nil { - return x.GroupName +var xxx_messageInfo_GroupResp proto.InternalMessageInfo + +func (m *GroupResp) GetGroupName() string { + if m != nil { + return m.GroupName } return "" } -func (x *GroupResp) GetGroupId() string { - if x != nil { - return x.GroupId +func (m *GroupResp) GetGroupId() string { + if m != nil { + return m.GroupId } return "" } -func (x *GroupResp) GetMessageNum() int32 { - if x != nil { - return x.MessageNum +func (m *GroupResp) GetMessageNum() int32 { + if m != nil { + return m.MessageNum } return 0 } -func (x *GroupResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +func (m *GroupResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type GetActiveGroupResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Groups []*GroupResp `protobuf:"bytes,1,rep,name=Groups,proto3" json:"Groups,omitempty"` - CommonResp *CommonResp `protobuf:"bytes,2,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + Groups []*GroupResp `protobuf:"bytes,1,rep,name=Groups" json:"Groups,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,2,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetActiveGroupResp) Reset() { - *x = GetActiveGroupResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetActiveGroupResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetActiveGroupResp) ProtoMessage() {} - -func (x *GetActiveGroupResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetActiveGroupResp.ProtoReflect.Descriptor instead. +func (m *GetActiveGroupResp) Reset() { *m = GetActiveGroupResp{} } +func (m *GetActiveGroupResp) String() string { return proto.CompactTextString(m) } +func (*GetActiveGroupResp) ProtoMessage() {} func (*GetActiveGroupResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{18} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{20} +} +func (m *GetActiveGroupResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetActiveGroupResp.Unmarshal(m, b) +} +func (m *GetActiveGroupResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetActiveGroupResp.Marshal(b, m, deterministic) +} +func (dst *GetActiveGroupResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetActiveGroupResp.Merge(dst, src) +} +func (m *GetActiveGroupResp) XXX_Size() int { + return xxx_messageInfo_GetActiveGroupResp.Size(m) +} +func (m *GetActiveGroupResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetActiveGroupResp.DiscardUnknown(m) } -func (x *GetActiveGroupResp) GetGroups() []*GroupResp { - if x != nil { - return x.Groups +var xxx_messageInfo_GetActiveGroupResp proto.InternalMessageInfo + +func (m *GetActiveGroupResp) GetGroups() []*GroupResp { + if m != nil { + return m.Groups } return nil } -func (x *GetActiveGroupResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +func (m *GetActiveGroupResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type DateNumList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Date string `protobuf:"bytes,1,opt,name=Date,proto3" json:"Date,omitempty"` - Num int32 `protobuf:"varint,2,opt,name=Num,proto3" json:"Num,omitempty"` + Date string `protobuf:"bytes,1,opt,name=Date" json:"Date,omitempty"` + Num int32 `protobuf:"varint,2,opt,name=Num" json:"Num,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *DateNumList) Reset() { - *x = DateNumList{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DateNumList) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DateNumList) ProtoMessage() {} - -func (x *DateNumList) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DateNumList.ProtoReflect.Descriptor instead. +func (m *DateNumList) Reset() { *m = DateNumList{} } +func (m *DateNumList) String() string { return proto.CompactTextString(m) } +func (*DateNumList) ProtoMessage() {} func (*DateNumList) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{19} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{21} +} +func (m *DateNumList) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DateNumList.Unmarshal(m, b) +} +func (m *DateNumList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DateNumList.Marshal(b, m, deterministic) +} +func (dst *DateNumList) XXX_Merge(src proto.Message) { + xxx_messageInfo_DateNumList.Merge(dst, src) +} +func (m *DateNumList) XXX_Size() int { + return xxx_messageInfo_DateNumList.Size(m) +} +func (m *DateNumList) XXX_DiscardUnknown() { + xxx_messageInfo_DateNumList.DiscardUnknown(m) } -func (x *DateNumList) GetDate() string { - if x != nil { - return x.Date +var xxx_messageInfo_DateNumList proto.InternalMessageInfo + +func (m *DateNumList) GetDate() string { + if m != nil { + return m.Date } return "" } -func (x *DateNumList) GetNum() int32 { - if x != nil { - return x.Num +func (m *DateNumList) GetNum() int32 { + if m != nil { + return m.Num } return 0 } type GetMessageStatisticsReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - StatisticsReq *StatisticsReq `protobuf:"bytes,1,opt,name=StatisticsReq,proto3" json:"StatisticsReq,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=OperationID,proto3" json:"OperationID,omitempty"` + StatisticsReq *StatisticsReq `protobuf:"bytes,1,opt,name=StatisticsReq" json:"StatisticsReq,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 (x *GetMessageStatisticsReq) Reset() { - *x = GetMessageStatisticsReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetMessageStatisticsReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetMessageStatisticsReq) ProtoMessage() {} - -func (x *GetMessageStatisticsReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetMessageStatisticsReq.ProtoReflect.Descriptor instead. +func (m *GetMessageStatisticsReq) Reset() { *m = GetMessageStatisticsReq{} } +func (m *GetMessageStatisticsReq) String() string { return proto.CompactTextString(m) } +func (*GetMessageStatisticsReq) ProtoMessage() {} func (*GetMessageStatisticsReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{20} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{22} +} +func (m *GetMessageStatisticsReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetMessageStatisticsReq.Unmarshal(m, b) +} +func (m *GetMessageStatisticsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetMessageStatisticsReq.Marshal(b, m, deterministic) +} +func (dst *GetMessageStatisticsReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetMessageStatisticsReq.Merge(dst, src) +} +func (m *GetMessageStatisticsReq) XXX_Size() int { + return xxx_messageInfo_GetMessageStatisticsReq.Size(m) +} +func (m *GetMessageStatisticsReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetMessageStatisticsReq.DiscardUnknown(m) } -func (x *GetMessageStatisticsReq) GetStatisticsReq() *StatisticsReq { - if x != nil { - return x.StatisticsReq +var xxx_messageInfo_GetMessageStatisticsReq proto.InternalMessageInfo + +func (m *GetMessageStatisticsReq) GetStatisticsReq() *StatisticsReq { + if m != nil { + return m.StatisticsReq } return nil } -func (x *GetMessageStatisticsReq) GetOperationID() string { - if x != nil { - return x.OperationID +func (m *GetMessageStatisticsReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } type GetMessageStatisticsResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PrivateMessageNum int32 `protobuf:"varint,1,opt,name=PrivateMessageNum,proto3" json:"PrivateMessageNum,omitempty"` - GroupMessageNum int32 `protobuf:"varint,2,opt,name=GroupMessageNum,proto3" json:"GroupMessageNum,omitempty"` - PrivateMessageNumList []*DateNumList `protobuf:"bytes,3,rep,name=PrivateMessageNumList,proto3" json:"PrivateMessageNumList,omitempty"` - GroupMessageNumList []*DateNumList `protobuf:"bytes,4,rep,name=GroupMessageNumList,proto3" json:"GroupMessageNumList,omitempty"` - CommonResp *CommonResp `protobuf:"bytes,5,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + PrivateMessageNum int32 `protobuf:"varint,1,opt,name=PrivateMessageNum" json:"PrivateMessageNum,omitempty"` + GroupMessageNum int32 `protobuf:"varint,2,opt,name=GroupMessageNum" json:"GroupMessageNum,omitempty"` + PrivateMessageNumList []*DateNumList `protobuf:"bytes,3,rep,name=PrivateMessageNumList" json:"PrivateMessageNumList,omitempty"` + GroupMessageNumList []*DateNumList `protobuf:"bytes,4,rep,name=GroupMessageNumList" json:"GroupMessageNumList,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,5,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetMessageStatisticsResp) Reset() { - *x = GetMessageStatisticsResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetMessageStatisticsResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetMessageStatisticsResp) ProtoMessage() {} - -func (x *GetMessageStatisticsResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetMessageStatisticsResp.ProtoReflect.Descriptor instead. +func (m *GetMessageStatisticsResp) Reset() { *m = GetMessageStatisticsResp{} } +func (m *GetMessageStatisticsResp) String() string { return proto.CompactTextString(m) } +func (*GetMessageStatisticsResp) ProtoMessage() {} func (*GetMessageStatisticsResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{21} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{23} +} +func (m *GetMessageStatisticsResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetMessageStatisticsResp.Unmarshal(m, b) +} +func (m *GetMessageStatisticsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetMessageStatisticsResp.Marshal(b, m, deterministic) +} +func (dst *GetMessageStatisticsResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetMessageStatisticsResp.Merge(dst, src) +} +func (m *GetMessageStatisticsResp) XXX_Size() int { + return xxx_messageInfo_GetMessageStatisticsResp.Size(m) +} +func (m *GetMessageStatisticsResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetMessageStatisticsResp.DiscardUnknown(m) } -func (x *GetMessageStatisticsResp) GetPrivateMessageNum() int32 { - if x != nil { - return x.PrivateMessageNum +var xxx_messageInfo_GetMessageStatisticsResp proto.InternalMessageInfo + +func (m *GetMessageStatisticsResp) GetPrivateMessageNum() int32 { + if m != nil { + return m.PrivateMessageNum } return 0 } -func (x *GetMessageStatisticsResp) GetGroupMessageNum() int32 { - if x != nil { - return x.GroupMessageNum +func (m *GetMessageStatisticsResp) GetGroupMessageNum() int32 { + if m != nil { + return m.GroupMessageNum } return 0 } -func (x *GetMessageStatisticsResp) GetPrivateMessageNumList() []*DateNumList { - if x != nil { - return x.PrivateMessageNumList +func (m *GetMessageStatisticsResp) GetPrivateMessageNumList() []*DateNumList { + if m != nil { + return m.PrivateMessageNumList } return nil } -func (x *GetMessageStatisticsResp) GetGroupMessageNumList() []*DateNumList { - if x != nil { - return x.GroupMessageNumList +func (m *GetMessageStatisticsResp) GetGroupMessageNumList() []*DateNumList { + if m != nil { + return m.GroupMessageNumList } return nil } -func (x *GetMessageStatisticsResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +func (m *GetMessageStatisticsResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type GetGroupStatisticsReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - StatisticsReq *StatisticsReq `protobuf:"bytes,1,opt,name=StatisticsReq,proto3" json:"StatisticsReq,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=OperationID,proto3" json:"OperationID,omitempty"` + StatisticsReq *StatisticsReq `protobuf:"bytes,1,opt,name=StatisticsReq" json:"StatisticsReq,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 (x *GetGroupStatisticsReq) Reset() { - *x = GetGroupStatisticsReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetGroupStatisticsReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetGroupStatisticsReq) ProtoMessage() {} - -func (x *GetGroupStatisticsReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetGroupStatisticsReq.ProtoReflect.Descriptor instead. +func (m *GetGroupStatisticsReq) Reset() { *m = GetGroupStatisticsReq{} } +func (m *GetGroupStatisticsReq) String() string { return proto.CompactTextString(m) } +func (*GetGroupStatisticsReq) ProtoMessage() {} func (*GetGroupStatisticsReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{22} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{24} +} +func (m *GetGroupStatisticsReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetGroupStatisticsReq.Unmarshal(m, b) +} +func (m *GetGroupStatisticsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetGroupStatisticsReq.Marshal(b, m, deterministic) +} +func (dst *GetGroupStatisticsReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetGroupStatisticsReq.Merge(dst, src) +} +func (m *GetGroupStatisticsReq) XXX_Size() int { + return xxx_messageInfo_GetGroupStatisticsReq.Size(m) +} +func (m *GetGroupStatisticsReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetGroupStatisticsReq.DiscardUnknown(m) } -func (x *GetGroupStatisticsReq) GetStatisticsReq() *StatisticsReq { - if x != nil { - return x.StatisticsReq +var xxx_messageInfo_GetGroupStatisticsReq proto.InternalMessageInfo + +func (m *GetGroupStatisticsReq) GetStatisticsReq() *StatisticsReq { + if m != nil { + return m.StatisticsReq } return nil } -func (x *GetGroupStatisticsReq) GetOperationID() string { - if x != nil { - return x.OperationID +func (m *GetGroupStatisticsReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } type GetGroupStatisticsResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - IncreaseGroupNum int32 `protobuf:"varint,1,opt,name=IncreaseGroupNum,proto3" json:"IncreaseGroupNum,omitempty"` - TotalGroupNum int32 `protobuf:"varint,2,opt,name=TotalGroupNum,proto3" json:"TotalGroupNum,omitempty"` - IncreaseGroupNumList []*DateNumList `protobuf:"bytes,3,rep,name=IncreaseGroupNumList,proto3" json:"IncreaseGroupNumList,omitempty"` - TotalGroupNumList []*DateNumList `protobuf:"bytes,4,rep,name=TotalGroupNumList,proto3" json:"TotalGroupNumList,omitempty"` - CommonResp *CommonResp `protobuf:"bytes,5,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + IncreaseGroupNum int32 `protobuf:"varint,1,opt,name=IncreaseGroupNum" json:"IncreaseGroupNum,omitempty"` + TotalGroupNum int32 `protobuf:"varint,2,opt,name=TotalGroupNum" json:"TotalGroupNum,omitempty"` + IncreaseGroupNumList []*DateNumList `protobuf:"bytes,3,rep,name=IncreaseGroupNumList" json:"IncreaseGroupNumList,omitempty"` + TotalGroupNumList []*DateNumList `protobuf:"bytes,4,rep,name=TotalGroupNumList" json:"TotalGroupNumList,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,5,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetGroupStatisticsResp) Reset() { - *x = GetGroupStatisticsResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetGroupStatisticsResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetGroupStatisticsResp) ProtoMessage() {} - -func (x *GetGroupStatisticsResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetGroupStatisticsResp.ProtoReflect.Descriptor instead. +func (m *GetGroupStatisticsResp) Reset() { *m = GetGroupStatisticsResp{} } +func (m *GetGroupStatisticsResp) String() string { return proto.CompactTextString(m) } +func (*GetGroupStatisticsResp) ProtoMessage() {} func (*GetGroupStatisticsResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{23} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{25} +} +func (m *GetGroupStatisticsResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetGroupStatisticsResp.Unmarshal(m, b) +} +func (m *GetGroupStatisticsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetGroupStatisticsResp.Marshal(b, m, deterministic) +} +func (dst *GetGroupStatisticsResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetGroupStatisticsResp.Merge(dst, src) +} +func (m *GetGroupStatisticsResp) XXX_Size() int { + return xxx_messageInfo_GetGroupStatisticsResp.Size(m) +} +func (m *GetGroupStatisticsResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetGroupStatisticsResp.DiscardUnknown(m) } -func (x *GetGroupStatisticsResp) GetIncreaseGroupNum() int32 { - if x != nil { - return x.IncreaseGroupNum +var xxx_messageInfo_GetGroupStatisticsResp proto.InternalMessageInfo + +func (m *GetGroupStatisticsResp) GetIncreaseGroupNum() int32 { + if m != nil { + return m.IncreaseGroupNum } return 0 } -func (x *GetGroupStatisticsResp) GetTotalGroupNum() int32 { - if x != nil { - return x.TotalGroupNum +func (m *GetGroupStatisticsResp) GetTotalGroupNum() int32 { + if m != nil { + return m.TotalGroupNum } return 0 } -func (x *GetGroupStatisticsResp) GetIncreaseGroupNumList() []*DateNumList { - if x != nil { - return x.IncreaseGroupNumList +func (m *GetGroupStatisticsResp) GetIncreaseGroupNumList() []*DateNumList { + if m != nil { + return m.IncreaseGroupNumList } return nil } -func (x *GetGroupStatisticsResp) GetTotalGroupNumList() []*DateNumList { - if x != nil { - return x.TotalGroupNumList +func (m *GetGroupStatisticsResp) GetTotalGroupNumList() []*DateNumList { + if m != nil { + return m.TotalGroupNumList } return nil } -func (x *GetGroupStatisticsResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +func (m *GetGroupStatisticsResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type GetUserStatisticsReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - StatisticsReq *StatisticsReq `protobuf:"bytes,1,opt,name=StatisticsReq,proto3" json:"StatisticsReq,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=OperationID,proto3" json:"OperationID,omitempty"` + StatisticsReq *StatisticsReq `protobuf:"bytes,1,opt,name=StatisticsReq" json:"StatisticsReq,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 (x *GetUserStatisticsReq) Reset() { - *x = GetUserStatisticsReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetUserStatisticsReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUserStatisticsReq) ProtoMessage() {} - -func (x *GetUserStatisticsReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUserStatisticsReq.ProtoReflect.Descriptor instead. +func (m *GetUserStatisticsReq) Reset() { *m = GetUserStatisticsReq{} } +func (m *GetUserStatisticsReq) String() string { return proto.CompactTextString(m) } +func (*GetUserStatisticsReq) ProtoMessage() {} func (*GetUserStatisticsReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{24} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{26} +} +func (m *GetUserStatisticsReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserStatisticsReq.Unmarshal(m, b) +} +func (m *GetUserStatisticsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserStatisticsReq.Marshal(b, m, deterministic) +} +func (dst *GetUserStatisticsReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserStatisticsReq.Merge(dst, src) +} +func (m *GetUserStatisticsReq) XXX_Size() int { + return xxx_messageInfo_GetUserStatisticsReq.Size(m) +} +func (m *GetUserStatisticsReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserStatisticsReq.DiscardUnknown(m) } -func (x *GetUserStatisticsReq) GetStatisticsReq() *StatisticsReq { - if x != nil { - return x.StatisticsReq +var xxx_messageInfo_GetUserStatisticsReq proto.InternalMessageInfo + +func (m *GetUserStatisticsReq) GetStatisticsReq() *StatisticsReq { + if m != nil { + return m.StatisticsReq } return nil } -func (x *GetUserStatisticsReq) GetOperationID() string { - if x != nil { - return x.OperationID +func (m *GetUserStatisticsReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } type GetUserStatisticsResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - IncreaseUserNum int32 `protobuf:"varint,1,opt,name=IncreaseUserNum,proto3" json:"IncreaseUserNum,omitempty"` - ActiveUserNum int32 `protobuf:"varint,2,opt,name=ActiveUserNum,proto3" json:"ActiveUserNum,omitempty"` - TotalUserNum int32 `protobuf:"varint,3,opt,name=TotalUserNum,proto3" json:"TotalUserNum,omitempty"` - IncreaseUserNumList []*DateNumList `protobuf:"bytes,4,rep,name=IncreaseUserNumList,proto3" json:"IncreaseUserNumList,omitempty"` - ActiveUserNumList []*DateNumList `protobuf:"bytes,5,rep,name=ActiveUserNumList,proto3" json:"ActiveUserNumList,omitempty"` - TotalUserNumList []*DateNumList `protobuf:"bytes,6,rep,name=TotalUserNumList,proto3" json:"TotalUserNumList,omitempty"` - CommonResp *CommonResp `protobuf:"bytes,7,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + IncreaseUserNum int32 `protobuf:"varint,1,opt,name=IncreaseUserNum" json:"IncreaseUserNum,omitempty"` + ActiveUserNum int32 `protobuf:"varint,2,opt,name=ActiveUserNum" json:"ActiveUserNum,omitempty"` + TotalUserNum int32 `protobuf:"varint,3,opt,name=TotalUserNum" json:"TotalUserNum,omitempty"` + IncreaseUserNumList []*DateNumList `protobuf:"bytes,4,rep,name=IncreaseUserNumList" json:"IncreaseUserNumList,omitempty"` + ActiveUserNumList []*DateNumList `protobuf:"bytes,5,rep,name=ActiveUserNumList" json:"ActiveUserNumList,omitempty"` + TotalUserNumList []*DateNumList `protobuf:"bytes,6,rep,name=TotalUserNumList" json:"TotalUserNumList,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,7,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetUserStatisticsResp) Reset() { - *x = GetUserStatisticsResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetUserStatisticsResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUserStatisticsResp) ProtoMessage() {} - -func (x *GetUserStatisticsResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUserStatisticsResp.ProtoReflect.Descriptor instead. +func (m *GetUserStatisticsResp) Reset() { *m = GetUserStatisticsResp{} } +func (m *GetUserStatisticsResp) String() string { return proto.CompactTextString(m) } +func (*GetUserStatisticsResp) ProtoMessage() {} func (*GetUserStatisticsResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{25} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{27} +} +func (m *GetUserStatisticsResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserStatisticsResp.Unmarshal(m, b) +} +func (m *GetUserStatisticsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserStatisticsResp.Marshal(b, m, deterministic) +} +func (dst *GetUserStatisticsResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserStatisticsResp.Merge(dst, src) +} +func (m *GetUserStatisticsResp) XXX_Size() int { + return xxx_messageInfo_GetUserStatisticsResp.Size(m) +} +func (m *GetUserStatisticsResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserStatisticsResp.DiscardUnknown(m) } -func (x *GetUserStatisticsResp) GetIncreaseUserNum() int32 { - if x != nil { - return x.IncreaseUserNum +var xxx_messageInfo_GetUserStatisticsResp proto.InternalMessageInfo + +func (m *GetUserStatisticsResp) GetIncreaseUserNum() int32 { + if m != nil { + return m.IncreaseUserNum } return 0 } -func (x *GetUserStatisticsResp) GetActiveUserNum() int32 { - if x != nil { - return x.ActiveUserNum +func (m *GetUserStatisticsResp) GetActiveUserNum() int32 { + if m != nil { + return m.ActiveUserNum } return 0 } -func (x *GetUserStatisticsResp) GetTotalUserNum() int32 { - if x != nil { - return x.TotalUserNum +func (m *GetUserStatisticsResp) GetTotalUserNum() int32 { + if m != nil { + return m.TotalUserNum } return 0 } -func (x *GetUserStatisticsResp) GetIncreaseUserNumList() []*DateNumList { - if x != nil { - return x.IncreaseUserNumList +func (m *GetUserStatisticsResp) GetIncreaseUserNumList() []*DateNumList { + if m != nil { + return m.IncreaseUserNumList } return nil } -func (x *GetUserStatisticsResp) GetActiveUserNumList() []*DateNumList { - if x != nil { - return x.ActiveUserNumList +func (m *GetUserStatisticsResp) GetActiveUserNumList() []*DateNumList { + if m != nil { + return m.ActiveUserNumList } return nil } -func (x *GetUserStatisticsResp) GetTotalUserNumList() []*DateNumList { - if x != nil { - return x.TotalUserNumList +func (m *GetUserStatisticsResp) GetTotalUserNumList() []*DateNumList { + if m != nil { + return m.TotalUserNumList } return nil } -func (x *GetUserStatisticsResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +func (m *GetUserStatisticsResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type GenerateInvitationCodeReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=operationID,proto3" json:"operationID,omitempty"` - CodeLen int32 `protobuf:"varint,2,opt,name=codeLen,proto3" json:"codeLen,omitempty"` - CodeNum int32 `protobuf:"varint,3,opt,name=codeNum,proto3" json:"codeNum,omitempty"` + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + CodeLen int32 `protobuf:"varint,2,opt,name=codeLen" json:"codeLen,omitempty"` + CodeNum int32 `protobuf:"varint,3,opt,name=codeNum" json:"codeNum,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GenerateInvitationCodeReq) Reset() { - *x = GenerateInvitationCodeReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GenerateInvitationCodeReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GenerateInvitationCodeReq) ProtoMessage() {} - -func (x *GenerateInvitationCodeReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GenerateInvitationCodeReq.ProtoReflect.Descriptor instead. +func (m *GenerateInvitationCodeReq) Reset() { *m = GenerateInvitationCodeReq{} } +func (m *GenerateInvitationCodeReq) String() string { return proto.CompactTextString(m) } +func (*GenerateInvitationCodeReq) ProtoMessage() {} func (*GenerateInvitationCodeReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{26} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{28} +} +func (m *GenerateInvitationCodeReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GenerateInvitationCodeReq.Unmarshal(m, b) +} +func (m *GenerateInvitationCodeReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GenerateInvitationCodeReq.Marshal(b, m, deterministic) +} +func (dst *GenerateInvitationCodeReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GenerateInvitationCodeReq.Merge(dst, src) +} +func (m *GenerateInvitationCodeReq) XXX_Size() int { + return xxx_messageInfo_GenerateInvitationCodeReq.Size(m) +} +func (m *GenerateInvitationCodeReq) XXX_DiscardUnknown() { + xxx_messageInfo_GenerateInvitationCodeReq.DiscardUnknown(m) } -func (x *GenerateInvitationCodeReq) GetOperationID() string { - if x != nil { - return x.OperationID +var xxx_messageInfo_GenerateInvitationCodeReq proto.InternalMessageInfo + +func (m *GenerateInvitationCodeReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *GenerateInvitationCodeReq) GetCodeLen() int32 { - if x != nil { - return x.CodeLen +func (m *GenerateInvitationCodeReq) GetCodeLen() int32 { + if m != nil { + return m.CodeLen } return 0 } -func (x *GenerateInvitationCodeReq) GetCodeNum() int32 { - if x != nil { - return x.CodeNum +func (m *GenerateInvitationCodeReq) GetCodeNum() int32 { + if m != nil { + return m.CodeNum } return 0 } type GenerateInvitationCodeResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GenerateInvitationCodeResp) Reset() { - *x = GenerateInvitationCodeResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GenerateInvitationCodeResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GenerateInvitationCodeResp) ProtoMessage() {} - -func (x *GenerateInvitationCodeResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GenerateInvitationCodeResp.ProtoReflect.Descriptor instead. +func (m *GenerateInvitationCodeResp) Reset() { *m = GenerateInvitationCodeResp{} } +func (m *GenerateInvitationCodeResp) String() string { return proto.CompactTextString(m) } +func (*GenerateInvitationCodeResp) ProtoMessage() {} func (*GenerateInvitationCodeResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{27} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{29} +} +func (m *GenerateInvitationCodeResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GenerateInvitationCodeResp.Unmarshal(m, b) +} +func (m *GenerateInvitationCodeResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GenerateInvitationCodeResp.Marshal(b, m, deterministic) +} +func (dst *GenerateInvitationCodeResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GenerateInvitationCodeResp.Merge(dst, src) +} +func (m *GenerateInvitationCodeResp) XXX_Size() int { + return xxx_messageInfo_GenerateInvitationCodeResp.Size(m) +} +func (m *GenerateInvitationCodeResp) XXX_DiscardUnknown() { + xxx_messageInfo_GenerateInvitationCodeResp.DiscardUnknown(m) } -func (x *GenerateInvitationCodeResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +var xxx_messageInfo_GenerateInvitationCodeResp proto.InternalMessageInfo + +func (m *GenerateInvitationCodeResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type GetInvitationCodesReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=operationID,proto3" json:"operationID,omitempty"` - Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` - Status int32 `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"` - Pagination *sdk_ws.RequestPagination `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"` + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + Code string `protobuf:"bytes,2,opt,name=code" json:"code,omitempty"` + Status int32 `protobuf:"varint,3,opt,name=status" json:"status,omitempty"` + Pagination *sdk_ws.RequestPagination `protobuf:"bytes,4,opt,name=pagination" json:"pagination,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetInvitationCodesReq) Reset() { - *x = GetInvitationCodesReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetInvitationCodesReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetInvitationCodesReq) ProtoMessage() {} - -func (x *GetInvitationCodesReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetInvitationCodesReq.ProtoReflect.Descriptor instead. +func (m *GetInvitationCodesReq) Reset() { *m = GetInvitationCodesReq{} } +func (m *GetInvitationCodesReq) String() string { return proto.CompactTextString(m) } +func (*GetInvitationCodesReq) ProtoMessage() {} func (*GetInvitationCodesReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{28} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{30} +} +func (m *GetInvitationCodesReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetInvitationCodesReq.Unmarshal(m, b) +} +func (m *GetInvitationCodesReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetInvitationCodesReq.Marshal(b, m, deterministic) +} +func (dst *GetInvitationCodesReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetInvitationCodesReq.Merge(dst, src) +} +func (m *GetInvitationCodesReq) XXX_Size() int { + return xxx_messageInfo_GetInvitationCodesReq.Size(m) +} +func (m *GetInvitationCodesReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetInvitationCodesReq.DiscardUnknown(m) } -func (x *GetInvitationCodesReq) GetOperationID() string { - if x != nil { - return x.OperationID +var xxx_messageInfo_GetInvitationCodesReq proto.InternalMessageInfo + +func (m *GetInvitationCodesReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *GetInvitationCodesReq) GetCode() string { - if x != nil { - return x.Code +func (m *GetInvitationCodesReq) GetCode() string { + if m != nil { + return m.Code } return "" } -func (x *GetInvitationCodesReq) GetStatus() int32 { - if x != nil { - return x.Status +func (m *GetInvitationCodesReq) GetStatus() int32 { + if m != nil { + return m.Status } return 0 } -func (x *GetInvitationCodesReq) GetPagination() *sdk_ws.RequestPagination { - if x != nil { - return x.Pagination +func (m *GetInvitationCodesReq) GetPagination() *sdk_ws.RequestPagination { + if m != nil { + return m.Pagination } return nil } type InvitationCode struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - InvitationCode string `protobuf:"bytes,1,opt,name=invitationCode,proto3" json:"invitationCode,omitempty"` - CreateTime int32 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime,omitempty"` - LastTime int32 `protobuf:"varint,3,opt,name=lastTime,proto3" json:"lastTime,omitempty"` - UserID string `protobuf:"bytes,4,opt,name=userID,proto3" json:"userID,omitempty"` - Status int32 `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"` + InvitationCode string `protobuf:"bytes,1,opt,name=invitationCode" json:"invitationCode,omitempty"` + CreateTime int32 `protobuf:"varint,2,opt,name=createTime" json:"createTime,omitempty"` + LastTime int32 `protobuf:"varint,3,opt,name=lastTime" json:"lastTime,omitempty"` + UserID string `protobuf:"bytes,4,opt,name=userID" json:"userID,omitempty"` + Status int32 `protobuf:"varint,5,opt,name=status" json:"status,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *InvitationCode) Reset() { - *x = InvitationCode{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *InvitationCode) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*InvitationCode) ProtoMessage() {} - -func (x *InvitationCode) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use InvitationCode.ProtoReflect.Descriptor instead. +func (m *InvitationCode) Reset() { *m = InvitationCode{} } +func (m *InvitationCode) String() string { return proto.CompactTextString(m) } +func (*InvitationCode) ProtoMessage() {} func (*InvitationCode) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{29} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{31} +} +func (m *InvitationCode) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_InvitationCode.Unmarshal(m, b) +} +func (m *InvitationCode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_InvitationCode.Marshal(b, m, deterministic) +} +func (dst *InvitationCode) XXX_Merge(src proto.Message) { + xxx_messageInfo_InvitationCode.Merge(dst, src) +} +func (m *InvitationCode) XXX_Size() int { + return xxx_messageInfo_InvitationCode.Size(m) +} +func (m *InvitationCode) XXX_DiscardUnknown() { + xxx_messageInfo_InvitationCode.DiscardUnknown(m) } -func (x *InvitationCode) GetInvitationCode() string { - if x != nil { - return x.InvitationCode +var xxx_messageInfo_InvitationCode proto.InternalMessageInfo + +func (m *InvitationCode) GetInvitationCode() string { + if m != nil { + return m.InvitationCode } return "" } -func (x *InvitationCode) GetCreateTime() int32 { - if x != nil { - return x.CreateTime +func (m *InvitationCode) GetCreateTime() int32 { + if m != nil { + return m.CreateTime } return 0 } -func (x *InvitationCode) GetLastTime() int32 { - if x != nil { - return x.LastTime +func (m *InvitationCode) GetLastTime() int32 { + if m != nil { + return m.LastTime } return 0 } -func (x *InvitationCode) GetUserID() string { - if x != nil { - return x.UserID +func (m *InvitationCode) GetUserID() string { + if m != nil { + return m.UserID } return "" } -func (x *InvitationCode) GetStatus() int32 { - if x != nil { - return x.Status +func (m *InvitationCode) GetStatus() int32 { + if m != nil { + return m.Status } return 0 } type GetInvitationCodesResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - InvitationCodes []*InvitationCode `protobuf:"bytes,1,rep,name=invitationCodes,proto3" json:"invitationCodes,omitempty"` - Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,2,opt,name=Pagination,proto3" json:"Pagination,omitempty"` - CommonResp *CommonResp `protobuf:"bytes,3,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + InvitationCodes []*InvitationCode `protobuf:"bytes,1,rep,name=invitationCodes" json:"invitationCodes,omitempty"` + Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,2,opt,name=Pagination" json:"Pagination,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,3,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetInvitationCodesResp) Reset() { - *x = GetInvitationCodesResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetInvitationCodesResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetInvitationCodesResp) ProtoMessage() {} - -func (x *GetInvitationCodesResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetInvitationCodesResp.ProtoReflect.Descriptor instead. +func (m *GetInvitationCodesResp) Reset() { *m = GetInvitationCodesResp{} } +func (m *GetInvitationCodesResp) String() string { return proto.CompactTextString(m) } +func (*GetInvitationCodesResp) ProtoMessage() {} func (*GetInvitationCodesResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{30} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{32} +} +func (m *GetInvitationCodesResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetInvitationCodesResp.Unmarshal(m, b) +} +func (m *GetInvitationCodesResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetInvitationCodesResp.Marshal(b, m, deterministic) +} +func (dst *GetInvitationCodesResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetInvitationCodesResp.Merge(dst, src) +} +func (m *GetInvitationCodesResp) XXX_Size() int { + return xxx_messageInfo_GetInvitationCodesResp.Size(m) +} +func (m *GetInvitationCodesResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetInvitationCodesResp.DiscardUnknown(m) } -func (x *GetInvitationCodesResp) GetInvitationCodes() []*InvitationCode { - if x != nil { - return x.InvitationCodes +var xxx_messageInfo_GetInvitationCodesResp proto.InternalMessageInfo + +func (m *GetInvitationCodesResp) GetInvitationCodes() []*InvitationCode { + if m != nil { + return m.InvitationCodes } return nil } -func (x *GetInvitationCodesResp) GetPagination() *sdk_ws.ResponsePagination { - if x != nil { - return x.Pagination +func (m *GetInvitationCodesResp) GetPagination() *sdk_ws.ResponsePagination { + if m != nil { + return m.Pagination } return nil } -func (x *GetInvitationCodesResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +func (m *GetInvitationCodesResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type QueryIPRegisterReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=operationID,proto3" json:"operationID,omitempty"` - IP string `protobuf:"bytes,2,opt,name=IP,proto3" json:"IP,omitempty"` + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + IP string `protobuf:"bytes,2,opt,name=IP" json:"IP,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *QueryIPRegisterReq) Reset() { - *x = QueryIPRegisterReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QueryIPRegisterReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryIPRegisterReq) ProtoMessage() {} - -func (x *QueryIPRegisterReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use QueryIPRegisterReq.ProtoReflect.Descriptor instead. +func (m *QueryIPRegisterReq) Reset() { *m = QueryIPRegisterReq{} } +func (m *QueryIPRegisterReq) String() string { return proto.CompactTextString(m) } +func (*QueryIPRegisterReq) ProtoMessage() {} func (*QueryIPRegisterReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{31} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{33} +} +func (m *QueryIPRegisterReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_QueryIPRegisterReq.Unmarshal(m, b) +} +func (m *QueryIPRegisterReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_QueryIPRegisterReq.Marshal(b, m, deterministic) +} +func (dst *QueryIPRegisterReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryIPRegisterReq.Merge(dst, src) +} +func (m *QueryIPRegisterReq) XXX_Size() int { + return xxx_messageInfo_QueryIPRegisterReq.Size(m) +} +func (m *QueryIPRegisterReq) XXX_DiscardUnknown() { + xxx_messageInfo_QueryIPRegisterReq.DiscardUnknown(m) } -func (x *QueryIPRegisterReq) GetOperationID() string { - if x != nil { - return x.OperationID +var xxx_messageInfo_QueryIPRegisterReq proto.InternalMessageInfo + +func (m *QueryIPRegisterReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *QueryIPRegisterReq) GetIP() string { - if x != nil { - return x.IP +func (m *QueryIPRegisterReq) GetIP() string { + if m != nil { + return m.IP } return "" } type QueryIPRegisterResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - IP string `protobuf:"bytes,1,opt,name=IP,proto3" json:"IP,omitempty"` - RegisterNum int32 `protobuf:"varint,2,opt,name=RegisterNum,proto3" json:"RegisterNum,omitempty"` - Status int32 `protobuf:"varint,3,opt,name=Status,proto3" json:"Status,omitempty"` - UserIDList []string `protobuf:"bytes,4,rep,name=userIDList,proto3" json:"userIDList,omitempty"` - CommonResp *CommonResp `protobuf:"bytes,5,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + IP string `protobuf:"bytes,1,opt,name=IP" json:"IP,omitempty"` + RegisterNum int32 `protobuf:"varint,2,opt,name=RegisterNum" json:"RegisterNum,omitempty"` + Status int32 `protobuf:"varint,3,opt,name=Status" json:"Status,omitempty"` + UserIDList []string `protobuf:"bytes,4,rep,name=userIDList" json:"userIDList,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,5,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *QueryIPRegisterResp) Reset() { - *x = QueryIPRegisterResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QueryIPRegisterResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryIPRegisterResp) ProtoMessage() {} - -func (x *QueryIPRegisterResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use QueryIPRegisterResp.ProtoReflect.Descriptor instead. +func (m *QueryIPRegisterResp) Reset() { *m = QueryIPRegisterResp{} } +func (m *QueryIPRegisterResp) String() string { return proto.CompactTextString(m) } +func (*QueryIPRegisterResp) ProtoMessage() {} func (*QueryIPRegisterResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{32} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{34} +} +func (m *QueryIPRegisterResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_QueryIPRegisterResp.Unmarshal(m, b) +} +func (m *QueryIPRegisterResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_QueryIPRegisterResp.Marshal(b, m, deterministic) +} +func (dst *QueryIPRegisterResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryIPRegisterResp.Merge(dst, src) +} +func (m *QueryIPRegisterResp) XXX_Size() int { + return xxx_messageInfo_QueryIPRegisterResp.Size(m) +} +func (m *QueryIPRegisterResp) XXX_DiscardUnknown() { + xxx_messageInfo_QueryIPRegisterResp.DiscardUnknown(m) } -func (x *QueryIPRegisterResp) GetIP() string { - if x != nil { - return x.IP +var xxx_messageInfo_QueryIPRegisterResp proto.InternalMessageInfo + +func (m *QueryIPRegisterResp) GetIP() string { + if m != nil { + return m.IP } return "" } -func (x *QueryIPRegisterResp) GetRegisterNum() int32 { - if x != nil { - return x.RegisterNum +func (m *QueryIPRegisterResp) GetRegisterNum() int32 { + if m != nil { + return m.RegisterNum } return 0 } -func (x *QueryIPRegisterResp) GetStatus() int32 { - if x != nil { - return x.Status +func (m *QueryIPRegisterResp) GetStatus() int32 { + if m != nil { + return m.Status } return 0 } -func (x *QueryIPRegisterResp) GetUserIDList() []string { - if x != nil { - return x.UserIDList +func (m *QueryIPRegisterResp) GetUserIDList() []string { + if m != nil { + return m.UserIDList } return nil } -func (x *QueryIPRegisterResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +func (m *QueryIPRegisterResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type AddIPLimitReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=operationID,proto3" json:"operationID,omitempty"` - IP string `protobuf:"bytes,2,opt,name=IP,proto3" json:"IP,omitempty"` - LimitTime int32 `protobuf:"varint,3,opt,name=limitTime,proto3" json:"limitTime,omitempty"` + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + IP string `protobuf:"bytes,2,opt,name=IP" json:"IP,omitempty"` + LimitTime int32 `protobuf:"varint,3,opt,name=limitTime" json:"limitTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *AddIPLimitReq) Reset() { - *x = AddIPLimitReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AddIPLimitReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddIPLimitReq) ProtoMessage() {} - -func (x *AddIPLimitReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AddIPLimitReq.ProtoReflect.Descriptor instead. +func (m *AddIPLimitReq) Reset() { *m = AddIPLimitReq{} } +func (m *AddIPLimitReq) String() string { return proto.CompactTextString(m) } +func (*AddIPLimitReq) ProtoMessage() {} func (*AddIPLimitReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{33} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{35} +} +func (m *AddIPLimitReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_AddIPLimitReq.Unmarshal(m, b) +} +func (m *AddIPLimitReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_AddIPLimitReq.Marshal(b, m, deterministic) +} +func (dst *AddIPLimitReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_AddIPLimitReq.Merge(dst, src) +} +func (m *AddIPLimitReq) XXX_Size() int { + return xxx_messageInfo_AddIPLimitReq.Size(m) +} +func (m *AddIPLimitReq) XXX_DiscardUnknown() { + xxx_messageInfo_AddIPLimitReq.DiscardUnknown(m) } -func (x *AddIPLimitReq) GetOperationID() string { - if x != nil { - return x.OperationID +var xxx_messageInfo_AddIPLimitReq proto.InternalMessageInfo + +func (m *AddIPLimitReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *AddIPLimitReq) GetIP() string { - if x != nil { - return x.IP +func (m *AddIPLimitReq) GetIP() string { + if m != nil { + return m.IP } return "" } -func (x *AddIPLimitReq) GetLimitTime() int32 { - if x != nil { - return x.LimitTime +func (m *AddIPLimitReq) GetLimitTime() int32 { + if m != nil { + return m.LimitTime } return 0 } type AddIPLimitResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *AddIPLimitResp) Reset() { - *x = AddIPLimitResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AddIPLimitResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddIPLimitResp) ProtoMessage() {} - -func (x *AddIPLimitResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AddIPLimitResp.ProtoReflect.Descriptor instead. +func (m *AddIPLimitResp) Reset() { *m = AddIPLimitResp{} } +func (m *AddIPLimitResp) String() string { return proto.CompactTextString(m) } +func (*AddIPLimitResp) ProtoMessage() {} func (*AddIPLimitResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{34} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{36} +} +func (m *AddIPLimitResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_AddIPLimitResp.Unmarshal(m, b) +} +func (m *AddIPLimitResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_AddIPLimitResp.Marshal(b, m, deterministic) +} +func (dst *AddIPLimitResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_AddIPLimitResp.Merge(dst, src) +} +func (m *AddIPLimitResp) XXX_Size() int { + return xxx_messageInfo_AddIPLimitResp.Size(m) +} +func (m *AddIPLimitResp) XXX_DiscardUnknown() { + xxx_messageInfo_AddIPLimitResp.DiscardUnknown(m) } -func (x *AddIPLimitResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +var xxx_messageInfo_AddIPLimitResp proto.InternalMessageInfo + +func (m *AddIPLimitResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type RemoveIPLimitReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=operationID,proto3" json:"operationID,omitempty"` - IP string `protobuf:"bytes,2,opt,name=IP,proto3" json:"IP,omitempty"` + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + IP string `protobuf:"bytes,2,opt,name=IP" json:"IP,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *RemoveIPLimitReq) Reset() { - *x = RemoveIPLimitReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RemoveIPLimitReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RemoveIPLimitReq) ProtoMessage() {} - -func (x *RemoveIPLimitReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RemoveIPLimitReq.ProtoReflect.Descriptor instead. +func (m *RemoveIPLimitReq) Reset() { *m = RemoveIPLimitReq{} } +func (m *RemoveIPLimitReq) String() string { return proto.CompactTextString(m) } +func (*RemoveIPLimitReq) ProtoMessage() {} func (*RemoveIPLimitReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{35} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{37} +} +func (m *RemoveIPLimitReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RemoveIPLimitReq.Unmarshal(m, b) +} +func (m *RemoveIPLimitReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RemoveIPLimitReq.Marshal(b, m, deterministic) +} +func (dst *RemoveIPLimitReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_RemoveIPLimitReq.Merge(dst, src) +} +func (m *RemoveIPLimitReq) XXX_Size() int { + return xxx_messageInfo_RemoveIPLimitReq.Size(m) +} +func (m *RemoveIPLimitReq) XXX_DiscardUnknown() { + xxx_messageInfo_RemoveIPLimitReq.DiscardUnknown(m) } -func (x *RemoveIPLimitReq) GetOperationID() string { - if x != nil { - return x.OperationID +var xxx_messageInfo_RemoveIPLimitReq proto.InternalMessageInfo + +func (m *RemoveIPLimitReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *RemoveIPLimitReq) GetIP() string { - if x != nil { - return x.IP +func (m *RemoveIPLimitReq) GetIP() string { + if m != nil { + return m.IP } return "" } type RemoveIPLimitResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *RemoveIPLimitResp) Reset() { - *x = RemoveIPLimitResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RemoveIPLimitResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RemoveIPLimitResp) ProtoMessage() {} - -func (x *RemoveIPLimitResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RemoveIPLimitResp.ProtoReflect.Descriptor instead. +func (m *RemoveIPLimitResp) Reset() { *m = RemoveIPLimitResp{} } +func (m *RemoveIPLimitResp) String() string { return proto.CompactTextString(m) } +func (*RemoveIPLimitResp) ProtoMessage() {} func (*RemoveIPLimitResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{36} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{38} +} +func (m *RemoveIPLimitResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RemoveIPLimitResp.Unmarshal(m, b) +} +func (m *RemoveIPLimitResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RemoveIPLimitResp.Marshal(b, m, deterministic) +} +func (dst *RemoveIPLimitResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_RemoveIPLimitResp.Merge(dst, src) +} +func (m *RemoveIPLimitResp) XXX_Size() int { + return xxx_messageInfo_RemoveIPLimitResp.Size(m) +} +func (m *RemoveIPLimitResp) XXX_DiscardUnknown() { + xxx_messageInfo_RemoveIPLimitResp.DiscardUnknown(m) } -func (x *RemoveIPLimitResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +var xxx_messageInfo_RemoveIPLimitResp proto.InternalMessageInfo + +func (m *RemoveIPLimitResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type QueryUserIDIPLimitLoginReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=operationID,proto3" json:"operationID,omitempty"` - UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *QueryUserIDIPLimitLoginReq) Reset() { - *x = QueryUserIDIPLimitLoginReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QueryUserIDIPLimitLoginReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryUserIDIPLimitLoginReq) ProtoMessage() {} - -func (x *QueryUserIDIPLimitLoginReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use QueryUserIDIPLimitLoginReq.ProtoReflect.Descriptor instead. +func (m *QueryUserIDIPLimitLoginReq) Reset() { *m = QueryUserIDIPLimitLoginReq{} } +func (m *QueryUserIDIPLimitLoginReq) String() string { return proto.CompactTextString(m) } +func (*QueryUserIDIPLimitLoginReq) ProtoMessage() {} func (*QueryUserIDIPLimitLoginReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{37} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{39} +} +func (m *QueryUserIDIPLimitLoginReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_QueryUserIDIPLimitLoginReq.Unmarshal(m, b) +} +func (m *QueryUserIDIPLimitLoginReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_QueryUserIDIPLimitLoginReq.Marshal(b, m, deterministic) +} +func (dst *QueryUserIDIPLimitLoginReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryUserIDIPLimitLoginReq.Merge(dst, src) +} +func (m *QueryUserIDIPLimitLoginReq) XXX_Size() int { + return xxx_messageInfo_QueryUserIDIPLimitLoginReq.Size(m) +} +func (m *QueryUserIDIPLimitLoginReq) XXX_DiscardUnknown() { + xxx_messageInfo_QueryUserIDIPLimitLoginReq.DiscardUnknown(m) } -func (x *QueryUserIDIPLimitLoginReq) GetOperationID() string { - if x != nil { - return x.OperationID +var xxx_messageInfo_QueryUserIDIPLimitLoginReq proto.InternalMessageInfo + +func (m *QueryUserIDIPLimitLoginReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *QueryUserIDIPLimitLoginReq) GetUserID() string { - if x != nil { - return x.UserID +func (m *QueryUserIDIPLimitLoginReq) GetUserID() string { + if m != nil { + return m.UserID } return "" } type UserIPLimit struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - IP string `protobuf:"bytes,2,opt,name=IP,proto3" json:"IP,omitempty"` - CreateTime int32 `protobuf:"varint,3,opt,name=createTime,proto3" json:"createTime,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + IP string `protobuf:"bytes,2,opt,name=IP" json:"IP,omitempty"` + CreateTime int32 `protobuf:"varint,3,opt,name=createTime" json:"createTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *UserIPLimit) Reset() { - *x = UserIPLimit{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UserIPLimit) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UserIPLimit) ProtoMessage() {} - -func (x *UserIPLimit) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UserIPLimit.ProtoReflect.Descriptor instead. +func (m *UserIPLimit) Reset() { *m = UserIPLimit{} } +func (m *UserIPLimit) String() string { return proto.CompactTextString(m) } +func (*UserIPLimit) ProtoMessage() {} func (*UserIPLimit) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{38} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{40} +} +func (m *UserIPLimit) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserIPLimit.Unmarshal(m, b) +} +func (m *UserIPLimit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserIPLimit.Marshal(b, m, deterministic) +} +func (dst *UserIPLimit) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserIPLimit.Merge(dst, src) +} +func (m *UserIPLimit) XXX_Size() int { + return xxx_messageInfo_UserIPLimit.Size(m) +} +func (m *UserIPLimit) XXX_DiscardUnknown() { + xxx_messageInfo_UserIPLimit.DiscardUnknown(m) } -func (x *UserIPLimit) GetUserID() string { - if x != nil { - return x.UserID +var xxx_messageInfo_UserIPLimit proto.InternalMessageInfo + +func (m *UserIPLimit) GetUserID() string { + if m != nil { + return m.UserID } return "" } -func (x *UserIPLimit) GetIP() string { - if x != nil { - return x.IP +func (m *UserIPLimit) GetIP() string { + if m != nil { + return m.IP } return "" } -func (x *UserIPLimit) GetCreateTime() int32 { - if x != nil { - return x.CreateTime +func (m *UserIPLimit) GetCreateTime() int32 { + if m != nil { + return m.CreateTime } return 0 } type QueryUserIDIPLimitLoginResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserIPLimits []*UserIPLimit `protobuf:"bytes,1,rep,name=UserIPLimits,proto3" json:"UserIPLimits,omitempty"` - CommonResp *CommonResp `protobuf:"bytes,2,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + UserIPLimits []*UserIPLimit `protobuf:"bytes,1,rep,name=UserIPLimits" json:"UserIPLimits,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,2,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *QueryUserIDIPLimitLoginResp) Reset() { - *x = QueryUserIDIPLimitLoginResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QueryUserIDIPLimitLoginResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryUserIDIPLimitLoginResp) ProtoMessage() {} - -func (x *QueryUserIDIPLimitLoginResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use QueryUserIDIPLimitLoginResp.ProtoReflect.Descriptor instead. +func (m *QueryUserIDIPLimitLoginResp) Reset() { *m = QueryUserIDIPLimitLoginResp{} } +func (m *QueryUserIDIPLimitLoginResp) String() string { return proto.CompactTextString(m) } +func (*QueryUserIDIPLimitLoginResp) ProtoMessage() {} func (*QueryUserIDIPLimitLoginResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{39} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{41} +} +func (m *QueryUserIDIPLimitLoginResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_QueryUserIDIPLimitLoginResp.Unmarshal(m, b) +} +func (m *QueryUserIDIPLimitLoginResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_QueryUserIDIPLimitLoginResp.Marshal(b, m, deterministic) +} +func (dst *QueryUserIDIPLimitLoginResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryUserIDIPLimitLoginResp.Merge(dst, src) +} +func (m *QueryUserIDIPLimitLoginResp) XXX_Size() int { + return xxx_messageInfo_QueryUserIDIPLimitLoginResp.Size(m) +} +func (m *QueryUserIDIPLimitLoginResp) XXX_DiscardUnknown() { + xxx_messageInfo_QueryUserIDIPLimitLoginResp.DiscardUnknown(m) } -func (x *QueryUserIDIPLimitLoginResp) GetUserIPLimits() []*UserIPLimit { - if x != nil { - return x.UserIPLimits +var xxx_messageInfo_QueryUserIDIPLimitLoginResp proto.InternalMessageInfo + +func (m *QueryUserIDIPLimitLoginResp) GetUserIPLimits() []*UserIPLimit { + if m != nil { + return m.UserIPLimits } return nil } -func (x *QueryUserIDIPLimitLoginResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +func (m *QueryUserIDIPLimitLoginResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type AddUserIPLimitLoginReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID,proto3" json:"operationID,omitempty"` - IP string `protobuf:"bytes,3,opt,name=IP,proto3" json:"IP,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + IP string `protobuf:"bytes,3,opt,name=IP" json:"IP,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *AddUserIPLimitLoginReq) Reset() { - *x = AddUserIPLimitLoginReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AddUserIPLimitLoginReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddUserIPLimitLoginReq) ProtoMessage() {} - -func (x *AddUserIPLimitLoginReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AddUserIPLimitLoginReq.ProtoReflect.Descriptor instead. +func (m *AddUserIPLimitLoginReq) Reset() { *m = AddUserIPLimitLoginReq{} } +func (m *AddUserIPLimitLoginReq) String() string { return proto.CompactTextString(m) } +func (*AddUserIPLimitLoginReq) ProtoMessage() {} func (*AddUserIPLimitLoginReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{40} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{42} +} +func (m *AddUserIPLimitLoginReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_AddUserIPLimitLoginReq.Unmarshal(m, b) +} +func (m *AddUserIPLimitLoginReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_AddUserIPLimitLoginReq.Marshal(b, m, deterministic) +} +func (dst *AddUserIPLimitLoginReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_AddUserIPLimitLoginReq.Merge(dst, src) +} +func (m *AddUserIPLimitLoginReq) XXX_Size() int { + return xxx_messageInfo_AddUserIPLimitLoginReq.Size(m) +} +func (m *AddUserIPLimitLoginReq) XXX_DiscardUnknown() { + xxx_messageInfo_AddUserIPLimitLoginReq.DiscardUnknown(m) } -func (x *AddUserIPLimitLoginReq) GetUserID() string { - if x != nil { - return x.UserID +var xxx_messageInfo_AddUserIPLimitLoginReq proto.InternalMessageInfo + +func (m *AddUserIPLimitLoginReq) GetUserID() string { + if m != nil { + return m.UserID } return "" } -func (x *AddUserIPLimitLoginReq) GetOperationID() string { - if x != nil { - return x.OperationID +func (m *AddUserIPLimitLoginReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *AddUserIPLimitLoginReq) GetIP() string { - if x != nil { - return x.IP +func (m *AddUserIPLimitLoginReq) GetIP() string { + if m != nil { + return m.IP } return "" } type AddUserIPLimitLoginResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *AddUserIPLimitLoginResp) Reset() { - *x = AddUserIPLimitLoginResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AddUserIPLimitLoginResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddUserIPLimitLoginResp) ProtoMessage() {} - -func (x *AddUserIPLimitLoginResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AddUserIPLimitLoginResp.ProtoReflect.Descriptor instead. +func (m *AddUserIPLimitLoginResp) Reset() { *m = AddUserIPLimitLoginResp{} } +func (m *AddUserIPLimitLoginResp) String() string { return proto.CompactTextString(m) } +func (*AddUserIPLimitLoginResp) ProtoMessage() {} func (*AddUserIPLimitLoginResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{41} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{43} +} +func (m *AddUserIPLimitLoginResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_AddUserIPLimitLoginResp.Unmarshal(m, b) +} +func (m *AddUserIPLimitLoginResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_AddUserIPLimitLoginResp.Marshal(b, m, deterministic) +} +func (dst *AddUserIPLimitLoginResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_AddUserIPLimitLoginResp.Merge(dst, src) +} +func (m *AddUserIPLimitLoginResp) XXX_Size() int { + return xxx_messageInfo_AddUserIPLimitLoginResp.Size(m) +} +func (m *AddUserIPLimitLoginResp) XXX_DiscardUnknown() { + xxx_messageInfo_AddUserIPLimitLoginResp.DiscardUnknown(m) } -func (x *AddUserIPLimitLoginResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +var xxx_messageInfo_AddUserIPLimitLoginResp proto.InternalMessageInfo + +func (m *AddUserIPLimitLoginResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type RemoveUserIPLimitReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID,proto3" json:"operationID,omitempty"` - IP string `protobuf:"bytes,3,opt,name=IP,proto3" json:"IP,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + IP string `protobuf:"bytes,3,opt,name=IP" json:"IP,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *RemoveUserIPLimitReq) Reset() { - *x = RemoveUserIPLimitReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RemoveUserIPLimitReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RemoveUserIPLimitReq) ProtoMessage() {} - -func (x *RemoveUserIPLimitReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RemoveUserIPLimitReq.ProtoReflect.Descriptor instead. +func (m *RemoveUserIPLimitReq) Reset() { *m = RemoveUserIPLimitReq{} } +func (m *RemoveUserIPLimitReq) String() string { return proto.CompactTextString(m) } +func (*RemoveUserIPLimitReq) ProtoMessage() {} func (*RemoveUserIPLimitReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{42} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{44} +} +func (m *RemoveUserIPLimitReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RemoveUserIPLimitReq.Unmarshal(m, b) +} +func (m *RemoveUserIPLimitReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RemoveUserIPLimitReq.Marshal(b, m, deterministic) +} +func (dst *RemoveUserIPLimitReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_RemoveUserIPLimitReq.Merge(dst, src) +} +func (m *RemoveUserIPLimitReq) XXX_Size() int { + return xxx_messageInfo_RemoveUserIPLimitReq.Size(m) +} +func (m *RemoveUserIPLimitReq) XXX_DiscardUnknown() { + xxx_messageInfo_RemoveUserIPLimitReq.DiscardUnknown(m) } -func (x *RemoveUserIPLimitReq) GetUserID() string { - if x != nil { - return x.UserID +var xxx_messageInfo_RemoveUserIPLimitReq proto.InternalMessageInfo + +func (m *RemoveUserIPLimitReq) GetUserID() string { + if m != nil { + return m.UserID } return "" } -func (x *RemoveUserIPLimitReq) GetOperationID() string { - if x != nil { - return x.OperationID +func (m *RemoveUserIPLimitReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *RemoveUserIPLimitReq) GetIP() string { - if x != nil { - return x.IP +func (m *RemoveUserIPLimitReq) GetIP() string { + if m != nil { + return m.IP } return "" } type RemoveUserIPLimitResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *RemoveUserIPLimitResp) Reset() { - *x = RemoveUserIPLimitResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RemoveUserIPLimitResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RemoveUserIPLimitResp) ProtoMessage() {} - -func (x *RemoveUserIPLimitResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RemoveUserIPLimitResp.ProtoReflect.Descriptor instead. +func (m *RemoveUserIPLimitResp) Reset() { *m = RemoveUserIPLimitResp{} } +func (m *RemoveUserIPLimitResp) String() string { return proto.CompactTextString(m) } +func (*RemoveUserIPLimitResp) ProtoMessage() {} func (*RemoveUserIPLimitResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{43} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{45} +} +func (m *RemoveUserIPLimitResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RemoveUserIPLimitResp.Unmarshal(m, b) +} +func (m *RemoveUserIPLimitResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RemoveUserIPLimitResp.Marshal(b, m, deterministic) +} +func (dst *RemoveUserIPLimitResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_RemoveUserIPLimitResp.Merge(dst, src) +} +func (m *RemoveUserIPLimitResp) XXX_Size() int { + return xxx_messageInfo_RemoveUserIPLimitResp.Size(m) +} +func (m *RemoveUserIPLimitResp) XXX_DiscardUnknown() { + xxx_messageInfo_RemoveUserIPLimitResp.DiscardUnknown(m) } -func (x *RemoveUserIPLimitResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +var xxx_messageInfo_RemoveUserIPLimitResp proto.InternalMessageInfo + +func (m *RemoveUserIPLimitResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type GetClientInitConfigReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=operationID,proto3" json:"operationID,omitempty"` + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetClientInitConfigReq) Reset() { - *x = GetClientInitConfigReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetClientInitConfigReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetClientInitConfigReq) ProtoMessage() {} - -func (x *GetClientInitConfigReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetClientInitConfigReq.ProtoReflect.Descriptor instead. +func (m *GetClientInitConfigReq) Reset() { *m = GetClientInitConfigReq{} } +func (m *GetClientInitConfigReq) String() string { return proto.CompactTextString(m) } +func (*GetClientInitConfigReq) ProtoMessage() {} func (*GetClientInitConfigReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{44} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{46} +} +func (m *GetClientInitConfigReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetClientInitConfigReq.Unmarshal(m, b) +} +func (m *GetClientInitConfigReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetClientInitConfigReq.Marshal(b, m, deterministic) +} +func (dst *GetClientInitConfigReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetClientInitConfigReq.Merge(dst, src) +} +func (m *GetClientInitConfigReq) XXX_Size() int { + return xxx_messageInfo_GetClientInitConfigReq.Size(m) +} +func (m *GetClientInitConfigReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetClientInitConfigReq.DiscardUnknown(m) } -func (x *GetClientInitConfigReq) GetOperationID() string { - if x != nil { - return x.OperationID +var xxx_messageInfo_GetClientInitConfigReq proto.InternalMessageInfo + +func (m *GetClientInitConfigReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } type GetClientInitConfigResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetClientInitConfigResp) Reset() { - *x = GetClientInitConfigResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetClientInitConfigResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetClientInitConfigResp) ProtoMessage() {} - -func (x *GetClientInitConfigResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetClientInitConfigResp.ProtoReflect.Descriptor instead. +func (m *GetClientInitConfigResp) Reset() { *m = GetClientInitConfigResp{} } +func (m *GetClientInitConfigResp) String() string { return proto.CompactTextString(m) } +func (*GetClientInitConfigResp) ProtoMessage() {} func (*GetClientInitConfigResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{45} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{47} +} +func (m *GetClientInitConfigResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetClientInitConfigResp.Unmarshal(m, b) +} +func (m *GetClientInitConfigResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetClientInitConfigResp.Marshal(b, m, deterministic) +} +func (dst *GetClientInitConfigResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetClientInitConfigResp.Merge(dst, src) +} +func (m *GetClientInitConfigResp) XXX_Size() int { + return xxx_messageInfo_GetClientInitConfigResp.Size(m) +} +func (m *GetClientInitConfigResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetClientInitConfigResp.DiscardUnknown(m) } -func (x *GetClientInitConfigResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +var xxx_messageInfo_GetClientInitConfigResp proto.InternalMessageInfo + +func (m *GetClientInitConfigResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type SetClientInitConfigReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=operationID,proto3" json:"operationID,omitempty"` - DiscoverPageURL string `protobuf:"bytes,2,opt,name=discoverPageURL,proto3" json:"discoverPageURL,omitempty"` + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + DiscoverPageURL string `protobuf:"bytes,2,opt,name=discoverPageURL" json:"discoverPageURL,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SetClientInitConfigReq) Reset() { - *x = SetClientInitConfigReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SetClientInitConfigReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SetClientInitConfigReq) ProtoMessage() {} - -func (x *SetClientInitConfigReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[46] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SetClientInitConfigReq.ProtoReflect.Descriptor instead. +func (m *SetClientInitConfigReq) Reset() { *m = SetClientInitConfigReq{} } +func (m *SetClientInitConfigReq) String() string { return proto.CompactTextString(m) } +func (*SetClientInitConfigReq) ProtoMessage() {} func (*SetClientInitConfigReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{46} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{48} +} +func (m *SetClientInitConfigReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SetClientInitConfigReq.Unmarshal(m, b) +} +func (m *SetClientInitConfigReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SetClientInitConfigReq.Marshal(b, m, deterministic) +} +func (dst *SetClientInitConfigReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetClientInitConfigReq.Merge(dst, src) +} +func (m *SetClientInitConfigReq) XXX_Size() int { + return xxx_messageInfo_SetClientInitConfigReq.Size(m) +} +func (m *SetClientInitConfigReq) XXX_DiscardUnknown() { + xxx_messageInfo_SetClientInitConfigReq.DiscardUnknown(m) } -func (x *SetClientInitConfigReq) GetOperationID() string { - if x != nil { - return x.OperationID +var xxx_messageInfo_SetClientInitConfigReq proto.InternalMessageInfo + +func (m *SetClientInitConfigReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *SetClientInitConfigReq) GetDiscoverPageURL() string { - if x != nil { - return x.DiscoverPageURL +func (m *SetClientInitConfigReq) GetDiscoverPageURL() string { + if m != nil { + return m.DiscoverPageURL } return "" } type SetClientInitConfigResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SetClientInitConfigResp) Reset() { - *x = SetClientInitConfigResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SetClientInitConfigResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SetClientInitConfigResp) ProtoMessage() {} - -func (x *SetClientInitConfigResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SetClientInitConfigResp.ProtoReflect.Descriptor instead. +func (m *SetClientInitConfigResp) Reset() { *m = SetClientInitConfigResp{} } +func (m *SetClientInitConfigResp) String() string { return proto.CompactTextString(m) } +func (*SetClientInitConfigResp) ProtoMessage() {} func (*SetClientInitConfigResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{47} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{49} +} +func (m *SetClientInitConfigResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SetClientInitConfigResp.Unmarshal(m, b) +} +func (m *SetClientInitConfigResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SetClientInitConfigResp.Marshal(b, m, deterministic) +} +func (dst *SetClientInitConfigResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetClientInitConfigResp.Merge(dst, src) +} +func (m *SetClientInitConfigResp) XXX_Size() int { + return xxx_messageInfo_SetClientInitConfigResp.Size(m) +} +func (m *SetClientInitConfigResp) XXX_DiscardUnknown() { + xxx_messageInfo_SetClientInitConfigResp.DiscardUnknown(m) } -func (x *SetClientInitConfigResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +var xxx_messageInfo_SetClientInitConfigResp proto.InternalMessageInfo + +func (m *SetClientInitConfigResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type GetUserFriendsReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=operationID,proto3" json:"operationID,omitempty"` - UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` - FriendUserID string `protobuf:"bytes,3,opt,name=friendUserID,proto3" json:"friendUserID,omitempty"` - FriendUserName string `protobuf:"bytes,4,opt,name=friendUserName,proto3" json:"friendUserName,omitempty"` - Pagination *sdk_ws.RequestPagination `protobuf:"bytes,5,opt,name=pagination,proto3" json:"pagination,omitempty"` + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` + FriendUserID string `protobuf:"bytes,3,opt,name=friendUserID" json:"friendUserID,omitempty"` + FriendUserName string `protobuf:"bytes,4,opt,name=friendUserName" json:"friendUserName,omitempty"` + Pagination *sdk_ws.RequestPagination `protobuf:"bytes,5,opt,name=pagination" json:"pagination,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetUserFriendsReq) Reset() { - *x = GetUserFriendsReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetUserFriendsReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUserFriendsReq) ProtoMessage() {} - -func (x *GetUserFriendsReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[48] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUserFriendsReq.ProtoReflect.Descriptor instead. +func (m *GetUserFriendsReq) Reset() { *m = GetUserFriendsReq{} } +func (m *GetUserFriendsReq) String() string { return proto.CompactTextString(m) } +func (*GetUserFriendsReq) ProtoMessage() {} func (*GetUserFriendsReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{48} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{50} +} +func (m *GetUserFriendsReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserFriendsReq.Unmarshal(m, b) +} +func (m *GetUserFriendsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserFriendsReq.Marshal(b, m, deterministic) +} +func (dst *GetUserFriendsReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserFriendsReq.Merge(dst, src) +} +func (m *GetUserFriendsReq) XXX_Size() int { + return xxx_messageInfo_GetUserFriendsReq.Size(m) +} +func (m *GetUserFriendsReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserFriendsReq.DiscardUnknown(m) } -func (x *GetUserFriendsReq) GetOperationID() string { - if x != nil { - return x.OperationID +var xxx_messageInfo_GetUserFriendsReq proto.InternalMessageInfo + +func (m *GetUserFriendsReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *GetUserFriendsReq) GetUserID() string { - if x != nil { - return x.UserID +func (m *GetUserFriendsReq) GetUserID() string { + if m != nil { + return m.UserID } return "" } -func (x *GetUserFriendsReq) GetFriendUserID() string { - if x != nil { - return x.FriendUserID +func (m *GetUserFriendsReq) GetFriendUserID() string { + if m != nil { + return m.FriendUserID } return "" } -func (x *GetUserFriendsReq) GetFriendUserName() string { - if x != nil { - return x.FriendUserName +func (m *GetUserFriendsReq) GetFriendUserName() string { + if m != nil { + return m.FriendUserName } return "" } -func (x *GetUserFriendsReq) GetPagination() *sdk_ws.RequestPagination { - if x != nil { - return x.Pagination +func (m *GetUserFriendsReq) GetPagination() *sdk_ws.RequestPagination { + if m != nil { + return m.Pagination } return nil } type GetUserFriendsResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` - FriendInfoList []*sdk_ws.FriendInfo `protobuf:"bytes,2,rep,name=friendInfoList,proto3" json:"friendInfoList,omitempty"` - FriendNums int32 `protobuf:"varint,3,opt,name=friendNums,proto3" json:"friendNums,omitempty"` - CommonResp *CommonResp `protobuf:"bytes,4,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,1,opt,name=pagination" json:"pagination,omitempty"` + FriendInfoList []*sdk_ws.FriendInfo `protobuf:"bytes,2,rep,name=friendInfoList" json:"friendInfoList,omitempty"` + FriendNums int32 `protobuf:"varint,3,opt,name=friendNums" json:"friendNums,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,4,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetUserFriendsResp) Reset() { - *x = GetUserFriendsResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetUserFriendsResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUserFriendsResp) ProtoMessage() {} - -func (x *GetUserFriendsResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUserFriendsResp.ProtoReflect.Descriptor instead. +func (m *GetUserFriendsResp) Reset() { *m = GetUserFriendsResp{} } +func (m *GetUserFriendsResp) String() string { return proto.CompactTextString(m) } +func (*GetUserFriendsResp) ProtoMessage() {} func (*GetUserFriendsResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{49} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{51} +} +func (m *GetUserFriendsResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserFriendsResp.Unmarshal(m, b) +} +func (m *GetUserFriendsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserFriendsResp.Marshal(b, m, deterministic) +} +func (dst *GetUserFriendsResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserFriendsResp.Merge(dst, src) +} +func (m *GetUserFriendsResp) XXX_Size() int { + return xxx_messageInfo_GetUserFriendsResp.Size(m) +} +func (m *GetUserFriendsResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserFriendsResp.DiscardUnknown(m) } -func (x *GetUserFriendsResp) GetPagination() *sdk_ws.ResponsePagination { - if x != nil { - return x.Pagination +var xxx_messageInfo_GetUserFriendsResp proto.InternalMessageInfo + +func (m *GetUserFriendsResp) GetPagination() *sdk_ws.ResponsePagination { + if m != nil { + return m.Pagination } return nil } -func (x *GetUserFriendsResp) GetFriendInfoList() []*sdk_ws.FriendInfo { - if x != nil { - return x.FriendInfoList +func (m *GetUserFriendsResp) GetFriendInfoList() []*sdk_ws.FriendInfo { + if m != nil { + return m.FriendInfoList } return nil } -func (x *GetUserFriendsResp) GetFriendNums() int32 { - if x != nil { - return x.FriendNums +func (m *GetUserFriendsResp) GetFriendNums() int32 { + if m != nil { + return m.FriendNums } return 0 } -func (x *GetUserFriendsResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +func (m *GetUserFriendsResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } type GetUserIDByEmailAndPhoneNumberReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=operationID,proto3" json:"operationID,omitempty"` - Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` - PhoneNumber string `protobuf:"bytes,3,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + Email string `protobuf:"bytes,2,opt,name=email" json:"email,omitempty"` + PhoneNumber string `protobuf:"bytes,3,opt,name=phoneNumber" json:"phoneNumber,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetUserIDByEmailAndPhoneNumberReq) Reset() { - *x = GetUserIDByEmailAndPhoneNumberReq{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetUserIDByEmailAndPhoneNumberReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUserIDByEmailAndPhoneNumberReq) ProtoMessage() {} - -func (x *GetUserIDByEmailAndPhoneNumberReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[50] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUserIDByEmailAndPhoneNumberReq.ProtoReflect.Descriptor instead. +func (m *GetUserIDByEmailAndPhoneNumberReq) Reset() { *m = GetUserIDByEmailAndPhoneNumberReq{} } +func (m *GetUserIDByEmailAndPhoneNumberReq) String() string { return proto.CompactTextString(m) } +func (*GetUserIDByEmailAndPhoneNumberReq) ProtoMessage() {} func (*GetUserIDByEmailAndPhoneNumberReq) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{50} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{52} +} +func (m *GetUserIDByEmailAndPhoneNumberReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserIDByEmailAndPhoneNumberReq.Unmarshal(m, b) +} +func (m *GetUserIDByEmailAndPhoneNumberReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserIDByEmailAndPhoneNumberReq.Marshal(b, m, deterministic) +} +func (dst *GetUserIDByEmailAndPhoneNumberReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserIDByEmailAndPhoneNumberReq.Merge(dst, src) +} +func (m *GetUserIDByEmailAndPhoneNumberReq) XXX_Size() int { + return xxx_messageInfo_GetUserIDByEmailAndPhoneNumberReq.Size(m) +} +func (m *GetUserIDByEmailAndPhoneNumberReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserIDByEmailAndPhoneNumberReq.DiscardUnknown(m) } -func (x *GetUserIDByEmailAndPhoneNumberReq) GetOperationID() string { - if x != nil { - return x.OperationID +var xxx_messageInfo_GetUserIDByEmailAndPhoneNumberReq proto.InternalMessageInfo + +func (m *GetUserIDByEmailAndPhoneNumberReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *GetUserIDByEmailAndPhoneNumberReq) GetEmail() string { - if x != nil { - return x.Email +func (m *GetUserIDByEmailAndPhoneNumberReq) GetEmail() string { + if m != nil { + return m.Email } return "" } -func (x *GetUserIDByEmailAndPhoneNumberReq) GetPhoneNumber() string { - if x != nil { - return x.PhoneNumber +func (m *GetUserIDByEmailAndPhoneNumberReq) GetPhoneNumber() string { + if m != nil { + return m.PhoneNumber } return "" } type GetUserIDByEmailAndPhoneNumberResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserIDList []string `protobuf:"bytes,1,rep,name=userIDList,proto3" json:"userIDList,omitempty"` - CommonResp *CommonResp `protobuf:"bytes,2,opt,name=commonResp,proto3" json:"commonResp,omitempty"` + UserIDList []string `protobuf:"bytes,1,rep,name=userIDList" json:"userIDList,omitempty"` + CommonResp *CommonResp `protobuf:"bytes,2,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetUserIDByEmailAndPhoneNumberResp) Reset() { - *x = GetUserIDByEmailAndPhoneNumberResp{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_cms_admin_cms_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetUserIDByEmailAndPhoneNumberResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUserIDByEmailAndPhoneNumberResp) ProtoMessage() {} - -func (x *GetUserIDByEmailAndPhoneNumberResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_cms_admin_cms_proto_msgTypes[51] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUserIDByEmailAndPhoneNumberResp.ProtoReflect.Descriptor instead. +func (m *GetUserIDByEmailAndPhoneNumberResp) Reset() { *m = GetUserIDByEmailAndPhoneNumberResp{} } +func (m *GetUserIDByEmailAndPhoneNumberResp) String() string { return proto.CompactTextString(m) } +func (*GetUserIDByEmailAndPhoneNumberResp) ProtoMessage() {} func (*GetUserIDByEmailAndPhoneNumberResp) Descriptor() ([]byte, []int) { - return file_admin_cms_admin_cms_proto_rawDescGZIP(), []int{51} + return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{53} +} +func (m *GetUserIDByEmailAndPhoneNumberResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserIDByEmailAndPhoneNumberResp.Unmarshal(m, b) +} +func (m *GetUserIDByEmailAndPhoneNumberResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserIDByEmailAndPhoneNumberResp.Marshal(b, m, deterministic) +} +func (dst *GetUserIDByEmailAndPhoneNumberResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserIDByEmailAndPhoneNumberResp.Merge(dst, src) +} +func (m *GetUserIDByEmailAndPhoneNumberResp) XXX_Size() int { + return xxx_messageInfo_GetUserIDByEmailAndPhoneNumberResp.Size(m) +} +func (m *GetUserIDByEmailAndPhoneNumberResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserIDByEmailAndPhoneNumberResp.DiscardUnknown(m) } -func (x *GetUserIDByEmailAndPhoneNumberResp) GetUserIDList() []string { - if x != nil { - return x.UserIDList +var xxx_messageInfo_GetUserIDByEmailAndPhoneNumberResp proto.InternalMessageInfo + +func (m *GetUserIDByEmailAndPhoneNumberResp) GetUserIDList() []string { + if m != nil { + return m.UserIDList } return nil } -func (x *GetUserIDByEmailAndPhoneNumberResp) GetCommonResp() *CommonResp { - if x != nil { - return x.CommonResp +func (m *GetUserIDByEmailAndPhoneNumberResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp } return nil } -var File_admin_cms_admin_cms_proto protoreflect.FileDescriptor - -var file_admin_cms_admin_cms_proto_rawDesc = []byte{ - 0x0a, 0x19, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2f, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x1a, 0x28, 0x4f, 0x70, 0x65, 0x6e, 0x2d, 0x49, 0x4d, 0x2d, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x73, 0x64, 0x6b, 0x5f, 0x77, 0x73, 0x2f, 0x77, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0x3e, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, - 0x0a, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x4d, - 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, - 0x22, 0x63, 0x0a, 0x0d, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, - 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x44, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x0e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, - 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, - 0x65, 0x55, 0x52, 0x4c, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, - 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x65, 0x0a, 0x21, 0x41, - 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, - 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x4c, 0x69, - 0x73, 0x74, 0x22, 0x5b, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x86, 0x01, 0x0a, 0x24, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, - 0x44, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x5e, 0x0a, 0x25, 0x52, 0x65, 0x64, 0x75, - 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, - 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, - 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8b, 0x01, 0x0a, 0x21, 0x47, 0x65, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x46, - 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x20, - 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, - 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, - 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe3, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3f, 0x0a, - 0x0c, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x45, - 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa2, 0x02, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, - 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, - 0x64, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x49, - 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6e, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x22, 0xaf, 0x04, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x12, 0x20, 0x0a, - 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x12, - 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x49, 0x44, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x49, - 0x44, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x63, - 0x76, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, - 0x44, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x72, - 0x65, 0x63, 0x76, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x76, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x2a, 0x0a, 0x10, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x73, 0x65, 0x6e, 0x64, 0x65, - 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x73, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x61, 0x63, - 0x65, 0x55, 0x52, 0x4c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x6e, 0x64, - 0x65, 0x72, 0x46, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, - 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x46, - 0x72, 0x6f, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x65, 0x78, 0x22, 0xe1, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4c, - 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x74, 0x4c, - 0x6f, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x08, 0x63, - 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, - 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x4e, 0x75, 0x6d, - 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x33, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, - 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x22, 0x74, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, - 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, - 0x63, 0x6d, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, - 0x71, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, - 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x44, 0x22, 0x5e, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, - 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4e, - 0x75, 0x6d, 0x22, 0x75, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, - 0x6d, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x52, 0x05, 0x55, 0x73, 0x65, - 0x72, 0x73, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, - 0x6d, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x75, 0x0a, 0x11, 0x47, 0x65, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x3e, - 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, - 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x52, - 0x0d, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x12, 0x20, - 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, - 0x22, 0x9a, 0x01, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, - 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x79, 0x0a, - 0x12, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x06, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x52, 0x06, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, - 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x33, 0x0a, 0x0b, 0x44, 0x61, 0x74, 0x65, - 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, - 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0x7b, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3e, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, - 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x52, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0xc1, 0x02, 0x0a, 0x18, 0x47, - 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x11, 0x50, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x11, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x12, - 0x4c, 0x0a, 0x15, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x4e, - 0x75, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x15, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x48, 0x0a, - 0x13, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, - 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x13, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x79, - 0x0a, 0x15, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3e, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x52, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0xb3, 0x02, 0x0a, 0x16, 0x47, 0x65, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x10, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, - 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x75, 0x6d, - 0x12, 0x24, 0x0a, 0x0d, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x75, - 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x4a, 0x0a, 0x14, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, - 0x73, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, - 0x2e, 0x44, 0x61, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x14, 0x49, 0x6e, - 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x75, 0x6d, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x44, 0x0a, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x4e, 0x75, - 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x78, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3e, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x52, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x96, 0x03, 0x0a, 0x15, 0x47, 0x65, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x0f, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x55, - 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x49, 0x6e, - 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x24, 0x0a, - 0x0d, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, - 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x48, 0x0a, 0x13, 0x49, 0x6e, 0x63, 0x72, 0x65, - 0x61, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, - 0x2e, 0x44, 0x61, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x13, 0x49, 0x6e, - 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x44, 0x0a, 0x11, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4e, - 0x75, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x4e, 0x75, 0x6d, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x11, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x44, 0x61, - 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x10, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x71, 0x0a, 0x19, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, - 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, - 0x6f, 0x64, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x6f, - 0x64, 0x65, 0x4e, 0x75, 0x6d, 0x22, 0x53, 0x0a, 0x1a, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, - 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xab, 0x01, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, - 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa4, 0x01, 0x0a, 0x0e, 0x69, 0x6e, 0x76, - 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x69, - 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, - 0xdb, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x0f, 0x69, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, - 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0f, - 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, - 0x45, 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x50, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x46, 0x0a, - 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x50, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x49, 0x50, 0x22, 0xb6, 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, - 0x50, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x50, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x50, 0x12, 0x20, 0x0a, - 0x0b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, - 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x44, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x5f, - 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x12, - 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, - 0x50, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, - 0x47, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, - 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x44, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x50, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x50, 0x22, 0x4a, - 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, - 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x56, 0x0a, 0x1a, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x22, 0x55, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x50, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x1b, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x0c, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x62, 0x0a, 0x16, - 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, - 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, - 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x50, - 0x22, 0x50, 0x0a, 0x17, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x35, 0x0a, 0x0a, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x60, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x49, 0x50, 0x22, 0x4e, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x35, 0x0a, - 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x3a, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x49, 0x6e, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12, 0x20, - 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, - 0x22, 0x50, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x69, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x35, 0x0a, 0x0a, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x64, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, - 0x6e, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x28, - 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x61, 0x67, 0x65, 0x55, 0x52, - 0x4c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x50, 0x61, 0x67, 0x65, 0x55, 0x52, 0x4c, 0x22, 0x50, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, - 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xdf, 0x01, 0x0a, 0x11, 0x47, - 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, - 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x26, - 0x0a, 0x0e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf9, 0x01, 0x0a, - 0x12, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0e, 0x66, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x0e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4e, 0x75, 0x6d, - 0x73, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, - 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7d, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x42, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6e, 0x64, 0x50, - 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, - 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, - 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x7b, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x42, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6e, 0x64, 0x50, 0x68, - 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, - 0x0a, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, - 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x32, 0x96, 0x10, 0x0a, 0x08, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x43, 0x4d, - 0x53, 0x12, 0x41, 0x0a, 0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, - 0x18, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x41, 0x64, 0x6d, 0x69, - 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x7d, 0x0a, 0x1e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, - 0x6d, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x2d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, - 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x86, 0x01, 0x0a, 0x21, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x30, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x7d, 0x0a, 0x1e, - 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, - 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x2d, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x44, 0x0a, 0x0b, 0x47, - 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x19, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, - 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, - 0x73, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x4a, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x55, 0x73, - 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, - 0x1c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, - 0x1c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5f, 0x0a, 0x14, - 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x12, 0x22, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, - 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, - 0x12, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, - 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, - 0x63, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, - 0x73, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x56, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x1f, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x65, 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, - 0x1a, 0x25, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x20, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, - 0x21, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x49, - 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x50, 0x0a, 0x0f, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x50, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, - 0x73, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x50, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, - 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x50, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x41, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x49, 0x50, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x18, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x41, - 0x64, 0x64, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x50, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4a, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x50, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, - 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x68, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x25, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, - 0x73, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x49, 0x50, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, - 0x13, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x21, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, - 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, - 0x63, 0x6d, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x56, 0x0a, 0x11, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0x1f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, - 0x71, 0x1a, 0x20, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x49, 0x6e, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x49, 0x6e, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x5c, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, - 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, - 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x49, 0x6e, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x4d, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x73, 0x12, 0x1c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, - 0x1d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x7d, - 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x42, 0x79, 0x45, 0x6d, 0x61, - 0x69, 0x6c, 0x41, 0x6e, 0x64, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x12, 0x2c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x42, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6e, 0x64, - 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x2d, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x42, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6e, 0x64, 0x50, 0x68, - 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x42, 0x27, 0x5a, - 0x25, 0x4f, 0x70, 0x65, 0x6e, 0x5f, 0x49, 0x4d, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x3b, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x5f, 0x63, 0x6d, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_admin_cms_admin_cms_proto_rawDescOnce sync.Once - file_admin_cms_admin_cms_proto_rawDescData = file_admin_cms_admin_cms_proto_rawDesc -) - -func file_admin_cms_admin_cms_proto_rawDescGZIP() []byte { - file_admin_cms_admin_cms_proto_rawDescOnce.Do(func() { - file_admin_cms_admin_cms_proto_rawDescData = protoimpl.X.CompressGZIP(file_admin_cms_admin_cms_proto_rawDescData) - }) - return file_admin_cms_admin_cms_proto_rawDescData -} - -var file_admin_cms_admin_cms_proto_msgTypes = make([]protoimpl.MessageInfo, 52) -var file_admin_cms_admin_cms_proto_goTypes = []interface{}{ - (*CommonResp)(nil), // 0: admin_cms.CommonResp - (*AdminLoginReq)(nil), // 1: admin_cms.AdminLoginReq - (*AdminLoginResp)(nil), // 2: admin_cms.AdminLoginResp - (*AddUserRegisterAddFriendIDListReq)(nil), // 3: admin_cms.AddUserRegisterAddFriendIDListReq - (*AddUserRegisterAddFriendIDListResp)(nil), // 4: admin_cms.AddUserRegisterAddFriendIDListResp - (*ReduceUserRegisterAddFriendIDListReq)(nil), // 5: admin_cms.ReduceUserRegisterAddFriendIDListReq - (*ReduceUserRegisterAddFriendIDListResp)(nil), // 6: admin_cms.ReduceUserRegisterAddFriendIDListResp - (*GetUserRegisterAddFriendIDListReq)(nil), // 7: admin_cms.GetUserRegisterAddFriendIDListReq - (*GetUserRegisterAddFriendIDListResp)(nil), // 8: admin_cms.GetUserRegisterAddFriendIDListResp - (*GetChatLogsReq)(nil), // 9: admin_cms.GetChatLogsReq - (*ChatLog)(nil), // 10: admin_cms.ChatLog - (*GetChatLogsResp)(nil), // 11: admin_cms.GetChatLogsResp - (*StatisticsReq)(nil), // 12: admin_cms.StatisticsReq - (*GetActiveUserReq)(nil), // 13: admin_cms.GetActiveUserReq - (*UserResp)(nil), // 14: admin_cms.UserResp - (*GetActiveUserResp)(nil), // 15: admin_cms.GetActiveUserResp - (*GetActiveGroupReq)(nil), // 16: admin_cms.GetActiveGroupReq - (*GroupResp)(nil), // 17: admin_cms.GroupResp - (*GetActiveGroupResp)(nil), // 18: admin_cms.GetActiveGroupResp - (*DateNumList)(nil), // 19: admin_cms.DateNumList - (*GetMessageStatisticsReq)(nil), // 20: admin_cms.GetMessageStatisticsReq - (*GetMessageStatisticsResp)(nil), // 21: admin_cms.GetMessageStatisticsResp - (*GetGroupStatisticsReq)(nil), // 22: admin_cms.GetGroupStatisticsReq - (*GetGroupStatisticsResp)(nil), // 23: admin_cms.GetGroupStatisticsResp - (*GetUserStatisticsReq)(nil), // 24: admin_cms.GetUserStatisticsReq - (*GetUserStatisticsResp)(nil), // 25: admin_cms.GetUserStatisticsResp - (*GenerateInvitationCodeReq)(nil), // 26: admin_cms.GenerateInvitationCodeReq - (*GenerateInvitationCodeResp)(nil), // 27: admin_cms.GenerateInvitationCodeResp - (*GetInvitationCodesReq)(nil), // 28: admin_cms.GetInvitationCodesReq - (*InvitationCode)(nil), // 29: admin_cms.invitationCode - (*GetInvitationCodesResp)(nil), // 30: admin_cms.GetInvitationCodesResp - (*QueryIPRegisterReq)(nil), // 31: admin_cms.QueryIPRegisterReq - (*QueryIPRegisterResp)(nil), // 32: admin_cms.QueryIPRegisterResp - (*AddIPLimitReq)(nil), // 33: admin_cms.AddIPLimitReq - (*AddIPLimitResp)(nil), // 34: admin_cms.AddIPLimitResp - (*RemoveIPLimitReq)(nil), // 35: admin_cms.RemoveIPLimitReq - (*RemoveIPLimitResp)(nil), // 36: admin_cms.RemoveIPLimitResp - (*QueryUserIDIPLimitLoginReq)(nil), // 37: admin_cms.QueryUserIDIPLimitLoginReq - (*UserIPLimit)(nil), // 38: admin_cms.UserIPLimit - (*QueryUserIDIPLimitLoginResp)(nil), // 39: admin_cms.QueryUserIDIPLimitLoginResp - (*AddUserIPLimitLoginReq)(nil), // 40: admin_cms.AddUserIPLimitLoginReq - (*AddUserIPLimitLoginResp)(nil), // 41: admin_cms.AddUserIPLimitLoginResp - (*RemoveUserIPLimitReq)(nil), // 42: admin_cms.RemoveUserIPLimitReq - (*RemoveUserIPLimitResp)(nil), // 43: admin_cms.RemoveUserIPLimitResp - (*GetClientInitConfigReq)(nil), // 44: admin_cms.GetClientInitConfigReq - (*GetClientInitConfigResp)(nil), // 45: admin_cms.GetClientInitConfigResp - (*SetClientInitConfigReq)(nil), // 46: admin_cms.SetClientInitConfigReq - (*SetClientInitConfigResp)(nil), // 47: admin_cms.SetClientInitConfigResp - (*GetUserFriendsReq)(nil), // 48: admin_cms.GetUserFriendsReq - (*GetUserFriendsResp)(nil), // 49: admin_cms.GetUserFriendsResp - (*GetUserIDByEmailAndPhoneNumberReq)(nil), // 50: admin_cms.GetUserIDByEmailAndPhoneNumberReq - (*GetUserIDByEmailAndPhoneNumberResp)(nil), // 51: admin_cms.GetUserIDByEmailAndPhoneNumberResp - (*sdk_ws.RequestPagination)(nil), // 52: server_api_params.RequestPagination - (*sdk_ws.UserInfo)(nil), // 53: server_api_params.UserInfo - (*sdk_ws.ResponsePagination)(nil), // 54: server_api_params.ResponsePagination - (*sdk_ws.FriendInfo)(nil), // 55: server_api_params.FriendInfo -} -var file_admin_cms_admin_cms_proto_depIdxs = []int32{ - 0, // 0: admin_cms.AdminLoginResp.commonResp:type_name -> admin_cms.CommonResp - 0, // 1: admin_cms.AddUserRegisterAddFriendIDListResp.commonResp:type_name -> admin_cms.CommonResp - 0, // 2: admin_cms.ReduceUserRegisterAddFriendIDListResp.commonResp:type_name -> admin_cms.CommonResp - 52, // 3: admin_cms.GetUserRegisterAddFriendIDListReq.pagination:type_name -> server_api_params.RequestPagination - 53, // 4: admin_cms.GetUserRegisterAddFriendIDListResp.userInfoList:type_name -> server_api_params.UserInfo - 54, // 5: admin_cms.GetUserRegisterAddFriendIDListResp.pagination:type_name -> server_api_params.ResponsePagination - 0, // 6: admin_cms.GetUserRegisterAddFriendIDListResp.commonResp:type_name -> admin_cms.CommonResp - 52, // 7: admin_cms.GetChatLogsReq.pagination:type_name -> server_api_params.RequestPagination - 10, // 8: admin_cms.GetChatLogsResp.chatLogs:type_name -> admin_cms.ChatLog - 54, // 9: admin_cms.GetChatLogsResp.pagination:type_name -> server_api_params.ResponsePagination - 0, // 10: admin_cms.GetChatLogsResp.commonResp:type_name -> admin_cms.CommonResp - 12, // 11: admin_cms.GetActiveUserReq.statisticsReq:type_name -> admin_cms.StatisticsReq - 14, // 12: admin_cms.GetActiveUserResp.Users:type_name -> admin_cms.UserResp - 0, // 13: admin_cms.GetActiveUserResp.commonResp:type_name -> admin_cms.CommonResp - 12, // 14: admin_cms.GetActiveGroupReq.statisticsReq:type_name -> admin_cms.StatisticsReq - 0, // 15: admin_cms.GroupResp.commonResp:type_name -> admin_cms.CommonResp - 17, // 16: admin_cms.GetActiveGroupResp.Groups:type_name -> admin_cms.GroupResp - 0, // 17: admin_cms.GetActiveGroupResp.commonResp:type_name -> admin_cms.CommonResp - 12, // 18: admin_cms.GetMessageStatisticsReq.StatisticsReq:type_name -> admin_cms.StatisticsReq - 19, // 19: admin_cms.GetMessageStatisticsResp.PrivateMessageNumList:type_name -> admin_cms.DateNumList - 19, // 20: admin_cms.GetMessageStatisticsResp.GroupMessageNumList:type_name -> admin_cms.DateNumList - 0, // 21: admin_cms.GetMessageStatisticsResp.commonResp:type_name -> admin_cms.CommonResp - 12, // 22: admin_cms.GetGroupStatisticsReq.StatisticsReq:type_name -> admin_cms.StatisticsReq - 19, // 23: admin_cms.GetGroupStatisticsResp.IncreaseGroupNumList:type_name -> admin_cms.DateNumList - 19, // 24: admin_cms.GetGroupStatisticsResp.TotalGroupNumList:type_name -> admin_cms.DateNumList - 0, // 25: admin_cms.GetGroupStatisticsResp.commonResp:type_name -> admin_cms.CommonResp - 12, // 26: admin_cms.GetUserStatisticsReq.StatisticsReq:type_name -> admin_cms.StatisticsReq - 19, // 27: admin_cms.GetUserStatisticsResp.IncreaseUserNumList:type_name -> admin_cms.DateNumList - 19, // 28: admin_cms.GetUserStatisticsResp.ActiveUserNumList:type_name -> admin_cms.DateNumList - 19, // 29: admin_cms.GetUserStatisticsResp.TotalUserNumList:type_name -> admin_cms.DateNumList - 0, // 30: admin_cms.GetUserStatisticsResp.commonResp:type_name -> admin_cms.CommonResp - 0, // 31: admin_cms.GenerateInvitationCodeResp.commonResp:type_name -> admin_cms.CommonResp - 52, // 32: admin_cms.GetInvitationCodesReq.pagination:type_name -> server_api_params.RequestPagination - 29, // 33: admin_cms.GetInvitationCodesResp.invitationCodes:type_name -> admin_cms.invitationCode - 54, // 34: admin_cms.GetInvitationCodesResp.Pagination:type_name -> server_api_params.ResponsePagination - 0, // 35: admin_cms.GetInvitationCodesResp.commonResp:type_name -> admin_cms.CommonResp - 0, // 36: admin_cms.QueryIPRegisterResp.commonResp:type_name -> admin_cms.CommonResp - 0, // 37: admin_cms.AddIPLimitResp.commonResp:type_name -> admin_cms.CommonResp - 0, // 38: admin_cms.RemoveIPLimitResp.commonResp:type_name -> admin_cms.CommonResp - 38, // 39: admin_cms.QueryUserIDIPLimitLoginResp.UserIPLimits:type_name -> admin_cms.UserIPLimit - 0, // 40: admin_cms.QueryUserIDIPLimitLoginResp.commonResp:type_name -> admin_cms.CommonResp - 0, // 41: admin_cms.AddUserIPLimitLoginResp.commonResp:type_name -> admin_cms.CommonResp - 0, // 42: admin_cms.RemoveUserIPLimitResp.commonResp:type_name -> admin_cms.CommonResp - 0, // 43: admin_cms.GetClientInitConfigResp.commonResp:type_name -> admin_cms.CommonResp - 0, // 44: admin_cms.SetClientInitConfigResp.commonResp:type_name -> admin_cms.CommonResp - 52, // 45: admin_cms.GetUserFriendsReq.pagination:type_name -> server_api_params.RequestPagination - 54, // 46: admin_cms.GetUserFriendsResp.pagination:type_name -> server_api_params.ResponsePagination - 55, // 47: admin_cms.GetUserFriendsResp.friendInfoList:type_name -> server_api_params.FriendInfo - 0, // 48: admin_cms.GetUserFriendsResp.commonResp:type_name -> admin_cms.CommonResp - 0, // 49: admin_cms.GetUserIDByEmailAndPhoneNumberResp.commonResp:type_name -> admin_cms.CommonResp - 1, // 50: admin_cms.adminCMS.AdminLogin:input_type -> admin_cms.AdminLoginReq - 3, // 51: admin_cms.adminCMS.AddUserRegisterAddFriendIDList:input_type -> admin_cms.AddUserRegisterAddFriendIDListReq - 5, // 52: admin_cms.adminCMS.ReduceUserRegisterAddFriendIDList:input_type -> admin_cms.ReduceUserRegisterAddFriendIDListReq - 7, // 53: admin_cms.adminCMS.GetUserRegisterAddFriendIDList:input_type -> admin_cms.GetUserRegisterAddFriendIDListReq - 9, // 54: admin_cms.adminCMS.GetChatLogs:input_type -> admin_cms.GetChatLogsReq - 13, // 55: admin_cms.adminCMS.GetActiveUser:input_type -> admin_cms.GetActiveUserReq - 16, // 56: admin_cms.adminCMS.GetActiveGroup:input_type -> admin_cms.GetActiveGroupReq - 20, // 57: admin_cms.adminCMS.GetMessageStatistics:input_type -> admin_cms.GetMessageStatisticsReq - 22, // 58: admin_cms.adminCMS.GetGroupStatistics:input_type -> admin_cms.GetGroupStatisticsReq - 24, // 59: admin_cms.adminCMS.GetUserStatistics:input_type -> admin_cms.GetUserStatisticsReq - 26, // 60: admin_cms.adminCMS.GenerateInvitationCode:input_type -> admin_cms.GenerateInvitationCodeReq - 28, // 61: admin_cms.adminCMS.GetInvitationCodes:input_type -> admin_cms.GetInvitationCodesReq - 31, // 62: admin_cms.adminCMS.QueryIPRegister:input_type -> admin_cms.QueryIPRegisterReq - 33, // 63: admin_cms.adminCMS.AddIPLimit:input_type -> admin_cms.AddIPLimitReq - 35, // 64: admin_cms.adminCMS.RemoveIPLimit:input_type -> admin_cms.RemoveIPLimitReq - 37, // 65: admin_cms.adminCMS.QueryUserIDIPLimitLogin:input_type -> admin_cms.QueryUserIDIPLimitLoginReq - 40, // 66: admin_cms.adminCMS.AddUserIPLimitLogin:input_type -> admin_cms.AddUserIPLimitLoginReq - 42, // 67: admin_cms.adminCMS.RemoveUserIPLimit:input_type -> admin_cms.RemoveUserIPLimitReq - 44, // 68: admin_cms.adminCMS.GetClientInitConfig:input_type -> admin_cms.GetClientInitConfigReq - 46, // 69: admin_cms.adminCMS.SetClientInitConfig:input_type -> admin_cms.SetClientInitConfigReq - 48, // 70: admin_cms.adminCMS.GetUserFriends:input_type -> admin_cms.GetUserFriendsReq - 50, // 71: admin_cms.adminCMS.GetUserIDByEmailAndPhoneNumber:input_type -> admin_cms.GetUserIDByEmailAndPhoneNumberReq - 2, // 72: admin_cms.adminCMS.AdminLogin:output_type -> admin_cms.AdminLoginResp - 4, // 73: admin_cms.adminCMS.AddUserRegisterAddFriendIDList:output_type -> admin_cms.AddUserRegisterAddFriendIDListResp - 6, // 74: admin_cms.adminCMS.ReduceUserRegisterAddFriendIDList:output_type -> admin_cms.ReduceUserRegisterAddFriendIDListResp - 8, // 75: admin_cms.adminCMS.GetUserRegisterAddFriendIDList:output_type -> admin_cms.GetUserRegisterAddFriendIDListResp - 11, // 76: admin_cms.adminCMS.GetChatLogs:output_type -> admin_cms.GetChatLogsResp - 15, // 77: admin_cms.adminCMS.GetActiveUser:output_type -> admin_cms.GetActiveUserResp - 18, // 78: admin_cms.adminCMS.GetActiveGroup:output_type -> admin_cms.GetActiveGroupResp - 21, // 79: admin_cms.adminCMS.GetMessageStatistics:output_type -> admin_cms.GetMessageStatisticsResp - 23, // 80: admin_cms.adminCMS.GetGroupStatistics:output_type -> admin_cms.GetGroupStatisticsResp - 25, // 81: admin_cms.adminCMS.GetUserStatistics:output_type -> admin_cms.GetUserStatisticsResp - 27, // 82: admin_cms.adminCMS.GenerateInvitationCode:output_type -> admin_cms.GenerateInvitationCodeResp - 30, // 83: admin_cms.adminCMS.GetInvitationCodes:output_type -> admin_cms.GetInvitationCodesResp - 32, // 84: admin_cms.adminCMS.QueryIPRegister:output_type -> admin_cms.QueryIPRegisterResp - 34, // 85: admin_cms.adminCMS.AddIPLimit:output_type -> admin_cms.AddIPLimitResp - 36, // 86: admin_cms.adminCMS.RemoveIPLimit:output_type -> admin_cms.RemoveIPLimitResp - 39, // 87: admin_cms.adminCMS.QueryUserIDIPLimitLogin:output_type -> admin_cms.QueryUserIDIPLimitLoginResp - 41, // 88: admin_cms.adminCMS.AddUserIPLimitLogin:output_type -> admin_cms.AddUserIPLimitLoginResp - 43, // 89: admin_cms.adminCMS.RemoveUserIPLimit:output_type -> admin_cms.RemoveUserIPLimitResp - 45, // 90: admin_cms.adminCMS.GetClientInitConfig:output_type -> admin_cms.GetClientInitConfigResp - 47, // 91: admin_cms.adminCMS.SetClientInitConfig:output_type -> admin_cms.SetClientInitConfigResp - 49, // 92: admin_cms.adminCMS.GetUserFriends:output_type -> admin_cms.GetUserFriendsResp - 51, // 93: admin_cms.adminCMS.GetUserIDByEmailAndPhoneNumber:output_type -> admin_cms.GetUserIDByEmailAndPhoneNumberResp - 72, // [72:94] is the sub-list for method output_type - 50, // [50:72] is the sub-list for method input_type - 50, // [50:50] is the sub-list for extension type_name - 50, // [50:50] is the sub-list for extension extendee - 0, // [0:50] is the sub-list for field type_name -} - -func init() { file_admin_cms_admin_cms_proto_init() } -func file_admin_cms_admin_cms_proto_init() { - if File_admin_cms_admin_cms_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_admin_cms_admin_cms_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommonResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdminLoginReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdminLoginResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddUserRegisterAddFriendIDListReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddUserRegisterAddFriendIDListResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReduceUserRegisterAddFriendIDListReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReduceUserRegisterAddFriendIDListResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserRegisterAddFriendIDListReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserRegisterAddFriendIDListResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetChatLogsReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChatLog); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetChatLogsResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatisticsReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetActiveUserReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetActiveUserResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetActiveGroupReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetActiveGroupResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DateNumList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMessageStatisticsReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMessageStatisticsResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetGroupStatisticsReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetGroupStatisticsResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserStatisticsReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserStatisticsResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateInvitationCodeReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateInvitationCodeResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetInvitationCodesReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InvitationCode); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetInvitationCodesResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryIPRegisterReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryIPRegisterResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddIPLimitReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddIPLimitResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveIPLimitReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveIPLimitResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryUserIDIPLimitLoginReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserIPLimit); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryUserIDIPLimitLoginResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddUserIPLimitLoginReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddUserIPLimitLoginResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveUserIPLimitReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveUserIPLimitResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetClientInitConfigReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetClientInitConfigResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetClientInitConfigReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetClientInitConfigResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserFriendsReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserFriendsResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserIDByEmailAndPhoneNumberReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_cms_admin_cms_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserIDByEmailAndPhoneNumberResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_admin_cms_admin_cms_proto_rawDesc, - NumEnums: 0, - NumMessages: 52, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_admin_cms_admin_cms_proto_goTypes, - DependencyIndexes: file_admin_cms_admin_cms_proto_depIdxs, - MessageInfos: file_admin_cms_admin_cms_proto_msgTypes, - }.Build() - File_admin_cms_admin_cms_proto = out.File - file_admin_cms_admin_cms_proto_rawDesc = nil - file_admin_cms_admin_cms_proto_goTypes = nil - file_admin_cms_admin_cms_proto_depIdxs = nil +func init() { + proto.RegisterType((*CommonResp)(nil), "admin_cms.CommonResp") + proto.RegisterType((*AdminLoginReq)(nil), "admin_cms.AdminLoginReq") + proto.RegisterType((*AdminLoginResp)(nil), "admin_cms.AdminLoginResp") + proto.RegisterType((*GetUserTokenReq)(nil), "admin_cms.GetUserTokenReq") + proto.RegisterType((*GetUserTokenResp)(nil), "admin_cms.GetUserTokenResp") + proto.RegisterType((*AddUserRegisterAddFriendIDListReq)(nil), "admin_cms.AddUserRegisterAddFriendIDListReq") + proto.RegisterType((*AddUserRegisterAddFriendIDListResp)(nil), "admin_cms.AddUserRegisterAddFriendIDListResp") + proto.RegisterType((*ReduceUserRegisterAddFriendIDListReq)(nil), "admin_cms.ReduceUserRegisterAddFriendIDListReq") + proto.RegisterType((*ReduceUserRegisterAddFriendIDListResp)(nil), "admin_cms.ReduceUserRegisterAddFriendIDListResp") + proto.RegisterType((*GetUserRegisterAddFriendIDListReq)(nil), "admin_cms.GetUserRegisterAddFriendIDListReq") + proto.RegisterType((*GetUserRegisterAddFriendIDListResp)(nil), "admin_cms.GetUserRegisterAddFriendIDListResp") + proto.RegisterType((*GetChatLogsReq)(nil), "admin_cms.GetChatLogsReq") + proto.RegisterType((*ChatLog)(nil), "admin_cms.ChatLog") + proto.RegisterType((*GetChatLogsResp)(nil), "admin_cms.GetChatLogsResp") + proto.RegisterType((*StatisticsReq)(nil), "admin_cms.StatisticsReq") + proto.RegisterType((*GetActiveUserReq)(nil), "admin_cms.GetActiveUserReq") + proto.RegisterType((*UserResp)(nil), "admin_cms.UserResp") + proto.RegisterType((*GetActiveUserResp)(nil), "admin_cms.GetActiveUserResp") + proto.RegisterType((*GetActiveGroupReq)(nil), "admin_cms.GetActiveGroupReq") + proto.RegisterType((*GroupResp)(nil), "admin_cms.GroupResp") + proto.RegisterType((*GetActiveGroupResp)(nil), "admin_cms.GetActiveGroupResp") + proto.RegisterType((*DateNumList)(nil), "admin_cms.DateNumList") + proto.RegisterType((*GetMessageStatisticsReq)(nil), "admin_cms.GetMessageStatisticsReq") + proto.RegisterType((*GetMessageStatisticsResp)(nil), "admin_cms.GetMessageStatisticsResp") + proto.RegisterType((*GetGroupStatisticsReq)(nil), "admin_cms.GetGroupStatisticsReq") + proto.RegisterType((*GetGroupStatisticsResp)(nil), "admin_cms.GetGroupStatisticsResp") + proto.RegisterType((*GetUserStatisticsReq)(nil), "admin_cms.GetUserStatisticsReq") + proto.RegisterType((*GetUserStatisticsResp)(nil), "admin_cms.GetUserStatisticsResp") + proto.RegisterType((*GenerateInvitationCodeReq)(nil), "admin_cms.GenerateInvitationCodeReq") + proto.RegisterType((*GenerateInvitationCodeResp)(nil), "admin_cms.GenerateInvitationCodeResp") + proto.RegisterType((*GetInvitationCodesReq)(nil), "admin_cms.GetInvitationCodesReq") + proto.RegisterType((*InvitationCode)(nil), "admin_cms.invitationCode") + proto.RegisterType((*GetInvitationCodesResp)(nil), "admin_cms.GetInvitationCodesResp") + proto.RegisterType((*QueryIPRegisterReq)(nil), "admin_cms.QueryIPRegisterReq") + proto.RegisterType((*QueryIPRegisterResp)(nil), "admin_cms.QueryIPRegisterResp") + proto.RegisterType((*AddIPLimitReq)(nil), "admin_cms.AddIPLimitReq") + proto.RegisterType((*AddIPLimitResp)(nil), "admin_cms.AddIPLimitResp") + proto.RegisterType((*RemoveIPLimitReq)(nil), "admin_cms.RemoveIPLimitReq") + proto.RegisterType((*RemoveIPLimitResp)(nil), "admin_cms.RemoveIPLimitResp") + proto.RegisterType((*QueryUserIDIPLimitLoginReq)(nil), "admin_cms.QueryUserIDIPLimitLoginReq") + proto.RegisterType((*UserIPLimit)(nil), "admin_cms.UserIPLimit") + proto.RegisterType((*QueryUserIDIPLimitLoginResp)(nil), "admin_cms.QueryUserIDIPLimitLoginResp") + proto.RegisterType((*AddUserIPLimitLoginReq)(nil), "admin_cms.AddUserIPLimitLoginReq") + proto.RegisterType((*AddUserIPLimitLoginResp)(nil), "admin_cms.AddUserIPLimitLoginResp") + proto.RegisterType((*RemoveUserIPLimitReq)(nil), "admin_cms.RemoveUserIPLimitReq") + proto.RegisterType((*RemoveUserIPLimitResp)(nil), "admin_cms.RemoveUserIPLimitResp") + proto.RegisterType((*GetClientInitConfigReq)(nil), "admin_cms.GetClientInitConfigReq") + proto.RegisterType((*GetClientInitConfigResp)(nil), "admin_cms.GetClientInitConfigResp") + proto.RegisterType((*SetClientInitConfigReq)(nil), "admin_cms.SetClientInitConfigReq") + proto.RegisterType((*SetClientInitConfigResp)(nil), "admin_cms.SetClientInitConfigResp") + proto.RegisterType((*GetUserFriendsReq)(nil), "admin_cms.GetUserFriendsReq") + proto.RegisterType((*GetUserFriendsResp)(nil), "admin_cms.GetUserFriendsResp") + proto.RegisterType((*GetUserIDByEmailAndPhoneNumberReq)(nil), "admin_cms.GetUserIDByEmailAndPhoneNumberReq") + proto.RegisterType((*GetUserIDByEmailAndPhoneNumberResp)(nil), "admin_cms.GetUserIDByEmailAndPhoneNumberResp") } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context -var _ grpc.ClientConnInterface +var _ grpc.ClientConn // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 +const _ = grpc.SupportPackageIsVersion4 + +// Client API for AdminCMS service -// AdminCMSClient is the client API for AdminCMS service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type AdminCMSClient interface { AdminLogin(ctx context.Context, in *AdminLoginReq, opts ...grpc.CallOption) (*AdminLoginResp, error) AddUserRegisterAddFriendIDList(ctx context.Context, in *AddUserRegisterAddFriendIDListReq, opts ...grpc.CallOption) (*AddUserRegisterAddFriendIDListResp, error) @@ -4780,19 +3046,20 @@ type AdminCMSClient interface { SetClientInitConfig(ctx context.Context, in *SetClientInitConfigReq, opts ...grpc.CallOption) (*SetClientInitConfigResp, error) GetUserFriends(ctx context.Context, in *GetUserFriendsReq, opts ...grpc.CallOption) (*GetUserFriendsResp, error) GetUserIDByEmailAndPhoneNumber(ctx context.Context, in *GetUserIDByEmailAndPhoneNumberReq, opts ...grpc.CallOption) (*GetUserIDByEmailAndPhoneNumberResp, error) + GetUserToken(ctx context.Context, in *GetUserTokenReq, opts ...grpc.CallOption) (*GetUserTokenResp, error) } type adminCMSClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewAdminCMSClient(cc grpc.ClientConnInterface) AdminCMSClient { +func NewAdminCMSClient(cc *grpc.ClientConn) AdminCMSClient { return &adminCMSClient{cc} } func (c *adminCMSClient) AdminLogin(ctx context.Context, in *AdminLoginReq, opts ...grpc.CallOption) (*AdminLoginResp, error) { out := new(AdminLoginResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/AdminLogin", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/AdminLogin", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4801,7 +3068,7 @@ func (c *adminCMSClient) AdminLogin(ctx context.Context, in *AdminLoginReq, opts func (c *adminCMSClient) AddUserRegisterAddFriendIDList(ctx context.Context, in *AddUserRegisterAddFriendIDListReq, opts ...grpc.CallOption) (*AddUserRegisterAddFriendIDListResp, error) { out := new(AddUserRegisterAddFriendIDListResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/AddUserRegisterAddFriendIDList", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/AddUserRegisterAddFriendIDList", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4810,7 +3077,7 @@ func (c *adminCMSClient) AddUserRegisterAddFriendIDList(ctx context.Context, in func (c *adminCMSClient) ReduceUserRegisterAddFriendIDList(ctx context.Context, in *ReduceUserRegisterAddFriendIDListReq, opts ...grpc.CallOption) (*ReduceUserRegisterAddFriendIDListResp, error) { out := new(ReduceUserRegisterAddFriendIDListResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/ReduceUserRegisterAddFriendIDList", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/ReduceUserRegisterAddFriendIDList", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4819,7 +3086,7 @@ func (c *adminCMSClient) ReduceUserRegisterAddFriendIDList(ctx context.Context, func (c *adminCMSClient) GetUserRegisterAddFriendIDList(ctx context.Context, in *GetUserRegisterAddFriendIDListReq, opts ...grpc.CallOption) (*GetUserRegisterAddFriendIDListResp, error) { out := new(GetUserRegisterAddFriendIDListResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/GetUserRegisterAddFriendIDList", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/GetUserRegisterAddFriendIDList", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4828,7 +3095,7 @@ func (c *adminCMSClient) GetUserRegisterAddFriendIDList(ctx context.Context, in func (c *adminCMSClient) GetChatLogs(ctx context.Context, in *GetChatLogsReq, opts ...grpc.CallOption) (*GetChatLogsResp, error) { out := new(GetChatLogsResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/GetChatLogs", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/GetChatLogs", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4837,7 +3104,7 @@ func (c *adminCMSClient) GetChatLogs(ctx context.Context, in *GetChatLogsReq, op func (c *adminCMSClient) GetActiveUser(ctx context.Context, in *GetActiveUserReq, opts ...grpc.CallOption) (*GetActiveUserResp, error) { out := new(GetActiveUserResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/GetActiveUser", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/GetActiveUser", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4846,7 +3113,7 @@ func (c *adminCMSClient) GetActiveUser(ctx context.Context, in *GetActiveUserReq func (c *adminCMSClient) GetActiveGroup(ctx context.Context, in *GetActiveGroupReq, opts ...grpc.CallOption) (*GetActiveGroupResp, error) { out := new(GetActiveGroupResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/GetActiveGroup", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/GetActiveGroup", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4855,7 +3122,7 @@ func (c *adminCMSClient) GetActiveGroup(ctx context.Context, in *GetActiveGroupR func (c *adminCMSClient) GetMessageStatistics(ctx context.Context, in *GetMessageStatisticsReq, opts ...grpc.CallOption) (*GetMessageStatisticsResp, error) { out := new(GetMessageStatisticsResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/GetMessageStatistics", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/GetMessageStatistics", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4864,7 +3131,7 @@ func (c *adminCMSClient) GetMessageStatistics(ctx context.Context, in *GetMessag func (c *adminCMSClient) GetGroupStatistics(ctx context.Context, in *GetGroupStatisticsReq, opts ...grpc.CallOption) (*GetGroupStatisticsResp, error) { out := new(GetGroupStatisticsResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/GetGroupStatistics", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/GetGroupStatistics", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4873,7 +3140,7 @@ func (c *adminCMSClient) GetGroupStatistics(ctx context.Context, in *GetGroupSta func (c *adminCMSClient) GetUserStatistics(ctx context.Context, in *GetUserStatisticsReq, opts ...grpc.CallOption) (*GetUserStatisticsResp, error) { out := new(GetUserStatisticsResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/GetUserStatistics", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/GetUserStatistics", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4882,7 +3149,7 @@ func (c *adminCMSClient) GetUserStatistics(ctx context.Context, in *GetUserStati func (c *adminCMSClient) GenerateInvitationCode(ctx context.Context, in *GenerateInvitationCodeReq, opts ...grpc.CallOption) (*GenerateInvitationCodeResp, error) { out := new(GenerateInvitationCodeResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/GenerateInvitationCode", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/GenerateInvitationCode", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4891,7 +3158,7 @@ func (c *adminCMSClient) GenerateInvitationCode(ctx context.Context, in *Generat func (c *adminCMSClient) GetInvitationCodes(ctx context.Context, in *GetInvitationCodesReq, opts ...grpc.CallOption) (*GetInvitationCodesResp, error) { out := new(GetInvitationCodesResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/GetInvitationCodes", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/GetInvitationCodes", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4900,7 +3167,7 @@ func (c *adminCMSClient) GetInvitationCodes(ctx context.Context, in *GetInvitati func (c *adminCMSClient) QueryIPRegister(ctx context.Context, in *QueryIPRegisterReq, opts ...grpc.CallOption) (*QueryIPRegisterResp, error) { out := new(QueryIPRegisterResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/QueryIPRegister", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/QueryIPRegister", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4909,7 +3176,7 @@ func (c *adminCMSClient) QueryIPRegister(ctx context.Context, in *QueryIPRegiste func (c *adminCMSClient) AddIPLimit(ctx context.Context, in *AddIPLimitReq, opts ...grpc.CallOption) (*AddIPLimitResp, error) { out := new(AddIPLimitResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/AddIPLimit", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/AddIPLimit", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4918,7 +3185,7 @@ func (c *adminCMSClient) AddIPLimit(ctx context.Context, in *AddIPLimitReq, opts func (c *adminCMSClient) RemoveIPLimit(ctx context.Context, in *RemoveIPLimitReq, opts ...grpc.CallOption) (*RemoveIPLimitResp, error) { out := new(RemoveIPLimitResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/RemoveIPLimit", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/RemoveIPLimit", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4927,7 +3194,7 @@ func (c *adminCMSClient) RemoveIPLimit(ctx context.Context, in *RemoveIPLimitReq func (c *adminCMSClient) QueryUserIDIPLimitLogin(ctx context.Context, in *QueryUserIDIPLimitLoginReq, opts ...grpc.CallOption) (*QueryUserIDIPLimitLoginResp, error) { out := new(QueryUserIDIPLimitLoginResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/QueryUserIDIPLimitLogin", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/QueryUserIDIPLimitLogin", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4936,7 +3203,7 @@ func (c *adminCMSClient) QueryUserIDIPLimitLogin(ctx context.Context, in *QueryU func (c *adminCMSClient) AddUserIPLimitLogin(ctx context.Context, in *AddUserIPLimitLoginReq, opts ...grpc.CallOption) (*AddUserIPLimitLoginResp, error) { out := new(AddUserIPLimitLoginResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/AddUserIPLimitLogin", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/AddUserIPLimitLogin", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4945,7 +3212,7 @@ func (c *adminCMSClient) AddUserIPLimitLogin(ctx context.Context, in *AddUserIPL func (c *adminCMSClient) RemoveUserIPLimit(ctx context.Context, in *RemoveUserIPLimitReq, opts ...grpc.CallOption) (*RemoveUserIPLimitResp, error) { out := new(RemoveUserIPLimitResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/RemoveUserIPLimit", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/RemoveUserIPLimit", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4954,7 +3221,7 @@ func (c *adminCMSClient) RemoveUserIPLimit(ctx context.Context, in *RemoveUserIP func (c *adminCMSClient) GetClientInitConfig(ctx context.Context, in *GetClientInitConfigReq, opts ...grpc.CallOption) (*GetClientInitConfigResp, error) { out := new(GetClientInitConfigResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/GetClientInitConfig", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/GetClientInitConfig", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4963,7 +3230,7 @@ func (c *adminCMSClient) GetClientInitConfig(ctx context.Context, in *GetClientI func (c *adminCMSClient) SetClientInitConfig(ctx context.Context, in *SetClientInitConfigReq, opts ...grpc.CallOption) (*SetClientInitConfigResp, error) { out := new(SetClientInitConfigResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/SetClientInitConfig", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/SetClientInitConfig", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4972,7 +3239,7 @@ func (c *adminCMSClient) SetClientInitConfig(ctx context.Context, in *SetClientI func (c *adminCMSClient) GetUserFriends(ctx context.Context, in *GetUserFriendsReq, opts ...grpc.CallOption) (*GetUserFriendsResp, error) { out := new(GetUserFriendsResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/GetUserFriends", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/GetUserFriends", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -4981,14 +3248,24 @@ func (c *adminCMSClient) GetUserFriends(ctx context.Context, in *GetUserFriendsR func (c *adminCMSClient) GetUserIDByEmailAndPhoneNumber(ctx context.Context, in *GetUserIDByEmailAndPhoneNumberReq, opts ...grpc.CallOption) (*GetUserIDByEmailAndPhoneNumberResp, error) { out := new(GetUserIDByEmailAndPhoneNumberResp) - err := c.cc.Invoke(ctx, "/admin_cms.adminCMS/GetUserIDByEmailAndPhoneNumber", in, out, opts...) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/GetUserIDByEmailAndPhoneNumber", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// AdminCMSServer is the server API for AdminCMS service. +func (c *adminCMSClient) GetUserToken(ctx context.Context, in *GetUserTokenReq, opts ...grpc.CallOption) (*GetUserTokenResp, error) { + out := new(GetUserTokenResp) + err := grpc.Invoke(ctx, "/admin_cms.adminCMS/GetUserToken", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for AdminCMS service + type AdminCMSServer interface { AdminLogin(context.Context, *AdminLoginReq) (*AdminLoginResp, error) AddUserRegisterAddFriendIDList(context.Context, *AddUserRegisterAddFriendIDListReq) (*AddUserRegisterAddFriendIDListResp, error) @@ -5012,77 +3289,7 @@ type AdminCMSServer interface { SetClientInitConfig(context.Context, *SetClientInitConfigReq) (*SetClientInitConfigResp, error) GetUserFriends(context.Context, *GetUserFriendsReq) (*GetUserFriendsResp, error) GetUserIDByEmailAndPhoneNumber(context.Context, *GetUserIDByEmailAndPhoneNumberReq) (*GetUserIDByEmailAndPhoneNumberResp, error) -} - -// UnimplementedAdminCMSServer can be embedded to have forward compatible implementations. -type UnimplementedAdminCMSServer struct { -} - -func (*UnimplementedAdminCMSServer) AdminLogin(context.Context, *AdminLoginReq) (*AdminLoginResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method AdminLogin not implemented") -} -func (*UnimplementedAdminCMSServer) AddUserRegisterAddFriendIDList(context.Context, *AddUserRegisterAddFriendIDListReq) (*AddUserRegisterAddFriendIDListResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddUserRegisterAddFriendIDList not implemented") -} -func (*UnimplementedAdminCMSServer) ReduceUserRegisterAddFriendIDList(context.Context, *ReduceUserRegisterAddFriendIDListReq) (*ReduceUserRegisterAddFriendIDListResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method ReduceUserRegisterAddFriendIDList not implemented") -} -func (*UnimplementedAdminCMSServer) GetUserRegisterAddFriendIDList(context.Context, *GetUserRegisterAddFriendIDListReq) (*GetUserRegisterAddFriendIDListResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetUserRegisterAddFriendIDList not implemented") -} -func (*UnimplementedAdminCMSServer) GetChatLogs(context.Context, *GetChatLogsReq) (*GetChatLogsResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetChatLogs not implemented") -} -func (*UnimplementedAdminCMSServer) GetActiveUser(context.Context, *GetActiveUserReq) (*GetActiveUserResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetActiveUser not implemented") -} -func (*UnimplementedAdminCMSServer) GetActiveGroup(context.Context, *GetActiveGroupReq) (*GetActiveGroupResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetActiveGroup not implemented") -} -func (*UnimplementedAdminCMSServer) GetMessageStatistics(context.Context, *GetMessageStatisticsReq) (*GetMessageStatisticsResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetMessageStatistics not implemented") -} -func (*UnimplementedAdminCMSServer) GetGroupStatistics(context.Context, *GetGroupStatisticsReq) (*GetGroupStatisticsResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetGroupStatistics not implemented") -} -func (*UnimplementedAdminCMSServer) GetUserStatistics(context.Context, *GetUserStatisticsReq) (*GetUserStatisticsResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetUserStatistics not implemented") -} -func (*UnimplementedAdminCMSServer) GenerateInvitationCode(context.Context, *GenerateInvitationCodeReq) (*GenerateInvitationCodeResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method GenerateInvitationCode not implemented") -} -func (*UnimplementedAdminCMSServer) GetInvitationCodes(context.Context, *GetInvitationCodesReq) (*GetInvitationCodesResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetInvitationCodes not implemented") -} -func (*UnimplementedAdminCMSServer) QueryIPRegister(context.Context, *QueryIPRegisterReq) (*QueryIPRegisterResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method QueryIPRegister not implemented") -} -func (*UnimplementedAdminCMSServer) AddIPLimit(context.Context, *AddIPLimitReq) (*AddIPLimitResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddIPLimit not implemented") -} -func (*UnimplementedAdminCMSServer) RemoveIPLimit(context.Context, *RemoveIPLimitReq) (*RemoveIPLimitResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method RemoveIPLimit not implemented") -} -func (*UnimplementedAdminCMSServer) QueryUserIDIPLimitLogin(context.Context, *QueryUserIDIPLimitLoginReq) (*QueryUserIDIPLimitLoginResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method QueryUserIDIPLimitLogin not implemented") -} -func (*UnimplementedAdminCMSServer) AddUserIPLimitLogin(context.Context, *AddUserIPLimitLoginReq) (*AddUserIPLimitLoginResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddUserIPLimitLogin not implemented") -} -func (*UnimplementedAdminCMSServer) RemoveUserIPLimit(context.Context, *RemoveUserIPLimitReq) (*RemoveUserIPLimitResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method RemoveUserIPLimit not implemented") -} -func (*UnimplementedAdminCMSServer) GetClientInitConfig(context.Context, *GetClientInitConfigReq) (*GetClientInitConfigResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetClientInitConfig not implemented") -} -func (*UnimplementedAdminCMSServer) SetClientInitConfig(context.Context, *SetClientInitConfigReq) (*SetClientInitConfigResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method SetClientInitConfig not implemented") -} -func (*UnimplementedAdminCMSServer) GetUserFriends(context.Context, *GetUserFriendsReq) (*GetUserFriendsResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetUserFriends not implemented") -} -func (*UnimplementedAdminCMSServer) GetUserIDByEmailAndPhoneNumber(context.Context, *GetUserIDByEmailAndPhoneNumberReq) (*GetUserIDByEmailAndPhoneNumberResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetUserIDByEmailAndPhoneNumber not implemented") + GetUserToken(context.Context, *GetUserTokenReq) (*GetUserTokenResp, error) } func RegisterAdminCMSServer(s *grpc.Server, srv AdminCMSServer) { @@ -5485,6 +3692,24 @@ func _AdminCMS_GetUserIDByEmailAndPhoneNumber_Handler(srv interface{}, ctx conte return interceptor(ctx, in, info, handler) } +func _AdminCMS_GetUserToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserTokenReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminCMSServer).GetUserToken(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/admin_cms.adminCMS/GetUserToken", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminCMSServer).GetUserToken(ctx, req.(*GetUserTokenReq)) + } + return interceptor(ctx, in, info, handler) +} + var _AdminCMS_serviceDesc = grpc.ServiceDesc{ ServiceName: "admin_cms.adminCMS", HandlerType: (*AdminCMSServer)(nil), @@ -5577,7 +3802,163 @@ var _AdminCMS_serviceDesc = grpc.ServiceDesc{ MethodName: "GetUserIDByEmailAndPhoneNumber", Handler: _AdminCMS_GetUserIDByEmailAndPhoneNumber_Handler, }, + { + MethodName: "GetUserToken", + Handler: _AdminCMS_GetUserToken_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "admin_cms/admin_cms.proto", } + +func init() { + proto.RegisterFile("admin_cms/admin_cms.proto", fileDescriptor_admin_cms_49bc09b1772ecee1) +} + +var fileDescriptor_admin_cms_49bc09b1772ecee1 = []byte{ + // 2301 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x1a, 0x4d, 0x6f, 0x1c, 0x49, + 0x55, 0x3d, 0x1f, 0xfe, 0x78, 0xfe, 0x2e, 0x3b, 0xce, 0xb8, 0xb3, 0x6b, 0xec, 0x26, 0x5e, 0x0c, + 0xda, 0xd8, 0xc8, 0x11, 0x97, 0x45, 0x0a, 0x72, 0x3c, 0xb1, 0x99, 0xc8, 0x76, 0x86, 0x9e, 0x78, + 0x25, 0x60, 0xb5, 0xa6, 0x33, 0x53, 0x9e, 0xb4, 0xec, 0xe9, 0xae, 0x74, 0xb5, 0xbd, 0xb1, 0x56, + 0x7b, 0xdd, 0x0b, 0x17, 0x24, 0x24, 0x0e, 0x9c, 0xb9, 0x71, 0xe0, 0x80, 0xc4, 0x11, 0x89, 0xdf, + 0xc1, 0x21, 0x42, 0xfc, 0x0a, 0x6e, 0xa8, 0xaa, 0xfa, 0xa3, 0xaa, 0xba, 0x67, 0xa6, 0xd3, 0x8e, + 0x72, 0x9b, 0xf7, 0xfa, 0xd5, 0xfb, 0xae, 0x57, 0xaf, 0x5e, 0x0d, 0xac, 0x39, 0xbd, 0x81, 0xeb, + 0x9d, 0x77, 0x07, 0x74, 0x37, 0xf9, 0xb5, 0x43, 0x02, 0x3f, 0xf4, 0xd1, 0x74, 0x82, 0x30, 0xb7, + 0x5f, 0x10, 0xec, 0x3d, 0x6a, 0x9d, 0x3c, 0xea, 0xe0, 0xe0, 0x06, 0x07, 0xbb, 0xe4, 0xb2, 0xbf, + 0xcb, 0x89, 0x76, 0x69, 0xef, 0xf2, 0xfc, 0x1b, 0xba, 0xfb, 0x4d, 0xb4, 0xc8, 0x7a, 0x02, 0x70, + 0xe0, 0x0f, 0x06, 0xbe, 0x67, 0x63, 0x4a, 0x50, 0x03, 0x26, 0x71, 0x10, 0x1c, 0xf8, 0x3d, 0xdc, + 0x30, 0x36, 0x8c, 0xed, 0xba, 0x1d, 0x83, 0x68, 0x15, 0x26, 0x70, 0x10, 0x9c, 0xd0, 0x7e, 0xa3, + 0xb2, 0x61, 0x6c, 0x4f, 0xdb, 0x11, 0x64, 0x75, 0x61, 0x6e, 0x9f, 0x89, 0x3d, 0xf6, 0xfb, 0xae, + 0x67, 0xe3, 0x37, 0x68, 0x03, 0x66, 0x7c, 0x82, 0x03, 0x27, 0x74, 0x7d, 0xaf, 0xd5, 0xe4, 0x6c, + 0xa6, 0x6d, 0x19, 0xc5, 0x84, 0x70, 0x4d, 0x5b, 0xcd, 0x88, 0x57, 0x0c, 0x32, 0x21, 0x14, 0x77, + 0x03, 0x1c, 0x36, 0xaa, 0x42, 0x88, 0x80, 0xac, 0x3f, 0x1a, 0x30, 0x2f, 0x4b, 0xa1, 0x04, 0xad, + 0x40, 0x3d, 0xf4, 0x2f, 0xb1, 0x17, 0x09, 0x10, 0x00, 0x32, 0x61, 0xea, 0x9a, 0xe2, 0xe0, 0xd4, + 0x19, 0xe0, 0x88, 0x77, 0x02, 0x33, 0xb1, 0x17, 0x4e, 0x17, 0x9f, 0xd9, 0xc7, 0x11, 0xf7, 0x18, + 0x44, 0x3f, 0x03, 0xe8, 0x26, 0x3e, 0x68, 0xd4, 0x36, 0x8c, 0xed, 0x99, 0xbd, 0x7b, 0x3b, 0xa9, + 0x7b, 0x53, 0x07, 0xd9, 0x12, 0xa1, 0x75, 0x09, 0x0b, 0x47, 0x38, 0x3c, 0xa3, 0x38, 0x78, 0xc9, + 0x84, 0x17, 0x33, 0x7e, 0x15, 0x26, 0x98, 0x46, 0x89, 0xed, 0x11, 0x84, 0xd6, 0x01, 0xc8, 0x95, + 0x13, 0x5e, 0xf8, 0xc1, 0xa0, 0xd5, 0xe4, 0x0a, 0xd6, 0x6d, 0x09, 0x63, 0xdd, 0xc2, 0xa2, 0x2a, + 0x8c, 0x12, 0x4d, 0x6f, 0xa3, 0xa0, 0xde, 0xa9, 0xeb, 0x2a, 0xb2, 0xeb, 0x58, 0xe8, 0xdf, 0x92, + 0x97, 0xee, 0x00, 0x73, 0xe9, 0x55, 0x3b, 0x06, 0x2d, 0x0c, 0x9b, 0xfb, 0xbd, 0x1e, 0x13, 0x6d, + 0xe3, 0xbe, 0x4b, 0x43, 0x1c, 0xec, 0xf7, 0x7a, 0x87, 0x81, 0x8b, 0xbd, 0x5e, 0xab, 0x79, 0xec, + 0xd2, 0xb0, 0x98, 0xe5, 0xeb, 0x00, 0xc2, 0x56, 0xb6, 0xa4, 0x51, 0xd9, 0xa8, 0x6e, 0x4f, 0xdb, + 0x12, 0xc6, 0xfa, 0x2d, 0x58, 0xe3, 0xc4, 0x94, 0xb6, 0xd9, 0xfa, 0xde, 0x80, 0x87, 0x36, 0xee, + 0x5d, 0x77, 0xf1, 0x9d, 0xed, 0xf8, 0x04, 0xa6, 0x13, 0x90, 0xbb, 0xb0, 0x6e, 0xa7, 0x08, 0xcd, + 0xca, 0x6a, 0xc6, 0xca, 0xaf, 0x61, 0xab, 0x80, 0x1e, 0xe5, 0x0d, 0xfd, 0xbd, 0x01, 0x9b, 0x51, + 0xa2, 0xdc, 0xc9, 0xca, 0x26, 0x00, 0x71, 0xfa, 0xae, 0x97, 0x9a, 0x39, 0xb3, 0xf7, 0x70, 0x87, + 0xf2, 0x72, 0x72, 0xee, 0x10, 0xf7, 0x9c, 0x38, 0x81, 0x33, 0xa0, 0x3b, 0x36, 0x7e, 0x73, 0x8d, + 0x69, 0xd8, 0x4e, 0x68, 0x6d, 0x69, 0x9d, 0xf5, 0x5f, 0x03, 0xac, 0x71, 0xda, 0x50, 0x82, 0x7e, + 0x01, 0xb3, 0xdc, 0x45, 0xde, 0x85, 0xcf, 0xdd, 0x66, 0x6c, 0x54, 0xb7, 0x67, 0xf6, 0x1e, 0xe4, + 0x88, 0x3b, 0x8b, 0xc8, 0x6c, 0x65, 0x01, 0x7a, 0x96, 0xa3, 0xed, 0x56, 0xae, 0xb6, 0x94, 0xf8, + 0x1e, 0xc5, 0xf9, 0xea, 0x6a, 0x3e, 0xaf, 0x16, 0xf5, 0xf9, 0x3f, 0x2b, 0x30, 0x7f, 0x84, 0xc3, + 0x83, 0xd7, 0x4e, 0x78, 0xec, 0xf7, 0x29, 0x73, 0x70, 0x03, 0x26, 0xbb, 0xbe, 0x17, 0x62, 0x2f, + 0x8c, 0x9c, 0x1b, 0x83, 0xa2, 0xc6, 0x31, 0xeb, 0xe3, 0x02, 0x20, 0x20, 0x86, 0x0f, 0x70, 0xf7, + 0x26, 0xda, 0xfc, 0xd3, 0x76, 0x04, 0xb1, 0x92, 0xc6, 0x28, 0xf8, 0xc6, 0xac, 0x89, 0x92, 0x16, + 0xc3, 0x2c, 0x8c, 0x14, 0x53, 0xea, 0xfa, 0xde, 0xcb, 0x5b, 0x82, 0x1b, 0x75, 0x9e, 0x8c, 0x32, + 0x8a, 0x51, 0x44, 0x82, 0x39, 0xc5, 0x84, 0xa0, 0x90, 0x50, 0x5a, 0xa0, 0x27, 0xcb, 0x05, 0x5a, + 0x4f, 0xa8, 0xa9, 0x6c, 0x42, 0x99, 0x30, 0xe5, 0x93, 0x33, 0x51, 0xfa, 0xa6, 0x85, 0x1d, 0x31, + 0x6c, 0xfd, 0xad, 0x06, 0x93, 0x91, 0xf7, 0x84, 0x4d, 0x4c, 0xf8, 0x09, 0xed, 0xa7, 0xa9, 0x29, + 0xa1, 0xb8, 0x4d, 0x57, 0x2e, 0xf6, 0x42, 0x41, 0x21, 0xdc, 0x28, 0xa3, 0x24, 0x1f, 0x57, 0x87, + 0xf8, 0xb8, 0xa6, 0xf8, 0xb8, 0x01, 0x93, 0xfd, 0xc0, 0xbf, 0x26, 0xad, 0x26, 0xf7, 0xe1, 0xb4, + 0x1d, 0x83, 0xc8, 0x82, 0x59, 0x46, 0x73, 0xea, 0x76, 0x2f, 0x3d, 0x76, 0xa8, 0x4c, 0xf0, 0xcf, + 0x0a, 0x0e, 0xfd, 0x04, 0x16, 0x19, 0x7f, 0x1c, 0xb4, 0xd3, 0x02, 0x3e, 0xc9, 0x1d, 0x9d, 0xc1, + 0xa3, 0xcf, 0x60, 0x5e, 0xe0, 0x12, 0x8e, 0xc2, 0x55, 0x1a, 0x16, 0x3d, 0x84, 0x39, 0x81, 0x39, + 0x8c, 0x8e, 0x2c, 0xe1, 0x32, 0x15, 0xc9, 0x4a, 0x11, 0x57, 0x94, 0x9f, 0x77, 0xc0, 0x29, 0x52, + 0x84, 0x9e, 0x1d, 0x33, 0xd9, 0xec, 0x68, 0xc0, 0xe4, 0x80, 0xf6, 0x0f, 0x03, 0x7f, 0xd0, 0x98, + 0x15, 0xc7, 0x7d, 0x04, 0xea, 0x79, 0x33, 0x97, 0xcd, 0x1b, 0x29, 0xc3, 0xe7, 0xb3, 0x19, 0x1e, + 0x3a, 0xe1, 0x35, 0x6d, 0x2c, 0xf0, 0x65, 0x11, 0xa4, 0x64, 0xf2, 0x22, 0x3f, 0x62, 0xd2, 0x4c, + 0x5e, 0x07, 0xe8, 0x06, 0xd8, 0x09, 0x31, 0xff, 0xba, 0xc4, 0xbf, 0x4a, 0x18, 0x34, 0x0f, 0x15, + 0xfc, 0xb6, 0x81, 0xb8, 0xa0, 0x0a, 0x7e, 0x6b, 0xfd, 0xc7, 0xe0, 0x87, 0x6f, 0xba, 0xe5, 0x28, + 0x41, 0x3b, 0x30, 0xd5, 0x8d, 0xe0, 0xa8, 0x82, 0x20, 0x79, 0xef, 0x8a, 0x4f, 0x76, 0x42, 0xf3, + 0xa1, 0x8a, 0x06, 0x73, 0x55, 0xc4, 0xf2, 0xf4, 0x7a, 0x10, 0x1d, 0xdd, 0x32, 0xaa, 0x6c, 0x7f, + 0xf1, 0x18, 0xe6, 0x3a, 0xa1, 0x13, 0xba, 0x34, 0x74, 0xbb, 0xbc, 0xa8, 0x20, 0xa8, 0x5d, 0xb0, + 0x58, 0x89, 0x3d, 0xc1, 0x7f, 0x33, 0xc7, 0x84, 0x7e, 0xb4, 0x07, 0x2a, 0xa1, 0x6f, 0x85, 0xbc, + 0x4f, 0xd8, 0xef, 0x86, 0xee, 0x4d, 0x74, 0xc4, 0xbc, 0x41, 0x4f, 0x60, 0x8e, 0xca, 0x8c, 0xa2, + 0xd3, 0xa4, 0x21, 0xa9, 0xa0, 0x08, 0xb2, 0x55, 0x72, 0x7d, 0x73, 0x57, 0x32, 0x9b, 0xdb, 0xfa, + 0x1a, 0xa6, 0x84, 0x30, 0x4a, 0x58, 0x98, 0x3d, 0xb7, 0x7b, 0xc9, 0x73, 0x52, 0x68, 0x9a, 0xc0, + 0xa3, 0xba, 0x9f, 0x01, 0xa6, 0xd4, 0xe9, 0xe3, 0xd4, 0x85, 0x12, 0xc6, 0xba, 0x86, 0x25, 0xcd, + 0x2a, 0x4a, 0xd0, 0x8f, 0xa1, 0xce, 0x7e, 0xc7, 0xc1, 0x5e, 0x96, 0xcc, 0x89, 0x69, 0x6c, 0x41, + 0xa1, 0x45, 0xa0, 0x52, 0x34, 0x02, 0xb2, 0xd8, 0x23, 0xb6, 0xaf, 0x3e, 0x8e, 0x37, 0xff, 0x6c, + 0xc0, 0x74, 0x24, 0x8e, 0x12, 0xb6, 0xc9, 0x8f, 0x92, 0x4d, 0x2e, 0x1c, 0x9a, 0x22, 0xd8, 0x36, + 0xe4, 0x40, 0xab, 0x17, 0x37, 0xd3, 0x11, 0xc8, 0x7c, 0x7a, 0x92, 0xf1, 0x69, 0x8a, 0x29, 0x9b, + 0x95, 0xb7, 0x80, 0x74, 0x9f, 0x50, 0x82, 0x3e, 0x87, 0x09, 0x0e, 0xc4, 0xc1, 0x58, 0x91, 0x18, + 0x25, 0x54, 0x76, 0x44, 0x53, 0x36, 0x1c, 0x8f, 0x61, 0xa6, 0xe9, 0x84, 0x4c, 0x79, 0x7e, 0xe8, + 0x23, 0xa8, 0x31, 0x30, 0xde, 0x0e, 0xec, 0x37, 0x5a, 0x84, 0x2a, 0xb3, 0x56, 0xb4, 0x65, 0xec, + 0xa7, 0xf5, 0x2d, 0xdc, 0x3f, 0xc2, 0x61, 0x64, 0xb7, 0xba, 0x9f, 0x9e, 0x68, 0x1b, 0x6c, 0x7c, + 0x24, 0x3b, 0x7a, 0x24, 0x5f, 0x64, 0x23, 0x29, 0xa1, 0xac, 0x7f, 0x55, 0xa0, 0x91, 0x2f, 0x9d, + 0xfb, 0x6c, 0xa9, 0x1d, 0xb8, 0x37, 0x4e, 0x88, 0xa5, 0x38, 0x89, 0x6b, 0x57, 0xf6, 0x03, 0xda, + 0x86, 0x05, 0xee, 0x3d, 0x89, 0x56, 0x58, 0xa9, 0xa3, 0xd1, 0x31, 0xdc, 0xcb, 0x2c, 0x4f, 0xba, + 0xd1, 0x99, 0xbd, 0x55, 0xc9, 0x3c, 0xc9, 0x9d, 0x76, 0xfe, 0x22, 0xf4, 0x4b, 0x58, 0xd6, 0x04, + 0x70, 0x5e, 0xb5, 0x91, 0xbc, 0xf2, 0x96, 0x68, 0x51, 0xaf, 0x17, 0x4f, 0xb8, 0x7b, 0x47, 0x38, + 0xe4, 0x0c, 0x3f, 0x76, 0xf8, 0xfe, 0x5e, 0x81, 0xd5, 0x3c, 0xd9, 0x94, 0xb0, 0x43, 0xbf, 0xe5, + 0xb1, 0x03, 0x8a, 0x8a, 0x5d, 0x90, 0xc6, 0x2e, 0x83, 0x67, 0x87, 0xf9, 0x4b, 0x3f, 0x74, 0xae, + 0x12, 0x42, 0x11, 0x38, 0x15, 0x89, 0x9e, 0xc3, 0x8a, 0xbe, 0xb2, 0x40, 0xd4, 0x72, 0xd7, 0xa0, + 0x26, 0x2c, 0x29, 0xcc, 0x0b, 0x84, 0x2c, 0xbb, 0xa0, 0x6c, 0xc0, 0xde, 0xc2, 0x4a, 0xd4, 0xf3, + 0x7f, 0xec, 0x78, 0xfd, 0xa9, 0xca, 0x73, 0x45, 0x17, 0x4d, 0x09, 0xdb, 0x3d, 0xb1, 0xa3, 0xd8, + 0xd7, 0x34, 0x5a, 0x3a, 0x9a, 0x05, 0x2b, 0x3d, 0x67, 0xa4, 0x60, 0x29, 0x48, 0xd6, 0x17, 0x72, + 0x7f, 0xc5, 0x44, 0xa2, 0xbc, 0x2a, 0x38, 0xb6, 0x73, 0x34, 0xe6, 0x45, 0x76, 0x4e, 0xce, 0x12, + 0x16, 0x4e, 0x45, 0x3c, 0xe7, 0x53, 0x1f, 0x1d, 0xce, 0xcc, 0x02, 0xf4, 0x14, 0x16, 0x65, 0xfd, + 0x38, 0x93, 0x89, 0x91, 0x4c, 0x32, 0xf4, 0x5a, 0x4a, 0x4c, 0x16, 0x4d, 0x89, 0x37, 0xb0, 0x76, + 0x84, 0x3d, 0x16, 0x28, 0xdc, 0xf2, 0x6e, 0xdc, 0x90, 0x07, 0xec, 0xc0, 0xef, 0xe1, 0xc2, 0x13, + 0xa3, 0xae, 0xdf, 0xc3, 0xc7, 0x38, 0xbe, 0x70, 0xc7, 0x60, 0xfc, 0x25, 0x0d, 0x41, 0x0c, 0x5a, + 0x1d, 0x30, 0x87, 0x89, 0x2c, 0x7f, 0xbb, 0xfe, 0xab, 0xc1, 0x13, 0x4c, 0x65, 0x48, 0x8b, 0x19, + 0x81, 0xa0, 0xc6, 0x74, 0x8b, 0xf2, 0x96, 0xff, 0x96, 0x5a, 0xe5, 0xaa, 0xd2, 0x2a, 0xab, 0x97, + 0xb2, 0x5a, 0xc9, 0xdb, 0xf7, 0x5f, 0x0c, 0x98, 0x77, 0x15, 0x55, 0xd9, 0xfd, 0x43, 0xc5, 0x44, + 0x9a, 0xea, 0x74, 0x6a, 0x3f, 0x2e, 0x9c, 0x2e, 0xf7, 0xe3, 0x26, 0x4c, 0x5d, 0x39, 0x34, 0x4c, + 0xc6, 0x45, 0x75, 0x3b, 0x81, 0xa5, 0x26, 0xaf, 0xa6, 0x34, 0x79, 0xa9, 0xb1, 0x75, 0xd9, 0x58, + 0xeb, 0xdf, 0x06, 0xaf, 0xb2, 0x19, 0xa7, 0x52, 0x82, 0x0e, 0x60, 0x41, 0x55, 0x2c, 0xee, 0x2f, + 0xd6, 0xa4, 0x58, 0xa9, 0x14, 0xb6, 0xbe, 0x82, 0xf5, 0xf9, 0xed, 0xb2, 0x7d, 0x7e, 0xfb, 0xce, + 0xc3, 0x81, 0x43, 0x40, 0xbf, 0xba, 0xc6, 0xc1, 0x6d, 0xab, 0x1d, 0x4f, 0x40, 0x8a, 0xa5, 0xcb, + 0x3c, 0x54, 0x5a, 0xed, 0xb8, 0xb1, 0x6f, 0xb5, 0xad, 0x7f, 0x18, 0xb0, 0x9c, 0x61, 0x44, 0x49, + 0x44, 0x67, 0xc4, 0x74, 0x8c, 0x73, 0xfc, 0x3d, 0xad, 0x5e, 0x32, 0x8a, 0xc5, 0xa1, 0xa3, 0x24, + 0x9d, 0x80, 0xb4, 0xd1, 0x55, 0x4d, 0x1f, 0x5d, 0x95, 0x3d, 0x0e, 0xce, 0x61, 0x6e, 0xbf, 0xd7, + 0x6b, 0xb5, 0x8f, 0xdd, 0x81, 0x1b, 0x96, 0xb2, 0x9d, 0xb5, 0xc0, 0x57, 0x6c, 0xb5, 0x94, 0x6e, + 0x29, 0xc2, 0x3a, 0x82, 0x79, 0x59, 0x40, 0xf9, 0xdd, 0xdd, 0x84, 0x45, 0x1b, 0x0f, 0xfc, 0x1b, + 0x7c, 0x17, 0x65, 0xad, 0xe7, 0xb0, 0xa4, 0x71, 0x29, 0xaf, 0xd1, 0x97, 0x60, 0xf2, 0x98, 0x8b, + 0x39, 0x49, 0xc4, 0xf0, 0x3d, 0x46, 0xed, 0x43, 0xee, 0x5b, 0xd6, 0x19, 0xcc, 0x70, 0x96, 0x82, + 0xa1, 0x44, 0x66, 0x28, 0x3b, 0x56, 0x8f, 0x83, 0x5a, 0x15, 0xaa, 0x7a, 0x55, 0xb0, 0xfe, 0x60, + 0xc0, 0x83, 0xa1, 0xfa, 0x52, 0x82, 0xbe, 0x80, 0x59, 0x49, 0x6c, 0xbc, 0x97, 0x57, 0xb5, 0x8b, + 0x5b, 0xec, 0x37, 0x85, 0xb6, 0xec, 0x9d, 0xe1, 0x15, 0xac, 0x46, 0x53, 0x65, 0xdd, 0x7b, 0xc3, + 0x8c, 0x1e, 0x7b, 0x3f, 0x8b, 0xdc, 0x52, 0x4d, 0x22, 0xde, 0x86, 0xfb, 0xb9, 0x32, 0xca, 0xc7, + 0xfd, 0x77, 0xb0, 0x22, 0x72, 0x48, 0xf6, 0xc7, 0x07, 0xd5, 0xf9, 0x14, 0xee, 0xe5, 0x48, 0x28, + 0xaf, 0xf1, 0x17, 0xbc, 0x86, 0x1f, 0xf0, 0x21, 0x5c, 0xcb, 0x73, 0xc3, 0x03, 0xdf, 0xbb, 0x70, + 0xfb, 0x85, 0xb2, 0x94, 0xf9, 0x2f, 0x77, 0x6d, 0x79, 0x6d, 0x7a, 0xb0, 0xda, 0x29, 0xa9, 0x0d, + 0x6b, 0x15, 0x7b, 0x2e, 0xed, 0xfa, 0x37, 0x38, 0x68, 0x3b, 0x7d, 0x3e, 0x7c, 0x13, 0xfe, 0xd4, + 0xd1, 0x4c, 0xef, 0xce, 0x87, 0xd5, 0xfb, 0x9d, 0xc1, 0x27, 0x0e, 0x2c, 0x26, 0x62, 0x48, 0x4e, + 0xef, 0xf6, 0xaa, 0x64, 0xc1, 0xec, 0x05, 0xe7, 0x13, 0x0d, 0x5e, 0x45, 0xfc, 0x15, 0x1c, 0x6b, + 0x09, 0x52, 0x98, 0x0f, 0x19, 0xc4, 0xb1, 0xad, 0x61, 0xb5, 0x9e, 0xa4, 0x5e, 0xb2, 0x27, 0xf9, + 0x9f, 0xc1, 0xe7, 0x07, 0x8a, 0x85, 0x94, 0x68, 0xb3, 0x38, 0xa3, 0xec, 0x2c, 0xee, 0x59, 0x6c, + 0x4b, 0xf2, 0x94, 0x50, 0xe1, 0x25, 0xe6, 0xd3, 0x1c, 0x56, 0x87, 0x09, 0xa1, 0xad, 0x2d, 0x62, + 0x75, 0x4e, 0x60, 0x4e, 0xaf, 0x07, 0xf1, 0x29, 0x29, 0x61, 0xca, 0x8e, 0x4e, 0xbe, 0x4b, 0x9e, + 0x66, 0x5a, 0xcd, 0xa7, 0xb7, 0xcf, 0x06, 0x8e, 0x7b, 0xb5, 0xef, 0xf5, 0xda, 0xaf, 0x7d, 0x8f, + 0x75, 0xac, 0xaf, 0x8a, 0x76, 0x06, 0x2b, 0x50, 0xc7, 0x6c, 0x6d, 0xfc, 0x7e, 0xc7, 0x01, 0xb6, + 0x8e, 0xa4, 0x9c, 0xa2, 0x48, 0xcb, 0x28, 0xeb, 0xdb, 0xe4, 0x2d, 0x66, 0xa8, 0x78, 0x4a, 0xb4, + 0x2e, 0xc0, 0x18, 0xd3, 0x05, 0x14, 0xad, 0xc3, 0x7b, 0xef, 0x16, 0x61, 0x8a, 0x13, 0x1d, 0x9c, + 0x74, 0xd0, 0x3e, 0x40, 0xfa, 0x9c, 0x8b, 0xe4, 0x0b, 0xa0, 0xf2, 0x96, 0x6c, 0xae, 0x0d, 0xf9, + 0x42, 0x09, 0xfa, 0x0e, 0xd6, 0x47, 0xbf, 0x16, 0xa2, 0xcf, 0x95, 0xc5, 0x63, 0xde, 0x2f, 0xcd, + 0x47, 0xef, 0x41, 0x4d, 0x09, 0xfa, 0xde, 0x80, 0xcd, 0xb1, 0xef, 0x78, 0x68, 0x57, 0x62, 0x5a, + 0xe4, 0xf5, 0xd1, 0xfc, 0xe9, 0xfb, 0x2d, 0x10, 0x7e, 0x18, 0xfd, 0xc0, 0xa6, 0xf8, 0x61, 0xec, + 0xcb, 0xa0, 0xe2, 0x87, 0x02, 0x2f, 0x77, 0x4d, 0x98, 0x91, 0xc6, 0xf0, 0x68, 0x4d, 0x5d, 0x2d, + 0xbd, 0x88, 0x99, 0xe6, 0xb0, 0x4f, 0x94, 0xa0, 0xe7, 0x30, 0xa7, 0x8c, 0x77, 0xd1, 0x03, 0x95, + 0x58, 0x19, 0x67, 0x9b, 0x9f, 0x0c, 0xff, 0x48, 0x09, 0x3a, 0xe1, 0x6f, 0x71, 0xd2, 0x7c, 0x12, + 0xe5, 0xd2, 0xc7, 0xe3, 0x5c, 0xf3, 0xd3, 0x11, 0x5f, 0x29, 0x41, 0xe7, 0x7c, 0x98, 0x91, 0x19, + 0xe0, 0x21, 0x4b, 0x5d, 0x96, 0x37, 0x5f, 0x34, 0x7f, 0x38, 0x96, 0x86, 0x12, 0xf4, 0x6b, 0x5e, + 0x0f, 0xb5, 0x11, 0x13, 0xda, 0x50, 0x97, 0x66, 0xa7, 0x5f, 0xe6, 0xe6, 0x18, 0x0a, 0x4a, 0xd0, + 0x97, 0xc9, 0x61, 0x22, 0x71, 0xfe, 0x41, 0x36, 0xc0, 0x2a, 0xe3, 0x8d, 0xd1, 0x04, 0x94, 0x20, + 0xcc, 0xce, 0xfa, 0xbc, 0xab, 0x35, 0x7a, 0xa8, 0xac, 0x1d, 0x72, 0xe1, 0x37, 0xb7, 0x0a, 0x50, + 0x25, 0x9e, 0xd1, 0xae, 0x85, 0xba, 0x67, 0xb2, 0x57, 0x71, 0xdd, 0x33, 0x79, 0xf7, 0xca, 0x36, + 0x2c, 0x68, 0x77, 0x29, 0x24, 0xe7, 0x41, 0xf6, 0xc2, 0x66, 0xae, 0x8f, 0xfa, 0x4c, 0x89, 0x28, + 0x69, 0xf1, 0x25, 0x44, 0x2b, 0x69, 0xd2, 0xe5, 0x47, 0x2b, 0x69, 0xca, 0xad, 0xe5, 0x39, 0xcc, + 0x29, 0x17, 0x07, 0x65, 0x17, 0xe8, 0x17, 0x13, 0x65, 0x17, 0x64, 0xef, 0x1b, 0xaf, 0xe1, 0xfe, + 0x90, 0x46, 0x1c, 0x6d, 0xe9, 0x96, 0xe4, 0x5e, 0x2e, 0xcc, 0xcf, 0x8a, 0x90, 0x51, 0x82, 0xbe, + 0x82, 0xe5, 0x9c, 0xe6, 0x17, 0x6d, 0x66, 0xeb, 0xa9, 0x2e, 0xc1, 0x1a, 0x47, 0x22, 0x52, 0x38, + 0xd3, 0xa6, 0x2a, 0x29, 0x9c, 0xd7, 0x26, 0x2b, 0x29, 0x9c, 0xdf, 0xe5, 0x7e, 0x05, 0xcb, 0x39, + 0x2d, 0x27, 0xd2, 0x52, 0x27, 0xa7, 0x81, 0x34, 0xad, 0x71, 0x24, 0x82, 0x7b, 0x67, 0x0c, 0xf7, + 0xce, 0x78, 0xee, 0xc3, 0x7a, 0x4b, 0x51, 0xe1, 0xa4, 0x0e, 0x4a, 0xaf, 0x70, 0x6a, 0xfb, 0xa8, + 0x57, 0x38, 0xbd, 0xf5, 0x4a, 0x4f, 0x90, 0x21, 0x6d, 0x41, 0xde, 0x09, 0x32, 0xbc, 0x81, 0xc9, + 0x3b, 0x41, 0x46, 0xf5, 0x1b, 0x47, 0x30, 0x2b, 0xff, 0xb1, 0x09, 0x99, 0xd9, 0xe5, 0xf1, 0xdf, + 0xab, 0xcc, 0x07, 0x43, 0xbf, 0x51, 0xf2, 0xf4, 0x47, 0xbf, 0xd9, 0x7a, 0x41, 0xb0, 0x77, 0xde, + 0x3a, 0x91, 0xfe, 0xee, 0x96, 0xd0, 0xff, 0x3c, 0xf9, 0xf5, 0x6a, 0x82, 0x7f, 0x7a, 0xfc, 0xff, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x1c, 0xab, 0x91, 0x4b, 0x27, 0x00, 0x00, +} diff --git a/pkg/proto/admin_cms/admin_cms.proto b/pkg/proto/admin_cms/admin_cms.proto index d0b59a716..5ba1539ec 100644 --- a/pkg/proto/admin_cms/admin_cms.proto +++ b/pkg/proto/admin_cms/admin_cms.proto @@ -23,6 +23,18 @@ message AdminLoginResp { CommonResp commonResp = 4; } +message GetUserTokenReq { + string operationID = 1; + string userID = 2; + int32 platformID = 3; +} + +message GetUserTokenResp { + CommonResp commonResp = 1; + string token = 2; + int64 expTime = 3; +} + message AddUserRegisterAddFriendIDListReq { string operationID = 1; repeated string userIDList = 2; @@ -62,7 +74,7 @@ message GetChatLogsReq { int32 contentType = 6; server_api_params.RequestPagination pagination = 7; string operationID = 8; - + string opUserID = 9; } message ChatLog { @@ -328,6 +340,7 @@ message GetUserIDByEmailAndPhoneNumberResp{ service adminCMS { rpc AdminLogin(AdminLoginReq) returns(AdminLoginResp); + rpc AddUserRegisterAddFriendIDList(AddUserRegisterAddFriendIDListReq) returns(AddUserRegisterAddFriendIDListResp); rpc ReduceUserRegisterAddFriendIDList(ReduceUserRegisterAddFriendIDListReq) returns(ReduceUserRegisterAddFriendIDListResp); rpc GetUserRegisterAddFriendIDList(GetUserRegisterAddFriendIDListReq) returns(GetUserRegisterAddFriendIDListResp); @@ -357,4 +370,6 @@ service adminCMS { rpc GetUserFriends(GetUserFriendsReq) returns(GetUserFriendsResp); rpc GetUserIDByEmailAndPhoneNumber(GetUserIDByEmailAndPhoneNumberReq) returns(GetUserIDByEmailAndPhoneNumberResp); + + rpc GetUserToken(GetUserTokenReq) returns(GetUserTokenResp); } diff --git a/pkg/proto/msg/msg.pb.go b/pkg/proto/msg/msg.pb.go index 532c73b84..7d1bfa68f 100644 --- a/pkg/proto/msg/msg.pb.go +++ b/pkg/proto/msg/msg.pb.go @@ -7,6 +7,7 @@ import proto "github.com/golang/protobuf/proto" import fmt "fmt" import math "math" import sdk_ws "Open_IM/pkg/proto/sdk_ws" +import wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" import ( context "golang.org/x/net/context" @@ -37,7 +38,7 @@ func (m *MsgDataToMQ) Reset() { *m = MsgDataToMQ{} } func (m *MsgDataToMQ) String() string { return proto.CompactTextString(m) } func (*MsgDataToMQ) ProtoMessage() {} func (*MsgDataToMQ) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{0} + return fileDescriptor_msg_24cf87b309a51053, []int{0} } func (m *MsgDataToMQ) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgDataToMQ.Unmarshal(m, b) @@ -90,7 +91,7 @@ func (m *MsgDataToDB) Reset() { *m = MsgDataToDB{} } func (m *MsgDataToDB) String() string { return proto.CompactTextString(m) } func (*MsgDataToDB) ProtoMessage() {} func (*MsgDataToDB) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{1} + return fileDescriptor_msg_24cf87b309a51053, []int{1} } func (m *MsgDataToDB) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgDataToDB.Unmarshal(m, b) @@ -137,7 +138,7 @@ func (m *PushMsgDataToMQ) Reset() { *m = PushMsgDataToMQ{} } func (m *PushMsgDataToMQ) String() string { return proto.CompactTextString(m) } func (*PushMsgDataToMQ) ProtoMessage() {} func (*PushMsgDataToMQ) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{2} + return fileDescriptor_msg_24cf87b309a51053, []int{2} } func (m *PushMsgDataToMQ) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PushMsgDataToMQ.Unmarshal(m, b) @@ -192,7 +193,7 @@ func (m *MsgDataToMongoByMQ) Reset() { *m = MsgDataToMongoByMQ{} } func (m *MsgDataToMongoByMQ) String() string { return proto.CompactTextString(m) } func (*MsgDataToMongoByMQ) ProtoMessage() {} func (*MsgDataToMongoByMQ) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{3} + return fileDescriptor_msg_24cf87b309a51053, []int{3} } func (m *MsgDataToMongoByMQ) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgDataToMongoByMQ.Unmarshal(m, b) @@ -272,7 +273,7 @@ func (m *GetMaxAndMinSeqReq) Reset() { *m = GetMaxAndMinSeqReq{} } func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) } func (*GetMaxAndMinSeqReq) ProtoMessage() {} func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{4} + return fileDescriptor_msg_24cf87b309a51053, []int{4} } func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) @@ -320,7 +321,7 @@ func (m *GetMaxAndMinSeqResp) Reset() { *m = GetMaxAndMinSeqResp{} } func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) } func (*GetMaxAndMinSeqResp) ProtoMessage() {} func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{5} + return fileDescriptor_msg_24cf87b309a51053, []int{5} } func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) @@ -381,7 +382,7 @@ func (m *SendMsgReq) Reset() { *m = SendMsgReq{} } func (m *SendMsgReq) String() string { return proto.CompactTextString(m) } func (*SendMsgReq) ProtoMessage() {} func (*SendMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{6} + return fileDescriptor_msg_24cf87b309a51053, []int{6} } func (m *SendMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendMsgReq.Unmarshal(m, b) @@ -437,7 +438,7 @@ func (m *SendMsgResp) Reset() { *m = SendMsgResp{} } func (m *SendMsgResp) String() string { return proto.CompactTextString(m) } func (*SendMsgResp) ProtoMessage() {} func (*SendMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{7} + return fileDescriptor_msg_24cf87b309a51053, []int{7} } func (m *SendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendMsgResp.Unmarshal(m, b) @@ -505,7 +506,7 @@ func (m *ClearMsgReq) Reset() { *m = ClearMsgReq{} } func (m *ClearMsgReq) String() string { return proto.CompactTextString(m) } func (*ClearMsgReq) ProtoMessage() {} func (*ClearMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{8} + return fileDescriptor_msg_24cf87b309a51053, []int{8} } func (m *ClearMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClearMsgReq.Unmarshal(m, b) @@ -558,7 +559,7 @@ func (m *ClearMsgResp) Reset() { *m = ClearMsgResp{} } func (m *ClearMsgResp) String() string { return proto.CompactTextString(m) } func (*ClearMsgResp) ProtoMessage() {} func (*ClearMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{9} + return fileDescriptor_msg_24cf87b309a51053, []int{9} } func (m *ClearMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClearMsgResp.Unmarshal(m, b) @@ -607,7 +608,7 @@ func (m *SetMsgMinSeqReq) Reset() { *m = SetMsgMinSeqReq{} } func (m *SetMsgMinSeqReq) String() string { return proto.CompactTextString(m) } func (*SetMsgMinSeqReq) ProtoMessage() {} func (*SetMsgMinSeqReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{10} + return fileDescriptor_msg_24cf87b309a51053, []int{10} } func (m *SetMsgMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetMsgMinSeqReq.Unmarshal(m, b) @@ -674,7 +675,7 @@ func (m *SetMsgMinSeqResp) Reset() { *m = SetMsgMinSeqResp{} } func (m *SetMsgMinSeqResp) String() string { return proto.CompactTextString(m) } func (*SetMsgMinSeqResp) ProtoMessage() {} func (*SetMsgMinSeqResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{11} + return fileDescriptor_msg_24cf87b309a51053, []int{11} } func (m *SetMsgMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetMsgMinSeqResp.Unmarshal(m, b) @@ -720,7 +721,7 @@ func (m *SetSendMsgStatusReq) Reset() { *m = SetSendMsgStatusReq{} } func (m *SetSendMsgStatusReq) String() string { return proto.CompactTextString(m) } func (*SetSendMsgStatusReq) ProtoMessage() {} func (*SetSendMsgStatusReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{12} + return fileDescriptor_msg_24cf87b309a51053, []int{12} } func (m *SetSendMsgStatusReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetSendMsgStatusReq.Unmarshal(m, b) @@ -766,7 +767,7 @@ func (m *SetSendMsgStatusResp) Reset() { *m = SetSendMsgStatusResp{} } func (m *SetSendMsgStatusResp) String() string { return proto.CompactTextString(m) } func (*SetSendMsgStatusResp) ProtoMessage() {} func (*SetSendMsgStatusResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{13} + return fileDescriptor_msg_24cf87b309a51053, []int{13} } func (m *SetSendMsgStatusResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetSendMsgStatusResp.Unmarshal(m, b) @@ -811,7 +812,7 @@ func (m *GetSendMsgStatusReq) Reset() { *m = GetSendMsgStatusReq{} } func (m *GetSendMsgStatusReq) String() string { return proto.CompactTextString(m) } func (*GetSendMsgStatusReq) ProtoMessage() {} func (*GetSendMsgStatusReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{14} + return fileDescriptor_msg_24cf87b309a51053, []int{14} } func (m *GetSendMsgStatusReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSendMsgStatusReq.Unmarshal(m, b) @@ -851,7 +852,7 @@ func (m *GetSendMsgStatusResp) Reset() { *m = GetSendMsgStatusResp{} } func (m *GetSendMsgStatusResp) String() string { return proto.CompactTextString(m) } func (*GetSendMsgStatusResp) ProtoMessage() {} func (*GetSendMsgStatusResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{15} + return fileDescriptor_msg_24cf87b309a51053, []int{15} } func (m *GetSendMsgStatusResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSendMsgStatusResp.Unmarshal(m, b) @@ -906,7 +907,7 @@ func (m *DelSuperGroupMsgReq) Reset() { *m = DelSuperGroupMsgReq{} } func (m *DelSuperGroupMsgReq) String() string { return proto.CompactTextString(m) } func (*DelSuperGroupMsgReq) ProtoMessage() {} func (*DelSuperGroupMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{16} + return fileDescriptor_msg_24cf87b309a51053, []int{16} } func (m *DelSuperGroupMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelSuperGroupMsgReq.Unmarshal(m, b) @@ -966,7 +967,7 @@ func (m *DelSuperGroupMsgResp) Reset() { *m = DelSuperGroupMsgResp{} } func (m *DelSuperGroupMsgResp) String() string { return proto.CompactTextString(m) } func (*DelSuperGroupMsgResp) ProtoMessage() {} func (*DelSuperGroupMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{17} + return fileDescriptor_msg_24cf87b309a51053, []int{17} } func (m *DelSuperGroupMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelSuperGroupMsgResp.Unmarshal(m, b) @@ -1013,7 +1014,7 @@ func (m *GetSuperGroupMsgReq) Reset() { *m = GetSuperGroupMsgReq{} } func (m *GetSuperGroupMsgReq) String() string { return proto.CompactTextString(m) } func (*GetSuperGroupMsgReq) ProtoMessage() {} func (*GetSuperGroupMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{18} + return fileDescriptor_msg_24cf87b309a51053, []int{18} } func (m *GetSuperGroupMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSuperGroupMsgReq.Unmarshal(m, b) @@ -1067,7 +1068,7 @@ func (m *GetSuperGroupMsgResp) Reset() { *m = GetSuperGroupMsgResp{} } func (m *GetSuperGroupMsgResp) String() string { return proto.CompactTextString(m) } func (*GetSuperGroupMsgResp) ProtoMessage() {} func (*GetSuperGroupMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{19} + return fileDescriptor_msg_24cf87b309a51053, []int{19} } func (m *GetSuperGroupMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSuperGroupMsgResp.Unmarshal(m, b) @@ -1120,7 +1121,7 @@ func (m *GetWriteDiffMsgReq) Reset() { *m = GetWriteDiffMsgReq{} } func (m *GetWriteDiffMsgReq) String() string { return proto.CompactTextString(m) } func (*GetWriteDiffMsgReq) ProtoMessage() {} func (*GetWriteDiffMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{20} + return fileDescriptor_msg_24cf87b309a51053, []int{20} } func (m *GetWriteDiffMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetWriteDiffMsgReq.Unmarshal(m, b) @@ -1167,7 +1168,7 @@ func (m *GetWriteDiffMsgResp) Reset() { *m = GetWriteDiffMsgResp{} } func (m *GetWriteDiffMsgResp) String() string { return proto.CompactTextString(m) } func (*GetWriteDiffMsgResp) ProtoMessage() {} func (*GetWriteDiffMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_msg_3f0146015dfd26d9, []int{21} + return fileDescriptor_msg_24cf87b309a51053, []int{21} } func (m *GetWriteDiffMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetWriteDiffMsgResp.Unmarshal(m, b) @@ -1208,6 +1209,1010 @@ func (m *GetWriteDiffMsgResp) GetMsgData() *sdk_ws.MsgData { return nil } +type ModifyMessageReactionExtensionsReq struct { + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + SourceID string `protobuf:"bytes,2,opt,name=sourceID" json:"sourceID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + SessionType int32 `protobuf:"varint,4,opt,name=sessionType" json:"sessionType,omitempty"` + ReactionExtensionList map[string]*sdk_ws.KeyValue `protobuf:"bytes,5,rep,name=reactionExtensionList" json:"reactionExtensionList,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + ClientMsgID string `protobuf:"bytes,6,opt,name=clientMsgID" json:"clientMsgID,omitempty"` + Ex *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=ex" json:"ex,omitempty"` + AttachedInfo *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=attachedInfo" json:"attachedInfo,omitempty"` + IsReact bool `protobuf:"varint,9,opt,name=isReact" json:"isReact,omitempty"` + IsExternalExtensions bool `protobuf:"varint,10,opt,name=isExternalExtensions" json:"isExternalExtensions,omitempty"` + MsgFirstModifyTime int64 `protobuf:"varint,11,opt,name=msgFirstModifyTime" json:"msgFirstModifyTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ModifyMessageReactionExtensionsReq) Reset() { *m = ModifyMessageReactionExtensionsReq{} } +func (m *ModifyMessageReactionExtensionsReq) String() string { return proto.CompactTextString(m) } +func (*ModifyMessageReactionExtensionsReq) ProtoMessage() {} +func (*ModifyMessageReactionExtensionsReq) Descriptor() ([]byte, []int) { + return fileDescriptor_msg_24cf87b309a51053, []int{22} +} +func (m *ModifyMessageReactionExtensionsReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ModifyMessageReactionExtensionsReq.Unmarshal(m, b) +} +func (m *ModifyMessageReactionExtensionsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ModifyMessageReactionExtensionsReq.Marshal(b, m, deterministic) +} +func (dst *ModifyMessageReactionExtensionsReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_ModifyMessageReactionExtensionsReq.Merge(dst, src) +} +func (m *ModifyMessageReactionExtensionsReq) XXX_Size() int { + return xxx_messageInfo_ModifyMessageReactionExtensionsReq.Size(m) +} +func (m *ModifyMessageReactionExtensionsReq) XXX_DiscardUnknown() { + xxx_messageInfo_ModifyMessageReactionExtensionsReq.DiscardUnknown(m) +} + +var xxx_messageInfo_ModifyMessageReactionExtensionsReq proto.InternalMessageInfo + +func (m *ModifyMessageReactionExtensionsReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *ModifyMessageReactionExtensionsReq) GetSourceID() string { + if m != nil { + return m.SourceID + } + return "" +} + +func (m *ModifyMessageReactionExtensionsReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +func (m *ModifyMessageReactionExtensionsReq) GetSessionType() int32 { + if m != nil { + return m.SessionType + } + return 0 +} + +func (m *ModifyMessageReactionExtensionsReq) GetReactionExtensionList() map[string]*sdk_ws.KeyValue { + if m != nil { + return m.ReactionExtensionList + } + return nil +} + +func (m *ModifyMessageReactionExtensionsReq) GetClientMsgID() string { + if m != nil { + return m.ClientMsgID + } + return "" +} + +func (m *ModifyMessageReactionExtensionsReq) GetEx() *wrapperspb.StringValue { + if m != nil { + return m.Ex + } + return nil +} + +func (m *ModifyMessageReactionExtensionsReq) GetAttachedInfo() *wrapperspb.StringValue { + if m != nil { + return m.AttachedInfo + } + return nil +} + +func (m *ModifyMessageReactionExtensionsReq) GetIsReact() bool { + if m != nil { + return m.IsReact + } + return false +} + +func (m *ModifyMessageReactionExtensionsReq) GetIsExternalExtensions() bool { + if m != nil { + return m.IsExternalExtensions + } + return false +} + +func (m *ModifyMessageReactionExtensionsReq) GetMsgFirstModifyTime() int64 { + if m != nil { + return m.MsgFirstModifyTime + } + return 0 +} + +type SetMessageReactionExtensionsReq struct { + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + SourceID string `protobuf:"bytes,2,opt,name=sourceID" json:"sourceID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + SessionType int32 `protobuf:"varint,4,opt,name=sessionType" json:"sessionType,omitempty"` + ReactionExtensionList map[string]*sdk_ws.KeyValue `protobuf:"bytes,5,rep,name=reactionExtensionList" json:"reactionExtensionList,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + ClientMsgID string `protobuf:"bytes,6,opt,name=clientMsgID" json:"clientMsgID,omitempty"` + Ex *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=ex" json:"ex,omitempty"` + AttachedInfo *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=attachedInfo" json:"attachedInfo,omitempty"` + IsReact bool `protobuf:"varint,9,opt,name=isReact" json:"isReact,omitempty"` + IsExternalExtensions bool `protobuf:"varint,10,opt,name=isExternalExtensions" json:"isExternalExtensions,omitempty"` + MsgFirstModifyTime int64 `protobuf:"varint,11,opt,name=msgFirstModifyTime" json:"msgFirstModifyTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SetMessageReactionExtensionsReq) Reset() { *m = SetMessageReactionExtensionsReq{} } +func (m *SetMessageReactionExtensionsReq) String() string { return proto.CompactTextString(m) } +func (*SetMessageReactionExtensionsReq) ProtoMessage() {} +func (*SetMessageReactionExtensionsReq) Descriptor() ([]byte, []int) { + return fileDescriptor_msg_24cf87b309a51053, []int{23} +} +func (m *SetMessageReactionExtensionsReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SetMessageReactionExtensionsReq.Unmarshal(m, b) +} +func (m *SetMessageReactionExtensionsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SetMessageReactionExtensionsReq.Marshal(b, m, deterministic) +} +func (dst *SetMessageReactionExtensionsReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetMessageReactionExtensionsReq.Merge(dst, src) +} +func (m *SetMessageReactionExtensionsReq) XXX_Size() int { + return xxx_messageInfo_SetMessageReactionExtensionsReq.Size(m) +} +func (m *SetMessageReactionExtensionsReq) XXX_DiscardUnknown() { + xxx_messageInfo_SetMessageReactionExtensionsReq.DiscardUnknown(m) +} + +var xxx_messageInfo_SetMessageReactionExtensionsReq proto.InternalMessageInfo + +func (m *SetMessageReactionExtensionsReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *SetMessageReactionExtensionsReq) GetSourceID() string { + if m != nil { + return m.SourceID + } + return "" +} + +func (m *SetMessageReactionExtensionsReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +func (m *SetMessageReactionExtensionsReq) GetSessionType() int32 { + if m != nil { + return m.SessionType + } + return 0 +} + +func (m *SetMessageReactionExtensionsReq) GetReactionExtensionList() map[string]*sdk_ws.KeyValue { + if m != nil { + return m.ReactionExtensionList + } + return nil +} + +func (m *SetMessageReactionExtensionsReq) GetClientMsgID() string { + if m != nil { + return m.ClientMsgID + } + return "" +} + +func (m *SetMessageReactionExtensionsReq) GetEx() *wrapperspb.StringValue { + if m != nil { + return m.Ex + } + return nil +} + +func (m *SetMessageReactionExtensionsReq) GetAttachedInfo() *wrapperspb.StringValue { + if m != nil { + return m.AttachedInfo + } + return nil +} + +func (m *SetMessageReactionExtensionsReq) GetIsReact() bool { + if m != nil { + return m.IsReact + } + return false +} + +func (m *SetMessageReactionExtensionsReq) GetIsExternalExtensions() bool { + if m != nil { + return m.IsExternalExtensions + } + return false +} + +func (m *SetMessageReactionExtensionsReq) GetMsgFirstModifyTime() int64 { + if m != nil { + return m.MsgFirstModifyTime + } + return 0 +} + +type SetMessageReactionExtensionsResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + ClientMsgID string `protobuf:"bytes,3,opt,name=clientMsgID" json:"clientMsgID,omitempty"` + MsgFirstModifyTime int64 `protobuf:"varint,4,opt,name=msgFirstModifyTime" json:"msgFirstModifyTime,omitempty"` + IsReact bool `protobuf:"varint,5,opt,name=isReact" json:"isReact,omitempty"` + Result []*KeyValueResp `protobuf:"bytes,6,rep,name=result" json:"result,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SetMessageReactionExtensionsResp) Reset() { *m = SetMessageReactionExtensionsResp{} } +func (m *SetMessageReactionExtensionsResp) String() string { return proto.CompactTextString(m) } +func (*SetMessageReactionExtensionsResp) ProtoMessage() {} +func (*SetMessageReactionExtensionsResp) Descriptor() ([]byte, []int) { + return fileDescriptor_msg_24cf87b309a51053, []int{24} +} +func (m *SetMessageReactionExtensionsResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SetMessageReactionExtensionsResp.Unmarshal(m, b) +} +func (m *SetMessageReactionExtensionsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SetMessageReactionExtensionsResp.Marshal(b, m, deterministic) +} +func (dst *SetMessageReactionExtensionsResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetMessageReactionExtensionsResp.Merge(dst, src) +} +func (m *SetMessageReactionExtensionsResp) XXX_Size() int { + return xxx_messageInfo_SetMessageReactionExtensionsResp.Size(m) +} +func (m *SetMessageReactionExtensionsResp) XXX_DiscardUnknown() { + xxx_messageInfo_SetMessageReactionExtensionsResp.DiscardUnknown(m) +} + +var xxx_messageInfo_SetMessageReactionExtensionsResp proto.InternalMessageInfo + +func (m *SetMessageReactionExtensionsResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *SetMessageReactionExtensionsResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +func (m *SetMessageReactionExtensionsResp) GetClientMsgID() string { + if m != nil { + return m.ClientMsgID + } + return "" +} + +func (m *SetMessageReactionExtensionsResp) GetMsgFirstModifyTime() int64 { + if m != nil { + return m.MsgFirstModifyTime + } + return 0 +} + +func (m *SetMessageReactionExtensionsResp) GetIsReact() bool { + if m != nil { + return m.IsReact + } + return false +} + +func (m *SetMessageReactionExtensionsResp) GetResult() []*KeyValueResp { + if m != nil { + return m.Result + } + return nil +} + +type GetMessageListReactionExtensionsReq struct { + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,2,opt,name=opUserID" json:"opUserID,omitempty"` + SourceID string `protobuf:"bytes,3,opt,name=sourceID" json:"sourceID,omitempty"` + SessionType int32 `protobuf:"varint,4,opt,name=sessionType" json:"sessionType,omitempty"` + IsExternalExtensions bool `protobuf:"varint,5,opt,name=isExternalExtensions" json:"isExternalExtensions,omitempty"` + MessageReactionKeyList []*GetMessageListReactionExtensionsReq_MessageReactionKey `protobuf:"bytes,6,rep,name=messageReactionKeyList" json:"messageReactionKeyList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetMessageListReactionExtensionsReq) Reset() { *m = GetMessageListReactionExtensionsReq{} } +func (m *GetMessageListReactionExtensionsReq) String() string { return proto.CompactTextString(m) } +func (*GetMessageListReactionExtensionsReq) ProtoMessage() {} +func (*GetMessageListReactionExtensionsReq) Descriptor() ([]byte, []int) { + return fileDescriptor_msg_24cf87b309a51053, []int{25} +} +func (m *GetMessageListReactionExtensionsReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetMessageListReactionExtensionsReq.Unmarshal(m, b) +} +func (m *GetMessageListReactionExtensionsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetMessageListReactionExtensionsReq.Marshal(b, m, deterministic) +} +func (dst *GetMessageListReactionExtensionsReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetMessageListReactionExtensionsReq.Merge(dst, src) +} +func (m *GetMessageListReactionExtensionsReq) XXX_Size() int { + return xxx_messageInfo_GetMessageListReactionExtensionsReq.Size(m) +} +func (m *GetMessageListReactionExtensionsReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetMessageListReactionExtensionsReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetMessageListReactionExtensionsReq proto.InternalMessageInfo + +func (m *GetMessageListReactionExtensionsReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *GetMessageListReactionExtensionsReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +func (m *GetMessageListReactionExtensionsReq) GetSourceID() string { + if m != nil { + return m.SourceID + } + return "" +} + +func (m *GetMessageListReactionExtensionsReq) GetSessionType() int32 { + if m != nil { + return m.SessionType + } + return 0 +} + +func (m *GetMessageListReactionExtensionsReq) GetIsExternalExtensions() bool { + if m != nil { + return m.IsExternalExtensions + } + return false +} + +func (m *GetMessageListReactionExtensionsReq) GetMessageReactionKeyList() []*GetMessageListReactionExtensionsReq_MessageReactionKey { + if m != nil { + return m.MessageReactionKeyList + } + return nil +} + +type GetMessageListReactionExtensionsReq_MessageReactionKey struct { + ClientMsgID string `protobuf:"bytes,1,opt,name=clientMsgID" json:"clientMsgID,omitempty"` + MsgFirstModifyTime int64 `protobuf:"varint,2,opt,name=msgFirstModifyTime" json:"msgFirstModifyTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetMessageListReactionExtensionsReq_MessageReactionKey) Reset() { + *m = GetMessageListReactionExtensionsReq_MessageReactionKey{} +} +func (m *GetMessageListReactionExtensionsReq_MessageReactionKey) String() string { + return proto.CompactTextString(m) +} +func (*GetMessageListReactionExtensionsReq_MessageReactionKey) ProtoMessage() {} +func (*GetMessageListReactionExtensionsReq_MessageReactionKey) Descriptor() ([]byte, []int) { + return fileDescriptor_msg_24cf87b309a51053, []int{25, 0} +} +func (m *GetMessageListReactionExtensionsReq_MessageReactionKey) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetMessageListReactionExtensionsReq_MessageReactionKey.Unmarshal(m, b) +} +func (m *GetMessageListReactionExtensionsReq_MessageReactionKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetMessageListReactionExtensionsReq_MessageReactionKey.Marshal(b, m, deterministic) +} +func (dst *GetMessageListReactionExtensionsReq_MessageReactionKey) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetMessageListReactionExtensionsReq_MessageReactionKey.Merge(dst, src) +} +func (m *GetMessageListReactionExtensionsReq_MessageReactionKey) XXX_Size() int { + return xxx_messageInfo_GetMessageListReactionExtensionsReq_MessageReactionKey.Size(m) +} +func (m *GetMessageListReactionExtensionsReq_MessageReactionKey) XXX_DiscardUnknown() { + xxx_messageInfo_GetMessageListReactionExtensionsReq_MessageReactionKey.DiscardUnknown(m) +} + +var xxx_messageInfo_GetMessageListReactionExtensionsReq_MessageReactionKey proto.InternalMessageInfo + +func (m *GetMessageListReactionExtensionsReq_MessageReactionKey) GetClientMsgID() string { + if m != nil { + return m.ClientMsgID + } + return "" +} + +func (m *GetMessageListReactionExtensionsReq_MessageReactionKey) GetMsgFirstModifyTime() int64 { + if m != nil { + return m.MsgFirstModifyTime + } + return 0 +} + +type GetMessageListReactionExtensionsResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + SingleMessageResult []*SingleMessageExtensionResult `protobuf:"bytes,3,rep,name=singleMessageResult" json:"singleMessageResult,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetMessageListReactionExtensionsResp) Reset() { *m = GetMessageListReactionExtensionsResp{} } +func (m *GetMessageListReactionExtensionsResp) String() string { return proto.CompactTextString(m) } +func (*GetMessageListReactionExtensionsResp) ProtoMessage() {} +func (*GetMessageListReactionExtensionsResp) Descriptor() ([]byte, []int) { + return fileDescriptor_msg_24cf87b309a51053, []int{26} +} +func (m *GetMessageListReactionExtensionsResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetMessageListReactionExtensionsResp.Unmarshal(m, b) +} +func (m *GetMessageListReactionExtensionsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetMessageListReactionExtensionsResp.Marshal(b, m, deterministic) +} +func (dst *GetMessageListReactionExtensionsResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetMessageListReactionExtensionsResp.Merge(dst, src) +} +func (m *GetMessageListReactionExtensionsResp) XXX_Size() int { + return xxx_messageInfo_GetMessageListReactionExtensionsResp.Size(m) +} +func (m *GetMessageListReactionExtensionsResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetMessageListReactionExtensionsResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetMessageListReactionExtensionsResp proto.InternalMessageInfo + +func (m *GetMessageListReactionExtensionsResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *GetMessageListReactionExtensionsResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +func (m *GetMessageListReactionExtensionsResp) GetSingleMessageResult() []*SingleMessageExtensionResult { + if m != nil { + return m.SingleMessageResult + } + return nil +} + +type SingleMessageExtensionResult struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + ReactionExtensionList map[string]*sdk_ws.KeyValue `protobuf:"bytes,3,rep,name=reactionExtensionList" json:"reactionExtensionList,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + ClientMsgID string `protobuf:"bytes,4,opt,name=clientMsgID" json:"clientMsgID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SingleMessageExtensionResult) Reset() { *m = SingleMessageExtensionResult{} } +func (m *SingleMessageExtensionResult) String() string { return proto.CompactTextString(m) } +func (*SingleMessageExtensionResult) ProtoMessage() {} +func (*SingleMessageExtensionResult) Descriptor() ([]byte, []int) { + return fileDescriptor_msg_24cf87b309a51053, []int{27} +} +func (m *SingleMessageExtensionResult) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SingleMessageExtensionResult.Unmarshal(m, b) +} +func (m *SingleMessageExtensionResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SingleMessageExtensionResult.Marshal(b, m, deterministic) +} +func (dst *SingleMessageExtensionResult) XXX_Merge(src proto.Message) { + xxx_messageInfo_SingleMessageExtensionResult.Merge(dst, src) +} +func (m *SingleMessageExtensionResult) XXX_Size() int { + return xxx_messageInfo_SingleMessageExtensionResult.Size(m) +} +func (m *SingleMessageExtensionResult) XXX_DiscardUnknown() { + xxx_messageInfo_SingleMessageExtensionResult.DiscardUnknown(m) +} + +var xxx_messageInfo_SingleMessageExtensionResult proto.InternalMessageInfo + +func (m *SingleMessageExtensionResult) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *SingleMessageExtensionResult) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +func (m *SingleMessageExtensionResult) GetReactionExtensionList() map[string]*sdk_ws.KeyValue { + if m != nil { + return m.ReactionExtensionList + } + return nil +} + +func (m *SingleMessageExtensionResult) GetClientMsgID() string { + if m != nil { + return m.ClientMsgID + } + return "" +} + +type ModifyMessageReactionExtensionsResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + SuccessList []*ExtendMsgResp `protobuf:"bytes,3,rep,name=successList" json:"successList,omitempty"` + FailedList []*ExtendMsgResp `protobuf:"bytes,4,rep,name=failedList" json:"failedList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ModifyMessageReactionExtensionsResp) Reset() { *m = ModifyMessageReactionExtensionsResp{} } +func (m *ModifyMessageReactionExtensionsResp) String() string { return proto.CompactTextString(m) } +func (*ModifyMessageReactionExtensionsResp) ProtoMessage() {} +func (*ModifyMessageReactionExtensionsResp) Descriptor() ([]byte, []int) { + return fileDescriptor_msg_24cf87b309a51053, []int{28} +} +func (m *ModifyMessageReactionExtensionsResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ModifyMessageReactionExtensionsResp.Unmarshal(m, b) +} +func (m *ModifyMessageReactionExtensionsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ModifyMessageReactionExtensionsResp.Marshal(b, m, deterministic) +} +func (dst *ModifyMessageReactionExtensionsResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_ModifyMessageReactionExtensionsResp.Merge(dst, src) +} +func (m *ModifyMessageReactionExtensionsResp) XXX_Size() int { + return xxx_messageInfo_ModifyMessageReactionExtensionsResp.Size(m) +} +func (m *ModifyMessageReactionExtensionsResp) XXX_DiscardUnknown() { + xxx_messageInfo_ModifyMessageReactionExtensionsResp.DiscardUnknown(m) +} + +var xxx_messageInfo_ModifyMessageReactionExtensionsResp proto.InternalMessageInfo + +func (m *ModifyMessageReactionExtensionsResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *ModifyMessageReactionExtensionsResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +func (m *ModifyMessageReactionExtensionsResp) GetSuccessList() []*ExtendMsgResp { + if m != nil { + return m.SuccessList + } + return nil +} + +func (m *ModifyMessageReactionExtensionsResp) GetFailedList() []*ExtendMsgResp { + if m != nil { + return m.FailedList + } + return nil +} + +type DeleteMessageListReactionExtensionsReq struct { + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,2,opt,name=opUserID" json:"opUserID,omitempty"` + SourceID string `protobuf:"bytes,3,opt,name=sourceID" json:"sourceID,omitempty"` + SessionType int32 `protobuf:"varint,4,opt,name=sessionType" json:"sessionType,omitempty"` + ClientMsgID string `protobuf:"bytes,5,opt,name=clientMsgID" json:"clientMsgID,omitempty"` + IsExternalExtensions bool `protobuf:"varint,6,opt,name=isExternalExtensions" json:"isExternalExtensions,omitempty"` + MsgFirstModifyTime int64 `protobuf:"varint,7,opt,name=msgFirstModifyTime" json:"msgFirstModifyTime,omitempty"` + ReactionExtensionList []*sdk_ws.KeyValue `protobuf:"bytes,8,rep,name=reactionExtensionList" json:"reactionExtensionList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteMessageListReactionExtensionsReq) Reset() { + *m = DeleteMessageListReactionExtensionsReq{} +} +func (m *DeleteMessageListReactionExtensionsReq) String() string { return proto.CompactTextString(m) } +func (*DeleteMessageListReactionExtensionsReq) ProtoMessage() {} +func (*DeleteMessageListReactionExtensionsReq) Descriptor() ([]byte, []int) { + return fileDescriptor_msg_24cf87b309a51053, []int{29} +} +func (m *DeleteMessageListReactionExtensionsReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteMessageListReactionExtensionsReq.Unmarshal(m, b) +} +func (m *DeleteMessageListReactionExtensionsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteMessageListReactionExtensionsReq.Marshal(b, m, deterministic) +} +func (dst *DeleteMessageListReactionExtensionsReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteMessageListReactionExtensionsReq.Merge(dst, src) +} +func (m *DeleteMessageListReactionExtensionsReq) XXX_Size() int { + return xxx_messageInfo_DeleteMessageListReactionExtensionsReq.Size(m) +} +func (m *DeleteMessageListReactionExtensionsReq) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteMessageListReactionExtensionsReq.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteMessageListReactionExtensionsReq proto.InternalMessageInfo + +func (m *DeleteMessageListReactionExtensionsReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *DeleteMessageListReactionExtensionsReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +func (m *DeleteMessageListReactionExtensionsReq) GetSourceID() string { + if m != nil { + return m.SourceID + } + return "" +} + +func (m *DeleteMessageListReactionExtensionsReq) GetSessionType() int32 { + if m != nil { + return m.SessionType + } + return 0 +} + +func (m *DeleteMessageListReactionExtensionsReq) GetClientMsgID() string { + if m != nil { + return m.ClientMsgID + } + return "" +} + +func (m *DeleteMessageListReactionExtensionsReq) GetIsExternalExtensions() bool { + if m != nil { + return m.IsExternalExtensions + } + return false +} + +func (m *DeleteMessageListReactionExtensionsReq) GetMsgFirstModifyTime() int64 { + if m != nil { + return m.MsgFirstModifyTime + } + return 0 +} + +func (m *DeleteMessageListReactionExtensionsReq) GetReactionExtensionList() []*sdk_ws.KeyValue { + if m != nil { + return m.ReactionExtensionList + } + return nil +} + +type DeleteMessageListReactionExtensionsResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + Result []*KeyValueResp `protobuf:"bytes,6,rep,name=result" json:"result,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteMessageListReactionExtensionsResp) Reset() { + *m = DeleteMessageListReactionExtensionsResp{} +} +func (m *DeleteMessageListReactionExtensionsResp) String() string { return proto.CompactTextString(m) } +func (*DeleteMessageListReactionExtensionsResp) ProtoMessage() {} +func (*DeleteMessageListReactionExtensionsResp) Descriptor() ([]byte, []int) { + return fileDescriptor_msg_24cf87b309a51053, []int{30} +} +func (m *DeleteMessageListReactionExtensionsResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteMessageListReactionExtensionsResp.Unmarshal(m, b) +} +func (m *DeleteMessageListReactionExtensionsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteMessageListReactionExtensionsResp.Marshal(b, m, deterministic) +} +func (dst *DeleteMessageListReactionExtensionsResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteMessageListReactionExtensionsResp.Merge(dst, src) +} +func (m *DeleteMessageListReactionExtensionsResp) XXX_Size() int { + return xxx_messageInfo_DeleteMessageListReactionExtensionsResp.Size(m) +} +func (m *DeleteMessageListReactionExtensionsResp) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteMessageListReactionExtensionsResp.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteMessageListReactionExtensionsResp proto.InternalMessageInfo + +func (m *DeleteMessageListReactionExtensionsResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *DeleteMessageListReactionExtensionsResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +func (m *DeleteMessageListReactionExtensionsResp) GetResult() []*KeyValueResp { + if m != nil { + return m.Result + } + return nil +} + +type ExtendMsgResp struct { + ExtendMsg *ExtendMsg `protobuf:"bytes,1,opt,name=extendMsg" json:"extendMsg,omitempty"` + ErrCode int32 `protobuf:"varint,2,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,3,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ExtendMsgResp) Reset() { *m = ExtendMsgResp{} } +func (m *ExtendMsgResp) String() string { return proto.CompactTextString(m) } +func (*ExtendMsgResp) ProtoMessage() {} +func (*ExtendMsgResp) Descriptor() ([]byte, []int) { + return fileDescriptor_msg_24cf87b309a51053, []int{31} +} +func (m *ExtendMsgResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ExtendMsgResp.Unmarshal(m, b) +} +func (m *ExtendMsgResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ExtendMsgResp.Marshal(b, m, deterministic) +} +func (dst *ExtendMsgResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_ExtendMsgResp.Merge(dst, src) +} +func (m *ExtendMsgResp) XXX_Size() int { + return xxx_messageInfo_ExtendMsgResp.Size(m) +} +func (m *ExtendMsgResp) XXX_DiscardUnknown() { + xxx_messageInfo_ExtendMsgResp.DiscardUnknown(m) +} + +var xxx_messageInfo_ExtendMsgResp proto.InternalMessageInfo + +func (m *ExtendMsgResp) GetExtendMsg() *ExtendMsg { + if m != nil { + return m.ExtendMsg + } + return nil +} + +func (m *ExtendMsgResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *ExtendMsgResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type ExtendMsg struct { + ReactionExtensionList map[string]*KeyValueResp `protobuf:"bytes,1,rep,name=reactionExtensionList" json:"reactionExtensionList,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + ClientMsgID string `protobuf:"bytes,2,opt,name=clientMsgID" json:"clientMsgID,omitempty"` + MsgFirstModifyTime int64 `protobuf:"varint,3,opt,name=msgFirstModifyTime" json:"msgFirstModifyTime,omitempty"` + AttachedInfo string `protobuf:"bytes,4,opt,name=attachedInfo" json:"attachedInfo,omitempty"` + Ex string `protobuf:"bytes,5,opt,name=ex" json:"ex,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ExtendMsg) Reset() { *m = ExtendMsg{} } +func (m *ExtendMsg) String() string { return proto.CompactTextString(m) } +func (*ExtendMsg) ProtoMessage() {} +func (*ExtendMsg) Descriptor() ([]byte, []int) { + return fileDescriptor_msg_24cf87b309a51053, []int{32} +} +func (m *ExtendMsg) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ExtendMsg.Unmarshal(m, b) +} +func (m *ExtendMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ExtendMsg.Marshal(b, m, deterministic) +} +func (dst *ExtendMsg) XXX_Merge(src proto.Message) { + xxx_messageInfo_ExtendMsg.Merge(dst, src) +} +func (m *ExtendMsg) XXX_Size() int { + return xxx_messageInfo_ExtendMsg.Size(m) +} +func (m *ExtendMsg) XXX_DiscardUnknown() { + xxx_messageInfo_ExtendMsg.DiscardUnknown(m) +} + +var xxx_messageInfo_ExtendMsg proto.InternalMessageInfo + +func (m *ExtendMsg) GetReactionExtensionList() map[string]*KeyValueResp { + if m != nil { + return m.ReactionExtensionList + } + return nil +} + +func (m *ExtendMsg) GetClientMsgID() string { + if m != nil { + return m.ClientMsgID + } + return "" +} + +func (m *ExtendMsg) GetMsgFirstModifyTime() int64 { + if m != nil { + return m.MsgFirstModifyTime + } + return 0 +} + +func (m *ExtendMsg) GetAttachedInfo() string { + if m != nil { + return m.AttachedInfo + } + return "" +} + +func (m *ExtendMsg) GetEx() string { + if m != nil { + return m.Ex + } + return "" +} + +type KeyValueResp struct { + KeyValue *sdk_ws.KeyValue `protobuf:"bytes,1,opt,name=keyValue" json:"keyValue,omitempty"` + ErrCode int32 `protobuf:"varint,2,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,3,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *KeyValueResp) Reset() { *m = KeyValueResp{} } +func (m *KeyValueResp) String() string { return proto.CompactTextString(m) } +func (*KeyValueResp) ProtoMessage() {} +func (*KeyValueResp) Descriptor() ([]byte, []int) { + return fileDescriptor_msg_24cf87b309a51053, []int{33} +} +func (m *KeyValueResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_KeyValueResp.Unmarshal(m, b) +} +func (m *KeyValueResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_KeyValueResp.Marshal(b, m, deterministic) +} +func (dst *KeyValueResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_KeyValueResp.Merge(dst, src) +} +func (m *KeyValueResp) XXX_Size() int { + return xxx_messageInfo_KeyValueResp.Size(m) +} +func (m *KeyValueResp) XXX_DiscardUnknown() { + xxx_messageInfo_KeyValueResp.DiscardUnknown(m) +} + +var xxx_messageInfo_KeyValueResp proto.InternalMessageInfo + +func (m *KeyValueResp) GetKeyValue() *sdk_ws.KeyValue { + if m != nil { + return m.KeyValue + } + return nil +} + +func (m *KeyValueResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *KeyValueResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type MsgDataToModifyByMQ struct { + AggregationID string `protobuf:"bytes,1,opt,name=aggregationID" json:"aggregationID,omitempty"` + MessageList []*MsgDataToMQ `protobuf:"bytes,2,rep,name=messageList" json:"messageList,omitempty"` + TriggerID string `protobuf:"bytes,3,opt,name=triggerID" json:"triggerID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *MsgDataToModifyByMQ) Reset() { *m = MsgDataToModifyByMQ{} } +func (m *MsgDataToModifyByMQ) String() string { return proto.CompactTextString(m) } +func (*MsgDataToModifyByMQ) ProtoMessage() {} +func (*MsgDataToModifyByMQ) Descriptor() ([]byte, []int) { + return fileDescriptor_msg_24cf87b309a51053, []int{34} +} +func (m *MsgDataToModifyByMQ) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MsgDataToModifyByMQ.Unmarshal(m, b) +} +func (m *MsgDataToModifyByMQ) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MsgDataToModifyByMQ.Marshal(b, m, deterministic) +} +func (dst *MsgDataToModifyByMQ) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDataToModifyByMQ.Merge(dst, src) +} +func (m *MsgDataToModifyByMQ) XXX_Size() int { + return xxx_messageInfo_MsgDataToModifyByMQ.Size(m) +} +func (m *MsgDataToModifyByMQ) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDataToModifyByMQ.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDataToModifyByMQ proto.InternalMessageInfo + +func (m *MsgDataToModifyByMQ) GetAggregationID() string { + if m != nil { + return m.AggregationID + } + return "" +} + +func (m *MsgDataToModifyByMQ) GetMessageList() []*MsgDataToMQ { + if m != nil { + return m.MessageList + } + return nil +} + +func (m *MsgDataToModifyByMQ) GetTriggerID() string { + if m != nil { + return m.TriggerID + } + return "" +} + func init() { proto.RegisterType((*MsgDataToMQ)(nil), "msg.MsgDataToMQ") proto.RegisterType((*MsgDataToDB)(nil), "msg.MsgDataToDB") @@ -1231,6 +2236,24 @@ func init() { proto.RegisterType((*GetSuperGroupMsgResp)(nil), "msg.GetSuperGroupMsgResp") proto.RegisterType((*GetWriteDiffMsgReq)(nil), "msg.GetWriteDiffMsgReq") proto.RegisterType((*GetWriteDiffMsgResp)(nil), "msg.GetWriteDiffMsgResp") + proto.RegisterType((*ModifyMessageReactionExtensionsReq)(nil), "msg.ModifyMessageReactionExtensionsReq") + proto.RegisterMapType((map[string]*sdk_ws.KeyValue)(nil), "msg.ModifyMessageReactionExtensionsReq.ReactionExtensionListEntry") + proto.RegisterType((*SetMessageReactionExtensionsReq)(nil), "msg.SetMessageReactionExtensionsReq") + proto.RegisterMapType((map[string]*sdk_ws.KeyValue)(nil), "msg.SetMessageReactionExtensionsReq.ReactionExtensionListEntry") + proto.RegisterType((*SetMessageReactionExtensionsResp)(nil), "msg.SetMessageReactionExtensionsResp") + proto.RegisterType((*GetMessageListReactionExtensionsReq)(nil), "msg.GetMessageListReactionExtensionsReq") + proto.RegisterType((*GetMessageListReactionExtensionsReq_MessageReactionKey)(nil), "msg.GetMessageListReactionExtensionsReq.MessageReactionKey") + proto.RegisterType((*GetMessageListReactionExtensionsResp)(nil), "msg.GetMessageListReactionExtensionsResp") + proto.RegisterType((*SingleMessageExtensionResult)(nil), "msg.SingleMessageExtensionResult") + proto.RegisterMapType((map[string]*sdk_ws.KeyValue)(nil), "msg.SingleMessageExtensionResult.ReactionExtensionListEntry") + proto.RegisterType((*ModifyMessageReactionExtensionsResp)(nil), "msg.ModifyMessageReactionExtensionsResp") + proto.RegisterType((*DeleteMessageListReactionExtensionsReq)(nil), "msg.DeleteMessageListReactionExtensionsReq") + proto.RegisterType((*DeleteMessageListReactionExtensionsResp)(nil), "msg.DeleteMessageListReactionExtensionsResp") + proto.RegisterType((*ExtendMsgResp)(nil), "msg.ExtendMsgResp") + proto.RegisterType((*ExtendMsg)(nil), "msg.ExtendMsg") + proto.RegisterMapType((map[string]*KeyValueResp)(nil), "msg.ExtendMsg.ReactionExtensionListEntry") + proto.RegisterType((*KeyValueResp)(nil), "msg.KeyValueResp") + proto.RegisterType((*MsgDataToModifyByMQ)(nil), "msg.MsgDataToModifyByMQ") } // Reference imports to suppress errors if they are not otherwise used. @@ -1255,6 +2278,11 @@ type MsgClient interface { GetSendMsgStatus(ctx context.Context, in *GetSendMsgStatusReq, opts ...grpc.CallOption) (*GetSendMsgStatusResp, error) GetSuperGroupMsg(ctx context.Context, in *GetSuperGroupMsgReq, opts ...grpc.CallOption) (*GetSuperGroupMsgResp, error) GetWriteDiffMsg(ctx context.Context, in *GetWriteDiffMsgReq, opts ...grpc.CallOption) (*GetWriteDiffMsgResp, error) + // modify msg + SetMessageReactionExtensions(ctx context.Context, in *SetMessageReactionExtensionsReq, opts ...grpc.CallOption) (*SetMessageReactionExtensionsResp, error) + GetMessageListReactionExtensions(ctx context.Context, in *GetMessageListReactionExtensionsReq, opts ...grpc.CallOption) (*GetMessageListReactionExtensionsResp, error) + AddMessageReactionExtensions(ctx context.Context, in *ModifyMessageReactionExtensionsReq, opts ...grpc.CallOption) (*ModifyMessageReactionExtensionsResp, error) + DeleteMessageReactionExtensions(ctx context.Context, in *DeleteMessageListReactionExtensionsReq, opts ...grpc.CallOption) (*DeleteMessageListReactionExtensionsResp, error) } type msgClient struct { @@ -1364,6 +2392,42 @@ func (c *msgClient) GetWriteDiffMsg(ctx context.Context, in *GetWriteDiffMsgReq, return out, nil } +func (c *msgClient) SetMessageReactionExtensions(ctx context.Context, in *SetMessageReactionExtensionsReq, opts ...grpc.CallOption) (*SetMessageReactionExtensionsResp, error) { + out := new(SetMessageReactionExtensionsResp) + err := grpc.Invoke(ctx, "/msg.msg/SetMessageReactionExtensions", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) GetMessageListReactionExtensions(ctx context.Context, in *GetMessageListReactionExtensionsReq, opts ...grpc.CallOption) (*GetMessageListReactionExtensionsResp, error) { + out := new(GetMessageListReactionExtensionsResp) + err := grpc.Invoke(ctx, "/msg.msg/GetMessageListReactionExtensions", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) AddMessageReactionExtensions(ctx context.Context, in *ModifyMessageReactionExtensionsReq, opts ...grpc.CallOption) (*ModifyMessageReactionExtensionsResp, error) { + out := new(ModifyMessageReactionExtensionsResp) + err := grpc.Invoke(ctx, "/msg.msg/AddMessageReactionExtensions", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) DeleteMessageReactionExtensions(ctx context.Context, in *DeleteMessageListReactionExtensionsReq, opts ...grpc.CallOption) (*DeleteMessageListReactionExtensionsResp, error) { + out := new(DeleteMessageListReactionExtensionsResp) + err := grpc.Invoke(ctx, "/msg.msg/DeleteMessageReactionExtensions", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // Server API for Msg service type MsgServer interface { @@ -1378,6 +2442,11 @@ type MsgServer interface { GetSendMsgStatus(context.Context, *GetSendMsgStatusReq) (*GetSendMsgStatusResp, error) GetSuperGroupMsg(context.Context, *GetSuperGroupMsgReq) (*GetSuperGroupMsgResp, error) GetWriteDiffMsg(context.Context, *GetWriteDiffMsgReq) (*GetWriteDiffMsgResp, error) + // modify msg + SetMessageReactionExtensions(context.Context, *SetMessageReactionExtensionsReq) (*SetMessageReactionExtensionsResp, error) + GetMessageListReactionExtensions(context.Context, *GetMessageListReactionExtensionsReq) (*GetMessageListReactionExtensionsResp, error) + AddMessageReactionExtensions(context.Context, *ModifyMessageReactionExtensionsReq) (*ModifyMessageReactionExtensionsResp, error) + DeleteMessageReactionExtensions(context.Context, *DeleteMessageListReactionExtensionsReq) (*DeleteMessageListReactionExtensionsResp, error) } func RegisterMsgServer(s *grpc.Server, srv MsgServer) { @@ -1582,6 +2651,78 @@ func _Msg_GetWriteDiffMsg_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Msg_SetMessageReactionExtensions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetMessageReactionExtensionsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetMessageReactionExtensions(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/msg.msg/SetMessageReactionExtensions", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetMessageReactionExtensions(ctx, req.(*SetMessageReactionExtensionsReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_GetMessageListReactionExtensions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetMessageListReactionExtensionsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).GetMessageListReactionExtensions(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/msg.msg/GetMessageListReactionExtensions", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).GetMessageListReactionExtensions(ctx, req.(*GetMessageListReactionExtensionsReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_AddMessageReactionExtensions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ModifyMessageReactionExtensionsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).AddMessageReactionExtensions(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/msg.msg/AddMessageReactionExtensions", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).AddMessageReactionExtensions(ctx, req.(*ModifyMessageReactionExtensionsReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_DeleteMessageReactionExtensions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteMessageListReactionExtensionsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).DeleteMessageReactionExtensions(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/msg.msg/DeleteMessageReactionExtensions", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).DeleteMessageReactionExtensions(ctx, req.(*DeleteMessageListReactionExtensionsReq)) + } + return interceptor(ctx, in, info, handler) +} + var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "msg.msg", HandlerType: (*MsgServer)(nil), @@ -1630,71 +2771,135 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "GetWriteDiffMsg", Handler: _Msg_GetWriteDiffMsg_Handler, }, + { + MethodName: "SetMessageReactionExtensions", + Handler: _Msg_SetMessageReactionExtensions_Handler, + }, + { + MethodName: "GetMessageListReactionExtensions", + Handler: _Msg_GetMessageListReactionExtensions_Handler, + }, + { + MethodName: "AddMessageReactionExtensions", + Handler: _Msg_AddMessageReactionExtensions_Handler, + }, + { + MethodName: "DeleteMessageReactionExtensions", + Handler: _Msg_DeleteMessageReactionExtensions_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "msg/msg.proto", } -func init() { proto.RegisterFile("msg/msg.proto", fileDescriptor_msg_3f0146015dfd26d9) } +func init() { proto.RegisterFile("msg/msg.proto", fileDescriptor_msg_24cf87b309a51053) } -var fileDescriptor_msg_3f0146015dfd26d9 = []byte{ - // 928 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcf, 0x6f, 0xe3, 0x44, - 0x14, 0x96, 0xe3, 0x26, 0xdd, 0xbe, 0xb4, 0x6a, 0x98, 0x86, 0xe2, 0x35, 0x1c, 0x82, 0x05, 0x28, - 0x02, 0xb6, 0x91, 0x0a, 0x12, 0x87, 0xbd, 0x40, 0xd7, 0x2b, 0x6f, 0x25, 0x4c, 0xb7, 0x76, 0x11, - 0x12, 0x97, 0xae, 0x69, 0x66, 0x67, 0xad, 0xc6, 0xf6, 0xd4, 0xcf, 0xa1, 0xbb, 0x20, 0xb8, 0x71, - 0xe4, 0x0f, 0xe0, 0xc4, 0x8d, 0x3b, 0xff, 0x21, 0x9a, 0x19, 0x27, 0x19, 0xff, 0x28, 0x2d, 0x61, - 0xb5, 0xb7, 0xbc, 0x37, 0x6f, 0xbe, 0xf7, 0x7d, 0x6f, 0xde, 0xcc, 0x8b, 0x61, 0x27, 0x41, 0x36, - 0x49, 0x90, 0x1d, 0xf0, 0x3c, 0x2b, 0x32, 0x62, 0x26, 0xc8, 0xec, 0xf1, 0x09, 0xa7, 0xe9, 0x83, - 0x63, 0xff, 0x41, 0x48, 0xf3, 0x1f, 0x69, 0x3e, 0xe1, 0x97, 0x6c, 0x22, 0x97, 0x27, 0x38, 0xbd, - 0x3c, 0xbf, 0xc6, 0xc9, 0x35, 0xaa, 0x70, 0xe7, 0x67, 0xe8, 0xfb, 0xc8, 0xdc, 0xa8, 0x88, 0xce, - 0x32, 0xff, 0x94, 0x0c, 0xa1, 0x5b, 0x64, 0x97, 0x34, 0xb5, 0x8c, 0x91, 0x31, 0xde, 0x0a, 0x94, - 0x41, 0x46, 0xd0, 0xcf, 0x38, 0xcd, 0xa3, 0x22, 0xce, 0xd2, 0x63, 0xd7, 0xea, 0xc8, 0x35, 0xdd, - 0x45, 0x3e, 0x87, 0xcd, 0x44, 0xc1, 0x58, 0xe6, 0xc8, 0x18, 0xf7, 0x0f, 0xed, 0x03, 0x94, 0xa9, - 0xcf, 0x23, 0x1e, 0x9f, 0xf3, 0x28, 0x8f, 0x12, 0x3c, 0x28, 0x13, 0x05, 0x8b, 0x50, 0x87, 0x6a, - 0xc9, 0xdd, 0x23, 0x1d, 0xc4, 0xb8, 0x33, 0xc8, 0xed, 0xe4, 0x9c, 0xdf, 0x0d, 0xd8, 0x7d, 0x3a, - 0xc7, 0x17, 0xba, 0xd0, 0x11, 0xf4, 0x4f, 0xb4, 0x5d, 0x4a, 0xae, 0xee, 0xd2, 0xd9, 0x74, 0xee, - 0xce, 0xc6, 0x81, 0x6d, 0x3e, 0xc7, 0x17, 0x67, 0xd9, 0xb7, 0x48, 0xf3, 0x63, 0x57, 0x56, 0x63, - 0x2b, 0xa8, 0xf8, 0x9c, 0xbf, 0x0c, 0x20, 0x2b, 0x2e, 0x59, 0xca, 0xb2, 0xa3, 0x57, 0xfe, 0x29, - 0xb1, 0x60, 0x73, 0x16, 0x61, 0x11, 0xd2, 0x2b, 0x49, 0x67, 0x23, 0x58, 0x98, 0xe4, 0x03, 0xd8, - 0x89, 0x18, 0xcb, 0x29, 0xab, 0x8a, 0xac, 0x3a, 0xc9, 0x21, 0xf4, 0x13, 0x8a, 0x18, 0x31, 0xfa, - 0x75, 0x8c, 0x85, 0x65, 0x8e, 0xcc, 0x71, 0xff, 0x70, 0x70, 0x20, 0x5a, 0x43, 0x53, 0x1e, 0xe8, - 0x41, 0xe4, 0x3d, 0xd8, 0x2a, 0xf2, 0x98, 0x31, 0xc9, 0x75, 0x43, 0xa2, 0xae, 0x1c, 0xce, 0x37, - 0x40, 0x3c, 0x5a, 0xf8, 0xd1, 0xcb, 0xaf, 0xd2, 0xa9, 0x1f, 0xa7, 0x21, 0xbd, 0x0a, 0xe8, 0x15, - 0xd9, 0x87, 0x5e, 0x29, 0x4e, 0x55, 0xad, 0xb4, 0xea, 0x25, 0xed, 0x34, 0x4a, 0xea, 0x5c, 0xc3, - 0x5e, 0x03, 0x0f, 0xb9, 0x10, 0xfe, 0x38, 0xcf, 0x1f, 0x65, 0x53, 0x2a, 0x11, 0xbb, 0xc1, 0xc2, - 0x14, 0xa9, 0x1e, 0xe7, 0xb9, 0x8f, 0xac, 0x44, 0x2b, 0x2d, 0xe1, 0xf7, 0xa3, 0x97, 0xa2, 0x52, - 0xa2, 0xbe, 0x3b, 0x41, 0x69, 0x49, 0xbf, 0xc4, 0x95, 0x5a, 0x84, 0x5f, 0x5a, 0xce, 0x4f, 0x00, - 0x21, 0x4d, 0xa7, 0x3e, 0x32, 0x21, 0xe0, 0xcd, 0x36, 0xf9, 0x9f, 0x06, 0xf4, 0x97, 0xc9, 0x95, - 0x5a, 0x5a, 0x55, 0x4b, 0x57, 0x6a, 0x69, 0x45, 0xad, 0xb2, 0x04, 0x33, 0x95, 0xc7, 0x47, 0xb6, - 0x3c, 0x26, 0xdd, 0x25, 0x22, 0x2e, 0x66, 0x31, 0x4d, 0x0b, 0x15, 0xd1, 0x55, 0x11, 0x9a, 0x8b, - 0xd8, 0x70, 0x0f, 0x69, 0x3a, 0x3d, 0x8b, 0x13, 0x6a, 0xf5, 0x46, 0xc6, 0xd8, 0x0c, 0x96, 0xb6, - 0x73, 0x01, 0xfd, 0x47, 0x33, 0x1a, 0xe5, 0x65, 0x79, 0xf6, 0xa1, 0x37, 0xaf, 0x9c, 0xaf, 0xb2, - 0x04, 0x44, 0xc6, 0xcb, 0x93, 0x57, 0x04, 0x97, 0x76, 0xbd, 0x78, 0x66, 0xf3, 0x12, 0x7e, 0x09, - 0xdb, 0xab, 0x24, 0xeb, 0x94, 0xc1, 0xf9, 0xc3, 0x80, 0xdd, 0x90, 0x0a, 0x3d, 0x95, 0x5e, 0x6c, - 0xe5, 0x6a, 0xc1, 0x26, 0xcb, 0xb3, 0x39, 0x5f, 0x52, 0x5d, 0x98, 0x62, 0x47, 0xa2, 0x5a, 0xa4, - 0x6c, 0x1d, 0x65, 0xd5, 0x15, 0x6c, 0x34, 0x8f, 0x5f, 0xd7, 0xdf, 0xad, 0xea, 0x77, 0x5c, 0x18, - 0x54, 0xa9, 0xad, 0xa5, 0xf0, 0x04, 0xf6, 0x42, 0x5a, 0x94, 0xcd, 0x12, 0x16, 0x51, 0x31, 0xc7, - 0xa0, 0x49, 0xcd, 0x68, 0x52, 0xdb, 0x87, 0x1e, 0xca, 0x70, 0x09, 0xd8, 0x0d, 0x4a, 0xcb, 0x79, - 0x02, 0xc3, 0x26, 0xe0, 0x5a, 0xd4, 0xbe, 0x90, 0x57, 0xf7, 0xbf, 0x53, 0x73, 0x9e, 0xc1, 0xd0, - 0x7b, 0x2d, 0x14, 0x34, 0x91, 0x66, 0x45, 0xe4, 0x6f, 0x06, 0xec, 0xb9, 0x74, 0x16, 0xce, 0x39, - 0xcd, 0x3d, 0x71, 0xca, 0x65, 0x1f, 0xeb, 0xe7, 0x65, 0xd4, 0xfa, 0x75, 0xd5, 0x37, 0x9d, 0x9b, - 0xfa, 0xc6, 0xac, 0xf6, 0xcd, 0xad, 0xfd, 0x21, 0x8a, 0xdd, 0xa4, 0xb1, 0x56, 0xb1, 0x2f, 0x54, - 0xb1, 0xeb, 0x82, 0x6e, 0xef, 0x83, 0x01, 0x98, 0xa2, 0xb3, 0x3b, 0xb2, 0xb3, 0xc5, 0xcf, 0x9b, - 0x05, 0x39, 0xbf, 0xaa, 0x83, 0xf9, 0xff, 0x74, 0xd7, 0x7c, 0x17, 0x9f, 0xc8, 0xe1, 0xf2, 0x5d, - 0x1e, 0x17, 0xd4, 0x8d, 0x9f, 0x3f, 0x5f, 0x5f, 0xa3, 0xf3, 0x8b, 0x2c, 0x57, 0x15, 0xe9, 0xcd, - 0x09, 0x39, 0xfc, 0xbb, 0x07, 0xe2, 0x4f, 0x17, 0x79, 0x06, 0xbb, 0xb5, 0xe9, 0x46, 0x3e, 0x6c, - 0xd9, 0xdf, 0x9c, 0xa8, 0xf6, 0x47, 0x77, 0x09, 0x43, 0x4e, 0x32, 0x18, 0x3e, 0x9d, 0xcf, 0x66, - 0xbe, 0x1a, 0xe0, 0x47, 0xaf, 0x42, 0x7a, 0x25, 0xa7, 0xf8, 0xc7, 0x2d, 0xfb, 0xdb, 0x02, 0x45, - 0xae, 0x4f, 0xee, 0x1c, 0x8b, 0x9c, 0x7c, 0x0a, 0x9b, 0xe5, 0xcd, 0x25, 0xbb, 0xf2, 0x8f, 0xc4, - 0x6a, 0x8a, 0xda, 0x83, 0xaa, 0x03, 0x39, 0x39, 0x05, 0x70, 0xe9, 0xcc, 0x47, 0x26, 0x49, 0x8d, - 0x5a, 0x12, 0xad, 0x96, 0x05, 0xc2, 0xfb, 0xb7, 0x44, 0x20, 0x27, 0x1e, 0x0c, 0xea, 0x77, 0x8a, - 0x58, 0x32, 0x71, 0xcb, 0x8d, 0xb7, 0xef, 0xdf, 0xb0, 0x82, 0x9c, 0x4c, 0xe0, 0xde, 0x62, 0xfc, - 0x10, 0xc5, 0x5c, 0x1b, 0x79, 0xf6, 0x5b, 0x35, 0x0f, 0x72, 0xf2, 0x10, 0xb6, 0xf5, 0x17, 0x9d, - 0x0c, 0x4b, 0xb9, 0x95, 0xf9, 0x63, 0xbf, 0xdd, 0xe2, 0x55, 0xb4, 0xeb, 0xef, 0x6e, 0x49, 0xbb, - 0xe5, 0x7d, 0x2f, 0x69, 0xb7, 0x3e, 0xd4, 0x1e, 0x0c, 0xbc, 0x76, 0x20, 0xef, 0x46, 0x20, 0xef, - 0x5f, 0x80, 0x5a, 0x0a, 0xd9, 0xf2, 0xd2, 0x68, 0x40, 0x8d, 0x42, 0xba, 0xb2, 0xcb, 0xf5, 0xcb, - 0x46, 0xde, 0x59, 0x44, 0xd7, 0x2e, 0xb3, 0x6d, 0xb5, 0x2f, 0x20, 0x3f, 0x7a, 0xf7, 0xfb, 0xfb, - 0xe2, 0x13, 0xe5, 0xfc, 0xd8, 0xd7, 0xbe, 0x4d, 0x12, 0x64, 0x0f, 0x13, 0x64, 0x3f, 0xf4, 0xa4, - 0xf9, 0xd9, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x68, 0xc1, 0xb8, 0x4c, 0xda, 0x0c, 0x00, 0x00, +var fileDescriptor_msg_24cf87b309a51053 = []byte{ + // 1683 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0x4f, 0x6f, 0xdb, 0x46, + 0x16, 0x07, 0x49, 0x4b, 0xb6, 0x9f, 0xec, 0xd8, 0x19, 0x3b, 0x5e, 0x85, 0x31, 0x10, 0x85, 0xf9, + 0xa7, 0x6c, 0x12, 0x19, 0xeb, 0x5d, 0x20, 0x8b, 0xcd, 0x02, 0x9b, 0x38, 0xf2, 0x2a, 0x46, 0x96, + 0xeb, 0x98, 0xf2, 0x6e, 0x81, 0xf6, 0xe0, 0x30, 0xd2, 0x98, 0x21, 0x2c, 0x91, 0x34, 0x87, 0x8a, + 0xad, 0xfe, 0xbb, 0xb5, 0x28, 0x50, 0xe4, 0xd0, 0x63, 0x4f, 0xbd, 0xf5, 0xd6, 0x4b, 0xbf, 0x41, + 0x3f, 0x40, 0xd1, 0x0f, 0xd2, 0xcf, 0x50, 0xa0, 0x98, 0x19, 0x4a, 0x1a, 0xfe, 0x93, 0x68, 0xb9, + 0x08, 0x52, 0xa0, 0x37, 0xbd, 0x99, 0x37, 0x6f, 0xde, 0xef, 0xbd, 0xdf, 0xbc, 0x19, 0x3e, 0xc1, + 0x62, 0x97, 0x58, 0x1b, 0x5d, 0x62, 0xd5, 0x3c, 0xdf, 0x0d, 0x5c, 0xa4, 0x74, 0x89, 0xa5, 0x56, + 0x77, 0x3d, 0xec, 0xdc, 0xdf, 0xd1, 0xef, 0x37, 0xb1, 0xff, 0x1a, 0xfb, 0x1b, 0xde, 0x91, 0xb5, + 0xc1, 0xa6, 0x37, 0x48, 0xfb, 0xe8, 0xe0, 0x84, 0x6c, 0x9c, 0x10, 0xae, 0xae, 0xd6, 0x26, 0x6a, + 0xfa, 0xa6, 0xe7, 0x61, 0x3f, 0xd4, 0xd7, 0x3e, 0x82, 0x92, 0x4e, 0xac, 0xba, 0x19, 0x98, 0xfb, + 0xae, 0xbe, 0x87, 0x56, 0xa1, 0x10, 0xb8, 0x47, 0xd8, 0x29, 0x4b, 0x15, 0xa9, 0x3a, 0x6f, 0x70, + 0x01, 0x55, 0xa0, 0xe4, 0x7a, 0xd8, 0x37, 0x03, 0xdb, 0x75, 0x76, 0xea, 0x65, 0x99, 0xcd, 0x89, + 0x43, 0xe8, 0x6f, 0x30, 0xdb, 0xe5, 0x66, 0xca, 0x4a, 0x45, 0xaa, 0x96, 0x36, 0xd5, 0x1a, 0x61, + 0x0e, 0x1c, 0x98, 0x9e, 0x7d, 0xe0, 0x99, 0xbe, 0xd9, 0x25, 0xb5, 0x70, 0x23, 0x63, 0xa0, 0xaa, + 0x61, 0x61, 0xf3, 0xfa, 0x96, 0x68, 0x44, 0xca, 0x6d, 0x64, 0xb2, 0x73, 0xda, 0x1b, 0x09, 0x96, + 0x9e, 0xf7, 0xc8, 0x2b, 0x11, 0x68, 0x05, 0x4a, 0xbb, 0xc2, 0x2a, 0x0e, 0x57, 0x1c, 0x12, 0xbd, + 0x91, 0xf3, 0x7b, 0xa3, 0xc1, 0x82, 0xd7, 0x23, 0xaf, 0xf6, 0xdd, 0xff, 0x11, 0xec, 0xef, 0xd4, + 0x59, 0x34, 0xe6, 0x8d, 0xc8, 0x98, 0xf6, 0xad, 0x04, 0x68, 0xe4, 0x8b, 0xeb, 0x58, 0xee, 0x56, + 0x5f, 0xdf, 0x43, 0x65, 0x98, 0xed, 0x98, 0x24, 0x68, 0xe2, 0x63, 0xe6, 0xce, 0x8c, 0x31, 0x10, + 0xd1, 0x0d, 0x58, 0x34, 0x2d, 0xcb, 0xc7, 0x56, 0x14, 0x64, 0x74, 0x10, 0x6d, 0x42, 0xa9, 0x8b, + 0x09, 0x31, 0x2d, 0xfc, 0x1f, 0x9b, 0x04, 0x65, 0xa5, 0xa2, 0x54, 0x4b, 0x9b, 0xcb, 0x35, 0x4a, + 0x25, 0x01, 0xb9, 0x21, 0x2a, 0xa1, 0x75, 0x98, 0x0f, 0x7c, 0xdb, 0xb2, 0x98, 0xaf, 0x33, 0xcc, + 0xea, 0x68, 0x40, 0xfb, 0x2f, 0xa0, 0x06, 0x0e, 0x74, 0xf3, 0xf4, 0xb1, 0xd3, 0xd6, 0x6d, 0xa7, + 0x89, 0x8f, 0x0d, 0x7c, 0x8c, 0xd6, 0xa0, 0x18, 0x82, 0xe3, 0x51, 0x0b, 0xa5, 0x78, 0x48, 0xe5, + 0x44, 0x48, 0xb5, 0x13, 0x58, 0x49, 0xd8, 0x23, 0x1e, 0x05, 0xbe, 0xed, 0xfb, 0x4f, 0xdc, 0x36, + 0x66, 0x16, 0x0b, 0xc6, 0x40, 0xa4, 0x5b, 0x6d, 0xfb, 0xbe, 0x4e, 0xac, 0xd0, 0x5a, 0x28, 0xd1, + 0x71, 0xdd, 0x3c, 0xa5, 0x91, 0xa2, 0xf1, 0x5d, 0x34, 0x42, 0x89, 0x8d, 0x33, 0xbb, 0x0c, 0x0b, + 0x1d, 0x67, 0x92, 0xf6, 0x21, 0x40, 0x13, 0x3b, 0x6d, 0x9d, 0x58, 0x14, 0xc0, 0xdb, 0x25, 0xf9, + 0x37, 0x12, 0x94, 0x86, 0x9b, 0x73, 0xb4, 0x38, 0x8a, 0x16, 0x8f, 0xd0, 0xe2, 0x08, 0x5a, 0x2e, + 0x51, 0xcf, 0xf8, 0x3e, 0x3a, 0xb1, 0x86, 0x69, 0x12, 0x87, 0xa8, 0x46, 0xab, 0x63, 0x63, 0x27, + 0xe0, 0x1a, 0x05, 0xae, 0x21, 0x0c, 0x21, 0x15, 0xe6, 0x08, 0x76, 0xda, 0xfb, 0x76, 0x17, 0x97, + 0x8b, 0x15, 0xa9, 0xaa, 0x18, 0x43, 0x59, 0x6b, 0x41, 0xe9, 0x49, 0x07, 0x9b, 0x7e, 0x18, 0x9e, + 0x35, 0x28, 0xf6, 0x22, 0xf9, 0xe5, 0x12, 0x35, 0xe1, 0x7a, 0x61, 0xe6, 0xb9, 0x83, 0x43, 0x39, + 0x1e, 0x3c, 0x25, 0x79, 0x08, 0x1f, 0xc1, 0xc2, 0x68, 0x93, 0x69, 0xc2, 0xa0, 0x7d, 0x2d, 0xc1, + 0x52, 0x13, 0x53, 0x3c, 0x11, 0x2e, 0xa6, 0xfa, 0x5a, 0x86, 0x59, 0xcb, 0x77, 0x7b, 0xde, 0xd0, + 0xd5, 0x81, 0x48, 0x57, 0x74, 0x39, 0x45, 0x42, 0xea, 0x70, 0x29, 0x8e, 0x60, 0x26, 0x99, 0x7e, + 0x11, 0x7f, 0x21, 0x8a, 0x5f, 0xab, 0xc3, 0x72, 0xd4, 0xb5, 0xa9, 0x10, 0xee, 0xc2, 0x4a, 0x13, + 0x07, 0x21, 0x59, 0x9a, 0x81, 0x19, 0xf4, 0x88, 0x91, 0x74, 0x4d, 0x4a, 0xba, 0xb6, 0x06, 0x45, + 0xc2, 0xd4, 0x99, 0xc1, 0x82, 0x11, 0x4a, 0xda, 0x53, 0x58, 0x4d, 0x1a, 0x9c, 0xca, 0xb5, 0x07, + 0xec, 0xe8, 0x9e, 0xdd, 0x35, 0xed, 0x05, 0xac, 0x36, 0x7e, 0x13, 0x17, 0x04, 0x90, 0x4a, 0x04, + 0xe4, 0x67, 0x12, 0xac, 0xd4, 0x71, 0xa7, 0xd9, 0xf3, 0xb0, 0xdf, 0xa0, 0x59, 0x0e, 0x79, 0x2c, + 0xe6, 0x4b, 0x8a, 0xf1, 0x75, 0xc4, 0x1b, 0x39, 0x8b, 0x37, 0x4a, 0x94, 0x37, 0x13, 0xf9, 0x41, + 0x83, 0x9d, 0x74, 0x63, 0xaa, 0x60, 0xb7, 0x78, 0xb0, 0xe3, 0x80, 0x26, 0xf3, 0x60, 0x19, 0x14, + 0xca, 0x6c, 0x99, 0x31, 0x9b, 0xfe, 0xcc, 0x06, 0xa4, 0x7d, 0xca, 0x13, 0x73, 0x7e, 0x77, 0xa7, + 0xac, 0x8b, 0x4f, 0xd9, 0xe5, 0xf2, 0x9e, 0x6f, 0x07, 0xb8, 0x6e, 0x1f, 0x1e, 0x4e, 0x8f, 0x51, + 0xfb, 0x84, 0x85, 0x2b, 0x6a, 0xe9, 0x2d, 0x02, 0xf9, 0xaa, 0x00, 0x9a, 0xee, 0xb6, 0xed, 0xc3, + 0xbe, 0xce, 0x6f, 0x56, 0x03, 0x9b, 0x2d, 0xea, 0xec, 0xf6, 0x69, 0x80, 0x1d, 0x62, 0xbb, 0x4e, + 0xce, 0x53, 0x4c, 0x6b, 0xb4, 0xdb, 0xf3, 0x5b, 0x78, 0x54, 0x60, 0x07, 0x72, 0x84, 0xcc, 0x4a, + 0xb2, 0xf8, 0x12, 0x4c, 0xe8, 0x46, 0xfb, 0x7d, 0x0f, 0x33, 0x6a, 0x16, 0x0c, 0x71, 0x08, 0x9d, + 0xc2, 0x25, 0x3f, 0xee, 0x14, 0x7b, 0x24, 0x14, 0xd8, 0x23, 0x61, 0x8b, 0x3f, 0x12, 0x26, 0x62, + 0xa8, 0x19, 0x69, 0x46, 0xb6, 0x9d, 0xc0, 0xef, 0x1b, 0xe9, 0x1b, 0xc4, 0x6f, 0xa6, 0x62, 0xf2, + 0x66, 0xba, 0x07, 0x32, 0x3e, 0x2d, 0xcf, 0xb2, 0x78, 0xaf, 0xd7, 0x2c, 0xd7, 0xb5, 0x3a, 0x98, + 0x3f, 0x4e, 0x5f, 0xf6, 0x0e, 0x6b, 0xcd, 0xc0, 0xb7, 0x1d, 0xeb, 0xff, 0x66, 0xa7, 0x87, 0x0d, + 0x19, 0x9f, 0xa2, 0x47, 0xb0, 0x60, 0x06, 0x81, 0xd9, 0x7a, 0x85, 0xdb, 0x3b, 0xce, 0xa1, 0x5b, + 0x9e, 0xcb, 0xb1, 0x2e, 0xb2, 0x82, 0xd2, 0xc2, 0x26, 0x0c, 0x48, 0x79, 0xbe, 0x22, 0x55, 0xe7, + 0x8c, 0x81, 0x88, 0x36, 0x61, 0xd5, 0x26, 0xd4, 0x7d, 0xdf, 0x31, 0x3b, 0x23, 0xe0, 0x65, 0x60, + 0x6a, 0xa9, 0x73, 0xa8, 0x06, 0xa8, 0x4b, 0xac, 0x7f, 0xdb, 0x3e, 0x09, 0x78, 0xfc, 0xd8, 0x0d, + 0x5b, 0x62, 0x37, 0x6c, 0xca, 0x8c, 0x8a, 0x41, 0xcd, 0x0e, 0x22, 0xe5, 0xf6, 0x11, 0xee, 0x87, + 0xdc, 0xa0, 0x3f, 0xd1, 0x5f, 0xa0, 0xf0, 0x9a, 0x82, 0x08, 0xdf, 0xa0, 0x57, 0x52, 0x08, 0xf9, + 0x0c, 0xf7, 0x39, 0x4e, 0xae, 0xf9, 0x0f, 0xf9, 0xef, 0x92, 0xf6, 0x65, 0x01, 0xae, 0xd2, 0x0b, + 0xe9, 0x5d, 0x25, 0x64, 0x6f, 0x3c, 0x21, 0xff, 0xc5, 0x08, 0x39, 0x01, 0xc0, 0x1f, 0x6c, 0xfc, + 0xbd, 0xb0, 0xf1, 0x67, 0x09, 0x2a, 0xe3, 0x93, 0x39, 0xed, 0xbb, 0x58, 0xcc, 0xa6, 0x92, 0xcc, + 0x66, 0x7a, 0x3c, 0x66, 0xb2, 0xe2, 0x21, 0x66, 0xa3, 0x10, 0xcd, 0xc6, 0x1d, 0x28, 0xfa, 0x98, + 0xf4, 0x3a, 0x41, 0xb9, 0xc8, 0x18, 0x7a, 0x91, 0x31, 0x74, 0x08, 0x16, 0x13, 0xcf, 0x08, 0x15, + 0xb4, 0xef, 0x15, 0xb8, 0xde, 0x18, 0xa2, 0xa5, 0xe1, 0x3c, 0xc7, 0xf9, 0xcb, 0x7c, 0x71, 0x8b, + 0x67, 0x53, 0x89, 0x9d, 0xcd, 0xc9, 0xe7, 0x2f, 0x8b, 0x5c, 0x85, 0x31, 0xe4, 0x22, 0xb0, 0xd6, + 0x8d, 0x66, 0xf0, 0x19, 0xee, 0xb3, 0x43, 0xcb, 0x43, 0xf2, 0x90, 0x85, 0x24, 0x07, 0xf2, 0x9a, + 0x9e, 0x30, 0x63, 0x64, 0x98, 0x56, 0x0f, 0x01, 0x25, 0xb5, 0xe3, 0x99, 0x97, 0xf2, 0x66, 0x5e, + 0xce, 0xca, 0xbc, 0xf6, 0x9d, 0x04, 0x37, 0x26, 0xbb, 0x3e, 0x15, 0x4d, 0x9b, 0xb0, 0x42, 0x6c, + 0xc7, 0xea, 0xe0, 0x21, 0x10, 0xc6, 0x23, 0xfe, 0x7d, 0x7e, 0x8d, 0x57, 0x3a, 0x71, 0x7e, 0xb8, + 0x21, 0x57, 0x34, 0xd2, 0x56, 0x6b, 0x3f, 0xca, 0xb0, 0x3e, 0x6e, 0xd5, 0x14, 0x7e, 0xfa, 0x59, + 0x35, 0x99, 0x7b, 0xfa, 0xcf, 0x89, 0x9e, 0x9e, 0xbf, 0x20, 0xcf, 0x24, 0x12, 0xf9, 0xb6, 0x4a, + 0xd4, 0x0f, 0x12, 0x5c, 0x9f, 0xf8, 0x00, 0x9a, 0xf2, 0x51, 0x59, 0x22, 0xbd, 0x56, 0x0b, 0x13, + 0x22, 0x04, 0x13, 0xb1, 0x60, 0x32, 0xdb, 0x83, 0xc6, 0x80, 0x21, 0xaa, 0xa1, 0x4d, 0x80, 0x43, + 0xd3, 0xee, 0xe0, 0x36, 0x5b, 0x34, 0x93, 0xb9, 0x48, 0xd0, 0xd2, 0x7e, 0x91, 0xe1, 0x56, 0x1d, + 0x77, 0x70, 0x80, 0xdf, 0xe9, 0xda, 0x33, 0xb9, 0x59, 0x91, 0x55, 0x9d, 0x8a, 0x67, 0xbe, 0xfa, + 0x66, 0x33, 0x4b, 0xfd, 0x5e, 0x16, 0xdb, 0xe7, 0x58, 0xac, 0xc7, 0xf2, 0x26, 0x7d, 0xa5, 0xf6, + 0xb9, 0x04, 0xb7, 0x73, 0xc5, 0x7f, 0x2a, 0x1e, 0x9d, 0xe1, 0x06, 0x72, 0x61, 0x31, 0xc2, 0x12, + 0x74, 0x0f, 0xe6, 0xf1, 0x60, 0x20, 0xec, 0xad, 0x5e, 0x88, 0x91, 0x69, 0xa4, 0x20, 0xfa, 0x26, + 0x67, 0xf9, 0xa6, 0x44, 0x3e, 0x58, 0x7f, 0x92, 0x61, 0x7e, 0x68, 0x0a, 0x1d, 0x64, 0x85, 0x56, + 0x62, 0x8e, 0xdf, 0x89, 0xee, 0x7c, 0xfe, 0xaa, 0x21, 0xe7, 0x2d, 0xff, 0x4a, 0x26, 0x1b, 0xb4, + 0xd8, 0x43, 0x8e, 0x17, 0xa2, 0xe8, 0x53, 0xed, 0x02, 0x7b, 0x1a, 0x72, 0xba, 0xca, 0xf8, 0x54, + 0xfd, 0xe0, 0x8c, 0x95, 0xe9, 0x76, 0xb4, 0x32, 0xa5, 0xe4, 0x4f, 0xa8, 0x47, 0x7d, 0x58, 0x10, + 0xa7, 0xd0, 0x03, 0x98, 0x3b, 0x0a, 0xe5, 0x30, 0x81, 0x63, 0x19, 0x3a, 0x54, 0x9e, 0x22, 0x99, + 0x6f, 0x24, 0x58, 0x11, 0xda, 0xd3, 0x34, 0x46, 0xac, 0x3f, 0x9d, 0xe8, 0x42, 0x4b, 0x39, 0xba, + 0xd0, 0xf2, 0x99, 0xbb, 0xd0, 0x4a, 0xac, 0x0b, 0xbd, 0xf9, 0x05, 0x80, 0xd2, 0x25, 0x16, 0x7a, + 0x01, 0x4b, 0xb1, 0xee, 0x31, 0xba, 0x99, 0x12, 0x83, 0x64, 0xc7, 0x5a, 0xbd, 0x95, 0x47, 0x8d, + 0x78, 0xc8, 0x85, 0xd5, 0xe7, 0xbd, 0x4e, 0x27, 0x3c, 0xbd, 0x5b, 0xfd, 0x26, 0x3e, 0x66, 0xfe, + 0xfd, 0x39, 0x65, 0x7d, 0x9a, 0x22, 0xdd, 0xeb, 0x6e, 0x6e, 0x5d, 0x76, 0x2e, 0x67, 0xc3, 0xce, + 0x18, 0x5a, 0x0a, 0x3f, 0x79, 0x06, 0x5d, 0x6a, 0x75, 0x39, 0x3a, 0x40, 0x3c, 0xb4, 0x07, 0x50, + 0xc7, 0x1d, 0x9d, 0x58, 0xfc, 0x10, 0xa4, 0x6c, 0x34, 0x9a, 0xa6, 0x16, 0xae, 0x4d, 0xd0, 0x20, + 0x1e, 0x6a, 0xc0, 0x72, 0xbc, 0x67, 0x85, 0xca, 0x6c, 0xe3, 0x94, 0x8e, 0x9a, 0x7a, 0x39, 0x63, + 0x86, 0x78, 0x68, 0x03, 0xe6, 0x06, 0xed, 0x5d, 0xc4, 0x3d, 0x17, 0x5a, 0xca, 0xea, 0xc5, 0xd8, + 0x08, 0xf1, 0xd0, 0x43, 0x58, 0x10, 0x3b, 0xa6, 0x68, 0x75, 0xf8, 0xc9, 0x27, 0xf4, 0x77, 0xd5, + 0x4b, 0x29, 0xa3, 0xdc, 0xed, 0x78, 0x5f, 0x33, 0x74, 0x3b, 0xa5, 0x7f, 0x1a, 0xba, 0x9d, 0xda, + 0x08, 0x6d, 0xc0, 0x72, 0x23, 0xdd, 0x50, 0x23, 0xd3, 0x50, 0x63, 0x8c, 0xa1, 0x94, 0x40, 0xa6, + 0x74, 0xf2, 0x04, 0x43, 0x89, 0x40, 0xd6, 0x19, 0xcb, 0xc5, 0x66, 0x16, 0xfa, 0xd3, 0x40, 0x3b, + 0xd6, 0x2c, 0x53, 0xcb, 0xe9, 0x13, 0xc4, 0x43, 0x47, 0xb0, 0x3e, 0xee, 0x83, 0x0b, 0xdd, 0xc8, + 0xf3, 0x81, 0xad, 0xde, 0xcc, 0xa1, 0x45, 0x3c, 0x74, 0x02, 0x95, 0x49, 0x4f, 0x67, 0x54, 0xcd, + 0xfb, 0x71, 0xa0, 0xde, 0xc9, 0xa9, 0x49, 0x3c, 0x74, 0x0c, 0xeb, 0x8f, 0xdb, 0xed, 0x6c, 0x94, + 0xb7, 0x73, 0xf6, 0xb5, 0xd4, 0x6a, 0x3e, 0x45, 0xe2, 0xa1, 0x8f, 0xe1, 0x6a, 0xe4, 0x8a, 0x4f, + 0xd9, 0xf5, 0xee, 0xe0, 0x94, 0xe4, 0x78, 0x88, 0xa9, 0xf7, 0xf2, 0x2b, 0x13, 0x6f, 0xeb, 0xca, + 0xfb, 0x97, 0x77, 0x3d, 0xec, 0x1c, 0xec, 0xe8, 0xc2, 0x1f, 0xbb, 0x5d, 0x62, 0x3d, 0xec, 0x12, + 0xeb, 0x65, 0x91, 0x89, 0x7f, 0xfd, 0x35, 0x00, 0x00, 0xff, 0xff, 0x33, 0xaa, 0x7d, 0xf5, 0x41, + 0x1e, 0x00, 0x00, } diff --git a/pkg/proto/msg/msg.proto b/pkg/proto/msg/msg.proto index 597dabc3a..78025bd00 100644 --- a/pkg/proto/msg/msg.proto +++ b/pkg/proto/msg/msg.proto @@ -1,5 +1,6 @@ syntax = "proto3"; import "Open-IM-Server/pkg/proto/sdk_ws/ws.proto"; +import "Open-IM-Server/pkg/proto/sdk_ws/wrappers.proto"; option go_package = "Open_IM/pkg/proto/msg;msg"; package msg; @@ -153,6 +154,118 @@ message GetWriteDiffMsgResp{ server_api_params.MsgData msgData = 3; } +message ModifyMessageReactionExtensionsReq { + string operationID = 1; + string sourceID = 2; + string opUserID = 3; + int32 sessionType = 4; + map reactionExtensionList = 5; + string clientMsgID = 6; + google.protobuf.StringValue ex = 7; + google.protobuf.StringValue attachedInfo = 8; + bool isReact = 9; + bool isExternalExtensions = 10; + int64 msgFirstModifyTime = 11; +} +message SetMessageReactionExtensionsReq { + string operationID = 1; + string sourceID = 2; + string opUserID = 3; + int32 sessionType = 4; + map reactionExtensionList = 5; + string clientMsgID = 6; + google.protobuf.StringValue ex = 7; + google.protobuf.StringValue attachedInfo = 8; + bool isReact = 9; + bool isExternalExtensions = 10; + int64 msgFirstModifyTime = 11; +} +message SetMessageReactionExtensionsResp { + int32 errCode = 1; + string errMsg = 2; + string clientMsgID = 3; + int64 msgFirstModifyTime = 4; + bool isReact = 5; + repeated KeyValueResp result = 6; +} + + +message GetMessageListReactionExtensionsReq { + string operationID = 1; + string opUserID = 2; + string sourceID = 3; + int32 sessionType = 4; + bool isExternalExtensions = 5; + message MessageReactionKey { + string clientMsgID = 1; + int64 msgFirstModifyTime = 2; + } + repeated MessageReactionKey messageReactionKeyList = 6; +} +message GetMessageListReactionExtensionsResp{ + int32 errCode = 1; + string errMsg = 2; + repeated SingleMessageExtensionResult singleMessageResult =3; + +} +message SingleMessageExtensionResult { + int32 errCode = 1; + string errMsg = 2; + map reactionExtensionList = 3; + string clientMsgID = 4; +} + + +message ModifyMessageReactionExtensionsResp { + int32 errCode = 1; + string errMsg = 2; + repeated ExtendMsgResp successList = 3; + repeated ExtendMsgResp failedList = 4; +} + +message DeleteMessageListReactionExtensionsReq { + string operationID = 1; + string opUserID = 2; + string sourceID = 3; + int32 sessionType = 4; + string clientMsgID = 5; + bool isExternalExtensions = 6; + int64 msgFirstModifyTime = 7; + repeated server_api_params.KeyValue reactionExtensionList = 8; +} + +message DeleteMessageListReactionExtensionsResp { + int32 errCode = 1; + string errMsg = 2; + repeated KeyValueResp result = 6; +} + +message ExtendMsgResp { + ExtendMsg extendMsg = 1; + int32 errCode = 2; + string errMsg = 3; +} + +message ExtendMsg { + map reactionExtensionList = 1; + string clientMsgID = 2; + int64 msgFirstModifyTime = 3; + string attachedInfo = 4; + string ex = 5; +} + +message KeyValueResp { + server_api_params.KeyValue keyValue = 1; + int32 errCode = 2; + string errMsg = 3; +} + +message MsgDataToModifyByMQ{ + string aggregationID = 1; + repeated MsgDataToMQ messageList = 2; + string triggerID = 3; +} + service msg { rpc GetMaxAndMinSeq(server_api_params.GetMaxAndMinSeqReq) returns(server_api_params.GetMaxAndMinSeqResp); @@ -167,4 +280,9 @@ service msg { rpc GetSuperGroupMsg(GetSuperGroupMsgReq) returns(GetSuperGroupMsgResp); rpc GetWriteDiffMsg(GetWriteDiffMsgReq) returns(GetWriteDiffMsgResp); + // modify msg + rpc SetMessageReactionExtensions(SetMessageReactionExtensionsReq) returns(SetMessageReactionExtensionsResp); + rpc GetMessageListReactionExtensions(GetMessageListReactionExtensionsReq) returns(GetMessageListReactionExtensionsResp); + rpc AddMessageReactionExtensions(ModifyMessageReactionExtensionsReq) returns(ModifyMessageReactionExtensionsResp); + rpc DeleteMessageReactionExtensions(DeleteMessageListReactionExtensionsReq) returns(DeleteMessageListReactionExtensionsResp); } diff --git a/pkg/proto/relay/relay.pb.go b/pkg/proto/relay/relay.pb.go index df82206a2..8da60edd5 100644 --- a/pkg/proto/relay/relay.pb.go +++ b/pkg/proto/relay/relay.pb.go @@ -1,1354 +1,831 @@ // Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.27.1 -// protoc v3.15.5 // source: relay/relay.proto -package pbRelay +package pbRelay // import "Open_IM/pkg/proto/relay" + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import sdk_ws "Open_IM/pkg/proto/sdk_ws" import ( - sdk_ws "Open_IM/pkg/proto/sdk_ws" - context "context" + context "golang.org/x/net/context" grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package type OnlinePushMsgReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=OperationID,proto3" json:"OperationID,omitempty"` - MsgData *sdk_ws.MsgData `protobuf:"bytes,2,opt,name=msgData,proto3" json:"msgData,omitempty"` - PushToUserID string `protobuf:"bytes,3,opt,name=pushToUserID,proto3" json:"pushToUserID,omitempty"` + OperationID string `protobuf:"bytes,1,opt,name=OperationID" json:"OperationID,omitempty"` + MsgData *sdk_ws.MsgData `protobuf:"bytes,2,opt,name=msgData" json:"msgData,omitempty"` + PushToUserID string `protobuf:"bytes,3,opt,name=pushToUserID" json:"pushToUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *OnlinePushMsgReq) Reset() { - *x = OnlinePushMsgReq{} - if protoimpl.UnsafeEnabled { - mi := &file_relay_relay_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OnlinePushMsgReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OnlinePushMsgReq) ProtoMessage() {} - -func (x *OnlinePushMsgReq) ProtoReflect() protoreflect.Message { - mi := &file_relay_relay_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OnlinePushMsgReq.ProtoReflect.Descriptor instead. +func (m *OnlinePushMsgReq) Reset() { *m = OnlinePushMsgReq{} } +func (m *OnlinePushMsgReq) String() string { return proto.CompactTextString(m) } +func (*OnlinePushMsgReq) ProtoMessage() {} func (*OnlinePushMsgReq) Descriptor() ([]byte, []int) { - return file_relay_relay_proto_rawDescGZIP(), []int{0} + return fileDescriptor_relay_8a2a5bc32d9acd54, []int{0} +} +func (m *OnlinePushMsgReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_OnlinePushMsgReq.Unmarshal(m, b) +} +func (m *OnlinePushMsgReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_OnlinePushMsgReq.Marshal(b, m, deterministic) +} +func (dst *OnlinePushMsgReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_OnlinePushMsgReq.Merge(dst, src) +} +func (m *OnlinePushMsgReq) XXX_Size() int { + return xxx_messageInfo_OnlinePushMsgReq.Size(m) +} +func (m *OnlinePushMsgReq) XXX_DiscardUnknown() { + xxx_messageInfo_OnlinePushMsgReq.DiscardUnknown(m) } -func (x *OnlinePushMsgReq) GetOperationID() string { - if x != nil { - return x.OperationID +var xxx_messageInfo_OnlinePushMsgReq proto.InternalMessageInfo + +func (m *OnlinePushMsgReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *OnlinePushMsgReq) GetMsgData() *sdk_ws.MsgData { - if x != nil { - return x.MsgData +func (m *OnlinePushMsgReq) GetMsgData() *sdk_ws.MsgData { + if m != nil { + return m.MsgData } return nil } -func (x *OnlinePushMsgReq) GetPushToUserID() string { - if x != nil { - return x.PushToUserID +func (m *OnlinePushMsgReq) GetPushToUserID() string { + if m != nil { + return m.PushToUserID } return "" } type OnlinePushMsgResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Resp []*SingleMsgToUserPlatform `protobuf:"bytes,1,rep,name=resp,proto3" json:"resp,omitempty"` + Resp []*SingleMsgToUserPlatform `protobuf:"bytes,1,rep,name=resp" json:"resp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *OnlinePushMsgResp) Reset() { - *x = OnlinePushMsgResp{} - if protoimpl.UnsafeEnabled { - mi := &file_relay_relay_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OnlinePushMsgResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OnlinePushMsgResp) ProtoMessage() {} - -func (x *OnlinePushMsgResp) ProtoReflect() protoreflect.Message { - mi := &file_relay_relay_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OnlinePushMsgResp.ProtoReflect.Descriptor instead. +func (m *OnlinePushMsgResp) Reset() { *m = OnlinePushMsgResp{} } +func (m *OnlinePushMsgResp) String() string { return proto.CompactTextString(m) } +func (*OnlinePushMsgResp) ProtoMessage() {} func (*OnlinePushMsgResp) Descriptor() ([]byte, []int) { - return file_relay_relay_proto_rawDescGZIP(), []int{1} + return fileDescriptor_relay_8a2a5bc32d9acd54, []int{1} +} +func (m *OnlinePushMsgResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_OnlinePushMsgResp.Unmarshal(m, b) +} +func (m *OnlinePushMsgResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_OnlinePushMsgResp.Marshal(b, m, deterministic) +} +func (dst *OnlinePushMsgResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_OnlinePushMsgResp.Merge(dst, src) +} +func (m *OnlinePushMsgResp) XXX_Size() int { + return xxx_messageInfo_OnlinePushMsgResp.Size(m) +} +func (m *OnlinePushMsgResp) XXX_DiscardUnknown() { + xxx_messageInfo_OnlinePushMsgResp.DiscardUnknown(m) } -func (x *OnlinePushMsgResp) GetResp() []*SingleMsgToUserPlatform { - if x != nil { - return x.Resp +var xxx_messageInfo_OnlinePushMsgResp proto.InternalMessageInfo + +func (m *OnlinePushMsgResp) GetResp() []*SingleMsgToUserPlatform { + if m != nil { + return m.Resp } return nil } type SingelMsgToUserResultList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - Resp []*SingleMsgToUserPlatform `protobuf:"bytes,2,rep,name=resp,proto3" json:"resp,omitempty"` - OnlinePush bool `protobuf:"varint,3,opt,name=onlinePush,proto3" json:"onlinePush,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + Resp []*SingleMsgToUserPlatform `protobuf:"bytes,2,rep,name=resp" json:"resp,omitempty"` + OnlinePush bool `protobuf:"varint,3,opt,name=onlinePush" json:"onlinePush,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SingelMsgToUserResultList) Reset() { - *x = SingelMsgToUserResultList{} - if protoimpl.UnsafeEnabled { - mi := &file_relay_relay_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SingelMsgToUserResultList) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SingelMsgToUserResultList) ProtoMessage() {} - -func (x *SingelMsgToUserResultList) ProtoReflect() protoreflect.Message { - mi := &file_relay_relay_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SingelMsgToUserResultList.ProtoReflect.Descriptor instead. +func (m *SingelMsgToUserResultList) Reset() { *m = SingelMsgToUserResultList{} } +func (m *SingelMsgToUserResultList) String() string { return proto.CompactTextString(m) } +func (*SingelMsgToUserResultList) ProtoMessage() {} func (*SingelMsgToUserResultList) Descriptor() ([]byte, []int) { - return file_relay_relay_proto_rawDescGZIP(), []int{2} + return fileDescriptor_relay_8a2a5bc32d9acd54, []int{2} +} +func (m *SingelMsgToUserResultList) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SingelMsgToUserResultList.Unmarshal(m, b) +} +func (m *SingelMsgToUserResultList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SingelMsgToUserResultList.Marshal(b, m, deterministic) +} +func (dst *SingelMsgToUserResultList) XXX_Merge(src proto.Message) { + xxx_messageInfo_SingelMsgToUserResultList.Merge(dst, src) +} +func (m *SingelMsgToUserResultList) XXX_Size() int { + return xxx_messageInfo_SingelMsgToUserResultList.Size(m) +} +func (m *SingelMsgToUserResultList) XXX_DiscardUnknown() { + xxx_messageInfo_SingelMsgToUserResultList.DiscardUnknown(m) } -func (x *SingelMsgToUserResultList) GetUserID() string { - if x != nil { - return x.UserID +var xxx_messageInfo_SingelMsgToUserResultList proto.InternalMessageInfo + +func (m *SingelMsgToUserResultList) GetUserID() string { + if m != nil { + return m.UserID } return "" } -func (x *SingelMsgToUserResultList) GetResp() []*SingleMsgToUserPlatform { - if x != nil { - return x.Resp +func (m *SingelMsgToUserResultList) GetResp() []*SingleMsgToUserPlatform { + if m != nil { + return m.Resp } return nil } -func (x *SingelMsgToUserResultList) GetOnlinePush() bool { - if x != nil { - return x.OnlinePush +func (m *SingelMsgToUserResultList) GetOnlinePush() bool { + if m != nil { + return m.OnlinePush } return false } type OnlineBatchPushOneMsgReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=OperationID,proto3" json:"OperationID,omitempty"` - MsgData *sdk_ws.MsgData `protobuf:"bytes,2,opt,name=msgData,proto3" json:"msgData,omitempty"` - PushToUserIDList []string `protobuf:"bytes,3,rep,name=pushToUserIDList,proto3" json:"pushToUserIDList,omitempty"` + OperationID string `protobuf:"bytes,1,opt,name=OperationID" json:"OperationID,omitempty"` + MsgData *sdk_ws.MsgData `protobuf:"bytes,2,opt,name=msgData" json:"msgData,omitempty"` + PushToUserIDList []string `protobuf:"bytes,3,rep,name=pushToUserIDList" json:"pushToUserIDList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *OnlineBatchPushOneMsgReq) Reset() { - *x = OnlineBatchPushOneMsgReq{} - if protoimpl.UnsafeEnabled { - mi := &file_relay_relay_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OnlineBatchPushOneMsgReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OnlineBatchPushOneMsgReq) ProtoMessage() {} - -func (x *OnlineBatchPushOneMsgReq) ProtoReflect() protoreflect.Message { - mi := &file_relay_relay_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OnlineBatchPushOneMsgReq.ProtoReflect.Descriptor instead. +func (m *OnlineBatchPushOneMsgReq) Reset() { *m = OnlineBatchPushOneMsgReq{} } +func (m *OnlineBatchPushOneMsgReq) String() string { return proto.CompactTextString(m) } +func (*OnlineBatchPushOneMsgReq) ProtoMessage() {} func (*OnlineBatchPushOneMsgReq) Descriptor() ([]byte, []int) { - return file_relay_relay_proto_rawDescGZIP(), []int{3} + return fileDescriptor_relay_8a2a5bc32d9acd54, []int{3} +} +func (m *OnlineBatchPushOneMsgReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_OnlineBatchPushOneMsgReq.Unmarshal(m, b) +} +func (m *OnlineBatchPushOneMsgReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_OnlineBatchPushOneMsgReq.Marshal(b, m, deterministic) +} +func (dst *OnlineBatchPushOneMsgReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_OnlineBatchPushOneMsgReq.Merge(dst, src) +} +func (m *OnlineBatchPushOneMsgReq) XXX_Size() int { + return xxx_messageInfo_OnlineBatchPushOneMsgReq.Size(m) +} +func (m *OnlineBatchPushOneMsgReq) XXX_DiscardUnknown() { + xxx_messageInfo_OnlineBatchPushOneMsgReq.DiscardUnknown(m) } -func (x *OnlineBatchPushOneMsgReq) GetOperationID() string { - if x != nil { - return x.OperationID +var xxx_messageInfo_OnlineBatchPushOneMsgReq proto.InternalMessageInfo + +func (m *OnlineBatchPushOneMsgReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *OnlineBatchPushOneMsgReq) GetMsgData() *sdk_ws.MsgData { - if x != nil { - return x.MsgData +func (m *OnlineBatchPushOneMsgReq) GetMsgData() *sdk_ws.MsgData { + if m != nil { + return m.MsgData } return nil } -func (x *OnlineBatchPushOneMsgReq) GetPushToUserIDList() []string { - if x != nil { - return x.PushToUserIDList +func (m *OnlineBatchPushOneMsgReq) GetPushToUserIDList() []string { + if m != nil { + return m.PushToUserIDList } return nil } type OnlineBatchPushOneMsgResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SinglePushResult []*SingelMsgToUserResultList `protobuf:"bytes,1,rep,name=singlePushResult,proto3" json:"singlePushResult,omitempty"` + SinglePushResult []*SingelMsgToUserResultList `protobuf:"bytes,1,rep,name=singlePushResult" json:"singlePushResult,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *OnlineBatchPushOneMsgResp) Reset() { - *x = OnlineBatchPushOneMsgResp{} - if protoimpl.UnsafeEnabled { - mi := &file_relay_relay_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OnlineBatchPushOneMsgResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OnlineBatchPushOneMsgResp) ProtoMessage() {} - -func (x *OnlineBatchPushOneMsgResp) ProtoReflect() protoreflect.Message { - mi := &file_relay_relay_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OnlineBatchPushOneMsgResp.ProtoReflect.Descriptor instead. +func (m *OnlineBatchPushOneMsgResp) Reset() { *m = OnlineBatchPushOneMsgResp{} } +func (m *OnlineBatchPushOneMsgResp) String() string { return proto.CompactTextString(m) } +func (*OnlineBatchPushOneMsgResp) ProtoMessage() {} func (*OnlineBatchPushOneMsgResp) Descriptor() ([]byte, []int) { - return file_relay_relay_proto_rawDescGZIP(), []int{4} + return fileDescriptor_relay_8a2a5bc32d9acd54, []int{4} +} +func (m *OnlineBatchPushOneMsgResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_OnlineBatchPushOneMsgResp.Unmarshal(m, b) +} +func (m *OnlineBatchPushOneMsgResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_OnlineBatchPushOneMsgResp.Marshal(b, m, deterministic) +} +func (dst *OnlineBatchPushOneMsgResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_OnlineBatchPushOneMsgResp.Merge(dst, src) +} +func (m *OnlineBatchPushOneMsgResp) XXX_Size() int { + return xxx_messageInfo_OnlineBatchPushOneMsgResp.Size(m) +} +func (m *OnlineBatchPushOneMsgResp) XXX_DiscardUnknown() { + xxx_messageInfo_OnlineBatchPushOneMsgResp.DiscardUnknown(m) } -func (x *OnlineBatchPushOneMsgResp) GetSinglePushResult() []*SingelMsgToUserResultList { - if x != nil { - return x.SinglePushResult +var xxx_messageInfo_OnlineBatchPushOneMsgResp proto.InternalMessageInfo + +func (m *OnlineBatchPushOneMsgResp) GetSinglePushResult() []*SingelMsgToUserResultList { + if m != nil { + return m.SinglePushResult } return nil } type SingleMsgToUserPlatform struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ResultCode int64 `protobuf:"varint,1,opt,name=ResultCode,proto3" json:"ResultCode,omitempty"` - RecvID string `protobuf:"bytes,2,opt,name=RecvID,proto3" json:"RecvID,omitempty"` - RecvPlatFormID int32 `protobuf:"varint,3,opt,name=RecvPlatFormID,proto3" json:"RecvPlatFormID,omitempty"` + ResultCode int64 `protobuf:"varint,1,opt,name=ResultCode" json:"ResultCode,omitempty"` + RecvID string `protobuf:"bytes,2,opt,name=RecvID" json:"RecvID,omitempty"` + RecvPlatFormID int32 `protobuf:"varint,3,opt,name=RecvPlatFormID" json:"RecvPlatFormID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SingleMsgToUserPlatform) Reset() { - *x = SingleMsgToUserPlatform{} - if protoimpl.UnsafeEnabled { - mi := &file_relay_relay_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SingleMsgToUserPlatform) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SingleMsgToUserPlatform) ProtoMessage() {} - -func (x *SingleMsgToUserPlatform) ProtoReflect() protoreflect.Message { - mi := &file_relay_relay_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SingleMsgToUserPlatform.ProtoReflect.Descriptor instead. +func (m *SingleMsgToUserPlatform) Reset() { *m = SingleMsgToUserPlatform{} } +func (m *SingleMsgToUserPlatform) String() string { return proto.CompactTextString(m) } +func (*SingleMsgToUserPlatform) ProtoMessage() {} func (*SingleMsgToUserPlatform) Descriptor() ([]byte, []int) { - return file_relay_relay_proto_rawDescGZIP(), []int{5} + return fileDescriptor_relay_8a2a5bc32d9acd54, []int{5} +} +func (m *SingleMsgToUserPlatform) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SingleMsgToUserPlatform.Unmarshal(m, b) +} +func (m *SingleMsgToUserPlatform) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SingleMsgToUserPlatform.Marshal(b, m, deterministic) +} +func (dst *SingleMsgToUserPlatform) XXX_Merge(src proto.Message) { + xxx_messageInfo_SingleMsgToUserPlatform.Merge(dst, src) +} +func (m *SingleMsgToUserPlatform) XXX_Size() int { + return xxx_messageInfo_SingleMsgToUserPlatform.Size(m) +} +func (m *SingleMsgToUserPlatform) XXX_DiscardUnknown() { + xxx_messageInfo_SingleMsgToUserPlatform.DiscardUnknown(m) } -func (x *SingleMsgToUserPlatform) GetResultCode() int64 { - if x != nil { - return x.ResultCode +var xxx_messageInfo_SingleMsgToUserPlatform proto.InternalMessageInfo + +func (m *SingleMsgToUserPlatform) GetResultCode() int64 { + if m != nil { + return m.ResultCode } return 0 } -func (x *SingleMsgToUserPlatform) GetRecvID() string { - if x != nil { - return x.RecvID +func (m *SingleMsgToUserPlatform) GetRecvID() string { + if m != nil { + return m.RecvID } return "" } -func (x *SingleMsgToUserPlatform) GetRecvPlatFormID() int32 { - if x != nil { - return x.RecvPlatFormID +func (m *SingleMsgToUserPlatform) GetRecvPlatFormID() int32 { + if m != nil { + return m.RecvPlatFormID } return 0 } type GetUsersOnlineStatusReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserIDList []string `protobuf:"bytes,1,rep,name=userIDList,proto3" json:"userIDList,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID,proto3" json:"operationID,omitempty"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID,proto3" json:"opUserID,omitempty"` + UserIDList []string `protobuf:"bytes,1,rep,name=userIDList" json:"userIDList,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetUsersOnlineStatusReq) Reset() { - *x = GetUsersOnlineStatusReq{} - if protoimpl.UnsafeEnabled { - mi := &file_relay_relay_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetUsersOnlineStatusReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUsersOnlineStatusReq) ProtoMessage() {} - -func (x *GetUsersOnlineStatusReq) ProtoReflect() protoreflect.Message { - mi := &file_relay_relay_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUsersOnlineStatusReq.ProtoReflect.Descriptor instead. +func (m *GetUsersOnlineStatusReq) Reset() { *m = GetUsersOnlineStatusReq{} } +func (m *GetUsersOnlineStatusReq) String() string { return proto.CompactTextString(m) } +func (*GetUsersOnlineStatusReq) ProtoMessage() {} func (*GetUsersOnlineStatusReq) Descriptor() ([]byte, []int) { - return file_relay_relay_proto_rawDescGZIP(), []int{6} + return fileDescriptor_relay_8a2a5bc32d9acd54, []int{6} +} +func (m *GetUsersOnlineStatusReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUsersOnlineStatusReq.Unmarshal(m, b) +} +func (m *GetUsersOnlineStatusReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUsersOnlineStatusReq.Marshal(b, m, deterministic) +} +func (dst *GetUsersOnlineStatusReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUsersOnlineStatusReq.Merge(dst, src) +} +func (m *GetUsersOnlineStatusReq) XXX_Size() int { + return xxx_messageInfo_GetUsersOnlineStatusReq.Size(m) +} +func (m *GetUsersOnlineStatusReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetUsersOnlineStatusReq.DiscardUnknown(m) } -func (x *GetUsersOnlineStatusReq) GetUserIDList() []string { - if x != nil { - return x.UserIDList +var xxx_messageInfo_GetUsersOnlineStatusReq proto.InternalMessageInfo + +func (m *GetUsersOnlineStatusReq) GetUserIDList() []string { + if m != nil { + return m.UserIDList } return nil } -func (x *GetUsersOnlineStatusReq) GetOperationID() string { - if x != nil { - return x.OperationID +func (m *GetUsersOnlineStatusReq) GetOperationID() string { + if m != nil { + return m.OperationID } return "" } -func (x *GetUsersOnlineStatusReq) GetOpUserID() string { - if x != nil { - return x.OpUserID +func (m *GetUsersOnlineStatusReq) GetOpUserID() string { + if m != nil { + return m.OpUserID } return "" } type GetUsersOnlineStatusResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ErrCode int32 `protobuf:"varint,1,opt,name=errCode,proto3" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg,proto3" json:"errMsg,omitempty"` - SuccessResult []*GetUsersOnlineStatusResp_SuccessResult `protobuf:"bytes,3,rep,name=successResult,proto3" json:"successResult,omitempty"` - FailedResult []*GetUsersOnlineStatusResp_FailedDetail `protobuf:"bytes,4,rep,name=failedResult,proto3" json:"failedResult,omitempty"` + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + SuccessResult []*GetUsersOnlineStatusResp_SuccessResult `protobuf:"bytes,3,rep,name=successResult" json:"successResult,omitempty"` + FailedResult []*GetUsersOnlineStatusResp_FailedDetail `protobuf:"bytes,4,rep,name=failedResult" json:"failedResult,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetUsersOnlineStatusResp) Reset() { - *x = GetUsersOnlineStatusResp{} - if protoimpl.UnsafeEnabled { - mi := &file_relay_relay_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetUsersOnlineStatusResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUsersOnlineStatusResp) ProtoMessage() {} - -func (x *GetUsersOnlineStatusResp) ProtoReflect() protoreflect.Message { - mi := &file_relay_relay_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUsersOnlineStatusResp.ProtoReflect.Descriptor instead. +func (m *GetUsersOnlineStatusResp) Reset() { *m = GetUsersOnlineStatusResp{} } +func (m *GetUsersOnlineStatusResp) String() string { return proto.CompactTextString(m) } +func (*GetUsersOnlineStatusResp) ProtoMessage() {} func (*GetUsersOnlineStatusResp) Descriptor() ([]byte, []int) { - return file_relay_relay_proto_rawDescGZIP(), []int{7} + return fileDescriptor_relay_8a2a5bc32d9acd54, []int{7} +} +func (m *GetUsersOnlineStatusResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUsersOnlineStatusResp.Unmarshal(m, b) +} +func (m *GetUsersOnlineStatusResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUsersOnlineStatusResp.Marshal(b, m, deterministic) +} +func (dst *GetUsersOnlineStatusResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUsersOnlineStatusResp.Merge(dst, src) +} +func (m *GetUsersOnlineStatusResp) XXX_Size() int { + return xxx_messageInfo_GetUsersOnlineStatusResp.Size(m) +} +func (m *GetUsersOnlineStatusResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetUsersOnlineStatusResp.DiscardUnknown(m) } -func (x *GetUsersOnlineStatusResp) GetErrCode() int32 { - if x != nil { - return x.ErrCode +var xxx_messageInfo_GetUsersOnlineStatusResp proto.InternalMessageInfo + +func (m *GetUsersOnlineStatusResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode } return 0 } -func (x *GetUsersOnlineStatusResp) GetErrMsg() string { - if x != nil { - return x.ErrMsg +func (m *GetUsersOnlineStatusResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg } return "" } -func (x *GetUsersOnlineStatusResp) GetSuccessResult() []*GetUsersOnlineStatusResp_SuccessResult { - if x != nil { - return x.SuccessResult +func (m *GetUsersOnlineStatusResp) GetSuccessResult() []*GetUsersOnlineStatusResp_SuccessResult { + if m != nil { + return m.SuccessResult } return nil } -func (x *GetUsersOnlineStatusResp) GetFailedResult() []*GetUsersOnlineStatusResp_FailedDetail { - if x != nil { - return x.FailedResult +func (m *GetUsersOnlineStatusResp) GetFailedResult() []*GetUsersOnlineStatusResp_FailedDetail { + if m != nil { + return m.FailedResult } return nil } -type KickUserOfflineReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OperationID string `protobuf:"bytes,1,opt,name=operationID,proto3" json:"operationID,omitempty"` - PlatformID int32 `protobuf:"varint,2,opt,name=platformID,proto3" json:"platformID,omitempty"` - KickUserIDList []string `protobuf:"bytes,3,rep,name=kickUserIDList,proto3" json:"kickUserIDList,omitempty"` -} - -func (x *KickUserOfflineReq) Reset() { - *x = KickUserOfflineReq{} - if protoimpl.UnsafeEnabled { - mi := &file_relay_relay_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *KickUserOfflineReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*KickUserOfflineReq) ProtoMessage() {} - -func (x *KickUserOfflineReq) ProtoReflect() protoreflect.Message { - mi := &file_relay_relay_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use KickUserOfflineReq.ProtoReflect.Descriptor instead. -func (*KickUserOfflineReq) Descriptor() ([]byte, []int) { - return file_relay_relay_proto_rawDescGZIP(), []int{8} -} - -func (x *KickUserOfflineReq) GetOperationID() string { - if x != nil { - return x.OperationID - } - return "" -} - -func (x *KickUserOfflineReq) GetPlatformID() int32 { - if x != nil { - return x.PlatformID - } - return 0 -} - -func (x *KickUserOfflineReq) GetKickUserIDList() []string { - if x != nil { - return x.KickUserIDList - } - return nil -} - -type KickUserOfflineResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *KickUserOfflineResp) Reset() { - *x = KickUserOfflineResp{} - if protoimpl.UnsafeEnabled { - mi := &file_relay_relay_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *KickUserOfflineResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*KickUserOfflineResp) ProtoMessage() {} - -func (x *KickUserOfflineResp) ProtoReflect() protoreflect.Message { - mi := &file_relay_relay_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use KickUserOfflineResp.ProtoReflect.Descriptor instead. -func (*KickUserOfflineResp) Descriptor() ([]byte, []int) { - return file_relay_relay_proto_rawDescGZIP(), []int{9} -} - -type MultiTerminalLoginCheckReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - PlatformID int32 `protobuf:"varint,2,opt,name=platformID,proto3" json:"platformID,omitempty"` - Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` - OperationID string `protobuf:"bytes,4,opt,name=operationID,proto3" json:"operationID,omitempty"` -} - -func (x *MultiTerminalLoginCheckReq) Reset() { - *x = MultiTerminalLoginCheckReq{} - if protoimpl.UnsafeEnabled { - mi := &file_relay_relay_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MultiTerminalLoginCheckReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MultiTerminalLoginCheckReq) ProtoMessage() {} - -func (x *MultiTerminalLoginCheckReq) ProtoReflect() protoreflect.Message { - mi := &file_relay_relay_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MultiTerminalLoginCheckReq.ProtoReflect.Descriptor instead. -func (*MultiTerminalLoginCheckReq) Descriptor() ([]byte, []int) { - return file_relay_relay_proto_rawDescGZIP(), []int{10} -} - -func (x *MultiTerminalLoginCheckReq) GetUserID() string { - if x != nil { - return x.UserID - } - return "" -} - -func (x *MultiTerminalLoginCheckReq) GetPlatformID() int32 { - if x != nil { - return x.PlatformID - } - return 0 -} - -func (x *MultiTerminalLoginCheckReq) GetToken() string { - if x != nil { - return x.Token - } - return "" -} - -func (x *MultiTerminalLoginCheckReq) GetOperationID() string { - if x != nil { - return x.OperationID - } - return "" -} - -type MultiTerminalLoginCheckResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ErrCode int32 `protobuf:"varint,1,opt,name=errCode,proto3" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg,proto3" json:"errMsg,omitempty"` -} - -func (x *MultiTerminalLoginCheckResp) Reset() { - *x = MultiTerminalLoginCheckResp{} - if protoimpl.UnsafeEnabled { - mi := &file_relay_relay_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MultiTerminalLoginCheckResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MultiTerminalLoginCheckResp) ProtoMessage() {} - -func (x *MultiTerminalLoginCheckResp) ProtoReflect() protoreflect.Message { - mi := &file_relay_relay_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MultiTerminalLoginCheckResp.ProtoReflect.Descriptor instead. -func (*MultiTerminalLoginCheckResp) Descriptor() ([]byte, []int) { - return file_relay_relay_proto_rawDescGZIP(), []int{11} -} - -func (x *MultiTerminalLoginCheckResp) GetErrCode() int32 { - if x != nil { - return x.ErrCode - } - return 0 -} - -func (x *MultiTerminalLoginCheckResp) GetErrMsg() string { - if x != nil { - return x.ErrMsg - } - return "" -} - type GetUsersOnlineStatusResp_SuccessDetail struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"` - Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + Platform string `protobuf:"bytes,1,opt,name=platform" json:"platform,omitempty"` + Status string `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"` + ConnID string `protobuf:"bytes,3,opt,name=connID" json:"connID,omitempty"` + IsBackground bool `protobuf:"varint,4,opt,name=isBackground" json:"isBackground,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetUsersOnlineStatusResp_SuccessDetail) Reset() { - *x = GetUsersOnlineStatusResp_SuccessDetail{} - if protoimpl.UnsafeEnabled { - mi := &file_relay_relay_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *GetUsersOnlineStatusResp_SuccessDetail) Reset() { + *m = GetUsersOnlineStatusResp_SuccessDetail{} } - -func (x *GetUsersOnlineStatusResp_SuccessDetail) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUsersOnlineStatusResp_SuccessDetail) ProtoMessage() {} - -func (x *GetUsersOnlineStatusResp_SuccessDetail) ProtoReflect() protoreflect.Message { - mi := &file_relay_relay_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUsersOnlineStatusResp_SuccessDetail.ProtoReflect.Descriptor instead. +func (m *GetUsersOnlineStatusResp_SuccessDetail) String() string { return proto.CompactTextString(m) } +func (*GetUsersOnlineStatusResp_SuccessDetail) ProtoMessage() {} func (*GetUsersOnlineStatusResp_SuccessDetail) Descriptor() ([]byte, []int) { - return file_relay_relay_proto_rawDescGZIP(), []int{7, 0} + return fileDescriptor_relay_8a2a5bc32d9acd54, []int{7, 0} +} +func (m *GetUsersOnlineStatusResp_SuccessDetail) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUsersOnlineStatusResp_SuccessDetail.Unmarshal(m, b) +} +func (m *GetUsersOnlineStatusResp_SuccessDetail) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUsersOnlineStatusResp_SuccessDetail.Marshal(b, m, deterministic) +} +func (dst *GetUsersOnlineStatusResp_SuccessDetail) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUsersOnlineStatusResp_SuccessDetail.Merge(dst, src) +} +func (m *GetUsersOnlineStatusResp_SuccessDetail) XXX_Size() int { + return xxx_messageInfo_GetUsersOnlineStatusResp_SuccessDetail.Size(m) +} +func (m *GetUsersOnlineStatusResp_SuccessDetail) XXX_DiscardUnknown() { + xxx_messageInfo_GetUsersOnlineStatusResp_SuccessDetail.DiscardUnknown(m) } -func (x *GetUsersOnlineStatusResp_SuccessDetail) GetPlatform() string { - if x != nil { - return x.Platform +var xxx_messageInfo_GetUsersOnlineStatusResp_SuccessDetail proto.InternalMessageInfo + +func (m *GetUsersOnlineStatusResp_SuccessDetail) GetPlatform() string { + if m != nil { + return m.Platform } return "" } -func (x *GetUsersOnlineStatusResp_SuccessDetail) GetStatus() string { - if x != nil { - return x.Status +func (m *GetUsersOnlineStatusResp_SuccessDetail) GetStatus() string { + if m != nil { + return m.Status } return "" } +func (m *GetUsersOnlineStatusResp_SuccessDetail) GetConnID() string { + if m != nil { + return m.ConnID + } + return "" +} + +func (m *GetUsersOnlineStatusResp_SuccessDetail) GetIsBackground() bool { + if m != nil { + return m.IsBackground + } + return false +} + type GetUsersOnlineStatusResp_FailedDetail struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserID string `protobuf:"bytes,3,opt,name=userID,proto3" json:"userID,omitempty"` - ErrCode int32 `protobuf:"varint,1,opt,name=errCode,proto3" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg,proto3" json:"errMsg,omitempty"` + UserID string `protobuf:"bytes,3,opt,name=userID" json:"userID,omitempty"` + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetUsersOnlineStatusResp_FailedDetail) Reset() { - *x = GetUsersOnlineStatusResp_FailedDetail{} - if protoimpl.UnsafeEnabled { - mi := &file_relay_relay_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetUsersOnlineStatusResp_FailedDetail) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUsersOnlineStatusResp_FailedDetail) ProtoMessage() {} - -func (x *GetUsersOnlineStatusResp_FailedDetail) ProtoReflect() protoreflect.Message { - mi := &file_relay_relay_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUsersOnlineStatusResp_FailedDetail.ProtoReflect.Descriptor instead. +func (m *GetUsersOnlineStatusResp_FailedDetail) Reset() { *m = GetUsersOnlineStatusResp_FailedDetail{} } +func (m *GetUsersOnlineStatusResp_FailedDetail) String() string { return proto.CompactTextString(m) } +func (*GetUsersOnlineStatusResp_FailedDetail) ProtoMessage() {} func (*GetUsersOnlineStatusResp_FailedDetail) Descriptor() ([]byte, []int) { - return file_relay_relay_proto_rawDescGZIP(), []int{7, 1} + return fileDescriptor_relay_8a2a5bc32d9acd54, []int{7, 1} +} +func (m *GetUsersOnlineStatusResp_FailedDetail) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUsersOnlineStatusResp_FailedDetail.Unmarshal(m, b) +} +func (m *GetUsersOnlineStatusResp_FailedDetail) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUsersOnlineStatusResp_FailedDetail.Marshal(b, m, deterministic) +} +func (dst *GetUsersOnlineStatusResp_FailedDetail) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUsersOnlineStatusResp_FailedDetail.Merge(dst, src) +} +func (m *GetUsersOnlineStatusResp_FailedDetail) XXX_Size() int { + return xxx_messageInfo_GetUsersOnlineStatusResp_FailedDetail.Size(m) +} +func (m *GetUsersOnlineStatusResp_FailedDetail) XXX_DiscardUnknown() { + xxx_messageInfo_GetUsersOnlineStatusResp_FailedDetail.DiscardUnknown(m) } -func (x *GetUsersOnlineStatusResp_FailedDetail) GetUserID() string { - if x != nil { - return x.UserID +var xxx_messageInfo_GetUsersOnlineStatusResp_FailedDetail proto.InternalMessageInfo + +func (m *GetUsersOnlineStatusResp_FailedDetail) GetUserID() string { + if m != nil { + return m.UserID } return "" } -func (x *GetUsersOnlineStatusResp_FailedDetail) GetErrCode() int32 { - if x != nil { - return x.ErrCode +func (m *GetUsersOnlineStatusResp_FailedDetail) GetErrCode() int32 { + if m != nil { + return m.ErrCode } return 0 } -func (x *GetUsersOnlineStatusResp_FailedDetail) GetErrMsg() string { - if x != nil { - return x.ErrMsg +func (m *GetUsersOnlineStatusResp_FailedDetail) GetErrMsg() string { + if m != nil { + return m.ErrMsg } return "" } type GetUsersOnlineStatusResp_SuccessResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` - DetailPlatformStatus []*GetUsersOnlineStatusResp_SuccessDetail `protobuf:"bytes,3,rep,name=detailPlatformStatus,proto3" json:"detailPlatformStatus,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + Status string `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"` + DetailPlatformStatus []*GetUsersOnlineStatusResp_SuccessDetail `protobuf:"bytes,3,rep,name=detailPlatformStatus" json:"detailPlatformStatus,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetUsersOnlineStatusResp_SuccessResult) Reset() { - *x = GetUsersOnlineStatusResp_SuccessResult{} - if protoimpl.UnsafeEnabled { - mi := &file_relay_relay_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *GetUsersOnlineStatusResp_SuccessResult) Reset() { + *m = GetUsersOnlineStatusResp_SuccessResult{} } - -func (x *GetUsersOnlineStatusResp_SuccessResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUsersOnlineStatusResp_SuccessResult) ProtoMessage() {} - -func (x *GetUsersOnlineStatusResp_SuccessResult) ProtoReflect() protoreflect.Message { - mi := &file_relay_relay_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUsersOnlineStatusResp_SuccessResult.ProtoReflect.Descriptor instead. +func (m *GetUsersOnlineStatusResp_SuccessResult) String() string { return proto.CompactTextString(m) } +func (*GetUsersOnlineStatusResp_SuccessResult) ProtoMessage() {} func (*GetUsersOnlineStatusResp_SuccessResult) Descriptor() ([]byte, []int) { - return file_relay_relay_proto_rawDescGZIP(), []int{7, 2} + return fileDescriptor_relay_8a2a5bc32d9acd54, []int{7, 2} +} +func (m *GetUsersOnlineStatusResp_SuccessResult) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUsersOnlineStatusResp_SuccessResult.Unmarshal(m, b) +} +func (m *GetUsersOnlineStatusResp_SuccessResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUsersOnlineStatusResp_SuccessResult.Marshal(b, m, deterministic) +} +func (dst *GetUsersOnlineStatusResp_SuccessResult) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUsersOnlineStatusResp_SuccessResult.Merge(dst, src) +} +func (m *GetUsersOnlineStatusResp_SuccessResult) XXX_Size() int { + return xxx_messageInfo_GetUsersOnlineStatusResp_SuccessResult.Size(m) +} +func (m *GetUsersOnlineStatusResp_SuccessResult) XXX_DiscardUnknown() { + xxx_messageInfo_GetUsersOnlineStatusResp_SuccessResult.DiscardUnknown(m) } -func (x *GetUsersOnlineStatusResp_SuccessResult) GetUserID() string { - if x != nil { - return x.UserID +var xxx_messageInfo_GetUsersOnlineStatusResp_SuccessResult proto.InternalMessageInfo + +func (m *GetUsersOnlineStatusResp_SuccessResult) GetUserID() string { + if m != nil { + return m.UserID } return "" } -func (x *GetUsersOnlineStatusResp_SuccessResult) GetStatus() string { - if x != nil { - return x.Status +func (m *GetUsersOnlineStatusResp_SuccessResult) GetStatus() string { + if m != nil { + return m.Status } return "" } -func (x *GetUsersOnlineStatusResp_SuccessResult) GetDetailPlatformStatus() []*GetUsersOnlineStatusResp_SuccessDetail { - if x != nil { - return x.DetailPlatformStatus +func (m *GetUsersOnlineStatusResp_SuccessResult) GetDetailPlatformStatus() []*GetUsersOnlineStatusResp_SuccessDetail { + if m != nil { + return m.DetailPlatformStatus } return nil } -var File_relay_relay_proto protoreflect.FileDescriptor - -var file_relay_relay_proto_rawDesc = []byte{ - 0x0a, 0x11, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x1a, 0x28, 0x4f, 0x70, 0x65, 0x6e, - 0x2d, 0x49, 0x4d, 0x2d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x64, 0x6b, 0x5f, 0x77, 0x73, 0x2f, 0x77, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8e, 0x01, 0x0a, 0x10, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, - 0x75, 0x73, 0x68, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x34, 0x0a, 0x07, 0x6d, - 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x47, 0x0a, 0x11, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, - 0x75, 0x73, 0x68, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x04, 0x72, 0x65, - 0x73, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, - 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x04, 0x72, 0x65, 0x73, 0x70, 0x22, 0x87, - 0x01, 0x0a, 0x19, 0x53, 0x69, 0x6e, 0x67, 0x65, 0x6c, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x12, 0x32, 0x0a, 0x04, 0x72, 0x65, 0x73, 0x70, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, - 0x65, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x52, 0x04, 0x72, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x6e, 0x6c, 0x69, - 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x6e, - 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x22, 0x9e, 0x01, 0x0a, 0x18, 0x4f, 0x6e, 0x6c, - 0x69, 0x6e, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x4d, - 0x73, 0x67, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x34, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x44, 0x61, - 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x4d, 0x73, 0x67, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, - 0x10, 0x70, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x4c, 0x69, 0x73, - 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x70, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x69, 0x0a, 0x19, 0x4f, 0x6e, 0x6c, - 0x69, 0x6e, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x4d, - 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, - 0x50, 0x75, 0x73, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x65, 0x6c, 0x4d, - 0x73, 0x67, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x22, 0x79, 0x0a, 0x17, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x4d, 0x73, - 0x67, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, - 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x52, 0x65, 0x63, 0x76, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x52, 0x65, 0x63, 0x76, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x52, 0x65, 0x63, 0x76, 0x50, - 0x6c, 0x61, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0e, 0x52, 0x65, 0x63, 0x76, 0x50, 0x6c, 0x61, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x22, - 0x77, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, - 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0xb7, 0x04, 0x0a, 0x18, 0x47, 0x65, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x53, 0x0a, 0x0d, 0x73, 0x75, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, - 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x4f, - 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, - 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0d, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x50, 0x0a, 0x0c, - 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0x43, - 0x0a, 0x0d, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x1a, 0x58, 0x0a, 0x0c, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x65, - 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, - 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x1a, 0xa2, 0x01, - 0x0a, 0x0d, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x61, 0x0a, 0x14, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x4f, 0x6e, - 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x53, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x14, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x22, 0x7e, 0x0a, 0x12, 0x4b, 0x69, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x66, - 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x6b, 0x69, - 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0e, 0x6b, 0x69, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x4c, 0x69, - 0x73, 0x74, 0x22, 0x15, 0x0a, 0x13, 0x4b, 0x69, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x66, - 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8c, 0x01, 0x0a, 0x1a, 0x4d, 0x75, - 0x6c, 0x74, 0x69, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x4f, 0x0a, 0x1b, 0x4d, 0x75, 0x6c, 0x74, - 0x69, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x32, 0x92, 0x04, 0x0a, 0x05, 0x72, 0x65, - 0x6c, 0x61, 0x79, 0x12, 0x42, 0x0a, 0x0d, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, - 0x68, 0x4d, 0x73, 0x67, 0x12, 0x17, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x4f, 0x6e, 0x6c, - 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, - 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x75, 0x73, 0x68, - 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x57, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x1e, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, - 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, - 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, - 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x5a, 0x0a, 0x15, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, - 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, - 0x79, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x75, 0x73, - 0x68, 0x4f, 0x6e, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x72, 0x65, 0x6c, - 0x61, 0x79, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x75, - 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x1f, - 0x53, 0x75, 0x70, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x4d, 0x73, 0x67, 0x12, - 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, - 0x1a, 0x20, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x6e, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x48, 0x0a, 0x0f, 0x4b, 0x69, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x66, - 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x19, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x4b, 0x69, - 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, - 0x1a, 0x1a, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x4b, 0x69, 0x63, 0x6b, 0x55, 0x73, 0x65, - 0x72, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x60, 0x0a, 0x17, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x4c, 0x6f, 0x67, - 0x69, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x21, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x4c, 0x6f, 0x67, - 0x69, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x72, 0x65, 0x6c, - 0x61, 0x79, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, - 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x42, 0x21, - 0x5a, 0x1f, 0x4f, 0x70, 0x65, 0x6e, 0x5f, 0x49, 0x4d, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x3b, 0x70, 0x62, 0x52, 0x65, 0x6c, 0x61, - 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +type KickUserOfflineReq struct { + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + PlatformID int32 `protobuf:"varint,2,opt,name=platformID" json:"platformID,omitempty"` + KickUserIDList []string `protobuf:"bytes,3,rep,name=kickUserIDList" json:"kickUserIDList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -var ( - file_relay_relay_proto_rawDescOnce sync.Once - file_relay_relay_proto_rawDescData = file_relay_relay_proto_rawDesc -) - -func file_relay_relay_proto_rawDescGZIP() []byte { - file_relay_relay_proto_rawDescOnce.Do(func() { - file_relay_relay_proto_rawDescData = protoimpl.X.CompressGZIP(file_relay_relay_proto_rawDescData) - }) - return file_relay_relay_proto_rawDescData +func (m *KickUserOfflineReq) Reset() { *m = KickUserOfflineReq{} } +func (m *KickUserOfflineReq) String() string { return proto.CompactTextString(m) } +func (*KickUserOfflineReq) ProtoMessage() {} +func (*KickUserOfflineReq) Descriptor() ([]byte, []int) { + return fileDescriptor_relay_8a2a5bc32d9acd54, []int{8} +} +func (m *KickUserOfflineReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_KickUserOfflineReq.Unmarshal(m, b) +} +func (m *KickUserOfflineReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_KickUserOfflineReq.Marshal(b, m, deterministic) +} +func (dst *KickUserOfflineReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_KickUserOfflineReq.Merge(dst, src) +} +func (m *KickUserOfflineReq) XXX_Size() int { + return xxx_messageInfo_KickUserOfflineReq.Size(m) +} +func (m *KickUserOfflineReq) XXX_DiscardUnknown() { + xxx_messageInfo_KickUserOfflineReq.DiscardUnknown(m) } -var file_relay_relay_proto_msgTypes = make([]protoimpl.MessageInfo, 15) -var file_relay_relay_proto_goTypes = []interface{}{ - (*OnlinePushMsgReq)(nil), // 0: relay.OnlinePushMsgReq - (*OnlinePushMsgResp)(nil), // 1: relay.OnlinePushMsgResp - (*SingelMsgToUserResultList)(nil), // 2: relay.SingelMsgToUserResultList - (*OnlineBatchPushOneMsgReq)(nil), // 3: relay.OnlineBatchPushOneMsgReq - (*OnlineBatchPushOneMsgResp)(nil), // 4: relay.OnlineBatchPushOneMsgResp - (*SingleMsgToUserPlatform)(nil), // 5: relay.SingleMsgToUserPlatform - (*GetUsersOnlineStatusReq)(nil), // 6: relay.GetUsersOnlineStatusReq - (*GetUsersOnlineStatusResp)(nil), // 7: relay.GetUsersOnlineStatusResp - (*KickUserOfflineReq)(nil), // 8: relay.KickUserOfflineReq - (*KickUserOfflineResp)(nil), // 9: relay.KickUserOfflineResp - (*MultiTerminalLoginCheckReq)(nil), // 10: relay.MultiTerminalLoginCheckReq - (*MultiTerminalLoginCheckResp)(nil), // 11: relay.MultiTerminalLoginCheckResp - (*GetUsersOnlineStatusResp_SuccessDetail)(nil), // 12: relay.GetUsersOnlineStatusResp.SuccessDetail - (*GetUsersOnlineStatusResp_FailedDetail)(nil), // 13: relay.GetUsersOnlineStatusResp.FailedDetail - (*GetUsersOnlineStatusResp_SuccessResult)(nil), // 14: relay.GetUsersOnlineStatusResp.SuccessResult - (*sdk_ws.MsgData)(nil), // 15: server_api_params.MsgData -} -var file_relay_relay_proto_depIdxs = []int32{ - 15, // 0: relay.OnlinePushMsgReq.msgData:type_name -> server_api_params.MsgData - 5, // 1: relay.OnlinePushMsgResp.resp:type_name -> relay.SingleMsgToUserPlatform - 5, // 2: relay.SingelMsgToUserResultList.resp:type_name -> relay.SingleMsgToUserPlatform - 15, // 3: relay.OnlineBatchPushOneMsgReq.msgData:type_name -> server_api_params.MsgData - 2, // 4: relay.OnlineBatchPushOneMsgResp.singlePushResult:type_name -> relay.SingelMsgToUserResultList - 14, // 5: relay.GetUsersOnlineStatusResp.successResult:type_name -> relay.GetUsersOnlineStatusResp.SuccessResult - 13, // 6: relay.GetUsersOnlineStatusResp.failedResult:type_name -> relay.GetUsersOnlineStatusResp.FailedDetail - 12, // 7: relay.GetUsersOnlineStatusResp.SuccessResult.detailPlatformStatus:type_name -> relay.GetUsersOnlineStatusResp.SuccessDetail - 0, // 8: relay.relay.OnlinePushMsg:input_type -> relay.OnlinePushMsgReq - 6, // 9: relay.relay.GetUsersOnlineStatus:input_type -> relay.GetUsersOnlineStatusReq - 3, // 10: relay.relay.OnlineBatchPushOneMsg:input_type -> relay.OnlineBatchPushOneMsgReq - 3, // 11: relay.relay.SuperGroupOnlineBatchPushOneMsg:input_type -> relay.OnlineBatchPushOneMsgReq - 8, // 12: relay.relay.KickUserOffline:input_type -> relay.KickUserOfflineReq - 10, // 13: relay.relay.MultiTerminalLoginCheck:input_type -> relay.MultiTerminalLoginCheckReq - 1, // 14: relay.relay.OnlinePushMsg:output_type -> relay.OnlinePushMsgResp - 7, // 15: relay.relay.GetUsersOnlineStatus:output_type -> relay.GetUsersOnlineStatusResp - 4, // 16: relay.relay.OnlineBatchPushOneMsg:output_type -> relay.OnlineBatchPushOneMsgResp - 4, // 17: relay.relay.SuperGroupOnlineBatchPushOneMsg:output_type -> relay.OnlineBatchPushOneMsgResp - 9, // 18: relay.relay.KickUserOffline:output_type -> relay.KickUserOfflineResp - 11, // 19: relay.relay.MultiTerminalLoginCheck:output_type -> relay.MultiTerminalLoginCheckResp - 14, // [14:20] is the sub-list for method output_type - 8, // [8:14] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name -} +var xxx_messageInfo_KickUserOfflineReq proto.InternalMessageInfo -func init() { file_relay_relay_proto_init() } -func file_relay_relay_proto_init() { - if File_relay_relay_proto != nil { - return +func (m *KickUserOfflineReq) GetOperationID() string { + if m != nil { + return m.OperationID } - if !protoimpl.UnsafeEnabled { - file_relay_relay_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OnlinePushMsgReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_relay_relay_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OnlinePushMsgResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_relay_relay_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SingelMsgToUserResultList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_relay_relay_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OnlineBatchPushOneMsgReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_relay_relay_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OnlineBatchPushOneMsgResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_relay_relay_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SingleMsgToUserPlatform); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_relay_relay_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUsersOnlineStatusReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_relay_relay_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUsersOnlineStatusResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_relay_relay_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KickUserOfflineReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_relay_relay_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KickUserOfflineResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_relay_relay_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MultiTerminalLoginCheckReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_relay_relay_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MultiTerminalLoginCheckResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_relay_relay_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUsersOnlineStatusResp_SuccessDetail); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_relay_relay_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUsersOnlineStatusResp_FailedDetail); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_relay_relay_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUsersOnlineStatusResp_SuccessResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } + return "" +} + +func (m *KickUserOfflineReq) GetPlatformID() int32 { + if m != nil { + return m.PlatformID } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_relay_relay_proto_rawDesc, - NumEnums: 0, - NumMessages: 15, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_relay_relay_proto_goTypes, - DependencyIndexes: file_relay_relay_proto_depIdxs, - MessageInfos: file_relay_relay_proto_msgTypes, - }.Build() - File_relay_relay_proto = out.File - file_relay_relay_proto_rawDesc = nil - file_relay_relay_proto_goTypes = nil - file_relay_relay_proto_depIdxs = nil + return 0 +} + +func (m *KickUserOfflineReq) GetKickUserIDList() []string { + if m != nil { + return m.KickUserIDList + } + return nil +} + +type KickUserOfflineResp struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *KickUserOfflineResp) Reset() { *m = KickUserOfflineResp{} } +func (m *KickUserOfflineResp) String() string { return proto.CompactTextString(m) } +func (*KickUserOfflineResp) ProtoMessage() {} +func (*KickUserOfflineResp) Descriptor() ([]byte, []int) { + return fileDescriptor_relay_8a2a5bc32d9acd54, []int{9} +} +func (m *KickUserOfflineResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_KickUserOfflineResp.Unmarshal(m, b) +} +func (m *KickUserOfflineResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_KickUserOfflineResp.Marshal(b, m, deterministic) +} +func (dst *KickUserOfflineResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_KickUserOfflineResp.Merge(dst, src) +} +func (m *KickUserOfflineResp) XXX_Size() int { + return xxx_messageInfo_KickUserOfflineResp.Size(m) +} +func (m *KickUserOfflineResp) XXX_DiscardUnknown() { + xxx_messageInfo_KickUserOfflineResp.DiscardUnknown(m) +} + +var xxx_messageInfo_KickUserOfflineResp proto.InternalMessageInfo + +type MultiTerminalLoginCheckReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + PlatformID int32 `protobuf:"varint,2,opt,name=platformID" json:"platformID,omitempty"` + Token string `protobuf:"bytes,3,opt,name=token" json:"token,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 *MultiTerminalLoginCheckReq) Reset() { *m = MultiTerminalLoginCheckReq{} } +func (m *MultiTerminalLoginCheckReq) String() string { return proto.CompactTextString(m) } +func (*MultiTerminalLoginCheckReq) ProtoMessage() {} +func (*MultiTerminalLoginCheckReq) Descriptor() ([]byte, []int) { + return fileDescriptor_relay_8a2a5bc32d9acd54, []int{10} +} +func (m *MultiTerminalLoginCheckReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MultiTerminalLoginCheckReq.Unmarshal(m, b) +} +func (m *MultiTerminalLoginCheckReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MultiTerminalLoginCheckReq.Marshal(b, m, deterministic) +} +func (dst *MultiTerminalLoginCheckReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_MultiTerminalLoginCheckReq.Merge(dst, src) +} +func (m *MultiTerminalLoginCheckReq) XXX_Size() int { + return xxx_messageInfo_MultiTerminalLoginCheckReq.Size(m) +} +func (m *MultiTerminalLoginCheckReq) XXX_DiscardUnknown() { + xxx_messageInfo_MultiTerminalLoginCheckReq.DiscardUnknown(m) +} + +var xxx_messageInfo_MultiTerminalLoginCheckReq proto.InternalMessageInfo + +func (m *MultiTerminalLoginCheckReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *MultiTerminalLoginCheckReq) GetPlatformID() int32 { + if m != nil { + return m.PlatformID + } + return 0 +} + +func (m *MultiTerminalLoginCheckReq) GetToken() string { + if m != nil { + return m.Token + } + return "" +} + +func (m *MultiTerminalLoginCheckReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type MultiTerminalLoginCheckResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *MultiTerminalLoginCheckResp) Reset() { *m = MultiTerminalLoginCheckResp{} } +func (m *MultiTerminalLoginCheckResp) String() string { return proto.CompactTextString(m) } +func (*MultiTerminalLoginCheckResp) ProtoMessage() {} +func (*MultiTerminalLoginCheckResp) Descriptor() ([]byte, []int) { + return fileDescriptor_relay_8a2a5bc32d9acd54, []int{11} +} +func (m *MultiTerminalLoginCheckResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MultiTerminalLoginCheckResp.Unmarshal(m, b) +} +func (m *MultiTerminalLoginCheckResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MultiTerminalLoginCheckResp.Marshal(b, m, deterministic) +} +func (dst *MultiTerminalLoginCheckResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_MultiTerminalLoginCheckResp.Merge(dst, src) +} +func (m *MultiTerminalLoginCheckResp) XXX_Size() int { + return xxx_messageInfo_MultiTerminalLoginCheckResp.Size(m) +} +func (m *MultiTerminalLoginCheckResp) XXX_DiscardUnknown() { + xxx_messageInfo_MultiTerminalLoginCheckResp.DiscardUnknown(m) +} + +var xxx_messageInfo_MultiTerminalLoginCheckResp proto.InternalMessageInfo + +func (m *MultiTerminalLoginCheckResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *MultiTerminalLoginCheckResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +func init() { + proto.RegisterType((*OnlinePushMsgReq)(nil), "relay.OnlinePushMsgReq") + proto.RegisterType((*OnlinePushMsgResp)(nil), "relay.OnlinePushMsgResp") + proto.RegisterType((*SingelMsgToUserResultList)(nil), "relay.SingelMsgToUserResultList") + proto.RegisterType((*OnlineBatchPushOneMsgReq)(nil), "relay.OnlineBatchPushOneMsgReq") + proto.RegisterType((*OnlineBatchPushOneMsgResp)(nil), "relay.OnlineBatchPushOneMsgResp") + proto.RegisterType((*SingleMsgToUserPlatform)(nil), "relay.SingleMsgToUserPlatform") + proto.RegisterType((*GetUsersOnlineStatusReq)(nil), "relay.GetUsersOnlineStatusReq") + proto.RegisterType((*GetUsersOnlineStatusResp)(nil), "relay.GetUsersOnlineStatusResp") + proto.RegisterType((*GetUsersOnlineStatusResp_SuccessDetail)(nil), "relay.GetUsersOnlineStatusResp.SuccessDetail") + proto.RegisterType((*GetUsersOnlineStatusResp_FailedDetail)(nil), "relay.GetUsersOnlineStatusResp.FailedDetail") + proto.RegisterType((*GetUsersOnlineStatusResp_SuccessResult)(nil), "relay.GetUsersOnlineStatusResp.SuccessResult") + proto.RegisterType((*KickUserOfflineReq)(nil), "relay.KickUserOfflineReq") + proto.RegisterType((*KickUserOfflineResp)(nil), "relay.KickUserOfflineResp") + proto.RegisterType((*MultiTerminalLoginCheckReq)(nil), "relay.MultiTerminalLoginCheckReq") + proto.RegisterType((*MultiTerminalLoginCheckResp)(nil), "relay.MultiTerminalLoginCheckResp") } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context -var _ grpc.ClientConnInterface +var _ grpc.ClientConn // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 +const _ = grpc.SupportPackageIsVersion4 + +// Client API for Relay service -// RelayClient is the client API for Relay service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type RelayClient interface { OnlinePushMsg(ctx context.Context, in *OnlinePushMsgReq, opts ...grpc.CallOption) (*OnlinePushMsgResp, error) GetUsersOnlineStatus(ctx context.Context, in *GetUsersOnlineStatusReq, opts ...grpc.CallOption) (*GetUsersOnlineStatusResp, error) @@ -1356,19 +833,20 @@ type RelayClient interface { SuperGroupOnlineBatchPushOneMsg(ctx context.Context, in *OnlineBatchPushOneMsgReq, opts ...grpc.CallOption) (*OnlineBatchPushOneMsgResp, error) KickUserOffline(ctx context.Context, in *KickUserOfflineReq, opts ...grpc.CallOption) (*KickUserOfflineResp, error) MultiTerminalLoginCheck(ctx context.Context, in *MultiTerminalLoginCheckReq, opts ...grpc.CallOption) (*MultiTerminalLoginCheckResp, error) + SuperGroupBackgroundOnlinePush(ctx context.Context, in *OnlineBatchPushOneMsgReq, opts ...grpc.CallOption) (*OnlineBatchPushOneMsgResp, error) } type relayClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewRelayClient(cc grpc.ClientConnInterface) RelayClient { +func NewRelayClient(cc *grpc.ClientConn) RelayClient { return &relayClient{cc} } func (c *relayClient) OnlinePushMsg(ctx context.Context, in *OnlinePushMsgReq, opts ...grpc.CallOption) (*OnlinePushMsgResp, error) { out := new(OnlinePushMsgResp) - err := c.cc.Invoke(ctx, "/relay.relay/OnlinePushMsg", in, out, opts...) + err := grpc.Invoke(ctx, "/relay.relay/OnlinePushMsg", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -1377,7 +855,7 @@ func (c *relayClient) OnlinePushMsg(ctx context.Context, in *OnlinePushMsgReq, o func (c *relayClient) GetUsersOnlineStatus(ctx context.Context, in *GetUsersOnlineStatusReq, opts ...grpc.CallOption) (*GetUsersOnlineStatusResp, error) { out := new(GetUsersOnlineStatusResp) - err := c.cc.Invoke(ctx, "/relay.relay/GetUsersOnlineStatus", in, out, opts...) + err := grpc.Invoke(ctx, "/relay.relay/GetUsersOnlineStatus", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -1386,7 +864,7 @@ func (c *relayClient) GetUsersOnlineStatus(ctx context.Context, in *GetUsersOnli func (c *relayClient) OnlineBatchPushOneMsg(ctx context.Context, in *OnlineBatchPushOneMsgReq, opts ...grpc.CallOption) (*OnlineBatchPushOneMsgResp, error) { out := new(OnlineBatchPushOneMsgResp) - err := c.cc.Invoke(ctx, "/relay.relay/OnlineBatchPushOneMsg", in, out, opts...) + err := grpc.Invoke(ctx, "/relay.relay/OnlineBatchPushOneMsg", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -1395,7 +873,7 @@ func (c *relayClient) OnlineBatchPushOneMsg(ctx context.Context, in *OnlineBatch func (c *relayClient) SuperGroupOnlineBatchPushOneMsg(ctx context.Context, in *OnlineBatchPushOneMsgReq, opts ...grpc.CallOption) (*OnlineBatchPushOneMsgResp, error) { out := new(OnlineBatchPushOneMsgResp) - err := c.cc.Invoke(ctx, "/relay.relay/SuperGroupOnlineBatchPushOneMsg", in, out, opts...) + err := grpc.Invoke(ctx, "/relay.relay/SuperGroupOnlineBatchPushOneMsg", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -1404,7 +882,7 @@ func (c *relayClient) SuperGroupOnlineBatchPushOneMsg(ctx context.Context, in *O func (c *relayClient) KickUserOffline(ctx context.Context, in *KickUserOfflineReq, opts ...grpc.CallOption) (*KickUserOfflineResp, error) { out := new(KickUserOfflineResp) - err := c.cc.Invoke(ctx, "/relay.relay/KickUserOffline", in, out, opts...) + err := grpc.Invoke(ctx, "/relay.relay/KickUserOffline", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -1413,14 +891,24 @@ func (c *relayClient) KickUserOffline(ctx context.Context, in *KickUserOfflineRe func (c *relayClient) MultiTerminalLoginCheck(ctx context.Context, in *MultiTerminalLoginCheckReq, opts ...grpc.CallOption) (*MultiTerminalLoginCheckResp, error) { out := new(MultiTerminalLoginCheckResp) - err := c.cc.Invoke(ctx, "/relay.relay/MultiTerminalLoginCheck", in, out, opts...) + err := grpc.Invoke(ctx, "/relay.relay/MultiTerminalLoginCheck", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// RelayServer is the server API for Relay service. +func (c *relayClient) SuperGroupBackgroundOnlinePush(ctx context.Context, in *OnlineBatchPushOneMsgReq, opts ...grpc.CallOption) (*OnlineBatchPushOneMsgResp, error) { + out := new(OnlineBatchPushOneMsgResp) + err := grpc.Invoke(ctx, "/relay.relay/SuperGroupBackgroundOnlinePush", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for Relay service + type RelayServer interface { OnlinePushMsg(context.Context, *OnlinePushMsgReq) (*OnlinePushMsgResp, error) GetUsersOnlineStatus(context.Context, *GetUsersOnlineStatusReq) (*GetUsersOnlineStatusResp, error) @@ -1428,29 +916,7 @@ type RelayServer interface { SuperGroupOnlineBatchPushOneMsg(context.Context, *OnlineBatchPushOneMsgReq) (*OnlineBatchPushOneMsgResp, error) KickUserOffline(context.Context, *KickUserOfflineReq) (*KickUserOfflineResp, error) MultiTerminalLoginCheck(context.Context, *MultiTerminalLoginCheckReq) (*MultiTerminalLoginCheckResp, error) -} - -// UnimplementedRelayServer can be embedded to have forward compatible implementations. -type UnimplementedRelayServer struct { -} - -func (*UnimplementedRelayServer) OnlinePushMsg(context.Context, *OnlinePushMsgReq) (*OnlinePushMsgResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method OnlinePushMsg not implemented") -} -func (*UnimplementedRelayServer) GetUsersOnlineStatus(context.Context, *GetUsersOnlineStatusReq) (*GetUsersOnlineStatusResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetUsersOnlineStatus not implemented") -} -func (*UnimplementedRelayServer) OnlineBatchPushOneMsg(context.Context, *OnlineBatchPushOneMsgReq) (*OnlineBatchPushOneMsgResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method OnlineBatchPushOneMsg not implemented") -} -func (*UnimplementedRelayServer) SuperGroupOnlineBatchPushOneMsg(context.Context, *OnlineBatchPushOneMsgReq) (*OnlineBatchPushOneMsgResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method SuperGroupOnlineBatchPushOneMsg not implemented") -} -func (*UnimplementedRelayServer) KickUserOffline(context.Context, *KickUserOfflineReq) (*KickUserOfflineResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method KickUserOffline not implemented") -} -func (*UnimplementedRelayServer) MultiTerminalLoginCheck(context.Context, *MultiTerminalLoginCheckReq) (*MultiTerminalLoginCheckResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method MultiTerminalLoginCheck not implemented") + SuperGroupBackgroundOnlinePush(context.Context, *OnlineBatchPushOneMsgReq) (*OnlineBatchPushOneMsgResp, error) } func RegisterRelayServer(s *grpc.Server, srv RelayServer) { @@ -1565,6 +1031,24 @@ func _Relay_MultiTerminalLoginCheck_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _Relay_SuperGroupBackgroundOnlinePush_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(OnlineBatchPushOneMsgReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RelayServer).SuperGroupBackgroundOnlinePush(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/relay.relay/SuperGroupBackgroundOnlinePush", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RelayServer).SuperGroupBackgroundOnlinePush(ctx, req.(*OnlineBatchPushOneMsgReq)) + } + return interceptor(ctx, in, info, handler) +} + var _Relay_serviceDesc = grpc.ServiceDesc{ ServiceName: "relay.relay", HandlerType: (*RelayServer)(nil), @@ -1593,7 +1077,71 @@ var _Relay_serviceDesc = grpc.ServiceDesc{ MethodName: "MultiTerminalLoginCheck", Handler: _Relay_MultiTerminalLoginCheck_Handler, }, + { + MethodName: "SuperGroupBackgroundOnlinePush", + Handler: _Relay_SuperGroupBackgroundOnlinePush_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "relay/relay.proto", } + +func init() { proto.RegisterFile("relay/relay.proto", fileDescriptor_relay_8a2a5bc32d9acd54) } + +var fileDescriptor_relay_8a2a5bc32d9acd54 = []byte{ + // 857 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xcf, 0x6f, 0xe3, 0x44, + 0x14, 0x96, 0x37, 0xc9, 0xee, 0xf6, 0xb5, 0x85, 0xee, 0xd0, 0x25, 0xae, 0x91, 0x92, 0xac, 0x0f, + 0x28, 0x42, 0x34, 0x91, 0x02, 0x37, 0x6e, 0xd9, 0x68, 0x4b, 0x44, 0xa3, 0x54, 0x93, 0x45, 0xa0, + 0xbd, 0x04, 0xaf, 0x33, 0x71, 0xac, 0x38, 0x9e, 0xd9, 0x19, 0x7b, 0xab, 0xbd, 0xc0, 0x91, 0x0b, + 0xe2, 0x4f, 0xe0, 0xc0, 0xbf, 0xc8, 0x81, 0x2b, 0x9a, 0x1f, 0x71, 0xec, 0x24, 0x6e, 0x28, 0xa2, + 0x97, 0x36, 0xef, 0xf9, 0xfd, 0xfa, 0xbe, 0xef, 0xcd, 0xd8, 0xf0, 0x8c, 0x93, 0xc8, 0xfb, 0xd0, + 0x55, 0x7f, 0x3b, 0x8c, 0xd3, 0x84, 0xa2, 0x9a, 0x32, 0x9c, 0xf6, 0x98, 0x91, 0xf8, 0x72, 0x38, + 0xba, 0x9c, 0x10, 0xfe, 0x9e, 0xf0, 0x2e, 0x5b, 0x06, 0x5d, 0x15, 0xd0, 0x15, 0xb3, 0xe5, 0xf4, + 0x56, 0x74, 0x6f, 0x85, 0x4e, 0x70, 0x7f, 0xb7, 0xe0, 0x6c, 0x1c, 0x47, 0x61, 0x4c, 0x6e, 0x52, + 0xb1, 0x18, 0x89, 0x00, 0x93, 0x77, 0xa8, 0x05, 0xc7, 0x63, 0x46, 0xb8, 0x97, 0x84, 0x34, 0x1e, + 0x0e, 0x6c, 0xab, 0x65, 0xb5, 0x8f, 0x70, 0xde, 0x85, 0xbe, 0x86, 0x27, 0x2b, 0x11, 0x0c, 0xbc, + 0xc4, 0xb3, 0x1f, 0xb5, 0xac, 0xf6, 0x71, 0xcf, 0xe9, 0x08, 0xd5, 0x6a, 0xea, 0xb1, 0x70, 0xca, + 0x3c, 0xee, 0xad, 0x44, 0x67, 0xa4, 0x23, 0xf0, 0x3a, 0x14, 0xb9, 0x70, 0xc2, 0x52, 0xb1, 0x78, + 0x4d, 0xbf, 0x17, 0x84, 0x0f, 0x07, 0x76, 0x45, 0x15, 0x2e, 0xf8, 0xdc, 0x2b, 0x78, 0xb6, 0x35, + 0x8f, 0x60, 0xa8, 0x07, 0x55, 0x4e, 0x04, 0xb3, 0xad, 0x56, 0xa5, 0x7d, 0xdc, 0x6b, 0x74, 0x34, + 0xe4, 0x49, 0x18, 0x07, 0x11, 0x19, 0x89, 0x40, 0x27, 0xdf, 0x44, 0x5e, 0x32, 0xa7, 0x7c, 0x85, + 0x55, 0xac, 0xfb, 0xab, 0x05, 0x17, 0x32, 0x82, 0x44, 0x59, 0x04, 0x26, 0x22, 0x8d, 0x92, 0xeb, + 0x50, 0x24, 0xe8, 0x53, 0x78, 0x9c, 0xea, 0x21, 0x34, 0x3a, 0x63, 0x65, 0x9d, 0x1e, 0xfd, 0xfb, + 0x4e, 0xa8, 0x01, 0x40, 0xb3, 0x91, 0x15, 0xa8, 0xa7, 0x38, 0xe7, 0x71, 0xff, 0xb0, 0xc0, 0xd6, + 0x98, 0xfa, 0x5e, 0xe2, 0x2f, 0xa4, 0x6f, 0x1c, 0x93, 0x07, 0xe6, 0xfa, 0x0b, 0x38, 0xcb, 0xf3, + 0x2a, 0x41, 0xdb, 0x95, 0x56, 0xa5, 0x7d, 0x84, 0x77, 0xfc, 0x6e, 0x08, 0x17, 0x25, 0xf3, 0x09, + 0x86, 0xae, 0xe1, 0x4c, 0x28, 0xf8, 0xd2, 0xaf, 0x19, 0x34, 0x3a, 0xb4, 0x72, 0xec, 0xec, 0x65, + 0x19, 0xef, 0x64, 0xba, 0x1f, 0xa0, 0x5e, 0x42, 0xa6, 0xa4, 0x51, 0x07, 0xbd, 0xa4, 0x33, 0xa2, + 0x88, 0xa8, 0xe0, 0x9c, 0x47, 0x4a, 0x86, 0x89, 0xff, 0x7e, 0x38, 0x50, 0x34, 0x1c, 0x61, 0x63, + 0xa1, 0xcf, 0xe1, 0x23, 0xf9, 0x4b, 0xd6, 0x79, 0x45, 0xf9, 0xca, 0xec, 0x55, 0x0d, 0x6f, 0x79, + 0xdd, 0x5b, 0xa8, 0x5f, 0x91, 0x44, 0xb6, 0x14, 0x1a, 0xed, 0x24, 0xf1, 0x92, 0x54, 0x48, 0x11, + 0x1a, 0x00, 0xe9, 0x86, 0x26, 0x4b, 0xd1, 0x94, 0xf3, 0x48, 0x91, 0x68, 0x4e, 0x24, 0xdd, 0x3f, + 0xef, 0x42, 0x0e, 0x3c, 0xa5, 0xac, 0xb0, 0xd6, 0x99, 0xed, 0xfe, 0x55, 0x05, 0x7b, 0x7f, 0x67, + 0xc1, 0x90, 0x0d, 0x4f, 0x08, 0xe7, 0x19, 0xe4, 0x1a, 0x5e, 0x9b, 0x12, 0x2f, 0xe1, 0x7c, 0x24, + 0x82, 0x35, 0x5e, 0x6d, 0xa1, 0x09, 0x9c, 0x8a, 0xd4, 0xf7, 0x89, 0x10, 0x46, 0x8d, 0x8a, 0x52, + 0xe3, 0xd2, 0xa8, 0x51, 0xd6, 0xa9, 0x33, 0xc9, 0x27, 0xe1, 0x62, 0x0d, 0x74, 0x03, 0x27, 0x73, + 0x2f, 0x8c, 0xc8, 0xcc, 0xd4, 0xac, 0xaa, 0x9a, 0x5f, 0x1e, 0xaa, 0xf9, 0x4a, 0xe5, 0x0c, 0x48, + 0xe2, 0x85, 0x11, 0x2e, 0x54, 0x70, 0x7e, 0x81, 0x53, 0xd3, 0x51, 0x3f, 0x96, 0x14, 0x31, 0xa3, + 0xb5, 0x59, 0xf3, 0xcc, 0x96, 0x58, 0x85, 0xaa, 0xba, 0xc6, 0xaa, 0x2d, 0xe9, 0xf7, 0x69, 0x1c, + 0x67, 0xa4, 0x1a, 0x4b, 0xde, 0x24, 0xa1, 0xe8, 0x7b, 0xfe, 0x32, 0xe0, 0x34, 0x8d, 0x67, 0x76, + 0x55, 0x1d, 0xba, 0x82, 0xcf, 0xf9, 0x11, 0x4e, 0xf2, 0xe3, 0xe5, 0x8e, 0x7c, 0xa5, 0x70, 0xe4, + 0xef, 0xad, 0x80, 0xf3, 0xa7, 0x95, 0x61, 0x33, 0xf4, 0x95, 0x5d, 0x27, 0x65, 0xb8, 0x3c, 0x38, + 0x9f, 0xa9, 0xa9, 0xd6, 0xdb, 0xaf, 0x39, 0xbd, 0xa7, 0x94, 0x86, 0xf7, 0xbd, 0xa5, 0xdc, 0x9f, + 0x01, 0x7d, 0x17, 0xfa, 0x4b, 0x59, 0x60, 0x3c, 0x9f, 0xcb, 0x02, 0xe6, 0xba, 0xa1, 0xbb, 0xd7, + 0x4d, 0x7e, 0x93, 0x1b, 0x00, 0x6b, 0x59, 0xcc, 0xaa, 0xd7, 0x70, 0xce, 0x23, 0x8f, 0xdb, 0xd2, + 0xd4, 0x2d, 0x5c, 0x2b, 0x5b, 0x5e, 0xf7, 0x39, 0x7c, 0xb2, 0xd3, 0x5f, 0x30, 0xf7, 0x37, 0x0b, + 0x9c, 0x51, 0x1a, 0x25, 0xe1, 0x6b, 0xc2, 0x57, 0x61, 0xec, 0x45, 0xd7, 0x34, 0x08, 0xe3, 0x97, + 0x0b, 0xe2, 0x2f, 0xe5, 0x7c, 0x65, 0x44, 0x1e, 0x9a, 0xea, 0x1c, 0x6a, 0x09, 0x5d, 0x92, 0xd8, + 0x68, 0xab, 0x8d, 0x6d, 0xb4, 0xd5, 0x1d, 0xb4, 0xee, 0x18, 0x3e, 0x2b, 0x9d, 0xe6, 0xbf, 0x9c, + 0xce, 0xde, 0xdf, 0x55, 0xd0, 0x2f, 0x61, 0xd4, 0x87, 0xd3, 0xc2, 0x9b, 0x0c, 0xd5, 0x8d, 0xac, + 0xdb, 0xef, 0x5b, 0xc7, 0xde, 0xff, 0x40, 0x30, 0xf4, 0x03, 0x9c, 0xef, 0x5b, 0x02, 0xd4, 0xb8, + 0x73, 0x43, 0xde, 0x39, 0xcd, 0x03, 0x1b, 0x84, 0xde, 0xc0, 0xf3, 0xbd, 0x57, 0x3e, 0x6a, 0x16, + 0x66, 0xd9, 0x7d, 0x61, 0x39, 0xad, 0xbb, 0x03, 0x04, 0x43, 0x33, 0x68, 0x4e, 0x52, 0x46, 0xf8, + 0x15, 0xa7, 0x29, 0x7b, 0xb0, 0x2e, 0xdf, 0xc2, 0xc7, 0x5b, 0xfb, 0x85, 0x2e, 0x4c, 0xd2, 0xee, + 0xde, 0x3b, 0x4e, 0xd9, 0x23, 0xc1, 0xd0, 0x4f, 0x50, 0x2f, 0xd9, 0x01, 0xf4, 0xc2, 0xa4, 0x95, + 0x6f, 0xac, 0xe3, 0x1e, 0x0a, 0x11, 0x0c, 0xf9, 0xd0, 0xd8, 0x30, 0xb2, 0xb9, 0xa2, 0x36, 0x7a, + 0xff, 0x0f, 0x84, 0xf4, 0x5f, 0xbc, 0x69, 0xca, 0xcf, 0xbe, 0xe9, 0x70, 0x94, 0xfb, 0xde, 0x53, + 0x49, 0xdf, 0xb0, 0xb7, 0x58, 0xfe, 0x7f, 0xfb, 0x58, 0x39, 0xbf, 0xfa, 0x27, 0x00, 0x00, 0xff, + 0xff, 0x6b, 0x3f, 0x3b, 0x05, 0x3a, 0x0a, 0x00, 0x00, +} diff --git a/pkg/proto/relay/relay.proto b/pkg/proto/relay/relay.proto index 878d65ac4..8dbd80548 100644 --- a/pkg/proto/relay/relay.proto +++ b/pkg/proto/relay/relay.proto @@ -55,6 +55,8 @@ message GetUsersOnlineStatusResp{ message SuccessDetail{ string platform = 1; string status = 2; + string connID = 3; + bool isBackground = 4; } message FailedDetail{ string userID = 3; @@ -89,7 +91,6 @@ message MultiTerminalLoginCheckResp{ string errMsg = 2; } - service relay { rpc OnlinePushMsg(OnlinePushMsgReq) returns(OnlinePushMsgResp); rpc GetUsersOnlineStatus(GetUsersOnlineStatusReq) returns(GetUsersOnlineStatusResp); @@ -97,5 +98,6 @@ service relay { rpc SuperGroupOnlineBatchPushOneMsg(OnlineBatchPushOneMsgReq) returns(OnlineBatchPushOneMsgResp); rpc KickUserOffline(KickUserOfflineReq) returns(KickUserOfflineResp); rpc MultiTerminalLoginCheck(MultiTerminalLoginCheckReq) returns(MultiTerminalLoginCheckResp); + rpc SuperGroupBackgroundOnlinePush(OnlineBatchPushOneMsgReq) returns(OnlineBatchPushOneMsgResp); } diff --git a/pkg/proto/sdk_ws/ws.pb.go b/pkg/proto/sdk_ws/ws.pb.go index 4303f5d56..1665fff79 100644 --- a/pkg/proto/sdk_ws/ws.pb.go +++ b/pkg/proto/sdk_ws/ws.pb.go @@ -46,7 +46,7 @@ func (m *GroupInfo) Reset() { *m = GroupInfo{} } func (m *GroupInfo) String() string { return proto.CompactTextString(m) } func (*GroupInfo) ProtoMessage() {} func (*GroupInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{0} + return fileDescriptor_ws_73169a3998a579bb, []int{0} } func (m *GroupInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfo.Unmarshal(m, b) @@ -204,7 +204,7 @@ func (m *GroupInfoForSet) Reset() { *m = GroupInfoForSet{} } func (m *GroupInfoForSet) String() string { return proto.CompactTextString(m) } func (*GroupInfoForSet) ProtoMessage() {} func (*GroupInfoForSet) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{1} + return fileDescriptor_ws_73169a3998a579bb, []int{1} } func (m *GroupInfoForSet) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfoForSet.Unmarshal(m, b) @@ -309,7 +309,7 @@ func (m *GroupMemberFullInfo) Reset() { *m = GroupMemberFullInfo{} } func (m *GroupMemberFullInfo) String() string { return proto.CompactTextString(m) } func (*GroupMemberFullInfo) ProtoMessage() {} func (*GroupMemberFullInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{2} + return fileDescriptor_ws_73169a3998a579bb, []int{2} } func (m *GroupMemberFullInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberFullInfo.Unmarshal(m, b) @@ -428,7 +428,7 @@ func (m *PublicUserInfo) Reset() { *m = PublicUserInfo{} } func (m *PublicUserInfo) String() string { return proto.CompactTextString(m) } func (*PublicUserInfo) ProtoMessage() {} func (*PublicUserInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{3} + return fileDescriptor_ws_73169a3998a579bb, []int{3} } func (m *PublicUserInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PublicUserInfo.Unmarshal(m, b) @@ -505,7 +505,7 @@ func (m *UserInfo) Reset() { *m = UserInfo{} } func (m *UserInfo) String() string { return proto.CompactTextString(m) } func (*UserInfo) ProtoMessage() {} func (*UserInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{4} + return fileDescriptor_ws_73169a3998a579bb, []int{4} } func (m *UserInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfo.Unmarshal(m, b) @@ -626,7 +626,7 @@ func (m *FriendInfo) Reset() { *m = FriendInfo{} } func (m *FriendInfo) String() string { return proto.CompactTextString(m) } func (*FriendInfo) ProtoMessage() {} func (*FriendInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{5} + return fileDescriptor_ws_73169a3998a579bb, []int{5} } func (m *FriendInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfo.Unmarshal(m, b) @@ -711,7 +711,7 @@ func (m *BlackInfo) Reset() { *m = BlackInfo{} } func (m *BlackInfo) String() string { return proto.CompactTextString(m) } func (*BlackInfo) ProtoMessage() {} func (*BlackInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{6} + return fileDescriptor_ws_73169a3998a579bb, []int{6} } func (m *BlackInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackInfo.Unmarshal(m, b) @@ -794,7 +794,7 @@ func (m *GroupRequest) Reset() { *m = GroupRequest{} } func (m *GroupRequest) String() string { return proto.CompactTextString(m) } func (*GroupRequest) ProtoMessage() {} func (*GroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{7} + return fileDescriptor_ws_73169a3998a579bb, []int{7} } func (m *GroupRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupRequest.Unmarshal(m, b) @@ -916,7 +916,7 @@ func (m *FriendRequest) Reset() { *m = FriendRequest{} } func (m *FriendRequest) String() string { return proto.CompactTextString(m) } func (*FriendRequest) ProtoMessage() {} func (*FriendRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{8} + return fileDescriptor_ws_73169a3998a579bb, []int{8} } func (m *FriendRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendRequest.Unmarshal(m, b) @@ -1061,7 +1061,7 @@ func (m *Department) Reset() { *m = Department{} } func (m *Department) String() string { return proto.CompactTextString(m) } func (*Department) ProtoMessage() {} func (*Department) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{9} + return fileDescriptor_ws_73169a3998a579bb, []int{9} } func (m *Department) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Department.Unmarshal(m, b) @@ -1173,7 +1173,7 @@ func (m *OrganizationUser) Reset() { *m = OrganizationUser{} } func (m *OrganizationUser) String() string { return proto.CompactTextString(m) } func (*OrganizationUser) ProtoMessage() {} func (*OrganizationUser) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{10} + return fileDescriptor_ws_73169a3998a579bb, []int{10} } func (m *OrganizationUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OrganizationUser.Unmarshal(m, b) @@ -1294,7 +1294,7 @@ func (m *DepartmentMember) Reset() { *m = DepartmentMember{} } func (m *DepartmentMember) String() string { return proto.CompactTextString(m) } func (*DepartmentMember) ProtoMessage() {} func (*DepartmentMember) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{11} + return fileDescriptor_ws_73169a3998a579bb, []int{11} } func (m *DepartmentMember) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DepartmentMember.Unmarshal(m, b) @@ -1375,7 +1375,7 @@ func (m *UserDepartmentMember) Reset() { *m = UserDepartmentMember{} } func (m *UserDepartmentMember) String() string { return proto.CompactTextString(m) } func (*UserDepartmentMember) ProtoMessage() {} func (*UserDepartmentMember) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{12} + return fileDescriptor_ws_73169a3998a579bb, []int{12} } func (m *UserDepartmentMember) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserDepartmentMember.Unmarshal(m, b) @@ -1421,7 +1421,7 @@ func (m *UserInDepartment) Reset() { *m = UserInDepartment{} } func (m *UserInDepartment) String() string { return proto.CompactTextString(m) } func (*UserInDepartment) ProtoMessage() {} func (*UserInDepartment) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{13} + return fileDescriptor_ws_73169a3998a579bb, []int{13} } func (m *UserInDepartment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInDepartment.Unmarshal(m, b) @@ -1470,7 +1470,7 @@ func (m *PullMessageBySeqListReq) Reset() { *m = PullMessageBySeqListReq func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) } func (*PullMessageBySeqListReq) ProtoMessage() {} func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{14} + return fileDescriptor_ws_73169a3998a579bb, []int{14} } func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) @@ -1529,7 +1529,7 @@ func (m *SeqList) Reset() { *m = SeqList{} } func (m *SeqList) String() string { return proto.CompactTextString(m) } func (*SeqList) ProtoMessage() {} func (*SeqList) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{15} + return fileDescriptor_ws_73169a3998a579bb, []int{15} } func (m *SeqList) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SeqList.Unmarshal(m, b) @@ -1567,7 +1567,7 @@ func (m *MsgDataList) Reset() { *m = MsgDataList{} } func (m *MsgDataList) String() string { return proto.CompactTextString(m) } func (*MsgDataList) ProtoMessage() {} func (*MsgDataList) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{16} + return fileDescriptor_ws_73169a3998a579bb, []int{16} } func (m *MsgDataList) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgDataList.Unmarshal(m, b) @@ -1608,7 +1608,7 @@ func (m *PullMessageBySeqListResp) Reset() { *m = PullMessageBySeqListRe func (m *PullMessageBySeqListResp) String() string { return proto.CompactTextString(m) } func (*PullMessageBySeqListResp) ProtoMessage() {} func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{17} + return fileDescriptor_ws_73169a3998a579bb, []int{17} } func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) @@ -1669,7 +1669,7 @@ func (m *GetMaxAndMinSeqReq) Reset() { *m = GetMaxAndMinSeqReq{} } func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) } func (*GetMaxAndMinSeqReq) ProtoMessage() {} func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{18} + return fileDescriptor_ws_73169a3998a579bb, []int{18} } func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) @@ -1722,7 +1722,7 @@ func (m *MaxAndMinSeq) Reset() { *m = MaxAndMinSeq{} } func (m *MaxAndMinSeq) String() string { return proto.CompactTextString(m) } func (*MaxAndMinSeq) ProtoMessage() {} func (*MaxAndMinSeq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{19} + return fileDescriptor_ws_73169a3998a579bb, []int{19} } func (m *MaxAndMinSeq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MaxAndMinSeq.Unmarshal(m, b) @@ -1771,7 +1771,7 @@ func (m *GetMaxAndMinSeqResp) Reset() { *m = GetMaxAndMinSeqResp{} } func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) } func (*GetMaxAndMinSeqResp) ProtoMessage() {} func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{20} + return fileDescriptor_ws_73169a3998a579bb, []int{20} } func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) @@ -1839,7 +1839,7 @@ func (m *UserSendMsgResp) Reset() { *m = UserSendMsgResp{} } func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) } func (*UserSendMsgResp) ProtoMessage() {} func (*UserSendMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{21} + return fileDescriptor_ws_73169a3998a579bb, []int{21} } func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) @@ -1912,7 +1912,7 @@ func (m *MsgData) Reset() { *m = MsgData{} } func (m *MsgData) String() string { return proto.CompactTextString(m) } func (*MsgData) ProtoMessage() {} func (*MsgData) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{22} + return fileDescriptor_ws_73169a3998a579bb, []int{22} } func (m *MsgData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgData.Unmarshal(m, b) @@ -2101,7 +2101,7 @@ 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_a86e2552dd17ddaa, []int{23} + return fileDescriptor_ws_73169a3998a579bb, []int{23} } func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b) @@ -2169,7 +2169,7 @@ func (m *TipsComm) Reset() { *m = TipsComm{} } func (m *TipsComm) String() string { return proto.CompactTextString(m) } func (*TipsComm) ProtoMessage() {} func (*TipsComm) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{24} + return fileDescriptor_ws_73169a3998a579bb, []int{24} } func (m *TipsComm) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TipsComm.Unmarshal(m, b) @@ -2226,7 +2226,7 @@ func (m *GroupCreatedTips) Reset() { *m = GroupCreatedTips{} } func (m *GroupCreatedTips) String() string { return proto.CompactTextString(m) } func (*GroupCreatedTips) ProtoMessage() {} func (*GroupCreatedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{25} + return fileDescriptor_ws_73169a3998a579bb, []int{25} } func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b) @@ -2295,7 +2295,7 @@ func (m *GroupInfoSetTips) Reset() { *m = GroupInfoSetTips{} } func (m *GroupInfoSetTips) String() string { return proto.CompactTextString(m) } func (*GroupInfoSetTips) ProtoMessage() {} func (*GroupInfoSetTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{26} + return fileDescriptor_ws_73169a3998a579bb, []int{26} } func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b) @@ -2350,7 +2350,7 @@ func (m *JoinGroupApplicationTips) Reset() { *m = JoinGroupApplicationTi func (m *JoinGroupApplicationTips) String() string { return proto.CompactTextString(m) } func (*JoinGroupApplicationTips) ProtoMessage() {} func (*JoinGroupApplicationTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{27} + return fileDescriptor_ws_73169a3998a579bb, []int{27} } func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b) @@ -2406,7 +2406,7 @@ func (m *MemberQuitTips) Reset() { *m = MemberQuitTips{} } func (m *MemberQuitTips) String() string { return proto.CompactTextString(m) } func (*MemberQuitTips) ProtoMessage() {} func (*MemberQuitTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{28} + return fileDescriptor_ws_73169a3998a579bb, []int{28} } func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b) @@ -2452,6 +2452,7 @@ type GroupApplicationAcceptedTips struct { Group *GroupInfo `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"` OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser" json:"opUser,omitempty"` HandleMsg string `protobuf:"bytes,4,opt,name=handleMsg" json:"handleMsg,omitempty"` + ReceiverAs int32 `protobuf:"varint,5,opt,name=receiverAs" json:"receiverAs,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2461,7 +2462,7 @@ func (m *GroupApplicationAcceptedTips) Reset() { *m = GroupApplicationAc func (m *GroupApplicationAcceptedTips) String() string { return proto.CompactTextString(m) } func (*GroupApplicationAcceptedTips) ProtoMessage() {} func (*GroupApplicationAcceptedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{29} + return fileDescriptor_ws_73169a3998a579bb, []int{29} } func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b) @@ -2502,11 +2503,19 @@ func (m *GroupApplicationAcceptedTips) GetHandleMsg() string { return "" } +func (m *GroupApplicationAcceptedTips) GetReceiverAs() int32 { + if m != nil { + return m.ReceiverAs + } + return 0 +} + // OnApplicationGroupRejected() type GroupApplicationRejectedTips struct { Group *GroupInfo `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"` OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser" json:"opUser,omitempty"` HandleMsg string `protobuf:"bytes,4,opt,name=handleMsg" json:"handleMsg,omitempty"` + ReceiverAs int32 `protobuf:"varint,5,opt,name=receiverAs" json:"receiverAs,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2516,7 +2525,7 @@ func (m *GroupApplicationRejectedTips) Reset() { *m = GroupApplicationRe func (m *GroupApplicationRejectedTips) String() string { return proto.CompactTextString(m) } func (*GroupApplicationRejectedTips) ProtoMessage() {} func (*GroupApplicationRejectedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{30} + return fileDescriptor_ws_73169a3998a579bb, []int{30} } func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b) @@ -2557,6 +2566,13 @@ func (m *GroupApplicationRejectedTips) GetHandleMsg() string { return "" } +func (m *GroupApplicationRejectedTips) GetReceiverAs() int32 { + if m != nil { + return m.ReceiverAs + } + return 0 +} + // OnTransferGroupOwner() type GroupOwnerTransferredTips struct { Group *GroupInfo `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"` @@ -2572,7 +2588,7 @@ func (m *GroupOwnerTransferredTips) Reset() { *m = GroupOwnerTransferred func (m *GroupOwnerTransferredTips) String() string { return proto.CompactTextString(m) } func (*GroupOwnerTransferredTips) ProtoMessage() {} func (*GroupOwnerTransferredTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{31} + return fileDescriptor_ws_73169a3998a579bb, []int{31} } func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b) @@ -2635,7 +2651,7 @@ func (m *MemberKickedTips) Reset() { *m = MemberKickedTips{} } func (m *MemberKickedTips) String() string { return proto.CompactTextString(m) } func (*MemberKickedTips) ProtoMessage() {} func (*MemberKickedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{32} + return fileDescriptor_ws_73169a3998a579bb, []int{32} } func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b) @@ -2698,7 +2714,7 @@ func (m *MemberInvitedTips) Reset() { *m = MemberInvitedTips{} } func (m *MemberInvitedTips) String() string { return proto.CompactTextString(m) } func (*MemberInvitedTips) ProtoMessage() {} func (*MemberInvitedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{33} + return fileDescriptor_ws_73169a3998a579bb, []int{33} } func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b) @@ -2760,7 +2776,7 @@ func (m *MemberEnterTips) Reset() { *m = MemberEnterTips{} } func (m *MemberEnterTips) String() string { return proto.CompactTextString(m) } func (*MemberEnterTips) ProtoMessage() {} func (*MemberEnterTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{34} + return fileDescriptor_ws_73169a3998a579bb, []int{34} } func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b) @@ -2814,7 +2830,7 @@ func (m *GroupDismissedTips) Reset() { *m = GroupDismissedTips{} } func (m *GroupDismissedTips) String() string { return proto.CompactTextString(m) } func (*GroupDismissedTips) ProtoMessage() {} func (*GroupDismissedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{35} + return fileDescriptor_ws_73169a3998a579bb, []int{35} } func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b) @@ -2870,7 +2886,7 @@ func (m *GroupMemberMutedTips) Reset() { *m = GroupMemberMutedTips{} } func (m *GroupMemberMutedTips) String() string { return proto.CompactTextString(m) } func (*GroupMemberMutedTips) ProtoMessage() {} func (*GroupMemberMutedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{36} + return fileDescriptor_ws_73169a3998a579bb, []int{36} } func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b) @@ -2939,7 +2955,7 @@ func (m *GroupMemberCancelMutedTips) Reset() { *m = GroupMemberCancelMut func (m *GroupMemberCancelMutedTips) String() string { return proto.CompactTextString(m) } func (*GroupMemberCancelMutedTips) ProtoMessage() {} func (*GroupMemberCancelMutedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{37} + return fileDescriptor_ws_73169a3998a579bb, []int{37} } func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b) @@ -3000,7 +3016,7 @@ func (m *GroupMutedTips) Reset() { *m = GroupMutedTips{} } func (m *GroupMutedTips) String() string { return proto.CompactTextString(m) } func (*GroupMutedTips) ProtoMessage() {} func (*GroupMutedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{38} + return fileDescriptor_ws_73169a3998a579bb, []int{38} } func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b) @@ -3054,7 +3070,7 @@ func (m *GroupCancelMutedTips) Reset() { *m = GroupCancelMutedTips{} } func (m *GroupCancelMutedTips) String() string { return proto.CompactTextString(m) } func (*GroupCancelMutedTips) ProtoMessage() {} func (*GroupCancelMutedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{39} + return fileDescriptor_ws_73169a3998a579bb, []int{39} } func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b) @@ -3109,7 +3125,7 @@ func (m *GroupMemberInfoSetTips) Reset() { *m = GroupMemberInfoSetTips{} func (m *GroupMemberInfoSetTips) String() string { return proto.CompactTextString(m) } func (*GroupMemberInfoSetTips) ProtoMessage() {} func (*GroupMemberInfoSetTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{40} + return fileDescriptor_ws_73169a3998a579bb, []int{40} } func (m *GroupMemberInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberInfoSetTips.Unmarshal(m, b) @@ -3169,7 +3185,7 @@ func (m *OrganizationChangedTips) Reset() { *m = OrganizationChangedTips func (m *OrganizationChangedTips) String() string { return proto.CompactTextString(m) } func (*OrganizationChangedTips) ProtoMessage() {} func (*OrganizationChangedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{41} + return fileDescriptor_ws_73169a3998a579bb, []int{41} } func (m *OrganizationChangedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OrganizationChangedTips.Unmarshal(m, b) @@ -3216,7 +3232,7 @@ func (m *FriendApplication) Reset() { *m = FriendApplication{} } func (m *FriendApplication) String() string { return proto.CompactTextString(m) } func (*FriendApplication) ProtoMessage() {} func (*FriendApplication) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{42} + return fileDescriptor_ws_73169a3998a579bb, []int{42} } func (m *FriendApplication) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplication.Unmarshal(m, b) @@ -3269,7 +3285,7 @@ func (m *FromToUserID) Reset() { *m = FromToUserID{} } func (m *FromToUserID) String() string { return proto.CompactTextString(m) } func (*FromToUserID) ProtoMessage() {} func (*FromToUserID) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{43} + return fileDescriptor_ws_73169a3998a579bb, []int{43} } func (m *FromToUserID) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FromToUserID.Unmarshal(m, b) @@ -3315,7 +3331,7 @@ func (m *FriendApplicationTips) Reset() { *m = FriendApplicationTips{} } func (m *FriendApplicationTips) String() string { return proto.CompactTextString(m) } func (*FriendApplicationTips) ProtoMessage() {} func (*FriendApplicationTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{44} + return fileDescriptor_ws_73169a3998a579bb, []int{44} } func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b) @@ -3355,7 +3371,7 @@ func (m *FriendApplicationApprovedTips) Reset() { *m = FriendApplication func (m *FriendApplicationApprovedTips) String() string { return proto.CompactTextString(m) } func (*FriendApplicationApprovedTips) ProtoMessage() {} func (*FriendApplicationApprovedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{45} + return fileDescriptor_ws_73169a3998a579bb, []int{45} } func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b) @@ -3402,7 +3418,7 @@ func (m *FriendApplicationRejectedTips) Reset() { *m = FriendApplication func (m *FriendApplicationRejectedTips) String() string { return proto.CompactTextString(m) } func (*FriendApplicationRejectedTips) ProtoMessage() {} func (*FriendApplicationRejectedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{46} + return fileDescriptor_ws_73169a3998a579bb, []int{46} } func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b) @@ -3450,7 +3466,7 @@ func (m *FriendAddedTips) Reset() { *m = FriendAddedTips{} } func (m *FriendAddedTips) String() string { return proto.CompactTextString(m) } func (*FriendAddedTips) ProtoMessage() {} func (*FriendAddedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{47} + return fileDescriptor_ws_73169a3998a579bb, []int{47} } func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b) @@ -3503,7 +3519,7 @@ func (m *FriendDeletedTips) Reset() { *m = FriendDeletedTips{} } func (m *FriendDeletedTips) String() string { return proto.CompactTextString(m) } func (*FriendDeletedTips) ProtoMessage() {} func (*FriendDeletedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{48} + return fileDescriptor_ws_73169a3998a579bb, []int{48} } func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b) @@ -3541,7 +3557,7 @@ func (m *BlackAddedTips) Reset() { *m = BlackAddedTips{} } func (m *BlackAddedTips) String() string { return proto.CompactTextString(m) } func (*BlackAddedTips) ProtoMessage() {} func (*BlackAddedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{49} + return fileDescriptor_ws_73169a3998a579bb, []int{49} } func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b) @@ -3579,7 +3595,7 @@ func (m *BlackDeletedTips) Reset() { *m = BlackDeletedTips{} } func (m *BlackDeletedTips) String() string { return proto.CompactTextString(m) } func (*BlackDeletedTips) ProtoMessage() {} func (*BlackDeletedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{50} + return fileDescriptor_ws_73169a3998a579bb, []int{50} } func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b) @@ -3617,7 +3633,7 @@ func (m *FriendInfoChangedTips) Reset() { *m = FriendInfoChangedTips{} } func (m *FriendInfoChangedTips) String() string { return proto.CompactTextString(m) } func (*FriendInfoChangedTips) ProtoMessage() {} func (*FriendInfoChangedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{51} + return fileDescriptor_ws_73169a3998a579bb, []int{51} } func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b) @@ -3656,7 +3672,7 @@ func (m *UserInfoUpdatedTips) Reset() { *m = UserInfoUpdatedTips{} } func (m *UserInfoUpdatedTips) String() string { return proto.CompactTextString(m) } func (*UserInfoUpdatedTips) ProtoMessage() {} func (*UserInfoUpdatedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{52} + return fileDescriptor_ws_73169a3998a579bb, []int{52} } func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b) @@ -3697,7 +3713,7 @@ func (m *ConversationUpdateTips) Reset() { *m = ConversationUpdateTips{} func (m *ConversationUpdateTips) String() string { return proto.CompactTextString(m) } func (*ConversationUpdateTips) ProtoMessage() {} func (*ConversationUpdateTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{53} + return fileDescriptor_ws_73169a3998a579bb, []int{53} } func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b) @@ -3751,7 +3767,7 @@ func (m *ConversationSetPrivateTips) Reset() { *m = ConversationSetPriva func (m *ConversationSetPrivateTips) String() string { return proto.CompactTextString(m) } func (*ConversationSetPrivateTips) ProtoMessage() {} func (*ConversationSetPrivateTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{54} + return fileDescriptor_ws_73169a3998a579bb, []int{54} } func (m *ConversationSetPrivateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationSetPrivateTips.Unmarshal(m, b) @@ -3806,7 +3822,7 @@ func (m *DeleteMessageTips) Reset() { *m = DeleteMessageTips{} } func (m *DeleteMessageTips) String() string { return proto.CompactTextString(m) } func (*DeleteMessageTips) ProtoMessage() {} func (*DeleteMessageTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{55} + return fileDescriptor_ws_73169a3998a579bb, []int{55} } func (m *DeleteMessageTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteMessageTips.Unmarshal(m, b) @@ -3860,7 +3876,7 @@ func (m *RequestPagination) Reset() { *m = RequestPagination{} } func (m *RequestPagination) String() string { return proto.CompactTextString(m) } func (*RequestPagination) ProtoMessage() {} func (*RequestPagination) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{56} + return fileDescriptor_ws_73169a3998a579bb, []int{56} } func (m *RequestPagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RequestPagination.Unmarshal(m, b) @@ -3906,7 +3922,7 @@ func (m *ResponsePagination) Reset() { *m = ResponsePagination{} } func (m *ResponsePagination) String() string { return proto.CompactTextString(m) } func (*ResponsePagination) ProtoMessage() {} func (*ResponsePagination) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{57} + return fileDescriptor_ws_73169a3998a579bb, []int{57} } func (m *ResponsePagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResponsePagination.Unmarshal(m, b) @@ -3963,7 +3979,7 @@ func (m *SignalReq) Reset() { *m = SignalReq{} } func (m *SignalReq) String() string { return proto.CompactTextString(m) } func (*SignalReq) ProtoMessage() {} func (*SignalReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{58} + return fileDescriptor_ws_73169a3998a579bb, []int{58} } func (m *SignalReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalReq.Unmarshal(m, b) @@ -4352,7 +4368,7 @@ func (m *SignalResp) Reset() { *m = SignalResp{} } func (m *SignalResp) String() string { return proto.CompactTextString(m) } func (*SignalResp) ProtoMessage() {} func (*SignalResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{59} + return fileDescriptor_ws_73169a3998a579bb, []int{59} } func (m *SignalResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalResp.Unmarshal(m, b) @@ -4682,7 +4698,7 @@ func (m *InvitationInfo) Reset() { *m = InvitationInfo{} } func (m *InvitationInfo) String() string { return proto.CompactTextString(m) } func (*InvitationInfo) ProtoMessage() {} func (*InvitationInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{60} + return fileDescriptor_ws_73169a3998a579bb, []int{60} } func (m *InvitationInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InvitationInfo.Unmarshal(m, b) @@ -4792,7 +4808,7 @@ func (m *ParticipantMetaData) Reset() { *m = ParticipantMetaData{} } func (m *ParticipantMetaData) String() string { return proto.CompactTextString(m) } func (*ParticipantMetaData) ProtoMessage() {} func (*ParticipantMetaData) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{61} + return fileDescriptor_ws_73169a3998a579bb, []int{61} } func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b) @@ -4847,7 +4863,7 @@ func (m *SignalInviteReq) Reset() { *m = SignalInviteReq{} } func (m *SignalInviteReq) String() string { return proto.CompactTextString(m) } func (*SignalInviteReq) ProtoMessage() {} func (*SignalInviteReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{62} + return fileDescriptor_ws_73169a3998a579bb, []int{62} } func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b) @@ -4909,7 +4925,7 @@ func (m *SignalInviteReply) Reset() { *m = SignalInviteReply{} } func (m *SignalInviteReply) String() string { return proto.CompactTextString(m) } func (*SignalInviteReply) ProtoMessage() {} func (*SignalInviteReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{63} + return fileDescriptor_ws_73169a3998a579bb, []int{63} } func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b) @@ -4971,7 +4987,7 @@ func (m *SignalInviteInGroupReq) Reset() { *m = SignalInviteInGroupReq{} func (m *SignalInviteInGroupReq) String() string { return proto.CompactTextString(m) } func (*SignalInviteInGroupReq) ProtoMessage() {} func (*SignalInviteInGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{64} + return fileDescriptor_ws_73169a3998a579bb, []int{64} } func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b) @@ -5033,7 +5049,7 @@ func (m *SignalInviteInGroupReply) Reset() { *m = SignalInviteInGroupRep func (m *SignalInviteInGroupReply) String() string { return proto.CompactTextString(m) } func (*SignalInviteInGroupReply) ProtoMessage() {} func (*SignalInviteInGroupReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{65} + return fileDescriptor_ws_73169a3998a579bb, []int{65} } func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b) @@ -5095,7 +5111,7 @@ func (m *SignalCancelReq) Reset() { *m = SignalCancelReq{} } func (m *SignalCancelReq) String() string { return proto.CompactTextString(m) } func (*SignalCancelReq) ProtoMessage() {} func (*SignalCancelReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{66} + return fileDescriptor_ws_73169a3998a579bb, []int{66} } func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b) @@ -5153,7 +5169,7 @@ func (m *SignalCancelReply) Reset() { *m = SignalCancelReply{} } func (m *SignalCancelReply) String() string { return proto.CompactTextString(m) } func (*SignalCancelReply) ProtoMessage() {} func (*SignalCancelReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{67} + return fileDescriptor_ws_73169a3998a579bb, []int{67} } func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b) @@ -5188,7 +5204,7 @@ func (m *SignalAcceptReq) Reset() { *m = SignalAcceptReq{} } func (m *SignalAcceptReq) String() string { return proto.CompactTextString(m) } func (*SignalAcceptReq) ProtoMessage() {} func (*SignalAcceptReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{68} + return fileDescriptor_ws_73169a3998a579bb, []int{68} } func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b) @@ -5256,7 +5272,7 @@ func (m *SignalAcceptReply) Reset() { *m = SignalAcceptReply{} } func (m *SignalAcceptReply) String() string { return proto.CompactTextString(m) } func (*SignalAcceptReply) ProtoMessage() {} func (*SignalAcceptReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{69} + return fileDescriptor_ws_73169a3998a579bb, []int{69} } func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b) @@ -5310,7 +5326,7 @@ func (m *SignalHungUpReq) Reset() { *m = SignalHungUpReq{} } func (m *SignalHungUpReq) String() string { return proto.CompactTextString(m) } func (*SignalHungUpReq) ProtoMessage() {} func (*SignalHungUpReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{70} + return fileDescriptor_ws_73169a3998a579bb, []int{70} } func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b) @@ -5361,7 +5377,7 @@ func (m *SignalHungUpReply) Reset() { *m = SignalHungUpReply{} } func (m *SignalHungUpReply) String() string { return proto.CompactTextString(m) } func (*SignalHungUpReply) ProtoMessage() {} func (*SignalHungUpReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{71} + return fileDescriptor_ws_73169a3998a579bb, []int{71} } func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b) @@ -5396,7 +5412,7 @@ func (m *SignalRejectReq) Reset() { *m = SignalRejectReq{} } func (m *SignalRejectReq) String() string { return proto.CompactTextString(m) } func (*SignalRejectReq) ProtoMessage() {} func (*SignalRejectReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{72} + return fileDescriptor_ws_73169a3998a579bb, []int{72} } func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b) @@ -5461,7 +5477,7 @@ func (m *SignalRejectReply) Reset() { *m = SignalRejectReply{} } func (m *SignalRejectReply) String() string { return proto.CompactTextString(m) } func (*SignalRejectReply) ProtoMessage() {} func (*SignalRejectReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{73} + return fileDescriptor_ws_73169a3998a579bb, []int{73} } func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b) @@ -5494,7 +5510,7 @@ func (m *SignalGetRoomByGroupIDReq) Reset() { *m = SignalGetRoomByGroupI func (m *SignalGetRoomByGroupIDReq) String() string { return proto.CompactTextString(m) } func (*SignalGetRoomByGroupIDReq) ProtoMessage() {} func (*SignalGetRoomByGroupIDReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{74} + return fileDescriptor_ws_73169a3998a579bb, []int{74} } func (m *SignalGetRoomByGroupIDReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalGetRoomByGroupIDReq.Unmarshal(m, b) @@ -5548,7 +5564,7 @@ func (m *SignalGetRoomByGroupIDReply) Reset() { *m = SignalGetRoomByGrou func (m *SignalGetRoomByGroupIDReply) String() string { return proto.CompactTextString(m) } func (*SignalGetRoomByGroupIDReply) ProtoMessage() {} func (*SignalGetRoomByGroupIDReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{75} + return fileDescriptor_ws_73169a3998a579bb, []int{75} } func (m *SignalGetRoomByGroupIDReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalGetRoomByGroupIDReply.Unmarshal(m, b) @@ -5602,7 +5618,7 @@ func (m *SignalOnRoomParticipantConnectedReq) Reset() { *m = SignalOnRoo func (m *SignalOnRoomParticipantConnectedReq) String() string { return proto.CompactTextString(m) } func (*SignalOnRoomParticipantConnectedReq) ProtoMessage() {} func (*SignalOnRoomParticipantConnectedReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{76} + return fileDescriptor_ws_73169a3998a579bb, []int{76} } func (m *SignalOnRoomParticipantConnectedReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalOnRoomParticipantConnectedReq.Unmarshal(m, b) @@ -5658,7 +5674,7 @@ func (m *SignalOnRoomParticipantDisconnectedReq) Reset() { func (m *SignalOnRoomParticipantDisconnectedReq) String() string { return proto.CompactTextString(m) } func (*SignalOnRoomParticipantDisconnectedReq) ProtoMessage() {} func (*SignalOnRoomParticipantDisconnectedReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{77} + return fileDescriptor_ws_73169a3998a579bb, []int{77} } func (m *SignalOnRoomParticipantDisconnectedReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalOnRoomParticipantDisconnectedReq.Unmarshal(m, b) @@ -5713,7 +5729,7 @@ func (m *SignalGetTokenByRoomIDReq) Reset() { *m = SignalGetTokenByRoomI func (m *SignalGetTokenByRoomIDReq) String() string { return proto.CompactTextString(m) } func (*SignalGetTokenByRoomIDReq) ProtoMessage() {} func (*SignalGetTokenByRoomIDReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{78} + return fileDescriptor_ws_73169a3998a579bb, []int{78} } func (m *SignalGetTokenByRoomIDReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalGetTokenByRoomIDReq.Unmarshal(m, b) @@ -5773,7 +5789,7 @@ func (m *SignalGetTokenByRoomIDReply) Reset() { *m = SignalGetTokenByRoo func (m *SignalGetTokenByRoomIDReply) String() string { return proto.CompactTextString(m) } func (*SignalGetTokenByRoomIDReply) ProtoMessage() {} func (*SignalGetTokenByRoomIDReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{79} + return fileDescriptor_ws_73169a3998a579bb, []int{79} } func (m *SignalGetTokenByRoomIDReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalGetTokenByRoomIDReply.Unmarshal(m, b) @@ -5821,7 +5837,7 @@ func (m *DelMsgListReq) Reset() { *m = DelMsgListReq{} } func (m *DelMsgListReq) String() string { return proto.CompactTextString(m) } func (*DelMsgListReq) ProtoMessage() {} func (*DelMsgListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{80} + return fileDescriptor_ws_73169a3998a579bb, []int{80} } func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b) @@ -5881,7 +5897,7 @@ func (m *DelMsgListResp) Reset() { *m = DelMsgListResp{} } func (m *DelMsgListResp) String() string { return proto.CompactTextString(m) } func (*DelMsgListResp) ProtoMessage() {} func (*DelMsgListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_a86e2552dd17ddaa, []int{81} + return fileDescriptor_ws_73169a3998a579bb, []int{81} } func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b) @@ -5915,6 +5931,300 @@ func (m *DelMsgListResp) GetErrMsg() string { return "" } +type SetAppBackgroundStatusReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + IsBackground bool `protobuf:"varint,2,opt,name=isBackground" json:"isBackground,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SetAppBackgroundStatusReq) Reset() { *m = SetAppBackgroundStatusReq{} } +func (m *SetAppBackgroundStatusReq) String() string { return proto.CompactTextString(m) } +func (*SetAppBackgroundStatusReq) ProtoMessage() {} +func (*SetAppBackgroundStatusReq) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_73169a3998a579bb, []int{82} +} +func (m *SetAppBackgroundStatusReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SetAppBackgroundStatusReq.Unmarshal(m, b) +} +func (m *SetAppBackgroundStatusReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SetAppBackgroundStatusReq.Marshal(b, m, deterministic) +} +func (dst *SetAppBackgroundStatusReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetAppBackgroundStatusReq.Merge(dst, src) +} +func (m *SetAppBackgroundStatusReq) XXX_Size() int { + return xxx_messageInfo_SetAppBackgroundStatusReq.Size(m) +} +func (m *SetAppBackgroundStatusReq) XXX_DiscardUnknown() { + xxx_messageInfo_SetAppBackgroundStatusReq.DiscardUnknown(m) +} + +var xxx_messageInfo_SetAppBackgroundStatusReq proto.InternalMessageInfo + +func (m *SetAppBackgroundStatusReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *SetAppBackgroundStatusReq) GetIsBackground() bool { + if m != nil { + return m.IsBackground + } + return false +} + +type SetAppBackgroundStatusResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SetAppBackgroundStatusResp) Reset() { *m = SetAppBackgroundStatusResp{} } +func (m *SetAppBackgroundStatusResp) String() string { return proto.CompactTextString(m) } +func (*SetAppBackgroundStatusResp) ProtoMessage() {} +func (*SetAppBackgroundStatusResp) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_73169a3998a579bb, []int{83} +} +func (m *SetAppBackgroundStatusResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SetAppBackgroundStatusResp.Unmarshal(m, b) +} +func (m *SetAppBackgroundStatusResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SetAppBackgroundStatusResp.Marshal(b, m, deterministic) +} +func (dst *SetAppBackgroundStatusResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetAppBackgroundStatusResp.Merge(dst, src) +} +func (m *SetAppBackgroundStatusResp) XXX_Size() int { + return xxx_messageInfo_SetAppBackgroundStatusResp.Size(m) +} +func (m *SetAppBackgroundStatusResp) XXX_DiscardUnknown() { + xxx_messageInfo_SetAppBackgroundStatusResp.DiscardUnknown(m) +} + +var xxx_messageInfo_SetAppBackgroundStatusResp proto.InternalMessageInfo + +func (m *SetAppBackgroundStatusResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *SetAppBackgroundStatusResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type ExtendMsgSet struct { + SourceID string `protobuf:"bytes,1,opt,name=sourceID" json:"sourceID,omitempty"` + SessionType int32 `protobuf:"varint,2,opt,name=sessionType" json:"sessionType,omitempty"` + ExtendMsgs map[string]*ExtendMsg `protobuf:"bytes,3,rep,name=extendMsgs" json:"extendMsgs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + MaxMsgUpdateTime int64 `protobuf:"varint,4,opt,name=MaxMsgUpdateTime" json:"MaxMsgUpdateTime,omitempty"` + ExtendMsgNum int32 `protobuf:"varint,5,opt,name=extendMsgNum" json:"extendMsgNum,omitempty"` + CreateTime int64 `protobuf:"varint,6,opt,name=createTime" json:"createTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ExtendMsgSet) Reset() { *m = ExtendMsgSet{} } +func (m *ExtendMsgSet) String() string { return proto.CompactTextString(m) } +func (*ExtendMsgSet) ProtoMessage() {} +func (*ExtendMsgSet) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_73169a3998a579bb, []int{84} +} +func (m *ExtendMsgSet) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ExtendMsgSet.Unmarshal(m, b) +} +func (m *ExtendMsgSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ExtendMsgSet.Marshal(b, m, deterministic) +} +func (dst *ExtendMsgSet) XXX_Merge(src proto.Message) { + xxx_messageInfo_ExtendMsgSet.Merge(dst, src) +} +func (m *ExtendMsgSet) XXX_Size() int { + return xxx_messageInfo_ExtendMsgSet.Size(m) +} +func (m *ExtendMsgSet) XXX_DiscardUnknown() { + xxx_messageInfo_ExtendMsgSet.DiscardUnknown(m) +} + +var xxx_messageInfo_ExtendMsgSet proto.InternalMessageInfo + +func (m *ExtendMsgSet) GetSourceID() string { + if m != nil { + return m.SourceID + } + return "" +} + +func (m *ExtendMsgSet) GetSessionType() int32 { + if m != nil { + return m.SessionType + } + return 0 +} + +func (m *ExtendMsgSet) GetExtendMsgs() map[string]*ExtendMsg { + if m != nil { + return m.ExtendMsgs + } + return nil +} + +func (m *ExtendMsgSet) GetMaxMsgUpdateTime() int64 { + if m != nil { + return m.MaxMsgUpdateTime + } + return 0 +} + +func (m *ExtendMsgSet) GetExtendMsgNum() int32 { + if m != nil { + return m.ExtendMsgNum + } + return 0 +} + +func (m *ExtendMsgSet) GetCreateTime() int64 { + if m != nil { + return m.CreateTime + } + return 0 +} + +type ExtendMsg struct { + ReactionExtensionList map[string]*KeyValue `protobuf:"bytes,1,rep,name=reactionExtensionList" json:"reactionExtensionList,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + ClientMsgID string `protobuf:"bytes,2,opt,name=clientMsgID" json:"clientMsgID,omitempty"` + MsgFirstModifyTime int64 `protobuf:"varint,3,opt,name=msgFirstModifyTime" json:"msgFirstModifyTime,omitempty"` + AttachedInfo string `protobuf:"bytes,4,opt,name=attachedInfo" json:"attachedInfo,omitempty"` + Ex string `protobuf:"bytes,5,opt,name=ex" json:"ex,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ExtendMsg) Reset() { *m = ExtendMsg{} } +func (m *ExtendMsg) String() string { return proto.CompactTextString(m) } +func (*ExtendMsg) ProtoMessage() {} +func (*ExtendMsg) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_73169a3998a579bb, []int{85} +} +func (m *ExtendMsg) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ExtendMsg.Unmarshal(m, b) +} +func (m *ExtendMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ExtendMsg.Marshal(b, m, deterministic) +} +func (dst *ExtendMsg) XXX_Merge(src proto.Message) { + xxx_messageInfo_ExtendMsg.Merge(dst, src) +} +func (m *ExtendMsg) XXX_Size() int { + return xxx_messageInfo_ExtendMsg.Size(m) +} +func (m *ExtendMsg) XXX_DiscardUnknown() { + xxx_messageInfo_ExtendMsg.DiscardUnknown(m) +} + +var xxx_messageInfo_ExtendMsg proto.InternalMessageInfo + +func (m *ExtendMsg) GetReactionExtensionList() map[string]*KeyValue { + if m != nil { + return m.ReactionExtensionList + } + return nil +} + +func (m *ExtendMsg) GetClientMsgID() string { + if m != nil { + return m.ClientMsgID + } + return "" +} + +func (m *ExtendMsg) GetMsgFirstModifyTime() int64 { + if m != nil { + return m.MsgFirstModifyTime + } + return 0 +} + +func (m *ExtendMsg) GetAttachedInfo() string { + if m != nil { + return m.AttachedInfo + } + return "" +} + +func (m *ExtendMsg) GetEx() string { + if m != nil { + return m.Ex + } + return "" +} + +type KeyValue struct { + TypeKey string `protobuf:"bytes,1,opt,name=typeKey" json:"typeKey,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` + LatestUpdateTime int64 `protobuf:"varint,3,opt,name=latestUpdateTime" json:"latestUpdateTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *KeyValue) Reset() { *m = KeyValue{} } +func (m *KeyValue) String() string { return proto.CompactTextString(m) } +func (*KeyValue) ProtoMessage() {} +func (*KeyValue) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_73169a3998a579bb, []int{86} +} +func (m *KeyValue) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_KeyValue.Unmarshal(m, b) +} +func (m *KeyValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_KeyValue.Marshal(b, m, deterministic) +} +func (dst *KeyValue) XXX_Merge(src proto.Message) { + xxx_messageInfo_KeyValue.Merge(dst, src) +} +func (m *KeyValue) XXX_Size() int { + return xxx_messageInfo_KeyValue.Size(m) +} +func (m *KeyValue) XXX_DiscardUnknown() { + xxx_messageInfo_KeyValue.DiscardUnknown(m) +} + +var xxx_messageInfo_KeyValue proto.InternalMessageInfo + +func (m *KeyValue) GetTypeKey() string { + if m != nil { + return m.TypeKey + } + return "" +} + +func (m *KeyValue) GetValue() string { + if m != nil { + return m.Value + } + return "" +} + +func (m *KeyValue) GetLatestUpdateTime() int64 { + if m != nil { + return m.LatestUpdateTime + } + return 0 +} + func init() { proto.RegisterType((*GroupInfo)(nil), "server_api_params.GroupInfo") proto.RegisterType((*GroupInfoForSet)(nil), "server_api_params.GroupInfoForSet") @@ -6002,250 +6312,274 @@ func init() { proto.RegisterType((*SignalGetTokenByRoomIDReply)(nil), "server_api_params.SignalGetTokenByRoomIDReply") proto.RegisterType((*DelMsgListReq)(nil), "server_api_params.DelMsgListReq") proto.RegisterType((*DelMsgListResp)(nil), "server_api_params.DelMsgListResp") + proto.RegisterType((*SetAppBackgroundStatusReq)(nil), "server_api_params.SetAppBackgroundStatusReq") + proto.RegisterType((*SetAppBackgroundStatusResp)(nil), "server_api_params.SetAppBackgroundStatusResp") + proto.RegisterType((*ExtendMsgSet)(nil), "server_api_params.ExtendMsgSet") + proto.RegisterMapType((map[string]*ExtendMsg)(nil), "server_api_params.ExtendMsgSet.ExtendMsgsEntry") + proto.RegisterType((*ExtendMsg)(nil), "server_api_params.ExtendMsg") + proto.RegisterMapType((map[string]*KeyValue)(nil), "server_api_params.ExtendMsg.ReactionExtensionListEntry") + proto.RegisterType((*KeyValue)(nil), "server_api_params.KeyValue") } -func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_a86e2552dd17ddaa) } +func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_73169a3998a579bb) } -var fileDescriptor_ws_a86e2552dd17ddaa = []byte{ - // 3837 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3c, 0x5b, 0x6f, 0x1d, 0x57, - 0xd5, 0x9d, 0x39, 0x3e, 0xc7, 0x3e, 0xeb, 0xf8, 0x72, 0x3c, 0x49, 0xdc, 0x53, 0x37, 0xcd, 0xe7, - 0x6f, 0x1a, 0xe5, 0xeb, 0x97, 0x2f, 0x75, 0x3e, 0xa5, 0x17, 0xd1, 0x5b, 0x50, 0x6c, 0x37, 0x8e, - 0xdb, 0x9c, 0xd8, 0x9d, 0x93, 0xb4, 0xa8, 0xad, 0x14, 0xc6, 0x67, 0xb6, 0x8f, 0xa7, 0x9e, 0x33, - 0x33, 0x9e, 0x8b, 0x13, 0xf3, 0x00, 0x12, 0x20, 0x40, 0xe2, 0x01, 0x09, 0x71, 0x91, 0xe0, 0x8d, - 0x17, 0x04, 0x42, 0x15, 0x42, 0x80, 0x90, 0x40, 0x08, 0x21, 0x1e, 0x90, 0x40, 0x82, 0x77, 0x24, - 0x10, 0x3c, 0xf1, 0xc0, 0x1f, 0x40, 0x42, 0x2a, 0xda, 0x7b, 0xed, 0x99, 0xd9, 0x7b, 0x66, 0xce, - 0x25, 0x96, 0xd5, 0xa4, 0x0a, 0x6f, 0x5e, 0x6b, 0xf6, 0x5a, 0x7b, 0xdd, 0xf7, 0xda, 0x97, 0x63, - 0x98, 0x0b, 0xad, 0xbd, 0xdb, 0x77, 0xc2, 0x8b, 0x77, 0xc2, 0x65, 0x3f, 0xf0, 0x22, 0x4f, 0x9b, - 0x0f, 0x49, 0x70, 0x40, 0x82, 0xdb, 0xa6, 0x6f, 0xdf, 0xf6, 0xcd, 0xc0, 0xec, 0x87, 0x8b, 0xcb, - 0x9b, 0x3e, 0x71, 0x9f, 0xde, 0x68, 0x3f, 0xdd, 0x61, 0x9f, 0x2e, 0xfa, 0x7b, 0xbd, 0x8b, 0x6c, - 0xf0, 0xc5, 0x84, 0x38, 0x30, 0x7d, 0x9f, 0x04, 0x9c, 0x85, 0xfe, 0x97, 0x09, 0xa8, 0xaf, 0x07, - 0x5e, 0xec, 0x6f, 0xb8, 0x3b, 0x9e, 0xd6, 0x82, 0xc9, 0x1e, 0x03, 0xd6, 0x5a, 0xca, 0x92, 0xf2, - 0x54, 0xdd, 0x48, 0x40, 0xed, 0x34, 0xd4, 0xd9, 0x9f, 0x37, 0xcc, 0x3e, 0x69, 0xa9, 0xec, 0x5b, - 0x86, 0xd0, 0x74, 0x98, 0x76, 0xbd, 0xc8, 0xde, 0xb1, 0xbb, 0x66, 0x64, 0x7b, 0x6e, 0xab, 0xc2, - 0x06, 0x48, 0x38, 0x3a, 0xc6, 0x76, 0xa3, 0xc0, 0xb3, 0xe2, 0x2e, 0x1b, 0x33, 0x81, 0x63, 0x44, - 0x1c, 0x9d, 0x7f, 0xc7, 0xec, 0x92, 0x5b, 0xc6, 0xf5, 0x56, 0x15, 0xe7, 0xe7, 0xa0, 0xb6, 0x04, - 0x0d, 0xef, 0x8e, 0x4b, 0x82, 0x5b, 0x21, 0x09, 0x36, 0xd6, 0x5a, 0x35, 0xf6, 0x55, 0x44, 0x69, - 0x67, 0x00, 0xba, 0x01, 0x31, 0x23, 0x72, 0xd3, 0xee, 0x93, 0xd6, 0xe4, 0x92, 0xf2, 0xd4, 0x8c, - 0x21, 0x60, 0x28, 0x87, 0x3e, 0xe9, 0x6f, 0x93, 0x60, 0xd5, 0x8b, 0xdd, 0xa8, 0x35, 0xc5, 0x06, - 0x88, 0x28, 0x6d, 0x16, 0x54, 0x72, 0xb7, 0x55, 0x67, 0xac, 0x55, 0x72, 0x57, 0x5b, 0x80, 0x5a, - 0x18, 0x99, 0x51, 0x1c, 0xb6, 0x60, 0x49, 0x79, 0xaa, 0x6a, 0x70, 0x48, 0x3b, 0x0b, 0x33, 0x8c, - 0xaf, 0x97, 0x48, 0xd3, 0x60, 0x24, 0x32, 0x32, 0xb5, 0xd8, 0xcd, 0x43, 0x9f, 0xb4, 0xa6, 0x19, - 0x83, 0x0c, 0xa1, 0x9d, 0x87, 0xa6, 0x4b, 0x88, 0xf5, 0x26, 0x09, 0x32, 0xab, 0xcd, 0xb0, 0x41, - 0x05, 0xbc, 0x76, 0x0e, 0x66, 0x1d, 0xcf, 0xdb, 0x6b, 0x33, 0x51, 0xa9, 0x9f, 0x5a, 0xb3, 0x6c, - 0x64, 0x0e, 0xab, 0x5d, 0x80, 0x79, 0xd3, 0xf7, 0x9d, 0x43, 0x44, 0x5d, 0x0d, 0x6c, 0xe2, 0x5a, - 0xad, 0x39, 0x36, 0xb4, 0xf8, 0x41, 0x7b, 0x1e, 0x16, 0x44, 0xff, 0xdc, 0xf2, 0xad, 0xc4, 0x76, - 0x4d, 0x66, 0x9a, 0x01, 0x5f, 0xb5, 0x65, 0xd0, 0xa4, 0x2f, 0x68, 0x82, 0x79, 0x66, 0x82, 0x92, - 0x2f, 0xfa, 0xd7, 0x2a, 0x30, 0x97, 0x46, 0xd8, 0x55, 0x2f, 0xe8, 0x90, 0xe8, 0x01, 0x8e, 0x33, - 0x8c, 0x81, 0x5a, 0x1a, 0x03, 0xeb, 0x25, 0x7e, 0xa2, 0xb1, 0xd5, 0xb8, 0xf4, 0xf8, 0x72, 0xcf, - 0xf3, 0x7a, 0x0e, 0xc1, 0x44, 0xda, 0x8e, 0x77, 0x96, 0x37, 0xdc, 0xe8, 0x99, 0x4b, 0x6f, 0x9a, - 0x4e, 0x4c, 0x4a, 0x9c, 0xb8, 0x5a, 0x70, 0xe2, 0xd4, 0x68, 0x36, 0x79, 0x0f, 0x6f, 0x94, 0x79, - 0xb8, 0x3e, 0x9a, 0x4f, 0x91, 0x4a, 0xff, 0x40, 0x85, 0x13, 0xcc, 0x2d, 0x1c, 0x1b, 0x3b, 0xce, - 0x88, 0x12, 0xb0, 0x00, 0xb5, 0x18, 0x9d, 0x8d, 0x7e, 0xe1, 0x10, 0x75, 0x59, 0xe0, 0x39, 0xe4, - 0x3a, 0x39, 0x20, 0x0e, 0xf3, 0x48, 0xd5, 0xc8, 0x10, 0xda, 0x22, 0x4c, 0xbd, 0xe7, 0xd9, 0x2e, - 0x0b, 0xac, 0x09, 0xf6, 0x31, 0x85, 0xe9, 0x37, 0xd7, 0xee, 0xee, 0xb9, 0xd4, 0xd7, 0xe8, 0x87, - 0x14, 0x16, 0x5d, 0x54, 0x93, 0x5d, 0x74, 0x0e, 0x66, 0x4d, 0xdf, 0x6f, 0x9b, 0x6e, 0x8f, 0x04, - 0x38, 0xe9, 0x24, 0xa6, 0x83, 0x8c, 0xa5, 0x05, 0x81, 0xce, 0xd4, 0xf1, 0xe2, 0xa0, 0x4b, 0x98, - 0xb5, 0xab, 0x86, 0x80, 0xa1, 0x7c, 0x3c, 0x9f, 0x04, 0x42, 0x1e, 0x63, 0xea, 0xe7, 0xb0, 0x3c, - 0x24, 0x20, 0x0d, 0x09, 0x5a, 0x48, 0xe2, 0x88, 0xbc, 0xea, 0x5a, 0x4c, 0xa9, 0x06, 0x2f, 0x24, - 0x19, 0x8a, 0x16, 0x08, 0xdb, 0x3d, 0xb0, 0xa3, 0xb4, 0x5c, 0x4d, 0x63, 0x81, 0x90, 0x90, 0xfa, - 0x17, 0x14, 0x98, 0xdd, 0x8a, 0xb7, 0x1d, 0xbb, 0xcb, 0x10, 0xd4, 0xf8, 0x99, 0x89, 0x15, 0xc9, - 0xc4, 0xa2, 0xa1, 0xd4, 0xc1, 0x86, 0xaa, 0xc8, 0x86, 0x5a, 0x80, 0x5a, 0x8f, 0xb8, 0x16, 0x09, - 0xb8, 0xe1, 0x39, 0xc4, 0x15, 0xaa, 0x26, 0x0a, 0xe9, 0x7f, 0x56, 0x61, 0xea, 0x43, 0x16, 0x61, - 0x09, 0x1a, 0xfe, 0xae, 0xe7, 0x92, 0x1b, 0x31, 0x0d, 0x3e, 0x2e, 0x8b, 0x88, 0xd2, 0x4e, 0x42, - 0x75, 0xdb, 0x0e, 0xa2, 0x5d, 0xe6, 0xfd, 0x19, 0x03, 0x01, 0x8a, 0x25, 0x7d, 0xd3, 0x46, 0x97, - 0xd7, 0x0d, 0x04, 0xb8, 0x42, 0x53, 0xa9, 0x87, 0xe4, 0xa5, 0xa0, 0x5e, 0x58, 0x0a, 0x8a, 0x11, - 0x04, 0xa5, 0x11, 0x74, 0x1e, 0x9a, 0x3d, 0xc7, 0xdb, 0x36, 0x1d, 0x83, 0x74, 0x0f, 0xda, 0x61, - 0x6f, 0xd3, 0x8f, 0x98, 0xbb, 0xab, 0x46, 0x01, 0x4f, 0xed, 0xc3, 0x44, 0xec, 0x44, 0x01, 0x77, - 0x77, 0x0a, 0xeb, 0xff, 0x54, 0x00, 0x30, 0xed, 0x98, 0x89, 0x73, 0x6b, 0x99, 0x52, 0x5c, 0xcb, - 0x16, 0xa0, 0x16, 0x90, 0xbe, 0x19, 0xec, 0x25, 0xa9, 0x86, 0x50, 0x4e, 0xb1, 0x4a, 0x41, 0xb1, - 0x97, 0x00, 0x76, 0xd8, 0x3c, 0x94, 0x0f, 0x33, 0x39, 0x2d, 0x0c, 0x85, 0x2e, 0x61, 0x39, 0xf1, - 0xb6, 0x21, 0x0c, 0xa7, 0x79, 0x6c, 0x5a, 0x16, 0x4f, 0x97, 0x2a, 0xe6, 0x71, 0x8a, 0x28, 0xc9, - 0x96, 0xda, 0x90, 0x6c, 0x99, 0x4c, 0x83, 0xeb, 0x1f, 0x0a, 0xd4, 0x57, 0x1c, 0xb3, 0xbb, 0x37, - 0xa6, 0xea, 0xb2, 0x8a, 0x6a, 0x41, 0xc5, 0x75, 0x98, 0xd9, 0xa6, 0xec, 0x12, 0x15, 0x98, 0x15, - 0x1a, 0x97, 0xfe, 0xbb, 0x44, 0x4b, 0x39, 0xb9, 0x0c, 0x99, 0x4e, 0x56, 0x77, 0x62, 0xb4, 0xba, - 0xd5, 0x21, 0xea, 0xa6, 0xeb, 0x85, 0xfe, 0xcd, 0x0a, 0x4c, 0xb3, 0xb2, 0x6a, 0x90, 0xfd, 0x98, - 0x84, 0x91, 0xf6, 0x0a, 0x4c, 0xc5, 0x89, 0xa8, 0xca, 0xb8, 0xa2, 0xa6, 0x24, 0xda, 0x8b, 0x7c, - 0x3d, 0x64, 0xf4, 0x2a, 0xa3, 0x3f, 0x5d, 0x42, 0x9f, 0x2e, 0xb0, 0x46, 0x36, 0x9c, 0xae, 0x84, - 0xbb, 0xa6, 0x6b, 0x39, 0xc4, 0x20, 0x61, 0xec, 0x44, 0xbc, 0x36, 0x4b, 0x38, 0x8c, 0xb4, 0xfd, - 0x76, 0xd8, 0xe3, 0xeb, 0x24, 0x87, 0xa8, 0x75, 0x70, 0x1c, 0xfd, 0x84, 0xaa, 0x67, 0x08, 0x9a, - 0xf0, 0x01, 0xd9, 0x67, 0x1e, 0xc2, 0xf4, 0x4c, 0xc0, 0x6c, 0x4e, 0x6e, 0x35, 0x0c, 0x04, 0x09, - 0x47, 0x5d, 0x8c, 0x30, 0x63, 0x80, 0x8d, 0x98, 0x80, 0x29, 0xf4, 0x61, 0x72, 0x21, 0x87, 0x42, - 0x21, 0x2f, 0x94, 0xdb, 0x46, 0x59, 0xb9, 0xfd, 0x53, 0x05, 0x66, 0x30, 0x09, 0x13, 0xd7, 0x9c, - 0xa1, 0xd9, 0xe2, 0xf5, 0xa5, 0x58, 0x14, 0x30, 0x54, 0x17, 0x0a, 0xdd, 0x90, 0xcb, 0x9e, 0x84, - 0xa3, 0x01, 0x4d, 0xe1, 0xab, 0x52, 0xf9, 0x13, 0x51, 0xc9, 0x2c, 0xeb, 0x62, 0x19, 0x14, 0x30, - 0xb4, 0x70, 0x44, 0x9e, 0x14, 0x63, 0x29, 0x4c, 0x69, 0x23, 0x2f, 0x9d, 0x1f, 0xa3, 0x4c, 0xc0, - 0x50, 0x2f, 0x45, 0x5e, 0x32, 0x37, 0x9a, 0x3a, 0x43, 0x20, 0x67, 0x3e, 0x2f, 0x2e, 0x7f, 0x29, - 0x5c, 0x88, 0x8d, 0xfa, 0xd0, 0xd8, 0x00, 0x29, 0x36, 0xe4, 0x14, 0x6d, 0x14, 0x52, 0xf4, 0x2c, - 0xcc, 0x20, 0x9f, 0xdc, 0xf2, 0x27, 0x21, 0xe5, 0x08, 0x9b, 0xc9, 0x47, 0x98, 0x1c, 0x23, 0xb3, - 0x03, 0x62, 0x64, 0x2e, 0xcd, 0xbb, 0x1f, 0xa9, 0x00, 0x6b, 0xc4, 0x37, 0x83, 0xa8, 0x4f, 0xdc, - 0x88, 0xaa, 0x67, 0xa5, 0x50, 0xea, 0x5c, 0x09, 0x27, 0xae, 0x5a, 0xaa, 0xbc, 0x6a, 0x69, 0x30, - 0xc1, 0x0c, 0x8e, 0xde, 0x64, 0x7f, 0x53, 0x63, 0xfa, 0x66, 0x80, 0xdc, 0x30, 0x55, 0x52, 0x98, - 0xae, 0x4a, 0x5e, 0x60, 0xf1, 0x75, 0xac, 0x6a, 0x20, 0x40, 0x4b, 0x48, 0x36, 0x1f, 0xdb, 0x05, - 0xd4, 0x70, 0x95, 0x91, 0xb1, 0x23, 0x37, 0x2e, 0xe7, 0xa1, 0x19, 0xc6, 0xdb, 0x99, 0x72, 0x37, - 0xe2, 0x3e, 0x4f, 0x9a, 0x02, 0x9e, 0x1a, 0x15, 0x77, 0x34, 0x74, 0x10, 0x2e, 0x7c, 0x19, 0x22, - 0xdf, 0xc9, 0xe8, 0xbf, 0x55, 0xa1, 0xb9, 0x19, 0xf4, 0x4c, 0xd7, 0xfe, 0x54, 0xda, 0xb1, 0x1f, - 0xa9, 0x01, 0x58, 0x82, 0x06, 0x71, 0x7b, 0x8e, 0x1d, 0xee, 0xde, 0xc8, 0xec, 0x26, 0xa2, 0x44, - 0x63, 0x4f, 0x0c, 0x6a, 0x11, 0xaa, 0x52, 0x8b, 0xb0, 0x00, 0xb5, 0xbe, 0xb7, 0x6d, 0x3b, 0x49, - 0xdc, 0x73, 0x88, 0xc5, 0x3c, 0x71, 0x08, 0xeb, 0x15, 0xd2, 0x98, 0x4f, 0x10, 0x59, 0xdb, 0x30, - 0x55, 0xda, 0x36, 0xd4, 0xc5, 0xb6, 0x41, 0x36, 0x3c, 0x14, 0x0c, 0x8f, 0xe6, 0x6a, 0xa4, 0x75, - 0x68, 0xd8, 0x12, 0xff, 0x2b, 0x05, 0x9a, 0x99, 0x2b, 0xb0, 0xa7, 0x1e, 0x68, 0xca, 0x7c, 0x74, - 0xaa, 0x25, 0xd1, 0x99, 0xc6, 0x54, 0x45, 0x8c, 0x29, 0x1a, 0x85, 0x5e, 0x68, 0x0b, 0x1b, 0x9b, - 0x14, 0xa6, 0xb3, 0x39, 0xc4, 0x14, 0x0c, 0x89, 0x90, 0xb0, 0x8d, 0xad, 0x49, 0xdb, 0xd8, 0xfc, - 0x4a, 0xfd, 0x33, 0x05, 0x4e, 0xd2, 0x08, 0x28, 0xa8, 0xb1, 0x09, 0x4d, 0x2f, 0x17, 0x25, 0x7c, - 0x29, 0x7b, 0xb2, 0x64, 0x29, 0xca, 0x07, 0x94, 0x51, 0x20, 0xa6, 0x0c, 0xad, 0xdc, 0x24, 0x7c, - 0x6d, 0x2b, 0x63, 0x98, 0x97, 0xc7, 0x28, 0x10, 0xeb, 0xbf, 0x50, 0xa0, 0x89, 0x8b, 0xa7, 0x50, - 0x03, 0x8e, 0x5d, 0xec, 0xb7, 0xe0, 0x64, 0x7e, 0xe6, 0xeb, 0x76, 0x18, 0xb5, 0xd4, 0xa5, 0xca, - 0xb8, 0xa2, 0x97, 0x32, 0xd0, 0x7f, 0xa0, 0xc2, 0xa3, 0x5b, 0xb1, 0xe3, 0xb4, 0x49, 0x18, 0x9a, - 0x3d, 0xb2, 0x72, 0xd8, 0x21, 0xfb, 0xf4, 0x83, 0x41, 0xf6, 0x07, 0xc6, 0x10, 0xed, 0xa4, 0x58, - 0x2b, 0x62, 0x7b, 0x6e, 0x1a, 0x42, 0x22, 0x8a, 0xa6, 0x5c, 0x88, 0x7c, 0x5a, 0x95, 0xa5, 0x0a, - 0x5d, 0xa4, 0x39, 0xa8, 0x7d, 0x12, 0xa6, 0x59, 0x97, 0xc0, 0xa7, 0x69, 0x4d, 0x30, 0x05, 0x5e, - 0x2e, 0xed, 0x4b, 0x4a, 0xa5, 0xc2, 0x7e, 0x83, 0xc3, 0xaf, 0xba, 0x51, 0x70, 0x68, 0x48, 0x1c, - 0x17, 0xdf, 0x81, 0xf9, 0xc2, 0x10, 0xad, 0x09, 0x95, 0x3d, 0x72, 0xc8, 0xf5, 0xa0, 0x7f, 0x6a, - 0xff, 0x0f, 0xd5, 0x03, 0xba, 0x41, 0xe5, 0xde, 0x5f, 0x2c, 0x91, 0x80, 0xcb, 0x6c, 0xe0, 0xc0, - 0x17, 0xd5, 0x8f, 0x29, 0xfa, 0x93, 0xa9, 0x62, 0xa2, 0x8e, 0x8a, 0xa4, 0xa3, 0xfe, 0x3a, 0x34, - 0xda, 0x61, 0x6f, 0xcd, 0x8c, 0x4c, 0x36, 0xf0, 0x65, 0x68, 0xf4, 0x33, 0x90, 0x0d, 0x2e, 0x9f, - 0x8f, 0x13, 0x19, 0xe2, 0x70, 0xfd, 0x8f, 0x2a, 0xb4, 0xca, 0x4d, 0x11, 0xfa, 0x54, 0x06, 0x12, - 0x04, 0xab, 0x9e, 0x45, 0x98, 0x6a, 0x55, 0x23, 0x01, 0xa9, 0xef, 0x48, 0x10, 0xd0, 0xf5, 0x8d, - 0xb7, 0xf1, 0x08, 0x69, 0xcb, 0x30, 0xe1, 0x24, 0x6e, 0x19, 0x2e, 0x05, 0x1b, 0xa7, 0xf5, 0xa1, - 0xc9, 0xac, 0x2b, 0x28, 0xc4, 0x7d, 0x76, 0x65, 0x6c, 0x9f, 0x85, 0x3e, 0x3a, 0x4d, 0xe0, 0x81, - 0x8e, 0x2b, 0xb0, 0x5e, 0xec, 0xc2, 0xa9, 0xd2, 0xa1, 0x25, 0x0e, 0x7c, 0x56, 0x76, 0xe0, 0x99, - 0xc1, 0xaa, 0xe4, 0x9d, 0xe8, 0x83, 0xb6, 0x4e, 0xa2, 0xb6, 0x79, 0xf7, 0x8a, 0x6b, 0xb5, 0x6d, - 0xb7, 0x43, 0xf6, 0x69, 0xb4, 0x2f, 0x41, 0x83, 0x1f, 0x37, 0xa4, 0x6e, 0xaa, 0x1b, 0x22, 0x6a, - 0xe0, 0x29, 0x44, 0x2e, 0x1f, 0x2a, 0x85, 0x7c, 0xd0, 0x2f, 0xc3, 0xb4, 0x38, 0x1d, 0x5b, 0x60, - 0xcc, 0xbb, 0x1d, 0xb2, 0xcf, 0x14, 0x9a, 0x31, 0x38, 0xc4, 0xf0, 0x6c, 0x04, 0xdf, 0x7d, 0x70, - 0x48, 0xff, 0x9d, 0x0a, 0x27, 0x0a, 0x22, 0x87, 0xfe, 0xbd, 0xf2, 0x11, 0xe3, 0xa5, 0x32, 0x28, - 0x5e, 0x26, 0xa4, 0x78, 0xd9, 0x83, 0x79, 0x74, 0x92, 0x30, 0x75, 0xab, 0xca, 0x02, 0xe0, 0x95, - 0xb2, 0xcd, 0x40, 0x51, 0x48, 0xee, 0x7b, 0x01, 0x8b, 0xce, 0x2f, 0xf2, 0x5d, 0x24, 0xb0, 0x50, - 0x3e, 0xb8, 0xc4, 0xfd, 0xcf, 0xc9, 0xee, 0xff, 0xaf, 0x32, 0xf7, 0x8b, 0x92, 0x08, 0xfe, 0xdf, - 0x87, 0x39, 0x5a, 0x54, 0x3b, 0xc4, 0xb5, 0xda, 0x61, 0x8f, 0x19, 0x72, 0x09, 0x1a, 0x48, 0xdf, - 0x0e, 0x7b, 0xd9, 0xe6, 0x50, 0x40, 0xd1, 0x11, 0x5d, 0xc7, 0xa6, 0xc5, 0x93, 0x8d, 0xe0, 0x45, - 0x4f, 0x40, 0xd1, 0x05, 0x32, 0x24, 0xfc, 0x64, 0x86, 0x5a, 0xb7, 0x62, 0xa4, 0xb0, 0xfe, 0xd3, - 0x1a, 0x4c, 0xf2, 0x68, 0x64, 0x8b, 0x22, 0xdd, 0x8f, 0xa7, 0x65, 0x15, 0x21, 0xec, 0x79, 0xbb, - 0x07, 0x59, 0x78, 0x21, 0x24, 0x1e, 0x8b, 0x55, 0xe4, 0x63, 0xb1, 0x9c, 0x4c, 0x13, 0x45, 0x99, - 0x72, 0x7a, 0x55, 0x8b, 0x7a, 0xd1, 0x16, 0x8f, 0x75, 0x3d, 0x5b, 0x8e, 0x19, 0xed, 0x78, 0x41, - 0x9f, 0x6f, 0xaf, 0xab, 0x46, 0x01, 0x4f, 0xdb, 0x4a, 0xc4, 0xa5, 0xfb, 0x02, 0x5c, 0xc2, 0x73, - 0x58, 0xda, 0x85, 0x23, 0x26, 0xd9, 0x1f, 0xe0, 0xf9, 0x88, 0x8c, 0x44, 0xd9, 0xc2, 0xd0, 0xf6, - 0x5c, 0xd6, 0xa1, 0xe2, 0x36, 0x40, 0x44, 0x51, 0xcd, 0xfb, 0x61, 0xef, 0x6a, 0xe0, 0xf5, 0xf9, - 0xd6, 0x2b, 0x01, 0x99, 0xe6, 0x9e, 0x1b, 0x25, 0xdd, 0x2d, 0x9e, 0x8c, 0x88, 0x28, 0x4a, 0xcb, - 0x41, 0xd6, 0x30, 0x4d, 0x1b, 0x09, 0x48, 0x63, 0x29, 0x24, 0xfb, 0xbc, 0xb1, 0xa7, 0x7f, 0x4a, - 0x9e, 0x9b, 0x93, 0x3d, 0x97, 0xeb, 0xd4, 0x9a, 0xec, 0xab, 0xd8, 0xa9, 0x65, 0x2d, 0xce, 0xbc, - 0xd4, 0xe2, 0x5c, 0x81, 0x49, 0xcf, 0xa7, 0xe9, 0x1f, 0xb6, 0x34, 0x96, 0x2e, 0xff, 0x33, 0xb8, - 0x40, 0x2d, 0x6f, 0xe2, 0x48, 0x4c, 0x8c, 0x84, 0x4e, 0xbb, 0x0e, 0x73, 0xde, 0xce, 0x8e, 0x63, - 0xbb, 0x64, 0x2b, 0x0e, 0x77, 0xd9, 0x36, 0xfc, 0x04, 0x0b, 0x76, 0xbd, 0xac, 0x89, 0x90, 0x47, - 0x1a, 0x79, 0x52, 0xda, 0xf9, 0x99, 0x11, 0x6e, 0x80, 0x58, 0x81, 0x3b, 0xc9, 0x0a, 0x9c, 0x84, - 0x63, 0xe7, 0x8b, 0x42, 0xa1, 0x3f, 0xc5, 0x0c, 0x27, 0xa2, 0x90, 0x4b, 0x64, 0x76, 0x77, 0x09, - 0x3b, 0x50, 0x6a, 0x2d, 0x60, 0xff, 0x28, 0xe2, 0x78, 0x77, 0xf7, 0x68, 0xd2, 0xdd, 0x2d, 0xbe, - 0x08, 0xd3, 0xa2, 0x82, 0x25, 0xc9, 0x7c, 0x52, 0x4c, 0xe6, 0x29, 0x31, 0x57, 0xbf, 0xae, 0xc0, - 0x5c, 0x4e, 0x35, 0x3a, 0x3a, 0xb2, 0x23, 0x87, 0x70, 0x0e, 0x08, 0xd0, 0x9d, 0x93, 0x45, 0xc2, - 0x2e, 0x4f, 0x1e, 0xf6, 0x37, 0x97, 0xa4, 0x92, 0xb6, 0xd1, 0x3a, 0x4c, 0xdb, 0x9b, 0x1d, 0xca, - 0xa8, 0xe3, 0xc5, 0xae, 0x95, 0x1e, 0xd0, 0x0b, 0x38, 0xb6, 0xa5, 0xdf, 0xec, 0xac, 0x98, 0x56, - 0x8f, 0xe0, 0x75, 0x4d, 0x95, 0xc9, 0x24, 0x23, 0x75, 0x0b, 0xa6, 0x6e, 0xda, 0x7e, 0xb8, 0xea, - 0xf5, 0xfb, 0x34, 0x04, 0x2c, 0x12, 0xd1, 0x1e, 0x5f, 0x61, 0x06, 0xe3, 0x10, 0xb5, 0xa6, 0x45, - 0x76, 0xcc, 0xd8, 0x89, 0xe8, 0xd0, 0xa4, 0x64, 0x08, 0x28, 0x76, 0xbc, 0x10, 0x7a, 0xee, 0x1a, - 0x52, 0xa3, 0x9c, 0x02, 0x46, 0xff, 0x8d, 0x0a, 0x4d, 0x56, 0x11, 0x57, 0x59, 0xc0, 0x59, 0x8c, - 0xe8, 0x12, 0x54, 0x59, 0x01, 0xe0, 0x1d, 0xe5, 0xf0, 0x33, 0x19, 0x1c, 0xaa, 0x5d, 0x86, 0x9a, - 0xe7, 0xb3, 0x36, 0x14, 0xcb, 0xe5, 0xb9, 0x41, 0x44, 0xf2, 0x91, 0xbc, 0xc1, 0xa9, 0xb4, 0xab, - 0x00, 0xfd, 0xac, 0xeb, 0xc4, 0xe6, 0x61, 0x5c, 0x1e, 0x02, 0x25, 0x35, 0x6e, 0xba, 0x2e, 0xa6, - 0xe7, 0xf2, 0x15, 0x43, 0x46, 0x6a, 0x37, 0x60, 0x96, 0x89, 0xbd, 0x99, 0x1c, 0xce, 0x31, 0x1f, - 0x8c, 0x3f, 0x63, 0x8e, 0x5a, 0xff, 0x8e, 0xc2, 0xcd, 0x48, 0xbf, 0x76, 0x08, 0xda, 0x3e, 0x33, - 0x89, 0x72, 0x24, 0x93, 0x2c, 0xc2, 0x54, 0x3f, 0x16, 0xce, 0x0a, 0x2b, 0x46, 0x0a, 0x67, 0x2e, - 0xaa, 0x8c, 0xed, 0x22, 0xfd, 0xbb, 0x0a, 0xb4, 0x5e, 0xf3, 0x6c, 0x97, 0x7d, 0xb8, 0xe2, 0xfb, - 0x0e, 0xbf, 0xbe, 0x39, 0xb2, 0xcf, 0x3f, 0x0e, 0x75, 0x13, 0xd9, 0xb8, 0x11, 0x77, 0xfb, 0x18, - 0xe7, 0x7f, 0x19, 0x8d, 0x70, 0x08, 0x53, 0x11, 0x0f, 0x61, 0xf4, 0xf7, 0x15, 0x98, 0x45, 0xa3, - 0xbc, 0x11, 0xdb, 0xd1, 0x91, 0xe5, 0x5b, 0x81, 0xa9, 0xfd, 0xd8, 0x8e, 0x8e, 0x10, 0x95, 0x29, - 0x5d, 0x31, 0x9e, 0x2a, 0x25, 0xf1, 0xa4, 0xff, 0x50, 0x81, 0xd3, 0x79, 0xb3, 0x5e, 0xe9, 0x76, - 0x89, 0x7f, 0x3f, 0x53, 0x4a, 0x3a, 0x84, 0x9a, 0xc8, 0x1d, 0x42, 0x95, 0x8a, 0x6c, 0x90, 0xf7, - 0x48, 0xf7, 0xc1, 0x15, 0xf9, 0x73, 0x2a, 0x3c, 0xb6, 0x9e, 0x26, 0xde, 0xcd, 0xc0, 0x74, 0xc3, - 0x1d, 0x12, 0x04, 0xf7, 0x51, 0xde, 0xeb, 0x30, 0xe3, 0x92, 0x3b, 0x99, 0x4c, 0x3c, 0x1d, 0xc7, - 0x65, 0x23, 0x13, 0x8f, 0x57, 0xbb, 0xf4, 0x7f, 0x29, 0xd0, 0x44, 0x3e, 0xaf, 0xdb, 0xdd, 0xbd, - 0xfb, 0xa8, 0xfc, 0x0d, 0x98, 0xdd, 0x63, 0x12, 0x50, 0xe8, 0x08, 0x65, 0x3b, 0x47, 0x3d, 0xa6, - 0xfa, 0x1f, 0x28, 0x30, 0x9f, 0xdc, 0x1a, 0x1f, 0xd8, 0xf7, 0x33, 0x58, 0xb7, 0x60, 0x0e, 0x4f, - 0xe1, 0x8f, 0x6a, 0x80, 0x3c, 0xf9, 0x98, 0x16, 0xf8, 0x89, 0x02, 0x73, 0xc8, 0xe9, 0x55, 0x37, - 0x22, 0xc1, 0x91, 0xf5, 0xbf, 0x06, 0x0d, 0xe2, 0x46, 0x81, 0xe9, 0x1e, 0xa5, 0x42, 0x8a, 0xa4, - 0x63, 0x16, 0xc9, 0xf7, 0x15, 0xd0, 0x18, 0xab, 0x35, 0x3b, 0xec, 0xdb, 0x61, 0x78, 0x1f, 0x5d, - 0x37, 0x9e, 0xc0, 0xdf, 0x52, 0xe1, 0xa4, 0xc0, 0xa5, 0x1d, 0x47, 0x0f, 0xba, 0xc8, 0xda, 0x1a, - 0xd4, 0x69, 0x8f, 0x20, 0xde, 0x91, 0x8e, 0x3b, 0x51, 0x46, 0x48, 0xbb, 0x58, 0x06, 0x74, 0x48, - 0xd7, 0x73, 0xad, 0x90, 0x35, 0x47, 0x33, 0x86, 0x84, 0xa3, 0x65, 0x68, 0x51, 0x60, 0xb3, 0x6a, - 0xba, 0x5d, 0xe2, 0x3c, 0x34, 0x26, 0xd2, 0xbf, 0xaf, 0xc0, 0x2c, 0x0e, 0x79, 0xf0, 0x55, 0xa6, - 0x6b, 0x3d, 0x06, 0xf2, 0x47, 0xc6, 0x4b, 0x34, 0xbc, 0x16, 0x04, 0x2e, 0x62, 0x5f, 0xfd, 0xe0, - 0x86, 0xd6, 0x35, 0x68, 0x74, 0x77, 0x4d, 0xb7, 0x77, 0xa4, 0xe0, 0x12, 0x49, 0xf5, 0x08, 0x1e, - 0x15, 0x0f, 0xed, 0x57, 0xf1, 0x13, 0x53, 0xff, 0x99, 0x9c, 0x2a, 0x43, 0xdf, 0x40, 0xdc, 0x9b, - 0xd1, 0xf7, 0x60, 0x1e, 0x6f, 0x91, 0x85, 0x9e, 0x50, 0x6b, 0xc1, 0xa4, 0x69, 0xe1, 0xd1, 0x85, - 0xc2, 0x88, 0x12, 0x50, 0x7e, 0x65, 0xc0, 0xdf, 0xb3, 0x65, 0xaf, 0x0c, 0xce, 0x00, 0x98, 0x96, - 0xf5, 0x96, 0x17, 0x58, 0xb6, 0x9b, 0x34, 0xf8, 0x02, 0x46, 0x7f, 0x0d, 0xa6, 0xaf, 0x06, 0x5e, - 0xff, 0xa6, 0x70, 0x1f, 0x3c, 0xf4, 0xc6, 0x5a, 0xbc, 0x4b, 0x56, 0xe5, 0xbb, 0x64, 0xfd, 0x5d, - 0x38, 0x55, 0x10, 0x9c, 0x19, 0x6b, 0x15, 0xaf, 0xb9, 0x93, 0x49, 0x78, 0xc8, 0x94, 0x9d, 0xe5, - 0x89, 0xb2, 0x18, 0x12, 0x91, 0xfe, 0x59, 0x05, 0x9e, 0x28, 0xb0, 0xbf, 0xe2, 0xfb, 0x81, 0x77, - 0xc0, 0x7d, 0x72, 0x1c, 0xd3, 0xc8, 0xcd, 0xaf, 0x9a, 0x6f, 0x7e, 0x4b, 0x85, 0x90, 0x1a, 0xf6, - 0x0f, 0x41, 0x88, 0xef, 0x29, 0x30, 0xc7, 0x85, 0xb0, 0x2c, 0x3e, 0xed, 0x73, 0x50, 0xc3, 0x87, - 0x36, 0x7c, 0xc2, 0x27, 0x4a, 0x27, 0x4c, 0x1e, 0x08, 0x19, 0x7c, 0x70, 0x31, 0x22, 0xd5, 0xb2, - 0x8c, 0x7a, 0x21, 0x0d, 0xf6, 0xb1, 0x9f, 0xc2, 0x70, 0x02, 0xfd, 0x13, 0x49, 0x30, 0xaf, 0x11, - 0x87, 0x1c, 0xa7, 0x8d, 0xf4, 0x5b, 0x30, 0xcb, 0x5e, 0xfd, 0x64, 0x36, 0x38, 0x16, 0xb6, 0x6f, - 0x41, 0x93, 0xb1, 0x3d, 0x76, 0x79, 0xd3, 0xec, 0xa0, 0xf6, 0x11, 0x4b, 0xc9, 0xb1, 0x70, 0x7f, - 0x1a, 0x4e, 0x24, 0xb6, 0xc7, 0x97, 0xb4, 0xc8, 0x7b, 0xc0, 0xdd, 0x9e, 0xfe, 0x0d, 0x05, 0x16, - 0x56, 0x3d, 0xf7, 0x80, 0x04, 0xa1, 0xf4, 0xfa, 0x16, 0x49, 0xa4, 0xec, 0xe7, 0x90, 0xb6, 0x0c, - 0x5a, 0x57, 0xa0, 0xe0, 0xc7, 0x8b, 0x2a, 0x3b, 0x5e, 0x2c, 0xf9, 0xa2, 0x3d, 0x0b, 0xa7, 0x62, - 0xc6, 0xf5, 0x96, 0x1b, 0x10, 0xd3, 0x62, 0xe7, 0x69, 0x42, 0xd1, 0x2b, 0xff, 0xa8, 0xbf, 0x07, - 0x8b, 0xa2, 0x5c, 0x1d, 0x12, 0x6d, 0x05, 0xf6, 0x81, 0x20, 0x1b, 0x3f, 0x3b, 0x57, 0xa4, 0xb3, - 0xf3, 0xec, 0xac, 0x5d, 0x95, 0xce, 0xda, 0x4f, 0x43, 0xdd, 0x0e, 0x39, 0x03, 0x36, 0xef, 0x94, - 0x91, 0x21, 0x74, 0x13, 0xe6, 0xd1, 0xcb, 0xfc, 0x2e, 0x8b, 0x4d, 0xb1, 0x08, 0x53, 0x18, 0xba, - 0xe9, 0x24, 0x29, 0x3c, 0xf0, 0x66, 0x68, 0xe0, 0x3d, 0xa8, 0xde, 0x81, 0x79, 0xfe, 0x16, 0x68, - 0xcb, 0xec, 0xd9, 0x2e, 0xd6, 0xf2, 0x33, 0x00, 0xbe, 0xd9, 0x4b, 0x5e, 0x26, 0xe2, 0x8d, 0x9e, - 0x80, 0xa1, 0xdf, 0xc3, 0x5d, 0xef, 0x0e, 0xff, 0xae, 0xe2, 0xf7, 0x0c, 0xa3, 0xbf, 0x09, 0x9a, - 0x41, 0x42, 0xdf, 0x73, 0x43, 0x22, 0x70, 0x5d, 0x82, 0xc6, 0x6a, 0x1c, 0x04, 0xc4, 0xa5, 0x53, - 0x25, 0xcf, 0xeb, 0x44, 0x14, 0xe5, 0xdb, 0xc9, 0xf8, 0xe2, 0xe9, 0xbf, 0x80, 0xd1, 0xff, 0x5a, - 0x83, 0x7a, 0xc7, 0xee, 0xb9, 0xa6, 0x63, 0x90, 0x7d, 0xed, 0x65, 0xa8, 0xe1, 0xce, 0x88, 0x07, - 0x64, 0xd9, 0x69, 0x34, 0x8e, 0xc6, 0x2d, 0xa0, 0x41, 0xf6, 0xaf, 0x3d, 0x62, 0x70, 0x1a, 0xed, - 0x8d, 0xe4, 0xc5, 0xd4, 0x06, 0x9e, 0x74, 0xf1, 0x65, 0xf2, 0x7f, 0x47, 0x30, 0xe1, 0xa3, 0x91, - 0x97, 0xcc, 0x81, 0x0a, 0xd4, 0x65, 0x9d, 0x13, 0xaf, 0x42, 0x83, 0x05, 0xc2, 0x06, 0x8b, 0x0b, - 0x84, 0x34, 0x94, 0xda, 0x64, 0x67, 0x41, 0xbc, 0x21, 0x18, 0x4c, 0x8d, 0x47, 0x46, 0x9c, 0x1a, - 0x69, 0x28, 0xf5, 0x6e, 0xec, 0xf6, 0x6e, 0xf9, 0xfc, 0x88, 0x72, 0x30, 0xf5, 0x35, 0x36, 0x8c, - 0x53, 0x23, 0x0d, 0xa5, 0x0e, 0xd8, 0x1a, 0xc1, 0x8c, 0x3e, 0x8c, 0x1a, 0x97, 0x12, 0x4e, 0x8d, - 0x34, 0xda, 0xdb, 0xd0, 0xec, 0x91, 0xc8, 0xf0, 0xbc, 0xfe, 0xca, 0xe1, 0x3a, 0xbf, 0x21, 0xc2, - 0x07, 0xe2, 0x17, 0x06, 0xf2, 0x59, 0xcf, 0x11, 0x20, 0xc7, 0x02, 0x1f, 0xed, 0xd3, 0xf0, 0x84, - 0xe7, 0x52, 0xd4, 0x96, 0x19, 0x44, 0x76, 0xd7, 0xf6, 0x4d, 0x37, 0x5a, 0xf5, 0x5c, 0x97, 0xad, - 0x67, 0x06, 0xd9, 0xe7, 0x4f, 0xc8, 0x9f, 0x1f, 0x38, 0xd1, 0xe6, 0x30, 0xea, 0x6b, 0x8f, 0x18, - 0xc3, 0xd9, 0x6b, 0x5f, 0x54, 0x60, 0xa9, 0x30, 0x62, 0xcd, 0x0e, 0xbb, 0xa2, 0x0c, 0xf8, 0xfc, - 0xfc, 0x85, 0xf1, 0x65, 0xc8, 0x31, 0xb8, 0xf6, 0x88, 0x31, 0x72, 0x12, 0x6e, 0xe5, 0x9b, 0xde, - 0x1e, 0x71, 0x57, 0x0e, 0xe9, 0xd8, 0x8d, 0x35, 0x76, 0x1b, 0x35, 0xc2, 0xca, 0x12, 0x41, 0x66, - 0x65, 0x09, 0xbd, 0x52, 0x87, 0x49, 0xdf, 0x3c, 0x74, 0x3c, 0xd3, 0xd2, 0xff, 0x3e, 0x01, 0x90, - 0xb8, 0x3a, 0x64, 0x1d, 0xb1, 0x94, 0x64, 0x67, 0x47, 0x26, 0x99, 0xef, 0x1c, 0x0a, 0x69, 0xd6, - 0x29, 0x4f, 0xb3, 0xff, 0x1b, 0x37, 0xcd, 0x90, 0x5b, 0x2e, 0xd1, 0x2e, 0xe7, 0x12, 0xed, 0xec, - 0xc8, 0x44, 0xe3, 0x42, 0xf1, 0x54, 0xbb, 0x9c, 0x4b, 0xb5, 0xb3, 0x23, 0x53, 0x8d, 0xd3, 0xf3, - 0x64, 0xbb, 0x9c, 0x4b, 0xb6, 0xb3, 0x23, 0x93, 0x8d, 0xd3, 0xf3, 0x74, 0xbb, 0x9c, 0x4b, 0xb7, - 0xb3, 0x23, 0xd3, 0x8d, 0xd3, 0xf3, 0x84, 0x7b, 0x77, 0x60, 0xc2, 0x2d, 0xdf, 0x43, 0xc2, 0x21, - 0xcf, 0x62, 0xca, 0xbd, 0x5b, 0x12, 0x68, 0x53, 0xa3, 0xb9, 0xe7, 0x02, 0x2d, 0xe3, 0x3e, 0x30, - 0xd4, 0x3e, 0x5f, 0x81, 0x59, 0xe6, 0x6e, 0x5c, 0x95, 0xdd, 0x1d, 0xaf, 0xf8, 0x8e, 0x55, 0x29, - 0x79, 0xc7, 0xaa, 0x5d, 0x80, 0x79, 0x44, 0x10, 0xe1, 0x1e, 0x11, 0x17, 0xfa, 0xe2, 0x07, 0x76, - 0x73, 0x1a, 0x87, 0x91, 0xd7, 0x5f, 0x33, 0x23, 0x33, 0xd9, 0x61, 0x64, 0x18, 0xf1, 0x5e, 0x7b, - 0xa2, 0xf0, 0x73, 0x8f, 0x00, 0xf5, 0xaf, 0xf2, 0xd5, 0x9c, 0x41, 0x94, 0x22, 0xb2, 0xfb, 0xc4, - 0x8b, 0x23, 0xbe, 0x48, 0x25, 0x20, 0x3e, 0x3e, 0xb4, 0x6c, 0x93, 0xdd, 0x06, 0xf3, 0x97, 0x79, - 0x29, 0x82, 0xad, 0xab, 0xd9, 0xed, 0x36, 0xff, 0x39, 0x46, 0x86, 0x19, 0xe3, 0x26, 0x9a, 0xfd, - 0xb2, 0xc7, 0x8e, 0x6c, 0xf1, 0xc5, 0x5e, 0xd5, 0x90, 0x70, 0xb4, 0x0f, 0xda, 0x8e, 0xc3, 0xc3, - 0xeb, 0xb6, 0x2b, 0x9a, 0xa7, 0x81, 0x7d, 0x50, 0xf1, 0x8b, 0xfe, 0x37, 0x05, 0x4e, 0x08, 0x75, - 0xa7, 0x4d, 0x22, 0x93, 0xd9, 0x45, 0x7a, 0x77, 0xad, 0xdc, 0xdb, 0xbb, 0xeb, 0x2d, 0x98, 0xeb, - 0xc9, 0xdb, 0xf2, 0x7b, 0xdc, 0x51, 0xe7, 0xc9, 0xa5, 0x47, 0xe4, 0x95, 0x7b, 0x7e, 0x44, 0xae, - 0x7f, 0x49, 0x85, 0xb9, 0x5c, 0x33, 0x30, 0xb4, 0x93, 0xba, 0x02, 0x60, 0xa7, 0xa1, 0x39, 0xe4, - 0xd6, 0x4a, 0x8e, 0x5f, 0x43, 0x20, 0x2a, 0xbb, 0x36, 0xaf, 0x1c, 0xfd, 0xda, 0xfc, 0x1a, 0x34, - 0xfc, 0xcc, 0x49, 0x43, 0x0e, 0x0d, 0x4a, 0x5c, 0x69, 0x88, 0xa4, 0xfa, 0x97, 0x15, 0x98, 0x2f, - 0x94, 0x6c, 0x76, 0x99, 0x4d, 0x13, 0x35, 0xbd, 0xcc, 0xa6, 0x80, 0x90, 0x01, 0x6a, 0x3e, 0x03, - 0x1c, 0xfb, 0x40, 0xfc, 0xb9, 0x0b, 0x07, 0x07, 0x44, 0xdf, 0xc4, 0xc0, 0xe8, 0xfb, 0x8a, 0x0a, - 0x0b, 0xe5, 0x0d, 0xd6, 0xc3, 0xea, 0x9f, 0xaf, 0x2a, 0xd0, 0x1a, 0xb4, 0x16, 0xde, 0x37, 0x37, - 0x65, 0xf9, 0x93, 0xf6, 0xae, 0x0f, 0xab, 0x7f, 0x4e, 0x24, 0xe9, 0x23, 0x34, 0x17, 0xfa, 0x8f, - 0x53, 0xfb, 0xa4, 0xdd, 0xf9, 0x43, 0x6a, 0x1f, 0xed, 0x3c, 0x34, 0x51, 0x4d, 0xe1, 0x25, 0x17, - 0x6e, 0xf6, 0x0a, 0x78, 0xfd, 0x9d, 0xc4, 0x96, 0x42, 0xa3, 0x75, 0x5c, 0x31, 0xae, 0xff, 0x52, - 0x49, 0x7c, 0x92, 0xee, 0x79, 0x3e, 0x52, 0x3e, 0xc9, 0x22, 0x4d, 0x68, 0x23, 0x85, 0x48, 0x4b, - 0xf7, 0x62, 0xff, 0x89, 0xb4, 0xd1, 0x91, 0x96, 0xda, 0x52, 0x68, 0xa9, 0xf5, 0x6f, 0x2b, 0xf0, - 0xd8, 0xc0, 0xfd, 0xe8, 0x50, 0xab, 0x0a, 0x4d, 0xa3, 0x2a, 0x37, 0x8d, 0x39, 0xf5, 0x2a, 0x47, - 0x2f, 0x34, 0xbf, 0x56, 0xe0, 0xf1, 0x21, 0xcd, 0x7b, 0xce, 0xb3, 0xca, 0x51, 0x3c, 0x9b, 0x13, - 0x56, 0x1d, 0x78, 0x31, 0x3d, 0xd2, 0x17, 0x59, 0x7a, 0x56, 0xc4, 0xf4, 0xd4, 0x7f, 0xaf, 0xc0, - 0x93, 0x63, 0xec, 0xc4, 0x1f, 0x2c, 0x65, 0x06, 0x3e, 0x75, 0xd5, 0xff, 0xa0, 0xc0, 0xb9, 0xf1, - 0x36, 0xf5, 0x1f, 0x15, 0x8d, 0x7e, 0x2e, 0xe6, 0x40, 0xfe, 0xb4, 0x40, 0x70, 0xab, 0x22, 0x55, - 0x5d, 0x31, 0x37, 0xd4, 0x5c, 0x6e, 0x1c, 0x5b, 0x06, 0xe4, 0x5f, 0xb4, 0x4f, 0x14, 0x5f, 0xb4, - 0xb7, 0x85, 0x14, 0x29, 0xee, 0x40, 0x07, 0x2c, 0x25, 0xc2, 0x92, 0xa1, 0xca, 0x4b, 0xc6, 0x67, - 0x60, 0x66, 0x8d, 0x38, 0xed, 0xb0, 0x97, 0xfc, 0xf6, 0xe4, 0x58, 0x4f, 0x5b, 0xc7, 0xd0, 0x67, - 0x05, 0x66, 0x45, 0x01, 0x8e, 0xf2, 0xdb, 0x8a, 0x95, 0x0b, 0x6f, 0x9f, 0xdf, 0xf4, 0x89, 0x7b, - 0x7b, 0xa3, 0x5d, 0xf8, 0xdf, 0x27, 0x2f, 0x15, 0x9c, 0xb0, 0x5d, 0x63, 0xdf, 0x9f, 0xf9, 0x77, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x1a, 0xb6, 0x74, 0x2a, 0x5b, 0x45, 0x00, 0x00, +var fileDescriptor_ws_73169a3998a579bb = []byte{ + // 4104 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3c, 0x5b, 0x6f, 0x1c, 0x57, + 0x58, 0x9d, 0xd9, 0x8b, 0xbd, 0xdf, 0xfa, 0xb2, 0x9e, 0x24, 0xee, 0xd6, 0x4d, 0x83, 0x99, 0x46, + 0xa1, 0x84, 0xd4, 0x81, 0xf4, 0x02, 0xbd, 0x05, 0xf9, 0x92, 0x38, 0x6e, 0xb2, 0xb6, 0x3b, 0x9b, + 0x34, 0xa8, 0xad, 0x14, 0xc6, 0x3b, 0xc7, 0xeb, 0xa9, 0x67, 0x67, 0xc6, 0x73, 0x71, 0x62, 0x1e, + 0x40, 0x02, 0x04, 0x48, 0x3c, 0x20, 0x21, 0x2e, 0x12, 0xbc, 0xf1, 0x82, 0x40, 0xa8, 0x42, 0x08, + 0x10, 0x12, 0x08, 0x21, 0xc4, 0x03, 0x12, 0x48, 0xf4, 0x1d, 0x09, 0x04, 0x2f, 0x20, 0xc4, 0x1f, + 0x40, 0x42, 0x2a, 0x3a, 0xe7, 0x3b, 0x33, 0x73, 0xce, 0xcc, 0xec, 0x25, 0x96, 0xd5, 0x24, 0x0a, + 0x6f, 0xfe, 0xbe, 0x39, 0xdf, 0x77, 0xbe, 0xfb, 0xf9, 0xce, 0x65, 0x0d, 0xf3, 0xa1, 0x75, 0xf8, + 0xe8, 0x71, 0x78, 0xfd, 0x71, 0xb8, 0xe2, 0x07, 0x5e, 0xe4, 0x69, 0x0b, 0x21, 0x09, 0x8e, 0x49, + 0xf0, 0xc8, 0xf4, 0xed, 0x47, 0xbe, 0x19, 0x98, 0x83, 0x70, 0x69, 0x65, 0xc7, 0x27, 0xee, 0xdb, + 0x5b, 0x9d, 0xb7, 0xbb, 0xec, 0xd3, 0x75, 0xff, 0xb0, 0x7f, 0x9d, 0x0d, 0xbe, 0x9e, 0x10, 0x07, + 0xa6, 0xef, 0x93, 0x80, 0xb3, 0xd0, 0xff, 0xb5, 0x0a, 0x8d, 0xcd, 0xc0, 0x8b, 0xfd, 0x2d, 0x77, + 0xdf, 0xd3, 0xda, 0x30, 0xd5, 0x67, 0xc0, 0x46, 0x5b, 0x59, 0x56, 0xde, 0x6a, 0x18, 0x09, 0xa8, + 0x5d, 0x84, 0x06, 0xfb, 0x73, 0xdb, 0x1c, 0x90, 0xb6, 0xca, 0xbe, 0x65, 0x08, 0x4d, 0x87, 0x19, + 0xd7, 0x8b, 0xec, 0x7d, 0xbb, 0x67, 0x46, 0xb6, 0xe7, 0xb6, 0x2b, 0x6c, 0x80, 0x84, 0xa3, 0x63, + 0x6c, 0x37, 0x0a, 0x3c, 0x2b, 0xee, 0xb1, 0x31, 0x55, 0x1c, 0x23, 0xe2, 0xe8, 0xfc, 0xfb, 0x66, + 0x8f, 0x3c, 0x30, 0xee, 0xb5, 0x6b, 0x38, 0x3f, 0x07, 0xb5, 0x65, 0x68, 0x7a, 0x8f, 0x5d, 0x12, + 0x3c, 0x08, 0x49, 0xb0, 0xb5, 0xd1, 0xae, 0xb3, 0xaf, 0x22, 0x4a, 0xbb, 0x04, 0xd0, 0x0b, 0x88, + 0x19, 0x91, 0xfb, 0xf6, 0x80, 0xb4, 0xa7, 0x96, 0x95, 0xb7, 0x66, 0x0d, 0x01, 0x43, 0x39, 0x0c, + 0xc8, 0x60, 0x8f, 0x04, 0xeb, 0x5e, 0xec, 0x46, 0xed, 0x69, 0x36, 0x40, 0x44, 0x69, 0x73, 0xa0, + 0x92, 0x27, 0xed, 0x06, 0x63, 0xad, 0x92, 0x27, 0xda, 0x22, 0xd4, 0xc3, 0xc8, 0x8c, 0xe2, 0xb0, + 0x0d, 0xcb, 0xca, 0x5b, 0x35, 0x83, 0x43, 0xda, 0x65, 0x98, 0x65, 0x7c, 0xbd, 0x44, 0x9a, 0x26, + 0x23, 0x91, 0x91, 0xa9, 0xc5, 0xee, 0x9f, 0xf8, 0xa4, 0x3d, 0xc3, 0x18, 0x64, 0x08, 0xed, 0x2a, + 0xb4, 0x5c, 0x42, 0xac, 0xcf, 0x49, 0x90, 0x59, 0x6d, 0x96, 0x0d, 0x2a, 0xe0, 0xb5, 0x2b, 0x30, + 0xe7, 0x78, 0xde, 0x61, 0x87, 0x89, 0x4a, 0xfd, 0xd4, 0x9e, 0x63, 0x23, 0x73, 0x58, 0xed, 0x1a, + 0x2c, 0x98, 0xbe, 0xef, 0x9c, 0x20, 0xea, 0x76, 0x60, 0x13, 0xd7, 0x6a, 0xcf, 0xb3, 0xa1, 0xc5, + 0x0f, 0xda, 0xfb, 0xb0, 0x28, 0xfa, 0xe7, 0x81, 0x6f, 0x25, 0xb6, 0x6b, 0x31, 0xd3, 0x0c, 0xf9, + 0xaa, 0xad, 0x80, 0x26, 0x7d, 0x41, 0x13, 0x2c, 0x30, 0x13, 0x94, 0x7c, 0xd1, 0x7f, 0xa3, 0x02, + 0xf3, 0x69, 0x84, 0xdd, 0xf6, 0x82, 0x2e, 0x89, 0x9e, 0xe3, 0x38, 0xc3, 0x18, 0xa8, 0xa7, 0x31, + 0xb0, 0x59, 0xe2, 0x27, 0x1a, 0x5b, 0xcd, 0x1b, 0xaf, 0xaf, 0xf4, 0x3d, 0xaf, 0xef, 0x10, 0x4c, + 0xa4, 0xbd, 0x78, 0x7f, 0x65, 0xcb, 0x8d, 0xde, 0xb9, 0xf1, 0xb9, 0xe9, 0xc4, 0xa4, 0xc4, 0x89, + 0xeb, 0x05, 0x27, 0x4e, 0x8f, 0x67, 0x93, 0xf7, 0xf0, 0x56, 0x99, 0x87, 0x1b, 0xe3, 0xf9, 0x14, + 0xa9, 0xf4, 0xef, 0x54, 0x38, 0xc7, 0xdc, 0xc2, 0xb1, 0xb1, 0xe3, 0x8c, 0x29, 0x01, 0x8b, 0x50, + 0x8f, 0xd1, 0xd9, 0xe8, 0x17, 0x0e, 0x51, 0x97, 0x05, 0x9e, 0x43, 0xee, 0x91, 0x63, 0xe2, 0x30, + 0x8f, 0xd4, 0x8c, 0x0c, 0xa1, 0x2d, 0xc1, 0xf4, 0xd7, 0x9e, 0xed, 0xb2, 0xc0, 0xaa, 0xb2, 0x8f, + 0x29, 0x4c, 0xbf, 0xb9, 0x76, 0xef, 0xd0, 0xa5, 0xbe, 0x46, 0x3f, 0xa4, 0xb0, 0xe8, 0xa2, 0xba, + 0xec, 0xa2, 0x2b, 0x30, 0x67, 0xfa, 0x7e, 0xc7, 0x74, 0xfb, 0x24, 0xc0, 0x49, 0xa7, 0x30, 0x1d, + 0x64, 0x2c, 0x2d, 0x08, 0x74, 0xa6, 0xae, 0x17, 0x07, 0x3d, 0xc2, 0xac, 0x5d, 0x33, 0x04, 0x0c, + 0xe5, 0xe3, 0xf9, 0x24, 0x10, 0xf2, 0x18, 0x53, 0x3f, 0x87, 0xe5, 0x21, 0x01, 0x69, 0x48, 0xd0, + 0x42, 0x12, 0x47, 0xe4, 0x96, 0x6b, 0x31, 0xa5, 0x9a, 0xbc, 0x90, 0x64, 0x28, 0x5a, 0x20, 0x6c, + 0xf7, 0xd8, 0x8e, 0xd2, 0x72, 0x35, 0x83, 0x05, 0x42, 0x42, 0xea, 0xbf, 0xa4, 0xc0, 0xdc, 0x6e, + 0xbc, 0xe7, 0xd8, 0x3d, 0x86, 0xa0, 0xc6, 0xcf, 0x4c, 0xac, 0x48, 0x26, 0x16, 0x0d, 0xa5, 0x0e, + 0x37, 0x54, 0x45, 0x36, 0xd4, 0x22, 0xd4, 0xfb, 0xc4, 0xb5, 0x48, 0xc0, 0x0d, 0xcf, 0x21, 0xae, + 0x50, 0x2d, 0x51, 0x48, 0xff, 0x17, 0x15, 0xa6, 0xbf, 0x67, 0x11, 0x96, 0xa1, 0xe9, 0x1f, 0x78, + 0x2e, 0xd9, 0x8e, 0x69, 0xf0, 0x71, 0x59, 0x44, 0x94, 0x76, 0x1e, 0x6a, 0x7b, 0x76, 0x10, 0x1d, + 0x30, 0xef, 0xcf, 0x1a, 0x08, 0x50, 0x2c, 0x19, 0x98, 0x36, 0xba, 0xbc, 0x61, 0x20, 0xc0, 0x15, + 0x9a, 0x4e, 0x3d, 0x24, 0x2f, 0x05, 0x8d, 0xc2, 0x52, 0x50, 0x8c, 0x20, 0x28, 0x8d, 0xa0, 0xab, + 0xd0, 0xea, 0x3b, 0xde, 0x9e, 0xe9, 0x18, 0xa4, 0x77, 0xdc, 0x09, 0xfb, 0x3b, 0x7e, 0xc4, 0xdc, + 0x5d, 0x33, 0x0a, 0x78, 0x6a, 0x1f, 0x26, 0x62, 0x37, 0x0a, 0xb8, 0xbb, 0x53, 0x58, 0xff, 0x1f, + 0x05, 0x00, 0xd3, 0x8e, 0x99, 0x38, 0xb7, 0x96, 0x29, 0xc5, 0xb5, 0x6c, 0x11, 0xea, 0x01, 0x19, + 0x98, 0xc1, 0x61, 0x92, 0x6a, 0x08, 0xe5, 0x14, 0xab, 0x14, 0x14, 0xfb, 0x08, 0x60, 0x9f, 0xcd, + 0x43, 0xf9, 0x30, 0x93, 0xd3, 0xc2, 0x50, 0xe8, 0x12, 0x56, 0x12, 0x6f, 0x1b, 0xc2, 0x70, 0x9a, + 0xc7, 0xa6, 0x65, 0xf1, 0x74, 0xa9, 0x61, 0x1e, 0xa7, 0x88, 0x92, 0x6c, 0xa9, 0x8f, 0xc8, 0x96, + 0xa9, 0x34, 0xb8, 0xfe, 0x5b, 0x81, 0xc6, 0x9a, 0x63, 0xf6, 0x0e, 0x27, 0x54, 0x5d, 0x56, 0x51, + 0x2d, 0xa8, 0xb8, 0x09, 0xb3, 0x7b, 0x94, 0x5d, 0xa2, 0x02, 0xb3, 0x42, 0xf3, 0xc6, 0x0f, 0x96, + 0x68, 0x29, 0x27, 0x97, 0x21, 0xd3, 0xc9, 0xea, 0x56, 0xc7, 0xab, 0x5b, 0x1b, 0xa1, 0x6e, 0xba, + 0x5e, 0xe8, 0xbf, 0x5d, 0x81, 0x19, 0x56, 0x56, 0x0d, 0x72, 0x14, 0x93, 0x30, 0xd2, 0x3e, 0x81, + 0xe9, 0x38, 0x11, 0x55, 0x99, 0x54, 0xd4, 0x94, 0x44, 0xfb, 0x90, 0xaf, 0x87, 0x8c, 0x5e, 0x65, + 0xf4, 0x17, 0x4b, 0xe8, 0xd3, 0x05, 0xd6, 0xc8, 0x86, 0xd3, 0x95, 0xf0, 0xc0, 0x74, 0x2d, 0x87, + 0x18, 0x24, 0x8c, 0x9d, 0x88, 0xd7, 0x66, 0x09, 0x87, 0x91, 0x76, 0xd4, 0x09, 0xfb, 0x7c, 0x9d, + 0xe4, 0x10, 0xb5, 0x0e, 0x8e, 0xa3, 0x9f, 0x50, 0xf5, 0x0c, 0x41, 0x13, 0x3e, 0x20, 0x47, 0xcc, + 0x43, 0x98, 0x9e, 0x09, 0x98, 0xcd, 0xc9, 0xad, 0x86, 0x81, 0x20, 0xe1, 0xa8, 0x8b, 0x11, 0x66, + 0x0c, 0xb0, 0x11, 0x13, 0x30, 0x85, 0x3e, 0x4c, 0x2e, 0xe4, 0x50, 0x28, 0xe4, 0x85, 0x72, 0xdb, + 0x2c, 0x2b, 0xb7, 0xff, 0x5c, 0x81, 0x59, 0x4c, 0xc2, 0xc4, 0x35, 0x97, 0x68, 0xb6, 0x78, 0x03, + 0x29, 0x16, 0x05, 0x0c, 0xd5, 0x85, 0x42, 0xdb, 0x72, 0xd9, 0x93, 0x70, 0x34, 0xa0, 0x29, 0x7c, + 0x5b, 0x2a, 0x7f, 0x22, 0x2a, 0x99, 0x65, 0x53, 0x2c, 0x83, 0x02, 0x86, 0x16, 0x8e, 0xc8, 0x93, + 0x62, 0x2c, 0x85, 0x29, 0x6d, 0xe4, 0xa5, 0xf3, 0x63, 0x94, 0x09, 0x18, 0xea, 0xa5, 0xc8, 0x4b, + 0xe6, 0x46, 0x53, 0x67, 0x08, 0xe4, 0xcc, 0xe7, 0xc5, 0xe5, 0x2f, 0x85, 0x0b, 0xb1, 0xd1, 0x18, + 0x19, 0x1b, 0x20, 0xc5, 0x86, 0x9c, 0xa2, 0xcd, 0x42, 0x8a, 0x5e, 0x86, 0x59, 0xe4, 0x93, 0x5b, + 0xfe, 0x24, 0xa4, 0x1c, 0x61, 0xb3, 0xf9, 0x08, 0x93, 0x63, 0x64, 0x6e, 0x48, 0x8c, 0xcc, 0xa7, + 0x79, 0xf7, 0x27, 0x2a, 0xc0, 0x06, 0xf1, 0xcd, 0x20, 0x1a, 0x10, 0x37, 0xa2, 0xea, 0x59, 0x29, + 0x94, 0x3a, 0x57, 0xc2, 0x89, 0xab, 0x96, 0x2a, 0xaf, 0x5a, 0x1a, 0x54, 0x99, 0xc1, 0xd1, 0x9b, + 0xec, 0x6f, 0x6a, 0x4c, 0xdf, 0x0c, 0x90, 0x1b, 0xa6, 0x4a, 0x0a, 0xd3, 0x55, 0xc9, 0x0b, 0x2c, + 0xbe, 0x8e, 0xd5, 0x0c, 0x04, 0x68, 0x09, 0xc9, 0xe6, 0x63, 0xbb, 0x80, 0x3a, 0xae, 0x32, 0x32, + 0x76, 0xec, 0xc6, 0xe5, 0x2a, 0xb4, 0xc2, 0x78, 0x2f, 0x53, 0x6e, 0x3b, 0x1e, 0xf0, 0xa4, 0x29, + 0xe0, 0xa9, 0x51, 0x71, 0x47, 0x43, 0x07, 0xe1, 0xc2, 0x97, 0x21, 0xf2, 0x9d, 0x8c, 0xfe, 0xf7, + 0x2a, 0xb4, 0x76, 0x82, 0xbe, 0xe9, 0xda, 0x3f, 0x93, 0x76, 0xec, 0xa7, 0x6a, 0x00, 0x96, 0xa1, + 0x49, 0xdc, 0xbe, 0x63, 0x87, 0x07, 0xdb, 0x99, 0xdd, 0x44, 0x94, 0x68, 0xec, 0xea, 0xb0, 0x16, + 0xa1, 0x26, 0xb5, 0x08, 0x8b, 0x50, 0x1f, 0x78, 0x7b, 0xb6, 0x93, 0xc4, 0x3d, 0x87, 0x58, 0xcc, + 0x13, 0x87, 0xb0, 0x5e, 0x21, 0x8d, 0xf9, 0x04, 0x91, 0xb5, 0x0d, 0xd3, 0xa5, 0x6d, 0x43, 0x43, + 0x6c, 0x1b, 0x64, 0xc3, 0x43, 0xc1, 0xf0, 0x68, 0xae, 0x66, 0x5a, 0x87, 0x46, 0x2d, 0xf1, 0x7f, + 0xa3, 0x40, 0x2b, 0x73, 0x05, 0xf6, 0xd4, 0x43, 0x4d, 0x99, 0x8f, 0x4e, 0xb5, 0x24, 0x3a, 0xd3, + 0x98, 0xaa, 0x88, 0x31, 0x45, 0xa3, 0xd0, 0x0b, 0x6d, 0x61, 0x63, 0x93, 0xc2, 0x74, 0x36, 0x87, + 0x98, 0x82, 0x21, 0x11, 0x12, 0xb6, 0xb1, 0x75, 0x69, 0x1b, 0x9b, 0x5f, 0xa9, 0xff, 0x42, 0x81, + 0xf3, 0x34, 0x02, 0x0a, 0x6a, 0xec, 0x40, 0xcb, 0xcb, 0x45, 0x09, 0x5f, 0xca, 0xde, 0x2c, 0x59, + 0x8a, 0xf2, 0x01, 0x65, 0x14, 0x88, 0x29, 0x43, 0x2b, 0x37, 0x09, 0x5f, 0xdb, 0xca, 0x18, 0xe6, + 0xe5, 0x31, 0x0a, 0xc4, 0xfa, 0x5f, 0x29, 0xd0, 0xc2, 0xc5, 0x53, 0xa8, 0x01, 0x67, 0x2e, 0xf6, + 0x43, 0x38, 0x9f, 0x9f, 0xf9, 0x9e, 0x1d, 0x46, 0x6d, 0x75, 0xb9, 0x32, 0xa9, 0xe8, 0xa5, 0x0c, + 0xf4, 0x3f, 0x52, 0xe1, 0xd5, 0xdd, 0xd8, 0x71, 0x3a, 0x24, 0x0c, 0xcd, 0x3e, 0x59, 0x3b, 0xe9, + 0x92, 0x23, 0xfa, 0xc1, 0x20, 0x47, 0x43, 0x63, 0x88, 0x76, 0x52, 0xac, 0x15, 0xb1, 0x3d, 0x37, + 0x0d, 0x21, 0x11, 0x45, 0x53, 0x2e, 0x44, 0x3e, 0xed, 0xca, 0x72, 0x85, 0x2e, 0xd2, 0x1c, 0xd4, + 0x7e, 0x1a, 0x66, 0x58, 0x97, 0xc0, 0xa7, 0x69, 0x57, 0x99, 0x02, 0x1f, 0x97, 0xf6, 0x25, 0xa5, + 0x52, 0x61, 0xbf, 0xc1, 0xe1, 0x5b, 0x6e, 0x14, 0x9c, 0x18, 0x12, 0xc7, 0xa5, 0x2f, 0x61, 0xa1, + 0x30, 0x44, 0x6b, 0x41, 0xe5, 0x90, 0x9c, 0x70, 0x3d, 0xe8, 0x9f, 0xda, 0x8f, 0x42, 0xed, 0x98, + 0x6e, 0x50, 0xb9, 0xf7, 0x97, 0x4a, 0x24, 0xe0, 0x32, 0x1b, 0x38, 0xf0, 0x43, 0xf5, 0x27, 0x14, + 0xfd, 0xcd, 0x54, 0x31, 0x51, 0x47, 0x45, 0xd2, 0x51, 0xbf, 0x0b, 0xcd, 0x4e, 0xd8, 0xdf, 0x30, + 0x23, 0x93, 0x0d, 0xfc, 0x18, 0x9a, 0x83, 0x0c, 0x64, 0x83, 0xcb, 0xe7, 0xe3, 0x44, 0x86, 0x38, + 0x5c, 0xff, 0x56, 0x85, 0x76, 0xb9, 0x29, 0x42, 0x9f, 0xca, 0x40, 0x82, 0x60, 0xdd, 0xb3, 0x08, + 0x53, 0xad, 0x66, 0x24, 0x20, 0xf5, 0x1d, 0x09, 0x02, 0xba, 0xbe, 0xf1, 0x36, 0x1e, 0x21, 0x6d, + 0x05, 0xaa, 0x4e, 0xe2, 0x96, 0xd1, 0x52, 0xb0, 0x71, 0xda, 0x00, 0x5a, 0xcc, 0xba, 0x82, 0x42, + 0xdc, 0x67, 0xab, 0x13, 0xfb, 0x2c, 0xf4, 0xd1, 0x69, 0x02, 0x0f, 0x74, 0x5c, 0x81, 0xf5, 0x52, + 0x0f, 0x2e, 0x94, 0x0e, 0x2d, 0x71, 0xe0, 0xbb, 0xb2, 0x03, 0x2f, 0x0d, 0x57, 0x25, 0xef, 0x44, + 0x1f, 0xb4, 0x4d, 0x12, 0x75, 0xcc, 0x27, 0xab, 0xae, 0xd5, 0xb1, 0xdd, 0x2e, 0x39, 0xa2, 0xd1, + 0xbe, 0x0c, 0x4d, 0x7e, 0xdc, 0x90, 0xba, 0xa9, 0x61, 0x88, 0xa8, 0xa1, 0xa7, 0x10, 0xb9, 0x7c, + 0xa8, 0x14, 0xf2, 0x41, 0xbf, 0x09, 0x33, 0xe2, 0x74, 0x6c, 0x81, 0x31, 0x9f, 0x74, 0xc9, 0x11, + 0x53, 0x68, 0xd6, 0xe0, 0x10, 0xc3, 0xb3, 0x11, 0x7c, 0xf7, 0xc1, 0x21, 0xfd, 0x1f, 0x54, 0x38, + 0x57, 0x10, 0x39, 0xf4, 0x9f, 0x96, 0x8f, 0x18, 0x2f, 0x95, 0x61, 0xf1, 0x52, 0x95, 0xe2, 0xe5, + 0x10, 0x16, 0xd0, 0x49, 0xc2, 0xd4, 0xed, 0x1a, 0x0b, 0x80, 0x4f, 0xca, 0x36, 0x03, 0x45, 0x21, + 0xb9, 0xef, 0x05, 0x2c, 0x3a, 0xbf, 0xc8, 0x77, 0x89, 0xc0, 0x62, 0xf9, 0xe0, 0x12, 0xf7, 0xbf, + 0x27, 0xbb, 0xff, 0x07, 0xca, 0xdc, 0x2f, 0x4a, 0x22, 0xf8, 0xff, 0x08, 0xe6, 0x69, 0x51, 0xed, + 0x12, 0xd7, 0xea, 0x84, 0x7d, 0x66, 0xc8, 0x65, 0x68, 0x22, 0x7d, 0x27, 0xec, 0x67, 0x9b, 0x43, + 0x01, 0x45, 0x47, 0xf4, 0x1c, 0x9b, 0x16, 0x4f, 0x36, 0x82, 0x17, 0x3d, 0x01, 0x45, 0x17, 0xc8, + 0x90, 0xf0, 0x93, 0x19, 0x6a, 0xdd, 0x8a, 0x91, 0xc2, 0xfa, 0x9f, 0xd7, 0x61, 0x8a, 0x47, 0x23, + 0x5b, 0x14, 0xe9, 0x7e, 0x3c, 0x2d, 0xab, 0x08, 0x61, 0xcf, 0xdb, 0x3b, 0xce, 0xc2, 0x0b, 0x21, + 0xf1, 0x58, 0xac, 0x22, 0x1f, 0x8b, 0xe5, 0x64, 0xaa, 0x16, 0x65, 0xca, 0xe9, 0x55, 0x2b, 0xea, + 0x45, 0x5b, 0x3c, 0xd6, 0xf5, 0xec, 0x3a, 0x66, 0xb4, 0xef, 0x05, 0x03, 0xbe, 0xbd, 0xae, 0x19, + 0x05, 0x3c, 0x6d, 0x2b, 0x11, 0x97, 0xee, 0x0b, 0x70, 0x09, 0xcf, 0x61, 0x69, 0x17, 0x8e, 0x98, + 0x64, 0x7f, 0x80, 0xe7, 0x23, 0x32, 0x12, 0x65, 0x0b, 0x43, 0xdb, 0x73, 0x59, 0x87, 0x8a, 0xdb, + 0x00, 0x11, 0x45, 0x35, 0x1f, 0x84, 0xfd, 0xdb, 0x81, 0x37, 0xe0, 0x5b, 0xaf, 0x04, 0x64, 0x9a, + 0x7b, 0x6e, 0x94, 0x74, 0xb7, 0x78, 0x32, 0x22, 0xa2, 0x28, 0x2d, 0x07, 0x59, 0xc3, 0x34, 0x63, + 0x24, 0x20, 0x8d, 0xa5, 0x90, 0x1c, 0xf1, 0xc6, 0x9e, 0xfe, 0x29, 0x79, 0x6e, 0x5e, 0xf6, 0x5c, + 0xae, 0x53, 0x6b, 0xb1, 0xaf, 0x62, 0xa7, 0x96, 0xb5, 0x38, 0x0b, 0x52, 0x8b, 0xb3, 0x0a, 0x53, + 0x9e, 0x4f, 0xd3, 0x3f, 0x6c, 0x6b, 0x2c, 0x5d, 0x7e, 0x68, 0x78, 0x81, 0x5a, 0xd9, 0xc1, 0x91, + 0x98, 0x18, 0x09, 0x9d, 0x76, 0x0f, 0xe6, 0xbd, 0xfd, 0x7d, 0xc7, 0x76, 0xc9, 0x6e, 0x1c, 0x1e, + 0xb0, 0x6d, 0xf8, 0x39, 0x16, 0xec, 0x7a, 0x59, 0x13, 0x21, 0x8f, 0x34, 0xf2, 0xa4, 0xb4, 0xf3, + 0x33, 0x23, 0xdc, 0x00, 0xb1, 0x02, 0x77, 0x9e, 0x15, 0x38, 0x09, 0xc7, 0xce, 0x17, 0x85, 0x42, + 0x7f, 0x81, 0x19, 0x4e, 0x44, 0x21, 0x97, 0xc8, 0xec, 0x1d, 0x10, 0x76, 0xa0, 0xd4, 0x5e, 0xc4, + 0xfe, 0x51, 0xc4, 0xf1, 0xee, 0xee, 0xd5, 0xa4, 0xbb, 0x5b, 0xfa, 0x10, 0x66, 0x44, 0x05, 0x4b, + 0x92, 0xf9, 0xbc, 0x98, 0xcc, 0xd3, 0x62, 0xae, 0xfe, 0xa6, 0x02, 0xf3, 0x39, 0xd5, 0xe8, 0xe8, + 0xc8, 0x8e, 0x1c, 0xc2, 0x39, 0x20, 0x40, 0x77, 0x4e, 0x16, 0x09, 0x7b, 0x3c, 0x79, 0xd8, 0xdf, + 0x5c, 0x92, 0x4a, 0xda, 0x46, 0xeb, 0x30, 0x63, 0xef, 0x74, 0x29, 0xa3, 0xae, 0x17, 0xbb, 0x56, + 0x7a, 0x40, 0x2f, 0xe0, 0xd8, 0x96, 0x7e, 0xa7, 0xbb, 0x66, 0x5a, 0x7d, 0x82, 0xd7, 0x35, 0x35, + 0x26, 0x93, 0x8c, 0xd4, 0x2d, 0x98, 0xbe, 0x6f, 0xfb, 0xe1, 0xba, 0x37, 0x18, 0xd0, 0x10, 0xb0, + 0x48, 0x44, 0x7b, 0x7c, 0x85, 0x19, 0x8c, 0x43, 0xd4, 0x9a, 0x16, 0xd9, 0x37, 0x63, 0x27, 0xa2, + 0x43, 0x93, 0x92, 0x21, 0xa0, 0xd8, 0xf1, 0x42, 0xe8, 0xb9, 0x1b, 0x48, 0x8d, 0x72, 0x0a, 0x18, + 0xfd, 0xef, 0x54, 0x68, 0xb1, 0x8a, 0xb8, 0xce, 0x02, 0xce, 0x62, 0x44, 0x37, 0xa0, 0xc6, 0x0a, + 0x00, 0xef, 0x28, 0x47, 0x9f, 0xc9, 0xe0, 0x50, 0xed, 0x26, 0xd4, 0x3d, 0x9f, 0xb5, 0xa1, 0x58, + 0x2e, 0xaf, 0x0c, 0x23, 0x92, 0x8f, 0xe4, 0x0d, 0x4e, 0xa5, 0xdd, 0x06, 0x18, 0x64, 0x5d, 0x27, + 0x36, 0x0f, 0x93, 0xf2, 0x10, 0x28, 0xa9, 0x71, 0xd3, 0x75, 0x31, 0x3d, 0x97, 0xaf, 0x18, 0x32, + 0x52, 0xdb, 0x86, 0x39, 0x26, 0xf6, 0x4e, 0x72, 0x38, 0xc7, 0x7c, 0x30, 0xf9, 0x8c, 0x39, 0x6a, + 0xfd, 0xf7, 0x14, 0x6e, 0x46, 0xfa, 0xb5, 0x4b, 0xd0, 0xf6, 0x99, 0x49, 0x94, 0x53, 0x99, 0x64, + 0x09, 0xa6, 0x07, 0xb1, 0x70, 0x56, 0x58, 0x31, 0x52, 0x38, 0x73, 0x51, 0x65, 0x62, 0x17, 0xe9, + 0xbf, 0xaf, 0x40, 0xfb, 0x53, 0xcf, 0x76, 0xd9, 0x87, 0x55, 0xdf, 0x77, 0xf8, 0xf5, 0xcd, 0xa9, + 0x7d, 0xfe, 0x93, 0xd0, 0x30, 0x91, 0x8d, 0x1b, 0x71, 0xb7, 0x4f, 0x70, 0xfe, 0x97, 0xd1, 0x08, + 0x87, 0x30, 0x15, 0xf1, 0x10, 0x46, 0xff, 0x46, 0x81, 0x39, 0x34, 0xca, 0x67, 0xb1, 0x1d, 0x9d, + 0x5a, 0xbe, 0x35, 0x98, 0x3e, 0x8a, 0xed, 0xe8, 0x14, 0x51, 0x99, 0xd2, 0x15, 0xe3, 0xa9, 0x52, + 0x12, 0x4f, 0xfa, 0xb7, 0x0a, 0x5c, 0xcc, 0x9b, 0x75, 0xb5, 0xd7, 0x23, 0xfe, 0xb3, 0x4c, 0x29, + 0xe9, 0x10, 0xaa, 0x5a, 0x72, 0x08, 0x15, 0x90, 0x1e, 0xb1, 0x8f, 0x49, 0xb0, 0x1a, 0xf2, 0x5d, + 0xb5, 0x80, 0x29, 0x55, 0xc9, 0x20, 0x5f, 0x93, 0xde, 0x8b, 0xab, 0xd2, 0x2f, 0xa8, 0xf0, 0xda, + 0x66, 0x9a, 0xb8, 0xf7, 0x03, 0xd3, 0x0d, 0xf7, 0x49, 0x10, 0x3c, 0x43, 0x7d, 0xee, 0xc1, 0xac, + 0x4b, 0x1e, 0x67, 0x32, 0xf1, 0x74, 0x9e, 0x94, 0x8d, 0x4c, 0x3c, 0x59, 0xed, 0xd3, 0xff, 0x57, + 0x81, 0x16, 0xf2, 0xb9, 0x6b, 0xf7, 0x0e, 0x9f, 0xa1, 0xf2, 0xdb, 0x30, 0x77, 0xc8, 0x24, 0xa0, + 0xd0, 0x29, 0xca, 0x7e, 0x8e, 0x7a, 0x42, 0xf5, 0xbf, 0x53, 0x60, 0x21, 0xb9, 0x75, 0x3e, 0xb6, + 0x9f, 0x65, 0x30, 0xef, 0xc2, 0x3c, 0x9e, 0xe2, 0x9f, 0xd6, 0x00, 0x79, 0xf2, 0x09, 0x2d, 0xf0, + 0x67, 0x0a, 0xcc, 0x23, 0xa7, 0x5b, 0x6e, 0x44, 0x82, 0x53, 0xeb, 0x7f, 0x07, 0x9a, 0xc4, 0x8d, + 0x02, 0xd3, 0x3d, 0x4d, 0x85, 0x15, 0x49, 0x27, 0x2c, 0xb2, 0xdf, 0x28, 0xa0, 0x31, 0x56, 0x1b, + 0x76, 0x38, 0xb0, 0xc3, 0xf0, 0x19, 0xba, 0x6e, 0x32, 0x81, 0x7f, 0x47, 0x85, 0xf3, 0x02, 0x97, + 0x4e, 0x1c, 0x3d, 0xef, 0x22, 0x6b, 0x1b, 0xd0, 0xa0, 0x3d, 0x86, 0x78, 0xc7, 0x3a, 0xe9, 0x44, + 0x19, 0x21, 0xed, 0x82, 0x19, 0xd0, 0x25, 0x3d, 0xcf, 0xb5, 0xb0, 0x14, 0xcf, 0x1a, 0x12, 0x8e, + 0x96, 0xa1, 0x25, 0x81, 0xcd, 0xba, 0xe9, 0xf6, 0x88, 0xf3, 0xd2, 0x98, 0x48, 0xff, 0x43, 0x05, + 0xe6, 0x70, 0xc8, 0xf3, 0xaf, 0xb2, 0xfe, 0xc7, 0x0a, 0x0f, 0xe4, 0x17, 0xc6, 0x4b, 0x34, 0xbc, + 0x16, 0x05, 0x2e, 0x62, 0x5f, 0xfe, 0xfc, 0x86, 0xd6, 0x1d, 0x68, 0xf6, 0x0e, 0x4c, 0xb7, 0x7f, + 0xaa, 0xe0, 0x12, 0x49, 0xf5, 0x08, 0x5e, 0x15, 0x0f, 0xfd, 0xd7, 0xf1, 0x13, 0x53, 0xff, 0x9d, + 0x9c, 0x2a, 0x23, 0xdf, 0x50, 0x3c, 0x9d, 0xd1, 0x0f, 0x61, 0x01, 0x6f, 0xa1, 0x85, 0x9e, 0x51, + 0x6b, 0xc3, 0x94, 0x69, 0xe1, 0xd1, 0x87, 0xc2, 0x88, 0x12, 0x50, 0x7e, 0xa5, 0xc0, 0xdf, 0xc3, + 0x65, 0xaf, 0x14, 0x2e, 0x01, 0x98, 0x96, 0xf5, 0xd0, 0x0b, 0x2c, 0xdb, 0x4d, 0x36, 0x08, 0x02, + 0x46, 0xff, 0x14, 0x66, 0x6e, 0x07, 0xde, 0xe0, 0xbe, 0x70, 0x9f, 0x3c, 0xf2, 0xc6, 0x5b, 0xbc, + 0x8b, 0x56, 0xe5, 0xbb, 0x68, 0xfd, 0x2b, 0xb8, 0x50, 0x10, 0x9c, 0x19, 0x6b, 0x1d, 0xaf, 0xc9, + 0x93, 0x49, 0x78, 0xc8, 0x94, 0x9d, 0x05, 0x8a, 0xb2, 0x18, 0x12, 0x91, 0xfe, 0xf3, 0x0a, 0xbc, + 0x51, 0x60, 0xbf, 0xea, 0xfb, 0x81, 0x77, 0xcc, 0x7d, 0x72, 0x16, 0xd3, 0xc8, 0xcd, 0xb1, 0x9a, + 0x6b, 0x8e, 0xcb, 0x85, 0x90, 0x1a, 0xfa, 0xef, 0x41, 0x88, 0x3f, 0x50, 0x60, 0x9e, 0x0b, 0x61, + 0x59, 0x7c, 0xda, 0xf7, 0xa0, 0x8e, 0x0f, 0x75, 0xf8, 0x84, 0x6f, 0x94, 0x4e, 0x98, 0x3c, 0x30, + 0x32, 0xf8, 0xe0, 0x62, 0x44, 0xaa, 0x65, 0x19, 0xf5, 0x41, 0x1a, 0xec, 0x13, 0x3f, 0xa5, 0xe1, + 0x04, 0xfa, 0x4f, 0x25, 0xc1, 0xbc, 0x41, 0x1c, 0x72, 0x96, 0x36, 0xd2, 0x1f, 0xc0, 0x1c, 0x7b, + 0x35, 0x94, 0xd9, 0xe0, 0x4c, 0xd8, 0x3e, 0x84, 0x16, 0x63, 0x7b, 0xe6, 0xf2, 0xa6, 0xd9, 0x41, + 0xed, 0x23, 0x96, 0x92, 0x33, 0xe1, 0xfe, 0x36, 0x9c, 0x4b, 0x6c, 0x8f, 0x2f, 0x71, 0x91, 0xf7, + 0x90, 0xbb, 0x41, 0xfd, 0xb7, 0x14, 0x58, 0x5c, 0xf7, 0xdc, 0x63, 0x12, 0x84, 0xd2, 0xeb, 0x5d, + 0x24, 0x91, 0xb2, 0x9f, 0x43, 0xda, 0x0a, 0x68, 0x3d, 0x81, 0x82, 0x1f, 0x4f, 0xaa, 0xec, 0x78, + 0xb2, 0xe4, 0x8b, 0xf6, 0x2e, 0x5c, 0x88, 0x19, 0xd7, 0x07, 0x6e, 0x40, 0x4c, 0x8b, 0x9d, 0xc7, + 0x09, 0x45, 0xaf, 0xfc, 0xa3, 0xfe, 0x35, 0x2c, 0x89, 0x72, 0x75, 0x49, 0xb4, 0x1b, 0xd8, 0xc7, + 0x82, 0x6c, 0xfc, 0xec, 0x5d, 0x91, 0xce, 0xde, 0xb3, 0xb3, 0x7a, 0x55, 0x3a, 0xab, 0xbf, 0x08, + 0x0d, 0x3b, 0xe4, 0x0c, 0xd8, 0xbc, 0xd3, 0x46, 0x86, 0xd0, 0x4d, 0x58, 0x40, 0x2f, 0xf3, 0xbb, + 0x30, 0x36, 0xc5, 0x12, 0x4c, 0x63, 0xe8, 0xa6, 0x93, 0xa4, 0xf0, 0xd0, 0x9b, 0xa5, 0xa1, 0xf7, + 0xa8, 0x7a, 0x17, 0x16, 0xf8, 0x5b, 0xa2, 0x5d, 0xb3, 0x6f, 0xbb, 0x58, 0xcb, 0x2f, 0x01, 0xf8, + 0x66, 0x3f, 0x79, 0xd9, 0x88, 0x37, 0x82, 0x02, 0x86, 0x7e, 0x0f, 0x0f, 0xbc, 0xc7, 0xfc, 0xbb, + 0x8a, 0xdf, 0x33, 0x8c, 0xfe, 0x39, 0x68, 0x06, 0x09, 0x7d, 0xcf, 0x0d, 0x89, 0xc0, 0x75, 0x19, + 0x9a, 0xeb, 0x71, 0x10, 0x10, 0x97, 0x4e, 0x95, 0x3c, 0xcf, 0x13, 0x51, 0x94, 0x6f, 0x37, 0xe3, + 0x8b, 0xb7, 0x07, 0x02, 0x46, 0xff, 0xb7, 0x3a, 0x34, 0xba, 0x76, 0xdf, 0x35, 0x1d, 0x83, 0x1c, + 0x69, 0x1f, 0x43, 0x1d, 0x77, 0x46, 0x3c, 0x20, 0xcb, 0x4e, 0xb3, 0x71, 0x34, 0x6e, 0x01, 0x0d, + 0x72, 0x74, 0xe7, 0x15, 0x83, 0xd3, 0x68, 0x9f, 0x25, 0x2f, 0xae, 0xb6, 0xf0, 0xa4, 0x8c, 0x2f, + 0x93, 0x3f, 0x3c, 0x86, 0x09, 0x1f, 0x8d, 0xbc, 0x64, 0x0e, 0x54, 0xa0, 0x1e, 0xeb, 0x9c, 0x78, + 0x15, 0x1a, 0x2e, 0x10, 0x36, 0x58, 0x5c, 0x20, 0xa4, 0xa1, 0xd4, 0x26, 0x3b, 0x4b, 0xe2, 0x0d, + 0xc1, 0x70, 0x6a, 0x3c, 0x72, 0xe2, 0xd4, 0x48, 0x43, 0xa9, 0x0f, 0x62, 0xb7, 0xff, 0xc0, 0xe7, + 0x47, 0x9c, 0xc3, 0xa9, 0xef, 0xb0, 0x61, 0x9c, 0x1a, 0x69, 0x28, 0x75, 0xc0, 0xd6, 0x08, 0x66, + 0xf4, 0x51, 0xd4, 0xb8, 0x94, 0x70, 0x6a, 0xa4, 0xd1, 0xbe, 0x80, 0x56, 0x9f, 0x44, 0x86, 0xe7, + 0x0d, 0xd6, 0x4e, 0x36, 0xf9, 0x0d, 0x13, 0x3e, 0x30, 0xbf, 0x36, 0x94, 0xcf, 0x66, 0x8e, 0x00, + 0x39, 0x16, 0xf8, 0x68, 0x3f, 0x0b, 0x6f, 0x78, 0x2e, 0x45, 0xed, 0x9a, 0x41, 0x64, 0xf7, 0x6c, + 0xdf, 0x74, 0xa3, 0x75, 0xcf, 0x75, 0xd9, 0x7a, 0x66, 0x90, 0x23, 0xfe, 0x04, 0xfd, 0xfd, 0xa1, + 0x13, 0xed, 0x8c, 0xa2, 0xbe, 0xf3, 0x8a, 0x31, 0x9a, 0xbd, 0xf6, 0xcb, 0x0a, 0x2c, 0x17, 0x46, + 0x6c, 0xd8, 0x61, 0x4f, 0x94, 0x01, 0x9f, 0xaf, 0x7f, 0x30, 0xb9, 0x0c, 0x39, 0x06, 0x77, 0x5e, + 0x31, 0xc6, 0x4e, 0xc2, 0xad, 0x7c, 0xdf, 0x3b, 0x24, 0xee, 0xda, 0x09, 0x1d, 0xbb, 0xb5, 0xc1, + 0x6e, 0xb3, 0xc6, 0x58, 0x59, 0x22, 0xc8, 0xac, 0x2c, 0xa1, 0xd7, 0x1a, 0x30, 0xe5, 0x9b, 0x27, + 0x8e, 0x67, 0x5a, 0xfa, 0x7f, 0x56, 0x01, 0x12, 0x57, 0x87, 0xac, 0x23, 0x96, 0x92, 0xec, 0xf2, + 0xd8, 0x24, 0xf3, 0x9d, 0x13, 0x21, 0xcd, 0xba, 0xe5, 0x69, 0xf6, 0x23, 0x93, 0xa6, 0x19, 0x72, + 0xcb, 0x25, 0xda, 0xcd, 0x5c, 0xa2, 0x5d, 0x1e, 0x9b, 0x68, 0x5c, 0x28, 0x9e, 0x6a, 0x37, 0x73, + 0xa9, 0x76, 0x79, 0x6c, 0xaa, 0x71, 0x7a, 0x9e, 0x6c, 0x37, 0x73, 0xc9, 0x76, 0x79, 0x6c, 0xb2, + 0x71, 0x7a, 0x9e, 0x6e, 0x37, 0x73, 0xe9, 0x76, 0x79, 0x6c, 0xba, 0x71, 0x7a, 0x9e, 0x70, 0x5f, + 0x0d, 0x4d, 0xb8, 0x95, 0xa7, 0x48, 0x38, 0xe4, 0x59, 0x4c, 0xb9, 0xaf, 0x4a, 0x02, 0x6d, 0x7a, + 0x3c, 0xf7, 0x5c, 0xa0, 0x65, 0xdc, 0x87, 0x86, 0xda, 0x2f, 0x56, 0x60, 0x8e, 0xb9, 0x1b, 0x57, + 0x65, 0x77, 0xdf, 0x2b, 0xbe, 0x83, 0x55, 0x4a, 0xde, 0xc1, 0x6a, 0xd7, 0x60, 0x01, 0x11, 0x44, + 0xb8, 0x87, 0xc4, 0x85, 0xbe, 0xf8, 0x81, 0xdd, 0xbc, 0xc6, 0x61, 0xe4, 0x0d, 0x36, 0xcc, 0xc8, + 0x4c, 0x76, 0x18, 0x19, 0x46, 0xbc, 0x17, 0xaf, 0x16, 0x7e, 0x2e, 0x12, 0xa0, 0xfe, 0x35, 0xbe, + 0x9a, 0x33, 0x88, 0x52, 0x44, 0xf6, 0x80, 0x78, 0x71, 0xc4, 0x17, 0xa9, 0x04, 0xc4, 0xc7, 0x8b, + 0x96, 0x6d, 0xb2, 0xdb, 0x64, 0xfe, 0xb2, 0x2f, 0x45, 0xb0, 0x75, 0x35, 0xbb, 0x1d, 0xe7, 0x3f, + 0xe7, 0xc8, 0x30, 0x13, 0xdc, 0x64, 0xb3, 0x5f, 0x06, 0xd9, 0x91, 0x2d, 0xbe, 0xf8, 0xab, 0x19, + 0x12, 0x8e, 0xf6, 0x41, 0x7b, 0x71, 0x78, 0x72, 0xcf, 0x76, 0x45, 0xf3, 0x34, 0xb1, 0x0f, 0x2a, + 0x7e, 0xd1, 0xff, 0x5d, 0x81, 0x73, 0x42, 0xdd, 0xe9, 0x90, 0xc8, 0x64, 0x76, 0x91, 0xde, 0x6d, + 0x2b, 0x4f, 0xf7, 0x6e, 0x7b, 0x17, 0xe6, 0xfb, 0xf2, 0xb6, 0xfc, 0x29, 0x77, 0xd4, 0x79, 0x72, + 0xe9, 0x11, 0x7a, 0xe5, 0xa9, 0x1f, 0xa1, 0xeb, 0xbf, 0xa2, 0xc2, 0x7c, 0xae, 0x19, 0x18, 0xd9, + 0x49, 0xad, 0x02, 0xd8, 0x69, 0x68, 0x8e, 0xb8, 0xf5, 0x92, 0xe3, 0xd7, 0x10, 0x88, 0xca, 0xae, + 0xdd, 0x2b, 0xa7, 0xbf, 0x76, 0xbf, 0x03, 0x4d, 0x3f, 0x73, 0xd2, 0x88, 0x43, 0x83, 0x12, 0x57, + 0x1a, 0x22, 0xa9, 0xfe, 0xab, 0x0a, 0x2c, 0x14, 0x4a, 0x36, 0xbb, 0x0c, 0xa7, 0x89, 0x9a, 0x5e, + 0x86, 0x53, 0x40, 0xc8, 0x00, 0x35, 0x9f, 0x01, 0x8e, 0x7d, 0x2c, 0xfe, 0x5c, 0x86, 0x83, 0x43, + 0xa2, 0xaf, 0x3a, 0x34, 0xfa, 0x7e, 0x4d, 0x85, 0xc5, 0xf2, 0x06, 0xeb, 0x65, 0xf5, 0xcf, 0xaf, + 0x2b, 0xd0, 0x1e, 0xb6, 0x16, 0x3e, 0x33, 0x37, 0x65, 0xf9, 0x93, 0xf6, 0xae, 0x2f, 0xab, 0x7f, + 0xce, 0x25, 0xe9, 0x23, 0x34, 0x17, 0xfa, 0x9f, 0xa6, 0xf6, 0x49, 0xbb, 0xf3, 0x97, 0xd4, 0x3e, + 0xda, 0x55, 0x68, 0xa1, 0x9a, 0xc2, 0x4b, 0x30, 0xdc, 0xec, 0x15, 0xf0, 0xfa, 0x97, 0x89, 0x2d, + 0x85, 0x46, 0xeb, 0xac, 0x62, 0x5c, 0xff, 0x6b, 0x25, 0xf1, 0x49, 0xba, 0xe7, 0x79, 0xa1, 0x7c, + 0x92, 0x45, 0x9a, 0xd0, 0x46, 0x0a, 0x91, 0x96, 0xee, 0xc5, 0xfe, 0x3f, 0xd2, 0xc6, 0x47, 0x5a, + 0x6a, 0x4b, 0xa1, 0xa5, 0xd6, 0x7f, 0x57, 0x81, 0xd7, 0x86, 0xee, 0x47, 0x47, 0x5a, 0x55, 0x68, + 0x1a, 0x55, 0xb9, 0x69, 0xcc, 0xa9, 0x57, 0x39, 0x7d, 0xa1, 0xf9, 0x5b, 0x05, 0x5e, 0x1f, 0xd1, + 0xbc, 0xe7, 0x3c, 0xab, 0x9c, 0xc6, 0xb3, 0x39, 0x61, 0xd5, 0xa1, 0x17, 0xd3, 0x63, 0x7d, 0x91, + 0xa5, 0x67, 0x45, 0x4c, 0x4f, 0xfd, 0x1f, 0x15, 0x78, 0x73, 0x82, 0x9d, 0xf8, 0xf3, 0xa5, 0xcc, + 0xd0, 0xa7, 0xb2, 0xfa, 0x3f, 0x29, 0x70, 0x65, 0xb2, 0x4d, 0xfd, 0x8b, 0xa2, 0xd1, 0x5f, 0x8a, + 0x39, 0x90, 0x3f, 0x2d, 0x10, 0xdc, 0xaa, 0x48, 0x55, 0x57, 0xcc, 0x0d, 0x35, 0x97, 0x1b, 0x67, + 0x96, 0x01, 0xf9, 0x17, 0xf1, 0xd5, 0xe2, 0x8b, 0xf8, 0x8e, 0x90, 0x22, 0xc5, 0x1d, 0xe8, 0x90, + 0xa5, 0x44, 0x58, 0x32, 0x54, 0x79, 0xc9, 0xf8, 0x39, 0x98, 0xdd, 0x20, 0x4e, 0x27, 0xec, 0x27, + 0xbf, 0x5d, 0x39, 0xd3, 0xd3, 0xd6, 0x09, 0xf4, 0x59, 0x83, 0x39, 0x51, 0x80, 0xd3, 0xfc, 0x36, + 0x43, 0x7f, 0x08, 0xaf, 0x75, 0x49, 0xb4, 0xea, 0xfb, 0x6b, 0x66, 0xef, 0x90, 0xba, 0xd9, 0xb5, + 0xba, 0xec, 0x31, 0xf1, 0xa8, 0x1f, 0xe3, 0xd0, 0x9d, 0x65, 0x98, 0x11, 0xf0, 0x17, 0xb4, 0x12, + 0x4e, 0xdf, 0x86, 0xa5, 0x61, 0x8c, 0x4f, 0x25, 0xe8, 0x7f, 0xa9, 0x30, 0x73, 0xeb, 0x49, 0x84, + 0xef, 0xe7, 0xbb, 0x84, 0xfd, 0x02, 0x3d, 0x64, 0xd7, 0x82, 0x99, 0xb5, 0x13, 0x38, 0xbf, 0x39, + 0x56, 0x8b, 0x9b, 0xe3, 0x1d, 0x00, 0x92, 0x70, 0x0b, 0xf9, 0x23, 0x9b, 0xeb, 0x25, 0x61, 0x27, + 0x4e, 0x99, 0x01, 0xfc, 0xd5, 0xb4, 0xc0, 0x82, 0xae, 0x2f, 0x1d, 0xf3, 0x49, 0x27, 0xec, 0x0b, + 0xff, 0x59, 0x04, 0xdf, 0xda, 0x14, 0xf0, 0xd4, 0x7e, 0x29, 0xe5, 0x76, 0x3c, 0xe0, 0xeb, 0x90, + 0x84, 0xcb, 0xbd, 0x01, 0xaf, 0xe7, 0xdf, 0x80, 0x2f, 0x7d, 0x09, 0xf3, 0x39, 0x71, 0x4a, 0xde, + 0x38, 0xdf, 0x90, 0x7f, 0xb0, 0x70, 0x71, 0x94, 0x82, 0xe2, 0x0b, 0xe8, 0xff, 0x50, 0xa1, 0x91, + 0x7e, 0xd0, 0x06, 0x70, 0x21, 0x20, 0x26, 0xfb, 0x57, 0x22, 0x0c, 0x49, 0x8d, 0x28, 0xfc, 0xac, + 0xe8, 0xc7, 0x47, 0x71, 0x5d, 0x31, 0xca, 0x28, 0xd1, 0x7c, 0xe5, 0x5c, 0x27, 0xf8, 0xd5, 0xc3, + 0x0a, 0x68, 0x83, 0xb0, 0x7f, 0xdb, 0x0e, 0xc2, 0xa8, 0xe3, 0x59, 0xf6, 0xfe, 0x89, 0x70, 0x15, + 0x53, 0xf2, 0xa5, 0xf0, 0x80, 0xbc, 0x3a, 0xf4, 0x01, 0x79, 0xfa, 0x5f, 0x22, 0x96, 0x08, 0x2c, + 0x0d, 0x17, 0xbd, 0xc4, 0xd4, 0x3f, 0x26, 0x9b, 0xba, 0xec, 0x0a, 0xfd, 0x2e, 0x39, 0xc1, 0xff, + 0x4f, 0x22, 0x58, 0x7a, 0x1f, 0xa6, 0x13, 0x34, 0x3b, 0x2a, 0x3a, 0xf1, 0xc9, 0xdd, 0x94, 0x71, + 0x02, 0xca, 0x6f, 0xd5, 0x1b, 0x9c, 0x9e, 0x86, 0x9c, 0x63, 0x46, 0x24, 0x8c, 0x84, 0x90, 0x43, + 0x23, 0x14, 0xf0, 0x6b, 0xd7, 0xbe, 0xb8, 0xba, 0xe3, 0x13, 0xf7, 0xd1, 0x56, 0xa7, 0xf0, 0x3f, + 0x92, 0x3e, 0x2a, 0x48, 0xba, 0x57, 0x67, 0xdf, 0xdf, 0xf9, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xc4, 0xf7, 0xcb, 0xba, 0x83, 0x49, 0x00, 0x00, } diff --git a/pkg/proto/sdk_ws/ws.proto b/pkg/proto/sdk_ws/ws.proto index 95d17fa6b..843771ee7 100644 --- a/pkg/proto/sdk_ws/ws.proto +++ b/pkg/proto/sdk_ws/ws.proto @@ -330,6 +330,7 @@ message GroupApplicationAcceptedTips{ GroupInfo group = 1; GroupMemberFullInfo opUser = 2; string handleMsg = 4; + int32 receiverAs = 5; // admin(==1) or applicant(==0) } // OnApplicationGroupRejected() @@ -337,6 +338,7 @@ message GroupApplicationRejectedTips{ GroupInfo group = 1; GroupMemberFullInfo opUser = 2; string handleMsg = 4; + int32 receiverAs = 5; // admin(==1) or applicant(==0) } // OnTransferGroupOwner() @@ -696,4 +698,38 @@ message DelMsgListResp{ string errMsg = 2; } +message SetAppBackgroundStatusReq { + string userID = 1; + bool isBackground = 2; +} + +message SetAppBackgroundStatusResp { + int32 errCode = 1; + string errMsg = 2; +} + +message ExtendMsgSet { + string sourceID = 1; + int32 sessionType = 2; + map extendMsgs = 3; + int64 MaxMsgUpdateTime = 4; + int32 extendMsgNum = 5; + int64 createTime = 6; +} + +message ExtendMsg { + map reactionExtensionList = 1; + string clientMsgID = 2; + int64 msgFirstModifyTime = 3; + string attachedInfo = 4; + string ex = 5; +} + +message KeyValue { + string typeKey = 1; + string value = 2; + int64 latestUpdateTime = 3; +} + + diff --git a/pkg/utils/strings.go b/pkg/utils/strings.go index 203af2708..f611f1a35 100644 --- a/pkg/utils/strings.go +++ b/pkg/utils/strings.go @@ -96,6 +96,8 @@ func GetConversationIDBySessionType(sourceID string, sessionType int) string { return "single_" + sourceID case constant.GroupChatType: return "group_" + sourceID + case constant.SuperGroupChatType: + return "super_group_" + sourceID case constant.NotificationChatType: return "notification_" + sourceID } diff --git a/script/check_all.sh b/script/check_all.sh index 76535c79f..af3d44ceb 100644 --- a/script/check_all.sh +++ b/script/check_all.sh @@ -54,13 +54,13 @@ else fi -#check=$(ps aux | grep -w ./${cron_task_name} | grep -v grep | wc -l) -#if [ $check -ge 1 ]; then -# echo -e ${GREEN_PREFIX}"none port has been listening,belongs service is openImCronTask"${COLOR_SUFFIX} -#else -# echo -e ${RED_PREFIX}"cron_task_name service does not start normally"${COLOR_SUFFIX} -# echo -e ${RED_PREFIX}"please check ../logs/openIM.log "${COLOR_SUFFIX} -# exit -1 -#fi -# -#echo -e ${YELLOW_PREFIX}"all services launch success"${COLOR_SUFFIX} +check=$(ps aux | grep -w ./${cron_task_name} | grep -v grep | wc -l) +if [ $check -ge 1 ]; then + echo -e ${GREEN_PREFIX}"none port has been listening,belongs service is openImCronTask"${COLOR_SUFFIX} +else + echo -e ${RED_PREFIX}"cron_task_name service does not start normally"${COLOR_SUFFIX} + echo -e ${RED_PREFIX}"please check ../logs/openIM.log "${COLOR_SUFFIX} + exit -1 +fi + +echo -e ${YELLOW_PREFIX}"all services launch success"${COLOR_SUFFIX} diff --git a/script/env_check.sh b/script/env_check.sh index 2d81390f7..f51dca451 100644 --- a/script/env_check.sh +++ b/script/env_check.sh @@ -1,12 +1,25 @@ #!/usr/bin/env bash source ./style_info.cfg +echo -e "check time synchronize.................................." +t=`curl http://time.akamai.com/?iso -s` +t1=`date -d $t +%s` +t2=`date +%s` +let between=t2-t1 +if [[ $between -gt 10 ]] || [[ $between -lt -10 ]]; then + echo -e ${RED_PREFIX}"Warning: The difference between the iso time and the server's time is too large: "$between"s" ${COLOR_SUFFIX} +else + echo -e ${GREEN_PREFIX} "ok: Server time is synchronized " ${COLOR_SUFFIX} +fi + + + echo -e "check login user........................................" user=`whoami` if [ $user == "root" ] ; then - echo -e ${GREEN_PREFIX} "ok: login user is root" ${COLOR_SUFFIX} + echo -e ${GREEN_PREFIX} "ok: login user is root" ${COLOR_SUFFIX} else - echo -e ${RED_PREFIX}"Warning: The current user is not root "${COLOR_SUFFIX} + echo -e ${RED_PREFIX}"Warning: The current user is not root "${COLOR_SUFFIX} fi diff --git a/script/start_all.sh b/script/start_all.sh index 223187973..4a5f7d65e 100644 --- a/script/start_all.sh +++ b/script/start_all.sh @@ -10,7 +10,7 @@ need_to_start_server_shell=( sdk_svr_start.sh msg_gateway_start.sh demo_svr_start.sh -# start_cron.sh + start_cron.sh ) time=`date +"%Y-%m-%d %H:%M:%S"` echo "==========================================================">>../logs/openIM.log 2>&1 &