pull/218/head
wangchuxiao 3 years ago
parent 7827749453
commit 169665da32

@ -1,20 +0,0 @@
package msg
import (
"Open_IM/pkg/common/constant"
"Open_IM/pkg/common/log"
"Open_IM/pkg/utils"
)
func SetTagNotification(operationID, sendID, recvID, content string, contentType int32) {
log.NewInfo(operationID, utils.GetSelfFuncName(), "args: ", sendID, recvID, content, contentType)
var n NotificationMsg
n.SendID = sendID
n.RecvID = recvID
n.ContentType = contentType
n.SessionType = constant.SingleChatType
n.MsgFrom = constant.UserMsgType
n.OperationID = operationID
n.Content = []byte(content)
Notification(&n)
}

@ -0,0 +1,39 @@
package msg
import (
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/constant"
"Open_IM/pkg/common/log"
"Open_IM/pkg/grpc-etcdv3/getcdv3"
pbChat "Open_IM/pkg/proto/chat"
pbCommon "Open_IM/pkg/proto/sdk_ws"
"Open_IM/pkg/utils"
"context"
"strings"
)
func TagSendMessage(operationID, sendID, recvID, content string, contentType int32) {
log.NewInfo(operationID, utils.GetSelfFuncName(), "args: ", sendID, recvID, content, contentType)
var req pbChat.SendMsgReq
var msgData pbCommon.MsgData
msgData.SendID = sendID
msgData.RecvID = recvID
msgData.ContentType = contentType
msgData.SessionType = constant.SingleChatType
msgData.MsgFrom = constant.UserMsgType
msgData.Content = []byte(content)
msgData.Options = map[string]bool{}
msgData.Options[constant.IsSenderConversationUpdate] = false
req.MsgData = &msgData
req.OperationID = operationID
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName)
client := pbChat.NewChatClient(etcdConn)
respPb, err := client.SendMsg(context.Background(), &req)
if err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), "send msg failed", err.Error())
return
}
if respPb.ErrCode != 0 {
log.NewError(operationID, utils.GetSelfFuncName(), "send tag msg failed ", respPb)
}
}

@ -78,7 +78,7 @@ func (s *officeServer) GetUserTags(_ context.Context, req *pbOffice.GetUserTagsR
resp.CommonResp.ErrCode = constant.ErrDB.ErrCode
return resp, nil
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "tags: ", tags)
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "tags: ", tags)
for _, v := range tags {
tag := &pbOffice.Tag{
TagID: v.TagID,
@ -149,7 +149,7 @@ func (s *officeServer) SendMsg2Tag(_ context.Context, req *pbOffice.SendMsg2TagR
resp = &pbOffice.SendMsg2TagResp{CommonResp: &pbOffice.CommonResp{}}
userIDList, err := db.DB.GetUserIDListByTagID(req.SendID, req.TagID)
for _, userID := range userIDList {
msg.SetTagNotification(req.OperationID, req.SendID, userID, req.Content, req.ContentType)
msg.TagSendMessage(req.OperationID, req.SendID, userID, req.Content, req.ContentType)
}
if err := db.DB.SaveTagSendLog(req); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "SaveTagSendLog failed", err.Error())
@ -178,10 +178,23 @@ func (s *officeServer) GetTagSendLogs(_ context.Context, req *pbOffice.GetTagSen
resp.CommonResp.ErrCode = constant.ErrDB.ErrCode
return resp, nil
}
if err := utils.CopyStructFields(&resp.TagSendLogs, tagSendLogs); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
for _, v := range tagSendLogs {
var userList []*pbOffice.TagUser
for _, v2 := range v.TagUserList {
userList = append(userList, &pbOffice.TagUser{
UserID: v2.UserID,
UserName: v2.UserName,
})
}
resp.TagSendLogs = append(resp.TagSendLogs, &pbOffice.TagSendLog{
TagID: v.TagID,
TagName: v.TagName,
ContentType: v.ContentType,
Content: v.Content,
SendTime: v.SendTime,
TagUserList: userList,
})
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String())
return resp, nil
}

@ -3,6 +3,7 @@ package db
import (
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/constant"
"Open_IM/pkg/common/db/mysql_model/im_mysql_model"
"Open_IM/pkg/common/log"
pbMsg "Open_IM/pkg/proto/chat"
officePb "Open_IM/pkg/proto/office"
@ -520,15 +521,20 @@ func (d *DataBases) GetUserIDListByTagID(userID, tagID string) ([]string, error)
return tag.UserList, nil
}
type TagUser struct {
UserID string `bson:"userID"`
UserName string `bson:"userName"`
}
type TagSendLog struct {
TagID string `bson:"tagID"`
TagName string `bson:"tagName"`
SendID string `bson:"sendID"`
SenderPlatformID int32 `bson:"senderPlatformID"`
Content string `bson:"content"`
ContentType int32 `bson:"contentType"`
SendTime int64 `bson:"sendTime"`
UserList []string `bson:"userList"`
TagID string `bson:"tagID"`
TagName string `bson:"tagName"`
SendID string `bson:"sendID"`
SenderPlatformID int32 `bson:"senderPlatformID"`
Content string `bson:"content"`
ContentType int32 `bson:"contentType"`
SendTime int64 `bson:"sendTime"`
TagUserList []TagUser `bson:"userList"`
}
func (d *DataBases) SaveTagSendLog(sendReq *officePb.SendMsg2TagReq) error {
@ -545,7 +551,18 @@ func (d *DataBases) SaveTagSendLog(sendReq *officePb.SendMsg2TagReq) error {
Content: sendReq.Content,
ContentType: sendReq.ContentType,
SendTime: time.Now().Unix(),
UserList: tag.UserList,
}
for _, userID := range tag.UserList {
userName, err := im_mysql_model.GetUserNameByUserID(userID)
if err != nil {
log.NewError("", utils.GetSelfFuncName(), "GetUserNameByUserID failed", err.Error())
continue
}
tagUser := TagUser{
UserID: userID,
UserName: userName,
}
tagSendLog.TagUserList = append(tagSendLog.TagUserList, tagUser)
}
_, err := c.InsertOne(ctx, tagSendLog)
return err

@ -36,7 +36,7 @@ func (m *CommonResp) Reset() { *m = CommonResp{} }
func (m *CommonResp) String() string { return proto.CompactTextString(m) }
func (*CommonResp) ProtoMessage() {}
func (*CommonResp) Descriptor() ([]byte, []int) {
return fileDescriptor_office_4149f396a2012e50, []int{0}
return fileDescriptor_office_fb25433b0aa4afaa, []int{0}
}
func (m *CommonResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommonResp.Unmarshal(m, b)
@ -82,7 +82,7 @@ func (m *TagUser) Reset() { *m = TagUser{} }
func (m *TagUser) String() string { return proto.CompactTextString(m) }
func (*TagUser) ProtoMessage() {}
func (*TagUser) Descriptor() ([]byte, []int) {
return fileDescriptor_office_4149f396a2012e50, []int{1}
return fileDescriptor_office_fb25433b0aa4afaa, []int{1}
}
func (m *TagUser) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TagUser.Unmarshal(m, b)
@ -129,7 +129,7 @@ func (m *Tag) Reset() { *m = Tag{} }
func (m *Tag) String() string { return proto.CompactTextString(m) }
func (*Tag) ProtoMessage() {}
func (*Tag) Descriptor() ([]byte, []int) {
return fileDescriptor_office_4149f396a2012e50, []int{2}
return fileDescriptor_office_fb25433b0aa4afaa, []int{2}
}
func (m *Tag) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Tag.Unmarshal(m, b)
@ -182,7 +182,7 @@ func (m *GetUserTagsReq) Reset() { *m = GetUserTagsReq{} }
func (m *GetUserTagsReq) String() string { return proto.CompactTextString(m) }
func (*GetUserTagsReq) ProtoMessage() {}
func (*GetUserTagsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_office_4149f396a2012e50, []int{3}
return fileDescriptor_office_fb25433b0aa4afaa, []int{3}
}
func (m *GetUserTagsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserTagsReq.Unmarshal(m, b)
@ -228,7 +228,7 @@ func (m *GetUserTagsResp) Reset() { *m = GetUserTagsResp{} }
func (m *GetUserTagsResp) String() string { return proto.CompactTextString(m) }
func (*GetUserTagsResp) ProtoMessage() {}
func (*GetUserTagsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_office_4149f396a2012e50, []int{4}
return fileDescriptor_office_fb25433b0aa4afaa, []int{4}
}
func (m *GetUserTagsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserTagsResp.Unmarshal(m, b)
@ -276,7 +276,7 @@ func (m *CreateTagReq) Reset() { *m = CreateTagReq{} }
func (m *CreateTagReq) String() string { return proto.CompactTextString(m) }
func (*CreateTagReq) ProtoMessage() {}
func (*CreateTagReq) Descriptor() ([]byte, []int) {
return fileDescriptor_office_4149f396a2012e50, []int{5}
return fileDescriptor_office_fb25433b0aa4afaa, []int{5}
}
func (m *CreateTagReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateTagReq.Unmarshal(m, b)
@ -335,7 +335,7 @@ func (m *CreateTagResp) Reset() { *m = CreateTagResp{} }
func (m *CreateTagResp) String() string { return proto.CompactTextString(m) }
func (*CreateTagResp) ProtoMessage() {}
func (*CreateTagResp) Descriptor() ([]byte, []int) {
return fileDescriptor_office_4149f396a2012e50, []int{6}
return fileDescriptor_office_fb25433b0aa4afaa, []int{6}
}
func (m *CreateTagResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateTagResp.Unmarshal(m, b)
@ -375,7 +375,7 @@ func (m *DeleteTagReq) Reset() { *m = DeleteTagReq{} }
func (m *DeleteTagReq) String() string { return proto.CompactTextString(m) }
func (*DeleteTagReq) ProtoMessage() {}
func (*DeleteTagReq) Descriptor() ([]byte, []int) {
return fileDescriptor_office_4149f396a2012e50, []int{7}
return fileDescriptor_office_fb25433b0aa4afaa, []int{7}
}
func (m *DeleteTagReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteTagReq.Unmarshal(m, b)
@ -427,7 +427,7 @@ func (m *DeleteTagResp) Reset() { *m = DeleteTagResp{} }
func (m *DeleteTagResp) String() string { return proto.CompactTextString(m) }
func (*DeleteTagResp) ProtoMessage() {}
func (*DeleteTagResp) Descriptor() ([]byte, []int) {
return fileDescriptor_office_4149f396a2012e50, []int{8}
return fileDescriptor_office_fb25433b0aa4afaa, []int{8}
}
func (m *DeleteTagResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteTagResp.Unmarshal(m, b)
@ -470,7 +470,7 @@ func (m *SetTagReq) Reset() { *m = SetTagReq{} }
func (m *SetTagReq) String() string { return proto.CompactTextString(m) }
func (*SetTagReq) ProtoMessage() {}
func (*SetTagReq) Descriptor() ([]byte, []int) {
return fileDescriptor_office_4149f396a2012e50, []int{9}
return fileDescriptor_office_fb25433b0aa4afaa, []int{9}
}
func (m *SetTagReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetTagReq.Unmarshal(m, b)
@ -543,7 +543,7 @@ func (m *SetTagResp) Reset() { *m = SetTagResp{} }
func (m *SetTagResp) String() string { return proto.CompactTextString(m) }
func (*SetTagResp) ProtoMessage() {}
func (*SetTagResp) Descriptor() ([]byte, []int) {
return fileDescriptor_office_4149f396a2012e50, []int{10}
return fileDescriptor_office_fb25433b0aa4afaa, []int{10}
}
func (m *SetTagResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetTagResp.Unmarshal(m, b)
@ -586,7 +586,7 @@ func (m *SendMsg2TagReq) Reset() { *m = SendMsg2TagReq{} }
func (m *SendMsg2TagReq) String() string { return proto.CompactTextString(m) }
func (*SendMsg2TagReq) ProtoMessage() {}
func (*SendMsg2TagReq) Descriptor() ([]byte, []int) {
return fileDescriptor_office_4149f396a2012e50, []int{11}
return fileDescriptor_office_fb25433b0aa4afaa, []int{11}
}
func (m *SendMsg2TagReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendMsg2TagReq.Unmarshal(m, b)
@ -659,7 +659,7 @@ func (m *SendMsg2TagResp) Reset() { *m = SendMsg2TagResp{} }
func (m *SendMsg2TagResp) String() string { return proto.CompactTextString(m) }
func (*SendMsg2TagResp) ProtoMessage() {}
func (*SendMsg2TagResp) Descriptor() ([]byte, []int) {
return fileDescriptor_office_4149f396a2012e50, []int{12}
return fileDescriptor_office_fb25433b0aa4afaa, []int{12}
}
func (m *SendMsg2TagResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendMsg2TagResp.Unmarshal(m, b)
@ -699,7 +699,7 @@ func (m *GetTagSendLogsReq) Reset() { *m = GetTagSendLogsReq{} }
func (m *GetTagSendLogsReq) String() string { return proto.CompactTextString(m) }
func (*GetTagSendLogsReq) ProtoMessage() {}
func (*GetTagSendLogsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_office_4149f396a2012e50, []int{13}
return fileDescriptor_office_fb25433b0aa4afaa, []int{13}
}
func (m *GetTagSendLogsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetTagSendLogsReq.Unmarshal(m, b)
@ -741,22 +741,22 @@ func (m *GetTagSendLogsReq) GetOperationID() string {
}
type TagSendLog struct {
TagID string `protobuf:"bytes,1,opt,name=tagID" json:"tagID,omitempty"`
TagName string `protobuf:"bytes,2,opt,name=tagName" json:"tagName,omitempty"`
ContentType int32 `protobuf:"varint,3,opt,name=contentType" json:"contentType,omitempty"`
Content string `protobuf:"bytes,4,opt,name=content" json:"content,omitempty"`
SendTime int64 `protobuf:"varint,5,opt,name=sendTime" json:"sendTime,omitempty"`
UserList []string `protobuf:"bytes,6,rep,name=userList" json:"userList,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
TagID string `protobuf:"bytes,1,opt,name=tagID" json:"tagID,omitempty"`
TagName string `protobuf:"bytes,2,opt,name=tagName" json:"tagName,omitempty"`
ContentType int32 `protobuf:"varint,3,opt,name=contentType" json:"contentType,omitempty"`
Content string `protobuf:"bytes,4,opt,name=content" json:"content,omitempty"`
SendTime int64 `protobuf:"varint,5,opt,name=sendTime" json:"sendTime,omitempty"`
TagUserList []*TagUser `protobuf:"bytes,6,rep,name=TagUserList" json:"TagUserList,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *TagSendLog) Reset() { *m = TagSendLog{} }
func (m *TagSendLog) String() string { return proto.CompactTextString(m) }
func (*TagSendLog) ProtoMessage() {}
func (*TagSendLog) Descriptor() ([]byte, []int) {
return fileDescriptor_office_4149f396a2012e50, []int{14}
return fileDescriptor_office_fb25433b0aa4afaa, []int{14}
}
func (m *TagSendLog) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TagSendLog.Unmarshal(m, b)
@ -811,9 +811,9 @@ func (m *TagSendLog) GetSendTime() int64 {
return 0
}
func (m *TagSendLog) GetUserList() []string {
func (m *TagSendLog) GetTagUserList() []*TagUser {
if m != nil {
return m.UserList
return m.TagUserList
}
return nil
}
@ -831,7 +831,7 @@ func (m *GetTagSendLogsResp) Reset() { *m = GetTagSendLogsResp{} }
func (m *GetTagSendLogsResp) String() string { return proto.CompactTextString(m) }
func (*GetTagSendLogsResp) ProtoMessage() {}
func (*GetTagSendLogsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_office_4149f396a2012e50, []int{15}
return fileDescriptor_office_fb25433b0aa4afaa, []int{15}
}
func (m *GetTagSendLogsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetTagSendLogsResp.Unmarshal(m, b)
@ -1128,56 +1128,56 @@ var _OfficeService_serviceDesc = grpc.ServiceDesc{
Metadata: "office/office.proto",
}
func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_4149f396a2012e50) }
var fileDescriptor_office_4149f396a2012e50 = []byte{
// 762 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xc1, 0x6e, 0xd3, 0x4c,
0x10, 0x96, 0x93, 0x26, 0x6d, 0x26, 0x6d, 0xf3, 0x77, 0xff, 0x52, 0x82, 0x0f, 0x10, 0x2c, 0x90,
0x2a, 0x90, 0x12, 0x29, 0x70, 0x40, 0x42, 0x54, 0x88, 0xa4, 0xaa, 0x8a, 0x5a, 0x5a, 0x6d, 0xd3,
0x0b, 0x07, 0xa2, 0x6d, 0x32, 0xb1, 0xac, 0x36, 0xb6, 0xbb, 0xbb, 0x6d, 0xc5, 0x95, 0x57, 0xe0,
0x45, 0x78, 0x09, 0x24, 0xae, 0x3c, 0x10, 0x12, 0xf2, 0x7a, 0x6d, 0xaf, 0x9d, 0x44, 0x40, 0x4e,
0xd9, 0x99, 0x9d, 0x99, 0x7c, 0xdf, 0x37, 0xbb, 0xb3, 0x86, 0xff, 0x83, 0xc9, 0xc4, 0x1b, 0x61,
0x27, 0xfe, 0x69, 0x87, 0x3c, 0x90, 0x01, 0xa9, 0xc6, 0x96, 0xfd, 0xf8, 0x24, 0x44, 0x7f, 0x78,
0x78, 0xdc, 0x09, 0x2f, 0xdd, 0x8e, 0xda, 0xea, 0x88, 0xf1, 0xe5, 0xf0, 0x4e, 0x74, 0xee, 0x44,
0x1c, 0xea, 0xec, 0x01, 0xf4, 0x82, 0xe9, 0x34, 0xf0, 0x29, 0x8a, 0x90, 0x34, 0x61, 0x15, 0x39,
0xef, 0x05, 0x63, 0x6c, 0x5a, 0x2d, 0x6b, 0xb7, 0x42, 0x13, 0x93, 0xec, 0x40, 0x15, 0x39, 0x3f,
0x16, 0x6e, 0xb3, 0xd4, 0xb2, 0x76, 0x6b, 0x54, 0x5b, 0xce, 0x1b, 0x58, 0x1d, 0x30, 0xf7, 0x5c,
0x20, 0x8f, 0x42, 0x6e, 0x04, 0xf2, 0xc3, 0xbe, 0xca, 0xad, 0x51, 0x6d, 0x11, 0x1b, 0xd6, 0xa2,
0xd5, 0x07, 0x36, 0x45, 0x9d, 0x9c, 0xda, 0xce, 0x05, 0x94, 0x07, 0xcc, 0x25, 0xdb, 0x50, 0x91,
0xcc, 0x4d, 0x33, 0x63, 0x23, 0x42, 0x23, 0x99, 0x6b, 0xe4, 0x25, 0x26, 0x79, 0x1e, 0x97, 0x3c,
0xf2, 0x84, 0x6c, 0x96, 0x5b, 0xe5, 0xdd, 0x7a, 0xb7, 0xd1, 0xd6, 0x0a, 0x68, 0x34, 0x34, 0x0d,
0x70, 0xde, 0xc3, 0xe6, 0x01, 0xca, 0xc8, 0x39, 0x60, 0xae, 0xa0, 0x78, 0xbd, 0x10, 0x69, 0x0b,
0xea, 0x41, 0x88, 0x9c, 0x49, 0x2f, 0xf0, 0x0f, 0xfb, 0xfa, 0x4f, 0x4d, 0x97, 0x33, 0x81, 0x46,
0xae, 0x96, 0x08, 0x49, 0x17, 0x60, 0x94, 0x2a, 0xa8, 0x0a, 0xd6, 0xbb, 0x24, 0x41, 0x93, 0x69,
0x4b, 0x8d, 0x28, 0xf2, 0x08, 0x56, 0x24, 0x73, 0x45, 0xb3, 0xa4, 0xb0, 0xd7, 0x0d, 0xec, 0x54,
0x6d, 0x38, 0x5f, 0x2c, 0x58, 0xef, 0x71, 0x64, 0x12, 0x23, 0x1f, 0x5e, 0x9b, 0x5a, 0x58, 0x79,
0x2d, 0x32, 0x32, 0xa5, 0x1c, 0x99, 0x87, 0x00, 0xf1, 0x2a, 0x55, 0xa9, 0x46, 0x0d, 0x4f, 0x91,
0xec, 0xca, 0x2c, 0xd9, 0x1e, 0x6c, 0x18, 0x18, 0x96, 0xa3, 0xea, 0x7c, 0x82, 0xf5, 0x3e, 0x5e,
0x61, 0x4a, 0x64, 0x91, 0xf6, 0xe9, 0x11, 0x28, 0x99, 0x47, 0xa0, 0x00, 0xb2, 0x3c, 0x17, 0xa4,
0x51, 0x7f, 0x49, 0x90, 0x3f, 0x2d, 0xa8, 0x9d, 0xa1, 0x5c, 0x0a, 0x62, 0x13, 0x56, 0x7d, 0xbc,
0x53, 0x9d, 0x89, 0xe1, 0x25, 0x26, 0x69, 0x03, 0xf1, 0xfc, 0x11, 0x47, 0x26, 0xf0, 0x3c, 0xeb,
0xc4, 0x8a, 0xea, 0xc4, 0x9c, 0x1d, 0xf2, 0x0c, 0xfe, 0xe3, 0x38, 0xbe, 0x19, 0x99, 0xd1, 0x15,
0x15, 0x3d, 0xe3, 0x2f, 0x0a, 0x53, 0x9d, 0x15, 0xe6, 0x2d, 0x40, 0x42, 0x69, 0x49, 0x55, 0x7e,
0x58, 0xb0, 0x79, 0x86, 0xfe, 0xf8, 0x58, 0xb8, 0x5d, 0x2d, 0xcd, 0xfc, 0x8b, 0xba, 0x03, 0x55,
0x81, 0xfe, 0x38, 0x3b, 0x82, 0xb1, 0x15, 0x11, 0x8a, 0x56, 0xc8, 0x4f, 0xaf, 0x98, 0x9c, 0x04,
0x7c, 0xaa, 0x5b, 0x58, 0xa1, 0x33, 0xfe, 0x48, 0xc6, 0x51, 0xe0, 0x4b, 0xf4, 0xa5, 0x3e, 0x8a,
0x89, 0x19, 0x51, 0xd5, 0xcb, 0xc1, 0xe7, 0x10, 0x9b, 0x15, 0x55, 0xc0, 0x74, 0xfd, 0x85, 0x18,
0xfb, 0xd0, 0xc8, 0x31, 0x59, 0x52, 0x91, 0xaf, 0x16, 0x6c, 0x1d, 0x28, 0x51, 0xa3, 0x6a, 0x47,
0x41, 0x3c, 0x4e, 0xfa, 0x00, 0xa7, 0xcc, 0xf5, 0x7c, 0xf5, 0x67, 0xba, 0xd2, 0x93, 0xb6, 0x40,
0x7e, 0x8b, 0x7c, 0xc8, 0x42, 0x6f, 0x18, 0x32, 0xce, 0xa6, 0xa2, 0x4d, 0xf1, 0xfa, 0x06, 0x85,
0xcc, 0x62, 0xa9, 0x91, 0xb7, 0xf0, 0x1e, 0xff, 0xf9, 0x0a, 0x7c, 0xb3, 0x00, 0x32, 0x48, 0xff,
0x3c, 0x4c, 0x0b, 0xfa, 0x96, 0x67, 0xf5, 0x5d, 0xdc, 0x1b, 0x1b, 0xd6, 0xa2, 0x4e, 0x0e, 0xbc,
0x69, 0xdc, 0x98, 0x32, 0x4d, 0xed, 0x64, 0xee, 0xab, 0x63, 0x5c, 0x55, 0xc7, 0x38, 0x9b, 0xc9,
0xdf, 0x2d, 0x20, 0x45, 0x21, 0x97, 0x9c, 0xa5, 0xfb, 0x39, 0xf5, 0x4b, 0x2a, 0xe7, 0xe9, 0x5c,
0xf5, 0x45, 0x18, 0xf8, 0x02, 0x17, 0xc8, 0xff, 0x12, 0xea, 0x32, 0x43, 0xa3, 0x5f, 0x15, 0x62,
0x4c, 0x66, 0xbd, 0x45, 0xcd, 0xb0, 0xee, 0xaf, 0x12, 0x6c, 0x9c, 0xa8, 0x90, 0x33, 0xe4, 0xb7,
0xde, 0x08, 0xc9, 0x1e, 0xd4, 0x8d, 0x17, 0x82, 0xec, 0x24, 0x15, 0xf2, 0x4f, 0x90, 0x7d, 0x7f,
0xae, 0x5f, 0x84, 0xe4, 0x15, 0xd4, 0xd2, 0xa1, 0x4b, 0xb6, 0x53, 0xee, 0xc6, 0x5b, 0x60, 0xdf,
0x9b, 0xe3, 0x8d, 0x33, 0xd3, 0x49, 0x98, 0x65, 0x9a, 0xc3, 0x37, 0xcb, 0xcc, 0x8f, 0xcc, 0x0e,
0x54, 0xe3, 0x51, 0x41, 0xb6, 0x92, 0x80, 0x74, 0x1a, 0xda, 0xa4, 0xe8, 0x12, 0x61, 0x44, 0xd2,
0xb8, 0x4e, 0x19, 0xc9, 0xfc, 0xb4, 0xc8, 0x48, 0x16, 0xef, 0xde, 0x81, 0x7a, 0x92, 0x8d, 0xee,
0x93, 0x07, 0x86, 0x1e, 0xf9, 0xeb, 0x65, 0xdb, 0x8b, 0xb6, 0x44, 0xf8, 0x6e, 0xeb, 0x63, 0xa3,
0xad, 0xbf, 0x7d, 0x5e, 0xc7, 0x3f, 0x17, 0x55, 0xf5, 0x61, 0xf3, 0xe2, 0x77, 0x00, 0x00, 0x00,
0xff, 0xff, 0x62, 0x7d, 0x95, 0x4e, 0x1a, 0x09, 0x00, 0x00,
func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_fb25433b0aa4afaa) }
var fileDescriptor_office_fb25433b0aa4afaa = []byte{
// 764 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x41, 0x6f, 0xd3, 0x4a,
0x10, 0x96, 0x93, 0x26, 0x6d, 0x26, 0x6d, 0xf3, 0xba, 0xaf, 0xaf, 0x2f, 0xf8, 0x00, 0xc1, 0x02,
0xa9, 0x02, 0x29, 0x11, 0x81, 0x03, 0x12, 0xa2, 0x42, 0x24, 0x55, 0x55, 0xd4, 0xd2, 0x6a, 0x9b,
0x5e, 0x38, 0x10, 0x6d, 0x93, 0x89, 0x65, 0xb5, 0xb1, 0xdd, 0xdd, 0x6d, 0x2b, 0xae, 0xfc, 0x05,
0x7e, 0x13, 0x82, 0x2b, 0x3f, 0x08, 0x09, 0x79, 0xbd, 0xb6, 0xd7, 0x89, 0x23, 0x20, 0xa7, 0xec,
0xcc, 0xce, 0x4c, 0xbe, 0xef, 0x9b, 0xdd, 0x59, 0xc3, 0xbf, 0xc1, 0x64, 0xe2, 0x8d, 0xb0, 0x13,
0xff, 0xb4, 0x43, 0x1e, 0xc8, 0x80, 0x54, 0x63, 0xcb, 0x7e, 0x78, 0x12, 0xa2, 0x3f, 0x3c, 0x3c,
0xee, 0x84, 0x97, 0x6e, 0x47, 0x6d, 0x75, 0xc4, 0xf8, 0x72, 0x78, 0x27, 0x3a, 0x77, 0x22, 0x0e,
0x75, 0xf6, 0x00, 0x7a, 0xc1, 0x74, 0x1a, 0xf8, 0x14, 0x45, 0x48, 0x9a, 0xb0, 0x8a, 0x9c, 0xf7,
0x82, 0x31, 0x36, 0xad, 0x96, 0xb5, 0x5b, 0xa1, 0x89, 0x49, 0x76, 0xa0, 0x8a, 0x9c, 0x1f, 0x0b,
0xb7, 0x59, 0x6a, 0x59, 0xbb, 0x35, 0xaa, 0x2d, 0xe7, 0x35, 0xac, 0x0e, 0x98, 0x7b, 0x2e, 0x90,
0x47, 0x21, 0x37, 0x02, 0xf9, 0x61, 0x5f, 0xe5, 0xd6, 0xa8, 0xb6, 0x88, 0x0d, 0x6b, 0xd1, 0xea,
0x3d, 0x9b, 0xa2, 0x4e, 0x4e, 0x6d, 0xe7, 0x02, 0xca, 0x03, 0xe6, 0x92, 0x6d, 0xa8, 0x48, 0xe6,
0xa6, 0x99, 0xb1, 0x11, 0xa1, 0x91, 0xcc, 0x35, 0xf2, 0x12, 0x93, 0x3c, 0x8d, 0x4b, 0x1e, 0x79,
0x42, 0x36, 0xcb, 0xad, 0xf2, 0x6e, 0xbd, 0xdb, 0x68, 0x6b, 0x05, 0x34, 0x1a, 0x9a, 0x06, 0x38,
0xef, 0x60, 0xf3, 0x00, 0x65, 0xe4, 0x1c, 0x30, 0x57, 0x50, 0xbc, 0x5e, 0x88, 0xb4, 0x05, 0xf5,
0x20, 0x44, 0xce, 0xa4, 0x17, 0xf8, 0x87, 0x7d, 0xfd, 0xa7, 0xa6, 0xcb, 0x99, 0x40, 0x23, 0x57,
0x4b, 0x84, 0xa4, 0x0b, 0x30, 0x4a, 0x15, 0x54, 0x05, 0xeb, 0x5d, 0x92, 0xa0, 0xc9, 0xb4, 0xa5,
0x46, 0x14, 0x79, 0x00, 0x2b, 0x92, 0xb9, 0xa2, 0x59, 0x52, 0xd8, 0xeb, 0x06, 0x76, 0xaa, 0x36,
0x9c, 0xcf, 0x16, 0xac, 0xf7, 0x38, 0x32, 0x89, 0x91, 0x0f, 0xaf, 0x4d, 0x2d, 0xac, 0xbc, 0x16,
0x19, 0x99, 0x52, 0x8e, 0xcc, 0x7d, 0x80, 0x78, 0x95, 0xaa, 0x54, 0xa3, 0x86, 0x67, 0x96, 0xec,
0xca, 0x3c, 0xd9, 0x1e, 0x6c, 0x18, 0x18, 0x96, 0xa3, 0xea, 0x7c, 0x84, 0xf5, 0x3e, 0x5e, 0x61,
0x4a, 0x64, 0x91, 0xf6, 0xe9, 0x11, 0x28, 0x99, 0x47, 0x60, 0x06, 0x64, 0xb9, 0x10, 0xa4, 0x51,
0x7f, 0x49, 0x90, 0x3f, 0x2c, 0xa8, 0x9d, 0xa1, 0x5c, 0x0a, 0x62, 0x13, 0x56, 0x7d, 0xbc, 0x53,
0x9d, 0x89, 0xe1, 0x25, 0x26, 0x69, 0x03, 0xf1, 0xfc, 0x11, 0x47, 0x26, 0xf0, 0x3c, 0xeb, 0xc4,
0x8a, 0xea, 0x44, 0xc1, 0x0e, 0x79, 0x02, 0xff, 0x70, 0x1c, 0xdf, 0x8c, 0xcc, 0xe8, 0x8a, 0x8a,
0x9e, 0xf3, 0xcf, 0x0a, 0x53, 0x9d, 0x17, 0xe6, 0x0d, 0x40, 0x42, 0x69, 0x49, 0x55, 0xbe, 0x5b,
0xb0, 0x79, 0x86, 0xfe, 0xf8, 0x58, 0xb8, 0x5d, 0x2d, 0x4d, 0xf1, 0x45, 0xdd, 0x81, 0xaa, 0x40,
0x7f, 0x9c, 0x1d, 0xc1, 0xd8, 0x8a, 0x08, 0x45, 0x2b, 0xe4, 0xa7, 0x57, 0x4c, 0x4e, 0x02, 0x3e,
0xd5, 0x2d, 0xac, 0xd0, 0x39, 0x7f, 0x24, 0xe3, 0x28, 0xf0, 0x25, 0xfa, 0x52, 0x1f, 0xc5, 0xc4,
0x8c, 0xa8, 0xea, 0xe5, 0xe0, 0x53, 0x88, 0xcd, 0x8a, 0x2a, 0x60, 0xba, 0xfe, 0x40, 0x8c, 0x7d,
0x68, 0xe4, 0x98, 0x2c, 0xa9, 0xc8, 0x17, 0x0b, 0xb6, 0x0e, 0x94, 0xa8, 0x51, 0xb5, 0xa3, 0x20,
0x1e, 0x27, 0x7d, 0x80, 0x53, 0xe6, 0x7a, 0xbe, 0xfa, 0x33, 0x5d, 0xe9, 0x51, 0x5b, 0x20, 0xbf,
0x45, 0x3e, 0x64, 0xa1, 0x37, 0x0c, 0x19, 0x67, 0x53, 0xd1, 0xa6, 0x78, 0x7d, 0x83, 0x42, 0x66,
0xb1, 0xd4, 0xc8, 0x5b, 0x78, 0x8f, 0x7f, 0x7f, 0x05, 0xbe, 0x59, 0x00, 0x19, 0xa4, 0xbf, 0x1e,
0xa6, 0x33, 0xfa, 0x96, 0xe7, 0xf5, 0x5d, 0xdc, 0x1b, 0x1b, 0xd6, 0xa2, 0x4e, 0x0e, 0xbc, 0x69,
0xdc, 0x98, 0x32, 0x4d, 0x6d, 0xf2, 0x0c, 0xea, 0x7a, 0x18, 0xab, 0x93, 0x5c, 0x2d, 0x9e, 0xd3,
0x66, 0x8c, 0xf3, 0xd5, 0x02, 0x32, 0xab, 0xef, 0x92, 0x23, 0x76, 0x3f, 0xd7, 0x94, 0x92, 0xca,
0x79, 0x5c, 0xd8, 0x14, 0x11, 0x06, 0xbe, 0xc0, 0x05, 0x5d, 0x79, 0x01, 0x75, 0x99, 0xa1, 0xd1,
0x8f, 0x0d, 0x31, 0x48, 0xe8, 0x2d, 0x6a, 0x86, 0x75, 0x7f, 0x96, 0x60, 0xe3, 0x44, 0x85, 0x9c,
0x21, 0xbf, 0xf5, 0x46, 0x48, 0xf6, 0xa0, 0x6e, 0x3c, 0x1c, 0x64, 0x27, 0xa9, 0x90, 0x7f, 0x99,
0xec, 0xff, 0x0b, 0xfd, 0x22, 0x24, 0x2f, 0xa1, 0x96, 0xce, 0x62, 0xb2, 0x9d, 0x72, 0x37, 0x9e,
0x08, 0xfb, 0xbf, 0x02, 0x6f, 0x9c, 0x99, 0x0e, 0xc8, 0x2c, 0xd3, 0x9c, 0xc9, 0x59, 0x66, 0x7e,
0x92, 0x76, 0xa0, 0x1a, 0x4f, 0x10, 0xb2, 0x95, 0x04, 0xa4, 0x43, 0xd2, 0x26, 0xb3, 0x2e, 0x11,
0x46, 0x24, 0x8d, 0x5b, 0x96, 0x91, 0xcc, 0x0f, 0x91, 0x8c, 0xe4, 0xec, 0x95, 0x3c, 0x50, 0x2f,
0xb5, 0xd1, 0x7d, 0x72, 0xcf, 0xd0, 0x23, 0x7f, 0xeb, 0x6c, 0x7b, 0xd1, 0x96, 0x08, 0xdf, 0x6e,
0x7d, 0x68, 0xb4, 0xf5, 0x27, 0xd1, 0xab, 0xf8, 0xe7, 0xa2, 0xaa, 0xbe, 0x77, 0x9e, 0xff, 0x0a,
0x00, 0x00, 0xff, 0xff, 0xee, 0x5a, 0x78, 0x47, 0x31, 0x09, 0x00, 0x00,
}

@ -88,7 +88,7 @@ message TagSendLog {
int32 contentType = 3;
string content = 4;
int64 sendTime = 5;
repeated string userList = 6;
repeated TagUser TagUserList = 6;
}
message GetTagSendLogsResp {

Loading…
Cancel
Save