From 6de61cb21493967ec322136513d852bbe0a6d9f5 Mon Sep 17 00:00:00 2001
From: wangchuxiao <wangchuxiao97@outlook.com>
Date: Wed, 9 Feb 2022 16:22:58 +0800
Subject: [PATCH] cms dev

---
 cmd/rpc/open_im_message_cms/main.go           |   2 +-
 config/config.yaml                            |   4 +-
 .../{message => message_cms}/message.go       |  24 +-
 internal/cms_api/router.go                    |  15 +-
 internal/cms_api/user/user.go                 |   1 -
 internal/rpc/group/group.go                   |   2 +-
 internal/rpc/message_cms/message_cms.go       |  64 ++-
 pkg/common/config/config.go                   |   1 +
 .../mysql_model/im_mysql_model/group_model.go |   2 +-
 .../mysql_model/im_mysql_model/message_cms.go |  17 +
 pkg/common/http/http_resp.go                  |  27 +
 .../{message.pb.go => message_cms.pb.go}      | 467 +++++++++---------
 .../{message.proto => message_cms.proto}      |   6 +-
 pkg/proto/proto_dir.cfg                       |   2 +-
 14 files changed, 370 insertions(+), 264 deletions(-)
 rename internal/cms_api/{message => message_cms}/message.go (63%)
 create mode 100644 pkg/common/db/mysql_model/im_mysql_model/message_cms.go
 rename pkg/proto/message_cms/{message.pb.go => message_cms.pb.go} (52%)
 rename pkg/proto/message_cms/{message.proto => message_cms.proto} (94%)

diff --git a/cmd/rpc/open_im_message_cms/main.go b/cmd/rpc/open_im_message_cms/main.go
index 2ca603991..0980d3629 100644
--- a/cmd/rpc/open_im_message_cms/main.go
+++ b/cmd/rpc/open_im_message_cms/main.go
@@ -6,7 +6,7 @@ import (
 )
 
 func main() {
-	rpcPort := flag.Int("port", 11200, "rpc listening port")
+	rpcPort := flag.Int("port", 10900, "rpc listening port")
 	flag.Parse()
 	rpcServer := rpcMessageCMS.NewMessageCMSServer(*rpcPort)
 	rpcServer.Run()
diff --git a/config/config.yaml b/config/config.yaml
index 14aa68120..239d9d2f3 100644
--- a/config/config.yaml
+++ b/config/config.yaml
@@ -93,6 +93,7 @@ rpcport:
   openImAuthPort: [ 10600 ]
   openImPushPort: [ 10700 ]
   openImOpenImStatisticPort: [ 10800 ]
+  OpenImMessageCMSPort: [ 10900 ]
   c2c:
     callbackBeforeSendMsg:
       switch: false
@@ -104,7 +105,7 @@ rpcport:
       switch: false
 
 rpcregistername:
-  remainLogLevel: User
+  openImUserName: User
   openImFriendName: Friend
   openImOfflineMessageName: OfflineMessage
   openImPushName: Push
@@ -112,6 +113,7 @@ rpcregistername:
   openImGroupName: Group
   openImAuthName: Auth
   OpenImStatisticsName: Statistics
+  OpenImMessageCMSName: MessageCMS
 
 log:
   storageLocation: ../logs/
diff --git a/internal/cms_api/message/message.go b/internal/cms_api/message_cms/message.go
similarity index 63%
rename from internal/cms_api/message/message.go
rename to internal/cms_api/message_cms/message.go
index d223b94b1..ef030d432 100644
--- a/internal/cms_api/message/message.go
+++ b/internal/cms_api/message_cms/message.go
@@ -1,4 +1,4 @@
-package message
+package messageCMS
 
 import (
 	"Open_IM/pkg/cms_api_struct"
@@ -7,6 +7,7 @@ import (
 	"Open_IM/pkg/common/log"
 	"Open_IM/pkg/grpc-etcdv3/getcdv3"
 	pbMessage "Open_IM/pkg/proto/message_cms"
+	pbCommon "Open_IM/pkg/proto/sdk_ws"
 	"Open_IM/pkg/utils"
 	"context"
 	"strings"
@@ -17,6 +18,17 @@ import (
 )
 
 func BroadcastMessage(c *gin.Context) {
+	var (
+		reqPb pbMessage.BoradcastMessageReq
+	)
+	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMessageCMSName)
+	client := pbMessage.NewMessageCMSClient(etcdConn)
+	_, err := client.BoradcastMessage(context.Background(), &reqPb)
+	if err != nil {
+		log.NewError(reqPb.OperationID, utils.GetSelfFuncName(), "GetChatLogs rpc failed", err.Error())
+		openIMHttp.RespHttp200S(c, err, nil)
+		return
+	}
 	openIMHttp.RespHttp200(c, constant.OK, nil)
 }
 
@@ -39,13 +51,17 @@ func GetChatLogs(c *gin.Context) {
 		openIMHttp.RespHttp200(c, constant.ErrArgs, resp)
 		return
 	}
+	reqPb.Pagination = &pbCommon.RequestPagination{
+		PageNumber: int32(req.PageNumber),
+		ShowNumber: int32(req.ShowNumber),
+	}
 	utils.CopyStructFields(&reqPb, &req)
-	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImStatisticsName)
-	client := pbMessage.NewMessageClient(etcdConn)
+	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMessageCMSName)
+	client := pbMessage.NewMessageCMSClient(etcdConn)
 	respPb, err := client.GetChatLogs(context.Background(), &reqPb)
 	if err != nil {
 		log.NewError(reqPb.OperationID, utils.GetSelfFuncName(), "GetChatLogs rpc failed", err.Error())
-		openIMHttp.RespHttp200(c, constant.ErrServer, resp)
+		openIMHttp.RespHttp200S(c, constant.ErrServer, resp)
 		return
 	}
 	utils.CopyStructFields(&resp, &respPb)
diff --git a/internal/cms_api/router.go b/internal/cms_api/router.go
index 34b3b9fb9..cd1629008 100644
--- a/internal/cms_api/router.go
+++ b/internal/cms_api/router.go
@@ -3,7 +3,7 @@ package cms_api
 import (
 	"Open_IM/internal/cms_api/admin"
 	"Open_IM/internal/cms_api/group"
-	"Open_IM/internal/cms_api/message"
+	messageCMS "Open_IM/internal/cms_api/message_cms"
 	"Open_IM/internal/cms_api/middleware"
 	"Open_IM/internal/cms_api/organization"
 	"Open_IM/internal/cms_api/statistics"
@@ -46,12 +46,6 @@ func NewGinRouter() *gin.Engine {
 		organizationRouterGroup.PATCH("/alter_corps_info", organization.AlterStaffsInfo)
 		organizationRouterGroup.POST("/add_child_org", organization.AddChildOrganization)
 	}
-	messageRouterGroup := router.Group("/message")
-	{
-		messageRouterGroup.POST("/broadcast_message", message.BroadcastMessage)
-		messageRouterGroup.POST("/mass_send_message", message.MassSendMassage)
-		messageRouterGroup.POST("/withdraw_message", message.WithdrawMessage)
-	}
 	groupRouterGroup := router.Group("/group")
 	{
 		groupRouterGroup.GET("/get_group_by_id", group.GetGroupById)
@@ -89,5 +83,12 @@ func NewGinRouter() *gin.Engine {
 		friendRouterGroup.POST("/set_friend")
 		friendRouterGroup.POST("/remove_friend")
 	}
+	messageCMSRouterGroup := router.Group("/message")
+	{
+		messageCMSRouterGroup.GET("/get_chat_logs", messageCMS.GetChatLogs)
+		messageCMSRouterGroup.POST("/broadcast_message", messageCMS.BroadcastMessage)
+		messageCMSRouterGroup.POST("/mass_send_message", messageCMS.MassSendMassage)
+		messageCMSRouterGroup.POST("/withdraw_message", messageCMS.WithdrawMessage)
+	}
 	return baseRouter
 }
diff --git a/internal/cms_api/user/user.go b/internal/cms_api/user/user.go
index 393f4f4ff..9c59fd170 100644
--- a/internal/cms_api/user/user.go
+++ b/internal/cms_api/user/user.go
@@ -70,7 +70,6 @@ func GetUsersByName(c *gin.Context) {
 		openIMHttp.RespHttp200(c, constant.ErrServer, nil)
 		return
 	}
-	fmt.Println(respPb)
 	utils.CopyStructFields(&resp.Users, respPb.Users)
 	resp.ShowNumber = int(respPb.Pagination.ShowNumber)
 	resp.CurrentPage = int(respPb.Pagination.CurrentPage)
diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go
index 7f6289845..172fe4832 100644
--- a/internal/rpc/group/group.go
+++ b/internal/rpc/group/group.go
@@ -645,7 +645,7 @@ func (s *groupServer) GetGroupById(_ context.Context, req *pbGroup.GetGroupByIdR
 	resp := &pbGroup.GetGroupByIdResp{CMSGroup: &pbGroup.CMSGroup{
 		GroupInfo:	&open_im_sdk.GroupInfo{},
 	}}
-	group, err := imdb.GetGroupsById(req.GroupId)
+	group, err := imdb.GetGroupById(req.GroupId)
 	if err != nil {
 		log.NewInfo(req.OperationID, utils.GetSelfFuncName(), err.Error())
 		return resp, err
diff --git a/internal/rpc/message_cms/message_cms.go b/internal/rpc/message_cms/message_cms.go
index ed04446d8..56c62d628 100644
--- a/internal/rpc/message_cms/message_cms.go
+++ b/internal/rpc/message_cms/message_cms.go
@@ -1,21 +1,21 @@
-package MessageCMS
+package messageCMS
 
 import (
 	"Open_IM/pkg/common/config"
+	"Open_IM/pkg/common/constant"
 	"Open_IM/pkg/common/db"
+	"Open_IM/pkg/common/http"
 	"context"
 
-	//"Open_IM/pkg/common/constant"
-	//"Open_IM/pkg/common/db"
-
 	"Open_IM/pkg/common/log"
 
-	//cp "Open_IM/pkg/common/utils"
+	imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model"
 	"Open_IM/pkg/grpc-etcdv3/getcdv3"
 	pbMessageCMS "Open_IM/pkg/proto/message_cms"
+	open_im_sdk "Open_IM/pkg/proto/sdk_ws"
 
 	"Open_IM/pkg/utils"
-	//"context"
+
 	"net"
 	"strconv"
 	"strings"
@@ -31,17 +31,17 @@ type messageCMSServer struct {
 }
 
 func NewMessageCMSServer(port int) *messageCMSServer {
-	log.NewPrivateLog("Statistics")
+	log.NewPrivateLog("MessageCMS")
 	return &messageCMSServer{
 		rpcPort:         port,
-		rpcRegisterName: config.Config.RpcRegisterName.OpenImStatisticsName,
+		rpcRegisterName: config.Config.RpcRegisterName.OpenImMessageCMSName,
 		etcdSchema:      config.Config.Etcd.EtcdSchema,
 		etcdAddr:        config.Config.Etcd.EtcdAddr,
 	}
 }
 
 func (s *messageCMSServer) Run() {
-	log.NewInfo("0", "Statistics rpc start ")
+	log.NewInfo("0", "messageCMS rpc start ")
 	ip := utils.ServerIP
 	registerAddress := ip + ":" + strconv.Itoa(s.rpcPort)
 	//listener network
@@ -56,7 +56,7 @@ func (s *messageCMSServer) Run() {
 	srv := grpc.NewServer()
 	defer srv.GracefulStop()
 	//Service registers with etcd
-	pbMessageCMS.RegisterMessageServer(srv, s)
+	pbMessageCMS.RegisterMessageCMSServer(srv, s)
 	err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName, 10)
 	if err != nil {
 		log.NewError("0", "RegisterEtcd failed ", err.Error())
@@ -67,13 +67,13 @@ func (s *messageCMSServer) Run() {
 		log.NewError("0", "Serve failed ", err.Error())
 		return
 	}
-	log.NewInfo("0", "statistics rpc success")
+	log.NewInfo("0", "message cms rpc success")
 }
 
 func (s *messageCMSServer) BoradcastMessage(_ context.Context, req *pbMessageCMS.BoradcastMessageReq) (*pbMessageCMS.BoradcastMessageResp, error) {
 	log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "BoradcastMessage", req.String())
 	resp := &pbMessageCMS.BoradcastMessageResp{}
-	return resp, nil
+	return resp, http.WarpError(constant.ErrDB)
 }
 
 func (s *messageCMSServer) GetChatLogs(_ context.Context, req *pbMessageCMS.GetChatLogsReq) (*pbMessageCMS.GetChatLogsResp, error) {
@@ -82,6 +82,46 @@ func (s *messageCMSServer) GetChatLogs(_ context.Context, req *pbMessageCMS.GetC
 	chatLog := db.ChatLog{
 		Content: req.Content,
 	}
+	chatLogs, err := imdb.GetChatLog(chatLog, req.Pagination.ShowNumber, req.Pagination.PageNumber)
+	if err != nil {
+		log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetChatLog", err.Error())
+		return resp, http.WarpError(constant.ErrDB)
+	}
+	for _, chatLog := range chatLogs {
+		pbChatLog := &pbMessageCMS.ChatLogs{
+			SessionType:     chatLog.SessionType,
+			ContentType:     chatLog.ContentType,
+			SenderNickName:  chatLog.SenderNickname,
+			SenderId:        chatLog.SendID,
+			SearchContent:   req.Content,
+			WholeContent:    chatLog.Content,
+			Date:            chatLog.CreateTime.String(),
+		}
+		switch chatLog.SessionType {
+		case constant.SingleChatType:
+			recvUser, err := imdb.GetUserByUserID(chatLog.RecvID)
+			if err != nil {
+				log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserByUserID failed", err.Error())
+				continue
+			}
+			pbChatLog.ReciverId = recvUser.UserID
+			pbChatLog.ReciverNickName = recvUser.Nickname
+		case constant.GroupChatType:
+			group, err := imdb.GetGroupById(chatLog.RecvID)
+			if err != nil {
+				log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupById failed")
+				continue
+			}
+			pbChatLog.GroupId = group.GroupID
+			pbChatLog.GroupName = group.GroupName
+		}
+		resp.ChatLogs = append(resp.ChatLogs, pbChatLog)
+	}
+	resp.Pagination = &open_im_sdk.ResponsePagination{
+		CurrentPage: req.Pagination.PageNumber,
+		ShowNumber:  req.Pagination.ShowNumber,
+	}
+	log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp output: ", resp.String())
 	return resp, nil
 }
 
diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go
index d862224f6..9eaa3ac27 100644
--- a/pkg/common/config/config.go
+++ b/pkg/common/config/config.go
@@ -85,6 +85,7 @@ type config struct {
 		OpenImOnlineMessageRelayName string `yaml:"openImOnlineMessageRelayName"`
 		OpenImGroupName              string `yaml:"openImGroupName"`
 		OpenImAuthName               string `yaml:"openImAuthName"`
+		OpenImMessageCMSName 		 string `yaml:"openImMessageCMSName"`
 	}
 	Etcd struct {
 		EtcdSchema string   `yaml:"etcdSchema"`
diff --git a/pkg/common/db/mysql_model/im_mysql_model/group_model.go b/pkg/common/db/mysql_model/im_mysql_model/group_model.go
index 255cc4268..4fe159e3c 100644
--- a/pkg/common/db/mysql_model/im_mysql_model/group_model.go
+++ b/pkg/common/db/mysql_model/im_mysql_model/group_model.go
@@ -147,7 +147,7 @@ func GetGroupsCountNum(group db.Group) (int32, error) {
 	return count, nil
 }
 
-func GetGroupsById(groupId string) (db.Group, error) {
+func GetGroupById(groupId string) (db.Group, error) {
 	dbConn, err := db.DB.MysqlDB.DefaultGormDB()
 	group := db.Group{
 		GroupID: groupId,
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
new file mode 100644
index 000000000..261186e97
--- /dev/null
+++ b/pkg/common/db/mysql_model/im_mysql_model/message_cms.go
@@ -0,0 +1,17 @@
+package im_mysql_model
+
+import (
+	"Open_IM/pkg/common/db"
+	"fmt"
+)
+
+func GetChatLog(chatLog db.ChatLog, pageNumber, showNumber int32) ([]db.ChatLog, error) {
+	dbConn, err := db.DB.MysqlDB.DefaultGormDB()
+	var chatLogs []db.ChatLog
+	if err != nil {
+		return chatLogs, err
+	}
+	dbConn.LogMode(true)
+	err = dbConn.Table("chat_logs").Where(fmt.Sprintf(" content like '%%%s%%' ", chatLog.Content)).Limit(showNumber).Offset(showNumber * (pageNumber - 1)).Find(&chatLogs).Error
+	return chatLogs, err
+}
\ No newline at end of file
diff --git a/pkg/common/http/http_resp.go b/pkg/common/http/http_resp.go
index f268b715a..24870e067 100644
--- a/pkg/common/http/http_resp.go
+++ b/pkg/common/http/http_resp.go
@@ -2,10 +2,15 @@ package http
 
 import (
 	"Open_IM/pkg/common/constant"
+	"google.golang.org/grpc/codes"
+	"google.golang.org/grpc/status"
+
+
 	//"Open_IM/pkg/cms_api_struct"
 	"net/http"
 
 	"github.com/gin-gonic/gin"
+
 )
 
 type BaseResp struct {
@@ -27,6 +32,28 @@ func RespHttp200(ctx *gin.Context, err error, data interface{}) {
 	ctx.JSON(http.StatusOK, resp)
 }
 
+// warp error
+func WarpError(err constant.ErrInfo) error {
+	return status.Error(codes.Code(err.ErrCode), err.ErrMsg)
+}
+
+// parse error from server
+func RespHttp200S(ctx *gin.Context, err error, data interface{}) {
+	var resp BaseResp
+	switch e := err.(type) {
+	case constant.ErrInfo:
+		resp.Code = e.ErrCode
+	default:
+		s, ok := status.FromError(err)
+		if !ok {
+			return
+		}
+		resp.Code = int32(s.Code())
+		resp.ErrMsg = s.Message()
+	}
+	resp.Data = data
+	ctx.JSON(http.StatusOK, resp)
+}
 
 //func CheckErr(pb interface{}) constant.ErrInfo{
 //
diff --git a/pkg/proto/message_cms/message.pb.go b/pkg/proto/message_cms/message_cms.pb.go
similarity index 52%
rename from pkg/proto/message_cms/message.pb.go
rename to pkg/proto/message_cms/message_cms.pb.go
index 740ea304b..5a6c30d6e 100644
--- a/pkg/proto/message_cms/message.pb.go
+++ b/pkg/proto/message_cms/message_cms.pb.go
@@ -1,10 +1,10 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.26.0
-// 	protoc        v3.19.3
-// source: message_cms/message.proto
+// 	protoc-gen-go v1.27.1
+// 	protoc        v3.15.5
+// source: message_cms/message_cms.proto
 
-package messageCMS
+package message_cms
 
 import (
 	sdk_ws "Open_IM/pkg/proto/sdk_ws"
@@ -37,7 +37,7 @@ type BoradcastMessageReq struct {
 func (x *BoradcastMessageReq) Reset() {
 	*x = BoradcastMessageReq{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_message_cms_message_proto_msgTypes[0]
+		mi := &file_message_cms_message_cms_proto_msgTypes[0]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -50,7 +50,7 @@ func (x *BoradcastMessageReq) String() string {
 func (*BoradcastMessageReq) ProtoMessage() {}
 
 func (x *BoradcastMessageReq) ProtoReflect() protoreflect.Message {
-	mi := &file_message_cms_message_proto_msgTypes[0]
+	mi := &file_message_cms_message_cms_proto_msgTypes[0]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -63,7 +63,7 @@ func (x *BoradcastMessageReq) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use BoradcastMessageReq.ProtoReflect.Descriptor instead.
 func (*BoradcastMessageReq) Descriptor() ([]byte, []int) {
-	return file_message_cms_message_proto_rawDescGZIP(), []int{0}
+	return file_message_cms_message_cms_proto_rawDescGZIP(), []int{0}
 }
 
 func (x *BoradcastMessageReq) GetMessage() string {
@@ -89,7 +89,7 @@ type BoradcastMessageResp struct {
 func (x *BoradcastMessageResp) Reset() {
 	*x = BoradcastMessageResp{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_message_cms_message_proto_msgTypes[1]
+		mi := &file_message_cms_message_cms_proto_msgTypes[1]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -102,7 +102,7 @@ func (x *BoradcastMessageResp) String() string {
 func (*BoradcastMessageResp) ProtoMessage() {}
 
 func (x *BoradcastMessageResp) ProtoReflect() protoreflect.Message {
-	mi := &file_message_cms_message_proto_msgTypes[1]
+	mi := &file_message_cms_message_cms_proto_msgTypes[1]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -115,7 +115,7 @@ func (x *BoradcastMessageResp) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use BoradcastMessageResp.ProtoReflect.Descriptor instead.
 func (*BoradcastMessageResp) Descriptor() ([]byte, []int) {
-	return file_message_cms_message_proto_rawDescGZIP(), []int{1}
+	return file_message_cms_message_cms_proto_rawDescGZIP(), []int{1}
 }
 
 type MassSendMessageReq struct {
@@ -131,7 +131,7 @@ type MassSendMessageReq struct {
 func (x *MassSendMessageReq) Reset() {
 	*x = MassSendMessageReq{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_message_cms_message_proto_msgTypes[2]
+		mi := &file_message_cms_message_cms_proto_msgTypes[2]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -144,7 +144,7 @@ func (x *MassSendMessageReq) String() string {
 func (*MassSendMessageReq) ProtoMessage() {}
 
 func (x *MassSendMessageReq) ProtoReflect() protoreflect.Message {
-	mi := &file_message_cms_message_proto_msgTypes[2]
+	mi := &file_message_cms_message_cms_proto_msgTypes[2]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -157,7 +157,7 @@ func (x *MassSendMessageReq) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use MassSendMessageReq.ProtoReflect.Descriptor instead.
 func (*MassSendMessageReq) Descriptor() ([]byte, []int) {
-	return file_message_cms_message_proto_rawDescGZIP(), []int{2}
+	return file_message_cms_message_cms_proto_rawDescGZIP(), []int{2}
 }
 
 func (x *MassSendMessageReq) GetMessage() string {
@@ -190,7 +190,7 @@ type MassSendMessageResp struct {
 func (x *MassSendMessageResp) Reset() {
 	*x = MassSendMessageResp{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_message_cms_message_proto_msgTypes[3]
+		mi := &file_message_cms_message_cms_proto_msgTypes[3]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -203,7 +203,7 @@ func (x *MassSendMessageResp) String() string {
 func (*MassSendMessageResp) ProtoMessage() {}
 
 func (x *MassSendMessageResp) ProtoReflect() protoreflect.Message {
-	mi := &file_message_cms_message_proto_msgTypes[3]
+	mi := &file_message_cms_message_cms_proto_msgTypes[3]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -216,7 +216,7 @@ func (x *MassSendMessageResp) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use MassSendMessageResp.ProtoReflect.Descriptor instead.
 func (*MassSendMessageResp) Descriptor() ([]byte, []int) {
-	return file_message_cms_message_proto_rawDescGZIP(), []int{3}
+	return file_message_cms_message_cms_proto_rawDescGZIP(), []int{3}
 }
 
 type GetChatLogsReq struct {
@@ -237,7 +237,7 @@ type GetChatLogsReq struct {
 func (x *GetChatLogsReq) Reset() {
 	*x = GetChatLogsReq{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_message_cms_message_proto_msgTypes[4]
+		mi := &file_message_cms_message_cms_proto_msgTypes[4]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -250,7 +250,7 @@ func (x *GetChatLogsReq) String() string {
 func (*GetChatLogsReq) ProtoMessage() {}
 
 func (x *GetChatLogsReq) ProtoReflect() protoreflect.Message {
-	mi := &file_message_cms_message_proto_msgTypes[4]
+	mi := &file_message_cms_message_cms_proto_msgTypes[4]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -263,7 +263,7 @@ func (x *GetChatLogsReq) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetChatLogsReq.ProtoReflect.Descriptor instead.
 func (*GetChatLogsReq) Descriptor() ([]byte, []int) {
-	return file_message_cms_message_proto_rawDescGZIP(), []int{4}
+	return file_message_cms_message_cms_proto_rawDescGZIP(), []int{4}
 }
 
 func (x *GetChatLogsReq) GetContent() string {
@@ -343,7 +343,7 @@ type ChatLogs struct {
 func (x *ChatLogs) Reset() {
 	*x = ChatLogs{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_message_cms_message_proto_msgTypes[5]
+		mi := &file_message_cms_message_cms_proto_msgTypes[5]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -356,7 +356,7 @@ func (x *ChatLogs) String() string {
 func (*ChatLogs) ProtoMessage() {}
 
 func (x *ChatLogs) ProtoReflect() protoreflect.Message {
-	mi := &file_message_cms_message_proto_msgTypes[5]
+	mi := &file_message_cms_message_cms_proto_msgTypes[5]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -369,7 +369,7 @@ func (x *ChatLogs) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ChatLogs.ProtoReflect.Descriptor instead.
 func (*ChatLogs) Descriptor() ([]byte, []int) {
-	return file_message_cms_message_proto_rawDescGZIP(), []int{5}
+	return file_message_cms_message_cms_proto_rawDescGZIP(), []int{5}
 }
 
 func (x *ChatLogs) GetSessionType() int32 {
@@ -461,7 +461,7 @@ type GetChatLogsResp struct {
 func (x *GetChatLogsResp) Reset() {
 	*x = GetChatLogsResp{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_message_cms_message_proto_msgTypes[6]
+		mi := &file_message_cms_message_cms_proto_msgTypes[6]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -474,7 +474,7 @@ func (x *GetChatLogsResp) String() string {
 func (*GetChatLogsResp) ProtoMessage() {}
 
 func (x *GetChatLogsResp) ProtoReflect() protoreflect.Message {
-	mi := &file_message_cms_message_proto_msgTypes[6]
+	mi := &file_message_cms_message_cms_proto_msgTypes[6]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -487,7 +487,7 @@ func (x *GetChatLogsResp) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetChatLogsResp.ProtoReflect.Descriptor instead.
 func (*GetChatLogsResp) Descriptor() ([]byte, []int) {
-	return file_message_cms_message_proto_rawDescGZIP(), []int{6}
+	return file_message_cms_message_cms_proto_rawDescGZIP(), []int{6}
 }
 
 func (x *GetChatLogsResp) GetChatLogs() []*ChatLogs {
@@ -516,7 +516,7 @@ type WithdrawMessageReq struct {
 func (x *WithdrawMessageReq) Reset() {
 	*x = WithdrawMessageReq{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_message_cms_message_proto_msgTypes[7]
+		mi := &file_message_cms_message_cms_proto_msgTypes[7]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -529,7 +529,7 @@ func (x *WithdrawMessageReq) String() string {
 func (*WithdrawMessageReq) ProtoMessage() {}
 
 func (x *WithdrawMessageReq) ProtoReflect() protoreflect.Message {
-	mi := &file_message_cms_message_proto_msgTypes[7]
+	mi := &file_message_cms_message_cms_proto_msgTypes[7]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -542,7 +542,7 @@ func (x *WithdrawMessageReq) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use WithdrawMessageReq.ProtoReflect.Descriptor instead.
 func (*WithdrawMessageReq) Descriptor() ([]byte, []int) {
-	return file_message_cms_message_proto_rawDescGZIP(), []int{7}
+	return file_message_cms_message_cms_proto_rawDescGZIP(), []int{7}
 }
 
 func (x *WithdrawMessageReq) GetServerMsgId() string {
@@ -568,7 +568,7 @@ type WithdrawMessageResp struct {
 func (x *WithdrawMessageResp) Reset() {
 	*x = WithdrawMessageResp{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_message_cms_message_proto_msgTypes[8]
+		mi := &file_message_cms_message_cms_proto_msgTypes[8]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -581,7 +581,7 @@ func (x *WithdrawMessageResp) String() string {
 func (*WithdrawMessageResp) ProtoMessage() {}
 
 func (x *WithdrawMessageResp) ProtoReflect() protoreflect.Message {
-	mi := &file_message_cms_message_proto_msgTypes[8]
+	mi := &file_message_cms_message_cms_proto_msgTypes[8]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -594,151 +594,154 @@ func (x *WithdrawMessageResp) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use WithdrawMessageResp.ProtoReflect.Descriptor instead.
 func (*WithdrawMessageResp) Descriptor() ([]byte, []int) {
-	return file_message_cms_message_proto_rawDescGZIP(), []int{8}
-}
-
-var File_message_cms_message_proto protoreflect.FileDescriptor
-
-var file_message_cms_message_proto_rawDesc = []byte{
-	0x0a, 0x19, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6d, 0x73, 0x2f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x1a, 0x21, 0x4f, 0x70, 0x65, 0x6e, 0x5f, 0x49, 0x4d, 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, 0x51, 0x0a, 0x13, 0x42, 0x6f, 0x72, 0x61, 0x64,
-	0x63, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x18,
-	0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 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, 0x16, 0x0a, 0x14, 0x42, 0x6f,
-	0x72, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65,
-	0x73, 0x70, 0x22, 0x6a, 0x0a, 0x12, 0x4d, 0x61, 0x73, 0x73, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x07, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b,
-	0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x15,
-	0x0a, 0x13, 0x4d, 0x61, 0x73, 0x73, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9c, 0x02, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61,
-	0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74,
-	0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65,
-	0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72,
-	0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f,
-	0x75, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x65, 0x73, 0x73,
-	0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53,
-	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f,
-	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x0a,
-	0x50, 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, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
-	0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x49, 0x44, 0x22, 0xf0, 0x02, 0x0a, 0x08, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67,
-	0x73, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54,
-	0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79,
-	0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
-	0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e,
-	0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x53,
-	0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a,
-	0x08, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x63,
-	0x69, 0x76, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0f, 0x52, 0x65, 0x63, 0x69, 0x76, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x4e,
-	0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x65, 0x63, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x52, 0x65, 0x63, 0x69, 0x76, 0x65, 0x72, 0x49,
-	0x64, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65,
-	0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
-	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x57, 0x68, 0x6f, 0x6c, 0x65,
-	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x57,
-	0x68, 0x6f, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47,
-	0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72,
-	0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61,
-	0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e,
-	0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x22, 0x87, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43,
-	0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x08, 0x43,
-	0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73,
-	0x52, 0x08, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 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, 0x22, 0x58, 0x0a, 0x12, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65,
-	0x72, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x53, 0x65,
-	0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x49, 0x64, 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, 0x15, 0x0a, 0x13, 0x57,
-	0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65,
-	0x73, 0x70, 0x32, 0xb8, 0x02, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4f,
-	0x0a, 0x10, 0x42, 0x6f, 0x72, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x12, 0x1c, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x42, 0x6f, 0x72,
-	0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71,
-	0x1a, 0x1d, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x61, 0x64,
-	0x63, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12,
-	0x4c, 0x0a, 0x0f, 0x4d, 0x61, 0x73, 0x73, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x12, 0x1b, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x61, 0x73,
-	0x73, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a,
-	0x1c, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x61, 0x73, 0x73, 0x53, 0x65,
-	0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a,
-	0x0b, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x17, 0x2e, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f,
-	0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e,
-	0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12,
-	0x4c, 0x0a, 0x0f, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x12, 0x1b, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x57, 0x69, 0x74,
-	0x68, 0x64, 0x72, 0x61, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a,
-	0x1c, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72,
-	0x61, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x42, 0x1a, 0x5a,
-	0x18, 0x2e, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6d, 0x73, 0x3b, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x4d, 0x53, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	return file_message_cms_message_cms_proto_rawDescGZIP(), []int{8}
+}
+
+var File_message_cms_message_cms_proto protoreflect.FileDescriptor
+
+var file_message_cms_message_cms_proto_rawDesc = []byte{
+	0x0a, 0x1d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6d, 0x73, 0x2f, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
+	0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6d, 0x73, 0x1a, 0x21, 0x4f, 0x70,
+	0x65, 0x6e, 0x5f, 0x49, 0x4d, 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,
+	0x51, 0x0a, 0x13, 0x42, 0x6f, 0x72, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	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, 0x16, 0x0a, 0x14, 0x42, 0x6f, 0x72, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6a, 0x0a, 0x12, 0x4d, 0x61,
+	0x73, 0x73, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71,
+	0x12, 0x18, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x73,
+	0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x55, 0x73, 0x65,
+	0x72, 0x49, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x15, 0x0a, 0x13, 0x4d, 0x61, 0x73, 0x73, 0x53, 0x65,
+	0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9c, 0x02,
+	0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71,
+	0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73,
+	0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72,
+	0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
+	0x44, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65,
+	0x12, 0x20, 0x0a, 0x0b, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18,
+	0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79,
+	0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70,
+	0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
+	0x54, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x50, 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,
+	0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70,
+	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0xf0, 0x02, 0x0a,
+	0x08, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x65, 0x73,
+	0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
+	0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x43,
+	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a,
+	0x0e, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x69, 0x63,
+	0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49,
+	0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49,
+	0x64, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x63, 0x69, 0x76, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b,
+	0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x52, 0x65, 0x63, 0x69,
+	0x76, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52,
+	0x65, 0x63, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+	0x52, 0x65, 0x63, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x65, 0x61,
+	0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12,
+	0x22, 0x0a, 0x0c, 0x57, 0x68, 0x6f, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18,
+	0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x57, 0x68, 0x6f, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74,
+	0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x09,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1c, 0x0a,
+	0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44,
+	0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x22,
+	0x8b, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52,
+	0x65, 0x73, 0x70, 0x12, 0x31, 0x0a, 0x08, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x18,
+	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f,
+	0x63, 0x6d, 0x73, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x08, 0x43, 0x68,
+	0x61, 0x74, 0x4c, 0x6f, 0x67, 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, 0x22, 0x58, 0x0a,
+	0x12, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67,
+	0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
+	0x4d, 0x73, 0x67, 0x49, 0x64, 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, 0x15, 0x0a, 0x13, 0x57, 0x69, 0x74, 0x68, 0x64,
+	0x72, 0x61, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x32, 0xdb,
+	0x02, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x4d, 0x53, 0x12, 0x57, 0x0a,
+	0x10, 0x42, 0x6f, 0x72, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x12, 0x20, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6d, 0x73, 0x2e,
+	0x42, 0x6f, 0x72, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6d,
+	0x73, 0x2e, 0x42, 0x6f, 0x72, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x54, 0x0a, 0x0f, 0x4d, 0x61, 0x73, 0x73, 0x53, 0x65,
+	0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x2e, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x4d, 0x61, 0x73, 0x73, 0x53, 0x65, 0x6e, 0x64,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x4d, 0x61, 0x73, 0x73, 0x53, 0x65, 0x6e,
+	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x48, 0x0a, 0x0b,
+	0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1b, 0x2e, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61,
+	0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f,
+	0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x54, 0x0a, 0x0f, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72,
+	0x61, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x2e, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x6d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6d, 0x73, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61,
+	0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x42, 0x1b, 0x5a, 0x19,
+	0x2e, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6d, 0x73, 0x3b, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6d, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x33,
 }
 
 var (
-	file_message_cms_message_proto_rawDescOnce sync.Once
-	file_message_cms_message_proto_rawDescData = file_message_cms_message_proto_rawDesc
+	file_message_cms_message_cms_proto_rawDescOnce sync.Once
+	file_message_cms_message_cms_proto_rawDescData = file_message_cms_message_cms_proto_rawDesc
 )
 
-func file_message_cms_message_proto_rawDescGZIP() []byte {
-	file_message_cms_message_proto_rawDescOnce.Do(func() {
-		file_message_cms_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_message_cms_message_proto_rawDescData)
+func file_message_cms_message_cms_proto_rawDescGZIP() []byte {
+	file_message_cms_message_cms_proto_rawDescOnce.Do(func() {
+		file_message_cms_message_cms_proto_rawDescData = protoimpl.X.CompressGZIP(file_message_cms_message_cms_proto_rawDescData)
 	})
-	return file_message_cms_message_proto_rawDescData
-}
-
-var file_message_cms_message_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
-var file_message_cms_message_proto_goTypes = []interface{}{
-	(*BoradcastMessageReq)(nil),       // 0: message.BoradcastMessageReq
-	(*BoradcastMessageResp)(nil),      // 1: message.BoradcastMessageResp
-	(*MassSendMessageReq)(nil),        // 2: message.MassSendMessageReq
-	(*MassSendMessageResp)(nil),       // 3: message.MassSendMessageResp
-	(*GetChatLogsReq)(nil),            // 4: message.GetChatLogsReq
-	(*ChatLogs)(nil),                  // 5: message.ChatLogs
-	(*GetChatLogsResp)(nil),           // 6: message.GetChatLogsResp
-	(*WithdrawMessageReq)(nil),        // 7: message.WithdrawMessageReq
-	(*WithdrawMessageResp)(nil),       // 8: message.WithdrawMessageResp
+	return file_message_cms_message_cms_proto_rawDescData
+}
+
+var file_message_cms_message_cms_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
+var file_message_cms_message_cms_proto_goTypes = []interface{}{
+	(*BoradcastMessageReq)(nil),       // 0: message_cms.BoradcastMessageReq
+	(*BoradcastMessageResp)(nil),      // 1: message_cms.BoradcastMessageResp
+	(*MassSendMessageReq)(nil),        // 2: message_cms.MassSendMessageReq
+	(*MassSendMessageResp)(nil),       // 3: message_cms.MassSendMessageResp
+	(*GetChatLogsReq)(nil),            // 4: message_cms.GetChatLogsReq
+	(*ChatLogs)(nil),                  // 5: message_cms.ChatLogs
+	(*GetChatLogsResp)(nil),           // 6: message_cms.GetChatLogsResp
+	(*WithdrawMessageReq)(nil),        // 7: message_cms.WithdrawMessageReq
+	(*WithdrawMessageResp)(nil),       // 8: message_cms.WithdrawMessageResp
 	(*sdk_ws.RequestPagination)(nil),  // 9: server_api_params.RequestPagination
 	(*sdk_ws.ResponsePagination)(nil), // 10: server_api_params.ResponsePagination
 }
-var file_message_cms_message_proto_depIdxs = []int32{
-	9,  // 0: message.GetChatLogsReq.Pagination:type_name -> server_api_params.RequestPagination
-	5,  // 1: message.GetChatLogsResp.ChatLogs:type_name -> message.ChatLogs
-	10, // 2: message.GetChatLogsResp.Pagination:type_name -> server_api_params.ResponsePagination
-	0,  // 3: message.message.BoradcastMessage:input_type -> message.BoradcastMessageReq
-	2,  // 4: message.message.MassSendMessage:input_type -> message.MassSendMessageReq
-	4,  // 5: message.message.GetChatLogs:input_type -> message.GetChatLogsReq
-	7,  // 6: message.message.WithdrawMessage:input_type -> message.WithdrawMessageReq
-	1,  // 7: message.message.BoradcastMessage:output_type -> message.BoradcastMessageResp
-	3,  // 8: message.message.MassSendMessage:output_type -> message.MassSendMessageResp
-	6,  // 9: message.message.GetChatLogs:output_type -> message.GetChatLogsResp
-	8,  // 10: message.message.WithdrawMessage:output_type -> message.WithdrawMessageResp
+var file_message_cms_message_cms_proto_depIdxs = []int32{
+	9,  // 0: message_cms.GetChatLogsReq.Pagination:type_name -> server_api_params.RequestPagination
+	5,  // 1: message_cms.GetChatLogsResp.ChatLogs:type_name -> message_cms.ChatLogs
+	10, // 2: message_cms.GetChatLogsResp.Pagination:type_name -> server_api_params.ResponsePagination
+	0,  // 3: message_cms.messageCMS.BoradcastMessage:input_type -> message_cms.BoradcastMessageReq
+	2,  // 4: message_cms.messageCMS.MassSendMessage:input_type -> message_cms.MassSendMessageReq
+	4,  // 5: message_cms.messageCMS.GetChatLogs:input_type -> message_cms.GetChatLogsReq
+	7,  // 6: message_cms.messageCMS.WithdrawMessage:input_type -> message_cms.WithdrawMessageReq
+	1,  // 7: message_cms.messageCMS.BoradcastMessage:output_type -> message_cms.BoradcastMessageResp
+	3,  // 8: message_cms.messageCMS.MassSendMessage:output_type -> message_cms.MassSendMessageResp
+	6,  // 9: message_cms.messageCMS.GetChatLogs:output_type -> message_cms.GetChatLogsResp
+	8,  // 10: message_cms.messageCMS.WithdrawMessage:output_type -> message_cms.WithdrawMessageResp
 	7,  // [7:11] is the sub-list for method output_type
 	3,  // [3:7] is the sub-list for method input_type
 	3,  // [3:3] is the sub-list for extension type_name
@@ -746,13 +749,13 @@ var file_message_cms_message_proto_depIdxs = []int32{
 	0,  // [0:3] is the sub-list for field type_name
 }
 
-func init() { file_message_cms_message_proto_init() }
-func file_message_cms_message_proto_init() {
-	if File_message_cms_message_proto != nil {
+func init() { file_message_cms_message_cms_proto_init() }
+func file_message_cms_message_cms_proto_init() {
+	if File_message_cms_message_cms_proto != nil {
 		return
 	}
 	if !protoimpl.UnsafeEnabled {
-		file_message_cms_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+		file_message_cms_message_cms_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*BoradcastMessageReq); i {
 			case 0:
 				return &v.state
@@ -764,7 +767,7 @@ func file_message_cms_message_proto_init() {
 				return nil
 			}
 		}
-		file_message_cms_message_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+		file_message_cms_message_cms_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*BoradcastMessageResp); i {
 			case 0:
 				return &v.state
@@ -776,7 +779,7 @@ func file_message_cms_message_proto_init() {
 				return nil
 			}
 		}
-		file_message_cms_message_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+		file_message_cms_message_cms_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*MassSendMessageReq); i {
 			case 0:
 				return &v.state
@@ -788,7 +791,7 @@ func file_message_cms_message_proto_init() {
 				return nil
 			}
 		}
-		file_message_cms_message_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+		file_message_cms_message_cms_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*MassSendMessageResp); i {
 			case 0:
 				return &v.state
@@ -800,7 +803,7 @@ func file_message_cms_message_proto_init() {
 				return nil
 			}
 		}
-		file_message_cms_message_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+		file_message_cms_message_cms_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*GetChatLogsReq); i {
 			case 0:
 				return &v.state
@@ -812,7 +815,7 @@ func file_message_cms_message_proto_init() {
 				return nil
 			}
 		}
-		file_message_cms_message_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+		file_message_cms_message_cms_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*ChatLogs); i {
 			case 0:
 				return &v.state
@@ -824,7 +827,7 @@ func file_message_cms_message_proto_init() {
 				return nil
 			}
 		}
-		file_message_cms_message_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+		file_message_cms_message_cms_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*GetChatLogsResp); i {
 			case 0:
 				return &v.state
@@ -836,7 +839,7 @@ func file_message_cms_message_proto_init() {
 				return nil
 			}
 		}
-		file_message_cms_message_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+		file_message_cms_message_cms_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*WithdrawMessageReq); i {
 			case 0:
 				return &v.state
@@ -848,7 +851,7 @@ func file_message_cms_message_proto_init() {
 				return nil
 			}
 		}
-		file_message_cms_message_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+		file_message_cms_message_cms_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*WithdrawMessageResp); i {
 			case 0:
 				return &v.state
@@ -865,20 +868,20 @@ func file_message_cms_message_proto_init() {
 	out := protoimpl.TypeBuilder{
 		File: protoimpl.DescBuilder{
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_message_cms_message_proto_rawDesc,
+			RawDescriptor: file_message_cms_message_cms_proto_rawDesc,
 			NumEnums:      0,
 			NumMessages:   9,
 			NumExtensions: 0,
 			NumServices:   1,
 		},
-		GoTypes:           file_message_cms_message_proto_goTypes,
-		DependencyIndexes: file_message_cms_message_proto_depIdxs,
-		MessageInfos:      file_message_cms_message_proto_msgTypes,
+		GoTypes:           file_message_cms_message_cms_proto_goTypes,
+		DependencyIndexes: file_message_cms_message_cms_proto_depIdxs,
+		MessageInfos:      file_message_cms_message_cms_proto_msgTypes,
 	}.Build()
-	File_message_cms_message_proto = out.File
-	file_message_cms_message_proto_rawDesc = nil
-	file_message_cms_message_proto_goTypes = nil
-	file_message_cms_message_proto_depIdxs = nil
+	File_message_cms_message_cms_proto = out.File
+	file_message_cms_message_cms_proto_rawDesc = nil
+	file_message_cms_message_cms_proto_goTypes = nil
+	file_message_cms_message_cms_proto_depIdxs = nil
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -889,182 +892,182 @@ var _ grpc.ClientConnInterface
 // is compatible with the grpc package it is being compiled against.
 const _ = grpc.SupportPackageIsVersion6
 
-// MessageClient is the client API for Message service.
+// MessageCMSClient is the client API for MessageCMS service.
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type MessageClient interface {
+type MessageCMSClient interface {
 	BoradcastMessage(ctx context.Context, in *BoradcastMessageReq, opts ...grpc.CallOption) (*BoradcastMessageResp, error)
 	MassSendMessage(ctx context.Context, in *MassSendMessageReq, opts ...grpc.CallOption) (*MassSendMessageResp, error)
 	GetChatLogs(ctx context.Context, in *GetChatLogsReq, opts ...grpc.CallOption) (*GetChatLogsResp, error)
 	WithdrawMessage(ctx context.Context, in *WithdrawMessageReq, opts ...grpc.CallOption) (*WithdrawMessageResp, error)
 }
 
-type messageClient struct {
+type messageCMSClient struct {
 	cc grpc.ClientConnInterface
 }
 
-func NewMessageClient(cc grpc.ClientConnInterface) MessageClient {
-	return &messageClient{cc}
+func NewMessageCMSClient(cc grpc.ClientConnInterface) MessageCMSClient {
+	return &messageCMSClient{cc}
 }
 
-func (c *messageClient) BoradcastMessage(ctx context.Context, in *BoradcastMessageReq, opts ...grpc.CallOption) (*BoradcastMessageResp, error) {
+func (c *messageCMSClient) BoradcastMessage(ctx context.Context, in *BoradcastMessageReq, opts ...grpc.CallOption) (*BoradcastMessageResp, error) {
 	out := new(BoradcastMessageResp)
-	err := c.cc.Invoke(ctx, "/message.message/BoradcastMessage", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/message_cms.messageCMS/BoradcastMessage", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
 	return out, nil
 }
 
-func (c *messageClient) MassSendMessage(ctx context.Context, in *MassSendMessageReq, opts ...grpc.CallOption) (*MassSendMessageResp, error) {
+func (c *messageCMSClient) MassSendMessage(ctx context.Context, in *MassSendMessageReq, opts ...grpc.CallOption) (*MassSendMessageResp, error) {
 	out := new(MassSendMessageResp)
-	err := c.cc.Invoke(ctx, "/message.message/MassSendMessage", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/message_cms.messageCMS/MassSendMessage", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
 	return out, nil
 }
 
-func (c *messageClient) GetChatLogs(ctx context.Context, in *GetChatLogsReq, opts ...grpc.CallOption) (*GetChatLogsResp, error) {
+func (c *messageCMSClient) GetChatLogs(ctx context.Context, in *GetChatLogsReq, opts ...grpc.CallOption) (*GetChatLogsResp, error) {
 	out := new(GetChatLogsResp)
-	err := c.cc.Invoke(ctx, "/message.message/GetChatLogs", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/message_cms.messageCMS/GetChatLogs", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
 	return out, nil
 }
 
-func (c *messageClient) WithdrawMessage(ctx context.Context, in *WithdrawMessageReq, opts ...grpc.CallOption) (*WithdrawMessageResp, error) {
+func (c *messageCMSClient) WithdrawMessage(ctx context.Context, in *WithdrawMessageReq, opts ...grpc.CallOption) (*WithdrawMessageResp, error) {
 	out := new(WithdrawMessageResp)
-	err := c.cc.Invoke(ctx, "/message.message/WithdrawMessage", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/message_cms.messageCMS/WithdrawMessage", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
 	return out, nil
 }
 
-// MessageServer is the server API for Message service.
-type MessageServer interface {
+// MessageCMSServer is the server API for MessageCMS service.
+type MessageCMSServer interface {
 	BoradcastMessage(context.Context, *BoradcastMessageReq) (*BoradcastMessageResp, error)
 	MassSendMessage(context.Context, *MassSendMessageReq) (*MassSendMessageResp, error)
 	GetChatLogs(context.Context, *GetChatLogsReq) (*GetChatLogsResp, error)
 	WithdrawMessage(context.Context, *WithdrawMessageReq) (*WithdrawMessageResp, error)
 }
 
-// UnimplementedMessageServer can be embedded to have forward compatible implementations.
-type UnimplementedMessageServer struct {
+// UnimplementedMessageCMSServer can be embedded to have forward compatible implementations.
+type UnimplementedMessageCMSServer struct {
 }
 
-func (*UnimplementedMessageServer) BoradcastMessage(context.Context, *BoradcastMessageReq) (*BoradcastMessageResp, error) {
+func (*UnimplementedMessageCMSServer) BoradcastMessage(context.Context, *BoradcastMessageReq) (*BoradcastMessageResp, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method BoradcastMessage not implemented")
 }
-func (*UnimplementedMessageServer) MassSendMessage(context.Context, *MassSendMessageReq) (*MassSendMessageResp, error) {
+func (*UnimplementedMessageCMSServer) MassSendMessage(context.Context, *MassSendMessageReq) (*MassSendMessageResp, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method MassSendMessage not implemented")
 }
-func (*UnimplementedMessageServer) GetChatLogs(context.Context, *GetChatLogsReq) (*GetChatLogsResp, error) {
+func (*UnimplementedMessageCMSServer) GetChatLogs(context.Context, *GetChatLogsReq) (*GetChatLogsResp, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetChatLogs not implemented")
 }
-func (*UnimplementedMessageServer) WithdrawMessage(context.Context, *WithdrawMessageReq) (*WithdrawMessageResp, error) {
+func (*UnimplementedMessageCMSServer) WithdrawMessage(context.Context, *WithdrawMessageReq) (*WithdrawMessageResp, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method WithdrawMessage not implemented")
 }
 
-func RegisterMessageServer(s *grpc.Server, srv MessageServer) {
-	s.RegisterService(&_Message_serviceDesc, srv)
+func RegisterMessageCMSServer(s *grpc.Server, srv MessageCMSServer) {
+	s.RegisterService(&_MessageCMS_serviceDesc, srv)
 }
 
-func _Message_BoradcastMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+func _MessageCMS_BoradcastMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(BoradcastMessageReq)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(MessageServer).BoradcastMessage(ctx, in)
+		return srv.(MessageCMSServer).BoradcastMessage(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/message.message/BoradcastMessage",
+		FullMethod: "/message_cms.messageCMS/BoradcastMessage",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).BoradcastMessage(ctx, req.(*BoradcastMessageReq))
+		return srv.(MessageCMSServer).BoradcastMessage(ctx, req.(*BoradcastMessageReq))
 	}
 	return interceptor(ctx, in, info, handler)
 }
 
-func _Message_MassSendMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+func _MessageCMS_MassSendMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(MassSendMessageReq)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(MessageServer).MassSendMessage(ctx, in)
+		return srv.(MessageCMSServer).MassSendMessage(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/message.message/MassSendMessage",
+		FullMethod: "/message_cms.messageCMS/MassSendMessage",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).MassSendMessage(ctx, req.(*MassSendMessageReq))
+		return srv.(MessageCMSServer).MassSendMessage(ctx, req.(*MassSendMessageReq))
 	}
 	return interceptor(ctx, in, info, handler)
 }
 
-func _Message_GetChatLogs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+func _MessageCMS_GetChatLogs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(GetChatLogsReq)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(MessageServer).GetChatLogs(ctx, in)
+		return srv.(MessageCMSServer).GetChatLogs(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/message.message/GetChatLogs",
+		FullMethod: "/message_cms.messageCMS/GetChatLogs",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).GetChatLogs(ctx, req.(*GetChatLogsReq))
+		return srv.(MessageCMSServer).GetChatLogs(ctx, req.(*GetChatLogsReq))
 	}
 	return interceptor(ctx, in, info, handler)
 }
 
-func _Message_WithdrawMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+func _MessageCMS_WithdrawMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(WithdrawMessageReq)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(MessageServer).WithdrawMessage(ctx, in)
+		return srv.(MessageCMSServer).WithdrawMessage(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/message.message/WithdrawMessage",
+		FullMethod: "/message_cms.messageCMS/WithdrawMessage",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(MessageServer).WithdrawMessage(ctx, req.(*WithdrawMessageReq))
+		return srv.(MessageCMSServer).WithdrawMessage(ctx, req.(*WithdrawMessageReq))
 	}
 	return interceptor(ctx, in, info, handler)
 }
 
-var _Message_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "message.message",
-	HandlerType: (*MessageServer)(nil),
+var _MessageCMS_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "message_cms.messageCMS",
+	HandlerType: (*MessageCMSServer)(nil),
 	Methods: []grpc.MethodDesc{
 		{
 			MethodName: "BoradcastMessage",
-			Handler:    _Message_BoradcastMessage_Handler,
+			Handler:    _MessageCMS_BoradcastMessage_Handler,
 		},
 		{
 			MethodName: "MassSendMessage",
-			Handler:    _Message_MassSendMessage_Handler,
+			Handler:    _MessageCMS_MassSendMessage_Handler,
 		},
 		{
 			MethodName: "GetChatLogs",
-			Handler:    _Message_GetChatLogs_Handler,
+			Handler:    _MessageCMS_GetChatLogs_Handler,
 		},
 		{
 			MethodName: "WithdrawMessage",
-			Handler:    _Message_WithdrawMessage_Handler,
+			Handler:    _MessageCMS_WithdrawMessage_Handler,
 		},
 	},
 	Streams:  []grpc.StreamDesc{},
-	Metadata: "message_cms/message.proto",
+	Metadata: "message_cms/message_cms.proto",
 }
diff --git a/pkg/proto/message_cms/message.proto b/pkg/proto/message_cms/message_cms.proto
similarity index 94%
rename from pkg/proto/message_cms/message.proto
rename to pkg/proto/message_cms/message_cms.proto
index d8eb8a120..80b5e3102 100644
--- a/pkg/proto/message_cms/message.proto
+++ b/pkg/proto/message_cms/message_cms.proto
@@ -1,7 +1,7 @@
 syntax = "proto3";
 import "Open_IM/pkg/proto/sdk_ws/ws.proto";
-option go_package = "./message_cms;messageCMS";
-package message;
+option go_package = "./message_cms;message_cms";
+package message_cms;
 
 message BoradcastMessageReq {
     string Message = 1;
@@ -62,7 +62,7 @@ message WithdrawMessageResp {
     
 }
 
-service message {
+service messageCMS {
     rpc BoradcastMessage(BoradcastMessageReq) returns(BoradcastMessageResp);
     rpc MassSendMessage(MassSendMessageReq) returns(MassSendMessageResp);
     rpc GetChatLogs(GetChatLogsReq) returns(GetChatLogsResp);
diff --git a/pkg/proto/proto_dir.cfg b/pkg/proto/proto_dir.cfg
index 0d67a8dfe..af6ff1905 100644
--- a/pkg/proto/proto_dir.cfg
+++ b/pkg/proto/proto_dir.cfg
@@ -1,6 +1,6 @@
 
 all_proto=(
-             message_cms/message.proto
+             message_cms/message_cms.proto
             #statistics/statistics.proto
             # auth/auth.proto
             # friend/friend.proto