From 50c8a56f38ee90dc7d88d1bebd719226ca225b50 Mon Sep 17 00:00:00 2001 From: truthhun <1272881215@qq.com> Date: Tue, 4 Apr 2023 23:46:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/v1/document.pb.go | 740 +++++++++++++----- api/v1/document.pb.gw.go | 81 ++ api/v1/document.proto | 14 + biz/document.go | 14 + model/document.go | 55 +- web/api/document.js | 8 + .../FormUpdateDocumentsCategory.vue | 112 +++ web/pages/admin/document/list.vue | 35 + 8 files changed, 877 insertions(+), 182 deletions(-) create mode 100644 web/components/FormUpdateDocumentsCategory.vue diff --git a/api/v1/document.pb.go b/api/v1/document.pb.go index 7932ea8..f65b831 100644 --- a/api/v1/document.pb.go +++ b/api/v1/document.pb.go @@ -477,6 +477,58 @@ func (m *GetDocumentRequest) GetWithAuthor() bool { return false } +type SetDocumentsCategoryRequest struct { + DocumentId []int64 `protobuf:"varint,1,rep,packed,name=document_id,json=documentId,proto3" json:"document_id,omitempty"` + CategoryId []int64 `protobuf:"varint,2,rep,packed,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` +} + +func (m *SetDocumentsCategoryRequest) Reset() { *m = SetDocumentsCategoryRequest{} } +func (m *SetDocumentsCategoryRequest) String() string { return proto.CompactTextString(m) } +func (*SetDocumentsCategoryRequest) ProtoMessage() {} +func (*SetDocumentsCategoryRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_55a584ae3a7fc022, []int{4} +} +func (m *SetDocumentsCategoryRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SetDocumentsCategoryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_SetDocumentsCategoryRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *SetDocumentsCategoryRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetDocumentsCategoryRequest.Merge(m, src) +} +func (m *SetDocumentsCategoryRequest) XXX_Size() int { + return m.Size() +} +func (m *SetDocumentsCategoryRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SetDocumentsCategoryRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SetDocumentsCategoryRequest proto.InternalMessageInfo + +func (m *SetDocumentsCategoryRequest) GetDocumentId() []int64 { + if m != nil { + return m.DocumentId + } + return nil +} + +func (m *SetDocumentsCategoryRequest) GetCategoryId() []int64 { + if m != nil { + return m.CategoryId + } + return nil +} + // 文档列表 type ListDocumentRequest struct { Page int64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` @@ -496,7 +548,7 @@ func (m *ListDocumentRequest) Reset() { *m = ListDocumentRequest{} } func (m *ListDocumentRequest) String() string { return proto.CompactTextString(m) } func (*ListDocumentRequest) ProtoMessage() {} func (*ListDocumentRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_55a584ae3a7fc022, []int{4} + return fileDescriptor_55a584ae3a7fc022, []int{5} } func (m *ListDocumentRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -612,7 +664,7 @@ func (m *ListDocumentReply) Reset() { *m = ListDocumentReply{} } func (m *ListDocumentReply) String() string { return proto.CompactTextString(m) } func (*ListDocumentReply) ProtoMessage() {} func (*ListDocumentReply) Descriptor() ([]byte, []int) { - return fileDescriptor_55a584ae3a7fc022, []int{5} + return fileDescriptor_55a584ae3a7fc022, []int{6} } func (m *ListDocumentReply) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -666,7 +718,7 @@ func (m *CreateDocumentItem) Reset() { *m = CreateDocumentItem{} } func (m *CreateDocumentItem) String() string { return proto.CompactTextString(m) } func (*CreateDocumentItem) ProtoMessage() {} func (*CreateDocumentItem) Descriptor() ([]byte, []int) { - return fileDescriptor_55a584ae3a7fc022, []int{6} + return fileDescriptor_55a584ae3a7fc022, []int{7} } func (m *CreateDocumentItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -727,7 +779,7 @@ func (m *CreateDocumentRequest) Reset() { *m = CreateDocumentRequest{} } func (m *CreateDocumentRequest) String() string { return proto.CompactTextString(m) } func (*CreateDocumentRequest) ProtoMessage() {} func (*CreateDocumentRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_55a584ae3a7fc022, []int{7} + return fileDescriptor_55a584ae3a7fc022, []int{8} } func (m *CreateDocumentRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -787,7 +839,7 @@ func (m *SetDocumentRecommendRequest) Reset() { *m = SetDocumentRecommen func (m *SetDocumentRecommendRequest) String() string { return proto.CompactTextString(m) } func (*SetDocumentRecommendRequest) ProtoMessage() {} func (*SetDocumentRecommendRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_55a584ae3a7fc022, []int{8} + return fileDescriptor_55a584ae3a7fc022, []int{9} } func (m *SetDocumentRecommendRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -839,7 +891,7 @@ func (m *ListDocumentForHomeRequest) Reset() { *m = ListDocumentForHomeR func (m *ListDocumentForHomeRequest) String() string { return proto.CompactTextString(m) } func (*ListDocumentForHomeRequest) ProtoMessage() {} func (*ListDocumentForHomeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_55a584ae3a7fc022, []int{9} + return fileDescriptor_55a584ae3a7fc022, []int{10} } func (m *ListDocumentForHomeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -887,7 +939,7 @@ func (m *ListDocumentForHomeItem) Reset() { *m = ListDocumentForHomeItem func (m *ListDocumentForHomeItem) String() string { return proto.CompactTextString(m) } func (*ListDocumentForHomeItem) ProtoMessage() {} func (*ListDocumentForHomeItem) Descriptor() ([]byte, []int) { - return fileDescriptor_55a584ae3a7fc022, []int{10} + return fileDescriptor_55a584ae3a7fc022, []int{11} } func (m *ListDocumentForHomeItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -953,7 +1005,7 @@ func (m *ListDocumentForHomeResponse) Reset() { *m = ListDocumentForHome func (m *ListDocumentForHomeResponse) String() string { return proto.CompactTextString(m) } func (*ListDocumentForHomeResponse) ProtoMessage() {} func (*ListDocumentForHomeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_55a584ae3a7fc022, []int{11} + return fileDescriptor_55a584ae3a7fc022, []int{12} } func (m *ListDocumentForHomeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1003,7 +1055,7 @@ func (m *SearchDocumentRequest) Reset() { *m = SearchDocumentRequest{} } func (m *SearchDocumentRequest) String() string { return proto.CompactTextString(m) } func (*SearchDocumentRequest) ProtoMessage() {} func (*SearchDocumentRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_55a584ae3a7fc022, []int{12} + return fileDescriptor_55a584ae3a7fc022, []int{13} } func (m *SearchDocumentRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1088,7 +1140,7 @@ func (m *DocumentScore) Reset() { *m = DocumentScore{} } func (m *DocumentScore) String() string { return proto.CompactTextString(m) } func (*DocumentScore) ProtoMessage() {} func (*DocumentScore) Descriptor() ([]byte, []int) { - return fileDescriptor_55a584ae3a7fc022, []int{13} + return fileDescriptor_55a584ae3a7fc022, []int{14} } func (m *DocumentScore) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1170,7 +1222,7 @@ func (m *SearchDocumentReply) Reset() { *m = SearchDocumentReply{} } func (m *SearchDocumentReply) String() string { return proto.CompactTextString(m) } func (*SearchDocumentReply) ProtoMessage() {} func (*SearchDocumentReply) Descriptor() ([]byte, []int) { - return fileDescriptor_55a584ae3a7fc022, []int{14} + return fileDescriptor_55a584ae3a7fc022, []int{15} } func (m *SearchDocumentReply) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1229,7 +1281,7 @@ func (m *DownloadDocumentReply) Reset() { *m = DownloadDocumentReply{} } func (m *DownloadDocumentReply) String() string { return proto.CompactTextString(m) } func (*DownloadDocumentReply) ProtoMessage() {} func (*DownloadDocumentReply) Descriptor() ([]byte, []int) { - return fileDescriptor_55a584ae3a7fc022, []int{15} + return fileDescriptor_55a584ae3a7fc022, []int{16} } func (m *DownloadDocumentReply) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1270,6 +1322,7 @@ func init() { proto.RegisterType((*DeleteDocumentRequest)(nil), "api.v1.DeleteDocumentRequest") proto.RegisterType((*RecoverRecycleDocumentRequest)(nil), "api.v1.RecoverRecycleDocumentRequest") proto.RegisterType((*GetDocumentRequest)(nil), "api.v1.GetDocumentRequest") + proto.RegisterType((*SetDocumentsCategoryRequest)(nil), "api.v1.SetDocumentsCategoryRequest") proto.RegisterType((*ListDocumentRequest)(nil), "api.v1.ListDocumentRequest") proto.RegisterType((*ListDocumentReply)(nil), "api.v1.ListDocumentReply") proto.RegisterType((*CreateDocumentItem)(nil), "api.v1.CreateDocumentItem") @@ -1287,110 +1340,113 @@ func init() { func init() { proto.RegisterFile("api/v1/document.proto", fileDescriptor_55a584ae3a7fc022) } var fileDescriptor_55a584ae3a7fc022 = []byte{ - // 1642 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xc1, 0x6e, 0xdb, 0xcc, - 0x11, 0x0e, 0x45, 0xc9, 0x96, 0x47, 0xb2, 0x22, 0xaf, 0x2d, 0x9b, 0xa6, 0x6c, 0x49, 0xa1, 0xeb, - 0x56, 0xbf, 0x51, 0x58, 0x88, 0x8b, 0xf6, 0xd0, 0xff, 0x50, 0xf8, 0x77, 0x52, 0xd7, 0x40, 0x51, - 0xfc, 0x60, 0x1a, 0x04, 0xc8, 0xc5, 0x65, 0xc4, 0xb5, 0xc4, 0x96, 0x12, 0x59, 0x72, 0x65, 0xd5, - 0x46, 0x7b, 0xe9, 0x03, 0x14, 0x01, 0x0a, 0xe4, 0x49, 0xfa, 0x10, 0x3d, 0x06, 0xe8, 0xa5, 0x45, - 0x0f, 0x0d, 0x92, 0xbe, 0x40, 0xdf, 0xa0, 0xd8, 0xd9, 0x5d, 0x89, 0x12, 0x49, 0xdb, 0xc9, 0x7f, - 0xe3, 0xce, 0xce, 0x7e, 0xdf, 0xce, 0xec, 0xcc, 0xb7, 0x2b, 0x41, 0xc3, 0x09, 0xbd, 0xde, 0xf5, - 0xd3, 0x9e, 0x1b, 0xf4, 0x27, 0x23, 0x3a, 0x66, 0xc7, 0x61, 0x14, 0xb0, 0x80, 0xac, 0x38, 0xa1, - 0x77, 0x7c, 0xfd, 0xd4, 0x6c, 0x0f, 0x82, 0x60, 0xe0, 0xd3, 0x1e, 0x5a, 0xdf, 0x4c, 0xae, 0x7a, - 0xcc, 0x1b, 0xd1, 0x98, 0x39, 0xa3, 0x50, 0x38, 0x9a, 0x5b, 0x83, 0x60, 0x10, 0xe0, 0x67, 0x8f, - 0x7f, 0x49, 0xeb, 0x9e, 0x5c, 0xc6, 0xc1, 0x9d, 0xf1, 0x38, 0x60, 0x0e, 0xf3, 0x82, 0x71, 0x2c, - 0x67, 0x9b, 0xcb, 0xa0, 0x74, 0x14, 0xb2, 0x1b, 0x39, 0xb9, 0x23, 0x37, 0xe4, 0x30, 0xe6, 0xf4, - 0x87, 0xf3, 0x2d, 0x99, 0x1b, 0x72, 0x62, 0x12, 0xd3, 0x48, 0x98, 0xac, 0x0f, 0x65, 0x28, 0x3f, - 0x93, 0x1b, 0x27, 0x35, 0x28, 0x78, 0xae, 0xa1, 0x75, 0xb4, 0xae, 0x6e, 0x17, 0x3c, 0x97, 0x6c, - 0x41, 0x89, 0x79, 0xcc, 0xa7, 0x46, 0xa1, 0xa3, 0x75, 0xd7, 0x6c, 0x31, 0x20, 0x26, 0x94, 0x7f, - 0x47, 0x6f, 0xa6, 0x41, 0xe4, 0xc6, 0x86, 0x8e, 0x13, 0xb3, 0x31, 0xe9, 0x40, 0xc5, 0xa5, 0x71, - 0x3f, 0xf2, 0x42, 0xbe, 0x5b, 0xa3, 0x88, 0xd3, 0x49, 0x13, 0xd9, 0x81, 0x55, 0x4e, 0x7f, 0xe9, - 0xb9, 0x46, 0x09, 0x89, 0x56, 0xf8, 0xf0, 0x02, 0xc9, 0xfa, 0xc1, 0x35, 0x8d, 0x8c, 0x15, 0x41, - 0x86, 0x03, 0x6e, 0x9d, 0x7a, 0x2e, 0x1b, 0x1a, 0xab, 0x1d, 0xad, 0x5b, 0xb2, 0xc5, 0x80, 0x6c, - 0xc3, 0xca, 0x90, 0x7a, 0x83, 0x21, 0x33, 0xca, 0x68, 0x96, 0x23, 0x62, 0xc0, 0x6a, 0x18, 0xd1, - 0x6b, 0x8f, 0x4e, 0x8d, 0x35, 0x9c, 0x50, 0x43, 0x8e, 0x13, 0x3a, 0x03, 0x1a, 0x1b, 0x20, 0x70, - 0x70, 0x40, 0x08, 0x14, 0x27, 0x13, 0xcf, 0x35, 0x2a, 0x48, 0x89, 0xdf, 0xe4, 0x10, 0x6a, 0x6e, - 0x30, 0x1d, 0xfb, 0x81, 0xe3, 0x5e, 0xf6, 0x83, 0xc9, 0x98, 0x19, 0x55, 0x5c, 0xb2, 0xae, 0xac, - 0x67, 0xdc, 0x48, 0xf6, 0x01, 0x38, 0xb0, 0x74, 0x59, 0x47, 0x97, 0x35, 0x6e, 0x11, 0xd3, 0x87, - 0x50, 0xbb, 0x72, 0xae, 0x83, 0xc8, 0x63, 0x54, 0xba, 0xd4, 0x04, 0x8a, 0xb2, 0x0a, 0xb7, 0x03, - 0x58, 0xef, 0x07, 0x23, 0x9e, 0x7c, 0xe9, 0xf5, 0x18, 0xbd, 0xaa, 0xd2, 0x28, 0x9c, 0xb6, 0xa0, - 0x14, 0xf7, 0x83, 0x88, 0x1a, 0x75, 0xb1, 0x77, 0x1c, 0x90, 0x36, 0x54, 0xf0, 0x43, 0x2e, 0xdc, - 0xc0, 0x39, 0x40, 0xd3, 0x6c, 0x59, 0x18, 0x79, 0x7d, 0x6a, 0x10, 0x19, 0x32, 0x1f, 0xf0, 0x90, - 0x63, 0xef, 0x96, 0x1a, 0x9b, 0x98, 0x7c, 0xfc, 0xe6, 0xe9, 0x8c, 0x99, 0xc3, 0x26, 0xb1, 0xb1, - 0x25, 0xd2, 0x29, 0x46, 0xe4, 0x67, 0x00, 0xfd, 0x88, 0x3a, 0x8c, 0xba, 0x97, 0x0e, 0x33, 0x1a, - 0x1d, 0xad, 0x5b, 0x39, 0x31, 0x8f, 0x45, 0xe9, 0x1d, 0xab, 0xd2, 0x3b, 0xfe, 0xb5, 0xaa, 0xe7, - 0x6f, 0x8a, 0x6f, 0xff, 0xd3, 0xd6, 0xec, 0x35, 0xb9, 0xe6, 0x94, 0x71, 0x80, 0x49, 0xe8, 0x2a, - 0x80, 0xed, 0x87, 0x02, 0xc8, 0x35, 0x02, 0xc0, 0xa5, 0x3e, 0x95, 0x00, 0x3b, 0x0f, 0x05, 0x90, - 0x6b, 0x4e, 0x19, 0x39, 0x83, 0x6a, 0x44, 0x45, 0x36, 0x11, 0x62, 0xff, 0x81, 0x10, 0x95, 0xd9, - 0xaa, 0x53, 0x46, 0xbe, 0x0f, 0x8f, 0xd5, 0x2e, 0x54, 0xed, 0x1a, 0x98, 0xbe, 0x75, 0x69, 0x7e, - 0x29, 0x4a, 0xd8, 0x84, 0x32, 0x9f, 0x1f, 0x3b, 0x23, 0x6a, 0xec, 0x8a, 0xce, 0x50, 0x63, 0x7e, - 0x5c, 0x7d, 0x87, 0xd1, 0x41, 0x10, 0xdd, 0xf0, 0xf5, 0x66, 0x47, 0xef, 0xea, 0x36, 0x28, 0xd3, - 0x85, 0x4b, 0xbe, 0x82, 0x7a, 0x92, 0x04, 0x41, 0x9a, 0x08, 0xf2, 0x38, 0xc1, 0x82, 0x58, 0x75, - 0xd0, 0xe9, 0x1f, 0x98, 0xb1, 0x87, 0xb3, 0xfc, 0x93, 0x9c, 0x00, 0xcc, 0xbb, 0xdd, 0x68, 0x61, - 0x90, 0xe4, 0x58, 0x28, 0xd0, 0xf1, 0xe9, 0x6c, 0xc6, 0x4e, 0x78, 0x91, 0x0e, 0x14, 0x39, 0x91, - 0xd1, 0x46, 0xef, 0xaa, 0xf2, 0xe6, 0x2c, 0x36, 0xce, 0xf0, 0x3d, 0xd3, 0xb1, 0xf3, 0xc6, 0xa7, - 0x97, 0x83, 0x5b, 0x2f, 0x34, 0x3a, 0x1d, 0xad, 0x5b, 0xb6, 0x41, 0x98, 0xce, 0x6f, 0xbd, 0x50, - 0x94, 0xef, 0xf8, 0x9a, 0x46, 0xec, 0x92, 0x46, 0x51, 0x10, 0x19, 0x4f, 0x70, 0x4b, 0x55, 0x69, - 0x7c, 0xce, 0x6d, 0xd6, 0x0f, 0xa0, 0xf1, 0x0c, 0x03, 0x50, 0x3a, 0x63, 0xd3, 0xdf, 0x4f, 0x68, - 0x3c, 0x97, 0x1b, 0x5d, 0xc8, 0x8d, 0xd5, 0x83, 0x7d, 0x9b, 0x62, 0xdb, 0xdb, 0xb4, 0x7f, 0xd3, - 0xf7, 0xef, 0x5d, 0xf0, 0x1c, 0xc8, 0x39, 0x65, 0x79, 0x5e, 0x4a, 0xc5, 0xda, 0x50, 0x99, 0x7a, - 0x6c, 0x78, 0xe9, 0x4c, 0xd8, 0x30, 0x88, 0x50, 0xcb, 0xca, 0x36, 0x70, 0xd3, 0x29, 0x5a, 0xac, - 0x77, 0x05, 0xd8, 0xfc, 0xa5, 0x17, 0xa7, 0x80, 0x08, 0x14, 0xb9, 0x4c, 0x48, 0x28, 0xfc, 0x9e, - 0xb5, 0x4f, 0x21, 0xd1, 0x3e, 0x35, 0x28, 0x4c, 0x5d, 0x29, 0x85, 0x85, 0x29, 0x2a, 0xd9, 0x95, - 0x47, 0x7d, 0xd7, 0x28, 0x76, 0x74, 0xae, 0x64, 0x38, 0xe0, 0xd6, 0x20, 0x72, 0x69, 0x84, 0xb2, - 0xb7, 0x66, 0x8b, 0xc1, 0x72, 0x59, 0xac, 0xa4, 0xca, 0x22, 0xa1, 0x97, 0xab, 0x38, 0xa9, 0xf4, - 0x72, 0xde, 0xb4, 0xe5, 0x8e, 0x9e, 0x68, 0xda, 0x27, 0x50, 0xf5, 0xe2, 0xcb, 0x59, 0xf9, 0x1a, - 0x6b, 0x1d, 0xbd, 0x5b, 0xb6, 0x2b, 0x5e, 0x6c, 0x2b, 0x13, 0xdf, 0x8a, 0xef, 0x8d, 0x3c, 0x86, - 0x62, 0xa8, 0xdb, 0x62, 0xa0, 0xaa, 0xaa, 0x32, 0xab, 0x2a, 0xeb, 0x15, 0x6c, 0x2c, 0xe6, 0x25, - 0xf4, 0x6f, 0xf0, 0x52, 0x08, 0x98, 0xe3, 0xcb, 0xb4, 0x88, 0x01, 0xf9, 0x21, 0x94, 0xd5, 0xfd, - 0x67, 0x14, 0x3a, 0x7a, 0xb7, 0x72, 0x52, 0x57, 0x05, 0x35, 0x5b, 0x3e, 0xf3, 0xb0, 0x28, 0x90, - 0x33, 0x14, 0x09, 0x35, 0x77, 0xc1, 0xe8, 0x68, 0x7e, 0xdd, 0x68, 0xc9, 0xeb, 0xe6, 0x00, 0xd6, - 0xe7, 0x45, 0xcb, 0xd3, 0x20, 0x52, 0x5f, 0x9d, 0x1b, 0xc5, 0xe5, 0x21, 0xb4, 0x4e, 0x4f, 0x68, - 0x9d, 0xf5, 0x17, 0x0d, 0x1a, 0x8b, 0x3c, 0xea, 0x68, 0xf7, 0x60, 0x8d, 0xd7, 0xd9, 0x94, 0x2b, - 0x31, 0xd2, 0x95, 0xed, 0xb9, 0x61, 0xf9, 0x50, 0x0a, 0xa9, 0x43, 0xf9, 0x49, 0x22, 0x5a, 0x1d, - 0xa3, 0x35, 0x55, 0xb4, 0xe9, 0xb8, 0x12, 0x71, 0x9f, 0x42, 0xf3, 0x45, 0xb2, 0x60, 0xe5, 0x81, - 0xe4, 0xd4, 0x37, 0x2f, 0x36, 0x76, 0x13, 0x8a, 0x62, 0x2b, 0xd9, 0xf8, 0x6d, 0x9d, 0x80, 0x99, - 0x3c, 0x93, 0x9f, 0x07, 0xd1, 0x2f, 0x82, 0x11, 0x55, 0x08, 0xb3, 0x93, 0xd5, 0x12, 0x27, 0x6b, - 0xfd, 0x4d, 0x83, 0x9d, 0x8c, 0x45, 0x98, 0xf4, 0xa5, 0x58, 0xc5, 0xba, 0x64, 0xac, 0x87, 0x50, - 0x9b, 0x39, 0x88, 0x0b, 0x5a, 0xbc, 0x06, 0xd6, 0x95, 0xf5, 0x0c, 0x2f, 0x6a, 0x2e, 0x05, 0xca, - 0x0d, 0xb5, 0x4b, 0x97, 0x52, 0x20, 0x8d, 0xbf, 0xe2, 0xc2, 0x95, 0xac, 0x92, 0xe2, 0xbd, 0x55, - 0xf2, 0x1a, 0x9a, 0x99, 0xa1, 0xc6, 0x61, 0x30, 0x8e, 0x29, 0xf9, 0x3a, 0x01, 0xa6, 0x21, 0x58, - 0x5b, 0x81, 0xe5, 0x04, 0x9b, 0xc0, 0x7e, 0xa7, 0x41, 0xe3, 0x05, 0x75, 0xa2, 0xfe, 0xf0, 0xae, - 0xae, 0x2f, 0x65, 0x74, 0x7d, 0x29, 0xa7, 0xeb, 0x97, 0x12, 0x59, 0x4c, 0x15, 0x0d, 0x07, 0x09, - 0x22, 0x26, 0xfb, 0x1f, 0xbf, 0x55, 0xcf, 0xad, 0xce, 0x7b, 0xee, 0x7f, 0x1a, 0xac, 0xab, 0x2d, - 0xbd, 0xc0, 0x8b, 0x3e, 0x43, 0xcf, 0x54, 0x18, 0xf3, 0x76, 0x00, 0x65, 0x5a, 0x94, 0x0c, 0x7d, - 0xf9, 0x89, 0x25, 0x1e, 0x12, 0xc5, 0xe4, 0x43, 0x62, 0xf1, 0x96, 0x2f, 0x7d, 0xd7, 0x5b, 0x7e, - 0xe5, 0xb3, 0x6f, 0x79, 0x2b, 0x80, 0xcd, 0xe5, 0xb3, 0xc8, 0x57, 0x1a, 0x1e, 0x44, 0xc8, 0x85, - 0x4d, 0x3e, 0x4a, 0x71, 0xb0, 0x50, 0x59, 0xfa, 0xbd, 0x95, 0xf5, 0x15, 0x34, 0x9e, 0xc9, 0xd7, - 0xdc, 0x22, 0x65, 0x1d, 0xf4, 0x49, 0xe4, 0x4b, 0x01, 0xe2, 0x9f, 0x27, 0xff, 0x02, 0xa8, 0x28, - 0x9f, 0xd3, 0x6f, 0x2f, 0xc8, 0x9f, 0x16, 0xef, 0x0a, 0x59, 0x5d, 0xc4, 0xba, 0xa3, 0xf4, 0x64, - 0x65, 0x99, 0x07, 0x77, 0xfa, 0x88, 0xaa, 0xb6, 0xf6, 0xff, 0xfc, 0x8f, 0xff, 0xfe, 0xb5, 0xb0, - 0x43, 0x1a, 0xbd, 0xa5, 0x9f, 0x15, 0xbd, 0x21, 0xe7, 0xb9, 0x85, 0xad, 0x2c, 0x05, 0x21, 0x33, - 0xec, 0x3b, 0xf4, 0xc5, 0xdc, 0x4e, 0x1d, 0xca, 0x73, 0xfe, 0xb3, 0xc1, 0x3a, 0x44, 0xce, 0xb6, - 0x69, 0xa6, 0x38, 0x67, 0xd7, 0xc8, 0x4f, 0xb5, 0x23, 0xe2, 0x42, 0x6d, 0x51, 0xdd, 0xc8, 0x7e, - 0xb6, 0xea, 0xdd, 0xc7, 0xd7, 0x44, 0xbe, 0x86, 0x55, 0x5f, 0xe6, 0xe3, 0x2c, 0xaf, 0xa0, 0xf6, - 0x12, 0x2b, 0x63, 0xc6, 0x92, 0x3a, 0xc9, 0xfb, 0x80, 0xcd, 0x4c, 0x60, 0x07, 0x6a, 0x8b, 0xef, - 0x90, 0xf9, 0xf6, 0x33, 0xdf, 0x27, 0xb9, 0x2c, 0x06, 0xb2, 0x90, 0xa3, 0x14, 0x0b, 0x79, 0x09, - 0x95, 0xc4, 0x83, 0x84, 0xcc, 0x2e, 0x85, 0xf4, 0x2b, 0xc5, 0x4c, 0x05, 0xa5, 0x60, 0x49, 0x1a, - 0xd6, 0x85, 0xcd, 0x73, 0xca, 0x6c, 0xea, 0xf3, 0x7e, 0x51, 0xfe, 0x71, 0x46, 0x5e, 0x76, 0xb3, - 0x2a, 0x0c, 0x2b, 0xdb, 0xea, 0x20, 0xba, 0x49, 0x8c, 0x8c, 0x33, 0x46, 0x5c, 0x72, 0x05, 0xf5, - 0xe5, 0xa6, 0xc8, 0xa0, 0x98, 0xe7, 0x2c, 0xab, 0x81, 0xac, 0x27, 0x48, 0xd3, 0x24, 0xbb, 0x29, - 0x1a, 0xf5, 0xf3, 0x89, 0x50, 0xa8, 0x26, 0xb7, 0x47, 0x9a, 0xd9, 0x9b, 0x16, 0x69, 0xba, 0x23, - 0xa2, 0xfc, 0x4e, 0xf1, 0xbd, 0x98, 0x91, 0x11, 0xd4, 0x16, 0x45, 0x65, 0x7e, 0xdc, 0x99, 0xc2, - 0x6f, 0x36, 0xf3, 0xa6, 0x39, 0x59, 0x1b, 0xc9, 0x76, 0xc9, 0x4e, 0x8a, 0x2c, 0x46, 0x6f, 0xe2, - 0x42, 0x3d, 0xd1, 0x7a, 0x42, 0xb9, 0x1b, 0xcb, 0xd9, 0x43, 0x73, 0x6e, 0x5d, 0xc9, 0xdc, 0x59, - 0xdb, 0x69, 0x0e, 0xbe, 0x8e, 0xd7, 0xf0, 0x6f, 0xa0, 0x7e, 0xfe, 0x40, 0x96, 0x6c, 0xb3, 0xd5, - 0x42, 0x12, 0x83, 0xe4, 0x90, 0x90, 0xdf, 0xa6, 0x04, 0x06, 0x9f, 0xf2, 0x24, 0x67, 0xd3, 0xb9, - 0xc1, 0x58, 0xc8, 0xb3, 0x97, 0xa3, 0x29, 0x88, 0x79, 0xf2, 0x6f, 0x1d, 0x40, 0x3e, 0xf5, 0xb9, - 0xb4, 0x06, 0x42, 0x5a, 0x97, 0x1e, 0xff, 0x5f, 0x5c, 0x1f, 0x77, 0x55, 0x3c, 0x32, 0x90, 0x3f, - 0xc2, 0x76, 0xf6, 0x0f, 0x0e, 0x72, 0xa8, 0x60, 0xef, 0xfc, 0x41, 0x92, 0x1b, 0xfc, 0x01, 0x52, - 0xef, 0x9b, 0xb9, 0xd4, 0xfc, 0x2c, 0x43, 0xf5, 0xbb, 0x68, 0x99, 0xfc, 0x0b, 0x65, 0x49, 0xc6, - 0x7b, 0x94, 0x1f, 0xaf, 0x0f, 0x5b, 0x67, 0x3e, 0x75, 0x52, 0xd1, 0x7e, 0xee, 0xd9, 0x7e, 0x0f, - 0x99, 0x5a, 0x47, 0x7b, 0x79, 0x4c, 0x3d, 0xc7, 0xf7, 0xbf, 0xf9, 0xf1, 0xdf, 0x3f, 0xb6, 0xb4, - 0xf7, 0x1f, 0x5b, 0xda, 0x87, 0x8f, 0x2d, 0xed, 0xed, 0xa7, 0xd6, 0xa3, 0xf7, 0x9f, 0x5a, 0x8f, - 0xfe, 0xf9, 0xa9, 0xf5, 0x08, 0xe4, 0x5f, 0x63, 0xdf, 0x6a, 0xaf, 0x37, 0x46, 0x41, 0x44, 0xdd, - 0xa0, 0x2f, 0x81, 0xbe, 0xbe, 0x7e, 0xfa, 0x66, 0x05, 0xc9, 0x7e, 0xf4, 0xff, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x68, 0x5b, 0x98, 0xfc, 0x57, 0x13, 0x00, 0x00, + // 1690 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xc1, 0x6e, 0xe3, 0xc8, + 0x11, 0x1d, 0x8a, 0x92, 0x2d, 0x97, 0x64, 0x8d, 0xdc, 0xb6, 0x6c, 0x9a, 0xb2, 0x25, 0x0d, 0x1d, + 0x27, 0x5e, 0x23, 0xb0, 0x30, 0x0e, 0x92, 0xc3, 0xee, 0x21, 0xf0, 0x7a, 0x26, 0x8e, 0x81, 0x20, + 0x58, 0x70, 0x32, 0x58, 0x60, 0x2f, 0x0a, 0x47, 0x6c, 0x4b, 0x4c, 0x28, 0x91, 0x21, 0x5b, 0x56, + 0x6c, 0x24, 0x97, 0x7c, 0x40, 0xb0, 0x40, 0x80, 0xfd, 0x92, 0x7c, 0x44, 0x8e, 0x0b, 0x24, 0x87, + 0x00, 0x39, 0x64, 0x31, 0x93, 0x1f, 0xc8, 0x1f, 0x04, 0x5d, 0xdd, 0x4d, 0x51, 0x22, 0x69, 0x7b, + 0x37, 0xb7, 0xee, 0xea, 0xea, 0xf7, 0xba, 0xba, 0xab, 0x9e, 0x8a, 0x82, 0x96, 0x13, 0x7a, 0xfd, + 0xdb, 0x97, 0x7d, 0x37, 0x18, 0xce, 0x26, 0x74, 0xca, 0xce, 0xc2, 0x28, 0x60, 0x01, 0x59, 0x73, + 0x42, 0xef, 0xec, 0xf6, 0xa5, 0xd9, 0x1d, 0x05, 0xc1, 0xc8, 0xa7, 0x7d, 0xb4, 0xbe, 0x9b, 0xdd, + 0xf4, 0x99, 0x37, 0xa1, 0x31, 0x73, 0x26, 0xa1, 0x70, 0x34, 0x77, 0x46, 0xc1, 0x28, 0xc0, 0x61, + 0x9f, 0x8f, 0xa4, 0xf5, 0x40, 0x6e, 0xe3, 0xe0, 0xce, 0x74, 0x1a, 0x30, 0x87, 0x79, 0xc1, 0x34, + 0x96, 0xab, 0xed, 0x55, 0x50, 0x3a, 0x09, 0xd9, 0x9d, 0x5c, 0xdc, 0x93, 0x07, 0x72, 0x18, 0x73, + 0x86, 0xe3, 0xc5, 0x91, 0xcc, 0x2d, 0xb9, 0x30, 0x8b, 0x69, 0x24, 0x4c, 0xd6, 0x37, 0x55, 0xa8, + 0xbe, 0x92, 0x07, 0x27, 0x0d, 0x28, 0x79, 0xae, 0xa1, 0xf5, 0xb4, 0x13, 0xdd, 0x2e, 0x79, 0x2e, + 0xd9, 0x81, 0x0a, 0xf3, 0x98, 0x4f, 0x8d, 0x52, 0x4f, 0x3b, 0xd9, 0xb0, 0xc5, 0x84, 0x98, 0x50, + 0xfd, 0x2d, 0xbd, 0x9b, 0x07, 0x91, 0x1b, 0x1b, 0x3a, 0x2e, 0x24, 0x73, 0xd2, 0x83, 0x9a, 0x4b, + 0xe3, 0x61, 0xe4, 0x85, 0xfc, 0xb4, 0x46, 0x19, 0x97, 0xd3, 0x26, 0xb2, 0x07, 0xeb, 0x9c, 0x7e, + 0xe0, 0xb9, 0x46, 0x05, 0x89, 0xd6, 0xf8, 0xf4, 0x1a, 0xc9, 0x86, 0xc1, 0x2d, 0x8d, 0x8c, 0x35, + 0x41, 0x86, 0x13, 0x6e, 0x9d, 0x7b, 0x2e, 0x1b, 0x1b, 0xeb, 0x3d, 0xed, 0xa4, 0x62, 0x8b, 0x09, + 0xd9, 0x85, 0xb5, 0x31, 0xf5, 0x46, 0x63, 0x66, 0x54, 0xd1, 0x2c, 0x67, 0xc4, 0x80, 0xf5, 0x30, + 0xa2, 0xb7, 0x1e, 0x9d, 0x1b, 0x1b, 0xb8, 0xa0, 0xa6, 0x1c, 0x27, 0x74, 0x46, 0x34, 0x36, 0x40, + 0xe0, 0xe0, 0x84, 0x10, 0x28, 0xcf, 0x66, 0x9e, 0x6b, 0xd4, 0x90, 0x12, 0xc7, 0xe4, 0x18, 0x1a, + 0x6e, 0x30, 0x9f, 0xfa, 0x81, 0xe3, 0x0e, 0x86, 0xc1, 0x6c, 0xca, 0x8c, 0x3a, 0x6e, 0xd9, 0x54, + 0xd6, 0x4b, 0x6e, 0x24, 0x87, 0x00, 0x1c, 0x58, 0xba, 0x6c, 0xa2, 0xcb, 0x06, 0xb7, 0x88, 0xe5, + 0x63, 0x68, 0xdc, 0x38, 0xb7, 0x41, 0xe4, 0x31, 0x2a, 0x5d, 0x1a, 0x02, 0x45, 0x59, 0x85, 0xdb, + 0x11, 0x6c, 0x0e, 0x83, 0x09, 0xbf, 0x7c, 0xe9, 0xf5, 0x1c, 0xbd, 0xea, 0xd2, 0x28, 0x9c, 0x76, + 0xa0, 0x12, 0x0f, 0x83, 0x88, 0x1a, 0x4d, 0x71, 0x76, 0x9c, 0x90, 0x2e, 0xd4, 0x70, 0x20, 0x37, + 0x6e, 0xe1, 0x1a, 0xa0, 0x29, 0xd9, 0x16, 0x46, 0xde, 0x90, 0x1a, 0x44, 0x86, 0xcc, 0x27, 0x3c, + 0xe4, 0xd8, 0xbb, 0xa7, 0xc6, 0x36, 0x5e, 0x3e, 0x8e, 0xf9, 0x75, 0xc6, 0xcc, 0x61, 0xb3, 0xd8, + 0xd8, 0x11, 0xd7, 0x29, 0x66, 0xe4, 0xa7, 0x00, 0xc3, 0x88, 0x3a, 0x8c, 0xba, 0x03, 0x87, 0x19, + 0xad, 0x9e, 0x76, 0x52, 0x3b, 0x37, 0xcf, 0x44, 0xea, 0x9d, 0xa9, 0xd4, 0x3b, 0xfb, 0x95, 0xca, + 0xe7, 0x4f, 0xcb, 0x5f, 0xfe, 0xbb, 0xab, 0xd9, 0x1b, 0x72, 0xcf, 0x05, 0xe3, 0x00, 0xb3, 0xd0, + 0x55, 0x00, 0xbb, 0x4f, 0x05, 0x90, 0x7b, 0x04, 0x80, 0x4b, 0x7d, 0x2a, 0x01, 0xf6, 0x9e, 0x0a, + 0x20, 0xf7, 0x5c, 0x30, 0x72, 0x09, 0xf5, 0x88, 0x8a, 0xdb, 0x44, 0x88, 0xc3, 0x27, 0x42, 0xd4, + 0x92, 0x5d, 0x17, 0x8c, 0x7c, 0x1f, 0x9e, 0xab, 0x53, 0xa8, 0xdc, 0x35, 0xf0, 0xfa, 0x36, 0xa5, + 0xf9, 0xad, 0x48, 0x61, 0x13, 0xaa, 0x7c, 0x7d, 0xea, 0x4c, 0xa8, 0xb1, 0x2f, 0x2a, 0x43, 0xcd, + 0xf9, 0x73, 0x0d, 0x1d, 0x46, 0x47, 0x41, 0x74, 0xc7, 0xf7, 0x9b, 0x3d, 0xfd, 0x44, 0xb7, 0x41, + 0x99, 0xae, 0x5d, 0xf2, 0x11, 0x34, 0xd3, 0x24, 0x08, 0xd2, 0x46, 0x90, 0xe7, 0x29, 0x16, 0xc4, + 0x6a, 0x82, 0x4e, 0x7f, 0xcf, 0x8c, 0x03, 0x5c, 0xe5, 0x43, 0x72, 0x0e, 0xb0, 0xa8, 0x76, 0xa3, + 0x83, 0x41, 0x92, 0x33, 0xa1, 0x40, 0x67, 0x17, 0xc9, 0x8a, 0x9d, 0xf2, 0x22, 0x3d, 0x28, 0x73, + 0x22, 0xa3, 0x8b, 0xde, 0x75, 0xe5, 0xcd, 0x59, 0x6c, 0x5c, 0xe1, 0x67, 0xa6, 0x53, 0xe7, 0x9d, + 0x4f, 0x07, 0xa3, 0x7b, 0x2f, 0x34, 0x7a, 0x3d, 0xed, 0xa4, 0x6a, 0x83, 0x30, 0x5d, 0xdd, 0x7b, + 0xa1, 0x48, 0xdf, 0xe9, 0x2d, 0x8d, 0xd8, 0x80, 0x46, 0x51, 0x10, 0x19, 0x2f, 0xf0, 0x48, 0x75, + 0x69, 0x7c, 0xcd, 0x6d, 0xd6, 0x0f, 0xa0, 0xf5, 0x0a, 0x03, 0x50, 0x3a, 0x63, 0xd3, 0xdf, 0xcd, + 0x68, 0xbc, 0x90, 0x1b, 0x5d, 0xc8, 0x8d, 0xd5, 0x87, 0x43, 0x9b, 0x62, 0xd9, 0xdb, 0x74, 0x78, + 0x37, 0xf4, 0x1f, 0xdd, 0xf0, 0x1a, 0xc8, 0x15, 0x65, 0x45, 0x5e, 0x4a, 0xc5, 0xba, 0x50, 0x9b, + 0x7b, 0x6c, 0x3c, 0x70, 0x66, 0x6c, 0x1c, 0x44, 0xa8, 0x65, 0x55, 0x1b, 0xb8, 0xe9, 0x02, 0x2d, + 0xd6, 0x00, 0xda, 0x6f, 0x16, 0x30, 0xf1, 0xa5, 0x7c, 0x13, 0x85, 0xd7, 0x85, 0x9a, 0x92, 0xf6, + 0x41, 0x42, 0x0f, 0xca, 0x74, 0xed, 0xae, 0x3e, 0x6d, 0x69, 0xf5, 0x69, 0xad, 0xaf, 0x4a, 0xb0, + 0xfd, 0x0b, 0x2f, 0xce, 0x9c, 0x94, 0x40, 0x99, 0xeb, 0x90, 0x3c, 0x2b, 0x8e, 0x93, 0xfa, 0x2c, + 0xa5, 0xea, 0xb3, 0x01, 0xa5, 0xb9, 0x2b, 0xb5, 0xb6, 0x34, 0x47, 0xa9, 0xbc, 0xf1, 0xa8, 0xef, + 0x1a, 0xe5, 0x9e, 0xce, 0xa5, 0x12, 0x27, 0xdc, 0x1a, 0x44, 0x2e, 0x8d, 0x50, 0x57, 0x37, 0x6c, + 0x31, 0x59, 0x3d, 0xdc, 0x5a, 0x26, 0xef, 0x52, 0x82, 0xbc, 0x8e, 0x8b, 0x4a, 0x90, 0x17, 0xaa, + 0x50, 0xed, 0xe9, 0x29, 0x55, 0x78, 0x01, 0x75, 0x2f, 0x1e, 0x24, 0xf5, 0x61, 0x6c, 0xf4, 0xf4, + 0x93, 0xaa, 0x5d, 0xf3, 0x62, 0x5b, 0x99, 0xf8, 0x51, 0x7c, 0x6f, 0xe2, 0x31, 0x54, 0x5b, 0xdd, + 0x16, 0x13, 0x95, 0xb6, 0xb5, 0x24, 0x6d, 0xad, 0xcf, 0x61, 0x6b, 0xf9, 0x5e, 0x42, 0xff, 0x0e, + 0x7f, 0x75, 0x02, 0xe6, 0xf8, 0xf2, 0x5a, 0xc4, 0x84, 0xfc, 0x10, 0xaa, 0xea, 0xca, 0xf1, 0x86, + 0x6b, 0xe7, 0x4d, 0x95, 0xb1, 0xc9, 0xf6, 0xc4, 0xc3, 0xa2, 0x40, 0x2e, 0x51, 0x85, 0xd4, 0xda, + 0x35, 0xa3, 0x93, 0xc5, 0xef, 0x99, 0x96, 0xfe, 0x3d, 0x3b, 0x82, 0xcd, 0x45, 0x55, 0x88, 0x07, + 0xe4, 0xbc, 0xf5, 0x85, 0x51, 0xfc, 0x3a, 0x09, 0x31, 0xd5, 0x53, 0x62, 0x6a, 0xfd, 0x59, 0x83, + 0xd6, 0x32, 0x8f, 0x7a, 0xda, 0x03, 0xd8, 0xe0, 0x89, 0x3c, 0xe7, 0x52, 0x8f, 0x74, 0x55, 0x7b, + 0x61, 0x78, 0x34, 0x63, 0xc8, 0x4f, 0x52, 0xd1, 0xea, 0x18, 0xad, 0xa9, 0xa2, 0xcd, 0xc6, 0x95, + 0x8a, 0xfb, 0x62, 0x29, 0x95, 0x93, 0x07, 0x29, 0x28, 0x20, 0x9e, 0x6c, 0xec, 0x2e, 0x14, 0xc9, + 0x56, 0xb1, 0x71, 0x6c, 0x9d, 0x83, 0x99, 0x7e, 0x93, 0x9f, 0x05, 0xd1, 0xcf, 0x83, 0x09, 0x55, + 0x08, 0xc9, 0xcb, 0x6a, 0xa9, 0x97, 0xb5, 0xfe, 0xaa, 0xc1, 0x5e, 0xce, 0x26, 0xbc, 0xf4, 0x95, + 0x58, 0xc5, 0xbe, 0x74, 0xac, 0xc7, 0xd0, 0x48, 0x1c, 0x44, 0x07, 0x20, 0xda, 0x8d, 0x4d, 0x65, + 0xbd, 0xc4, 0x4e, 0x80, 0x6b, 0x8d, 0x72, 0x43, 0x71, 0xd4, 0xa5, 0xd6, 0x48, 0xe3, 0x2f, 0xb9, + 0x32, 0xa6, 0xb3, 0xa4, 0xfc, 0x68, 0x96, 0x7c, 0x01, 0xed, 0xdc, 0x50, 0xe3, 0x30, 0x98, 0xc6, + 0x94, 0x7c, 0x92, 0x02, 0xd3, 0x10, 0xac, 0xab, 0xc0, 0x0a, 0x82, 0x4d, 0x61, 0x7f, 0xa5, 0x41, + 0xeb, 0x0d, 0x75, 0xa2, 0xe1, 0xf8, 0xa1, 0xaa, 0xaf, 0xe4, 0x54, 0x7d, 0xa5, 0xa0, 0xea, 0x57, + 0x2e, 0xb2, 0x9c, 0x49, 0x1a, 0x0e, 0x12, 0x44, 0x4c, 0xd6, 0x3f, 0x8e, 0x55, 0xcd, 0xad, 0x2f, + 0x6a, 0xee, 0xbf, 0x1a, 0x6c, 0xaa, 0x23, 0xbd, 0xc1, 0x4e, 0x22, 0x47, 0x30, 0xd3, 0x82, 0x27, + 0xca, 0x21, 0x2d, 0x78, 0x29, 0xc9, 0xd0, 0x57, 0x7b, 0x38, 0xd1, 0xa9, 0x94, 0xd3, 0x9d, 0xca, + 0x72, 0x1b, 0x51, 0xf9, 0x7f, 0xdb, 0x88, 0xb5, 0x6f, 0xdd, 0x46, 0x58, 0x01, 0x6c, 0xaf, 0xbe, + 0x45, 0xb1, 0xd2, 0xf0, 0x20, 0x42, 0x2e, 0x6c, 0xb2, 0xeb, 0xc5, 0xc9, 0x52, 0x66, 0xe9, 0x8f, + 0x66, 0xd6, 0x47, 0xd0, 0x7a, 0x25, 0xdb, 0xc5, 0x65, 0xca, 0x26, 0xe8, 0xb3, 0xc8, 0x97, 0x02, + 0xc4, 0x87, 0xe7, 0xff, 0xa8, 0x41, 0x4d, 0xf9, 0x5c, 0x7c, 0x76, 0x4d, 0xfe, 0xb8, 0xfc, 0x5b, + 0x21, 0xb3, 0x8b, 0x58, 0x0f, 0xa4, 0x9e, 0xcc, 0x2c, 0xf3, 0xe8, 0x41, 0x1f, 0x91, 0xd5, 0xd6, + 0xe1, 0x9f, 0xfe, 0xfe, 0x9f, 0xbf, 0x94, 0xf6, 0x48, 0xab, 0xbf, 0xf2, 0xdd, 0xd2, 0x1f, 0x73, + 0x9e, 0x7b, 0xd8, 0xc9, 0x53, 0x10, 0x92, 0x60, 0x3f, 0xa0, 0x2f, 0xe6, 0x6e, 0xe6, 0x51, 0x5e, + 0xf3, 0xef, 0x12, 0xeb, 0x18, 0x39, 0xbb, 0xa6, 0x99, 0xe1, 0x4c, 0x7e, 0x46, 0x3e, 0xd6, 0x4e, + 0x89, 0x0b, 0x8d, 0x65, 0x75, 0x23, 0x87, 0xf9, 0xaa, 0xf7, 0x18, 0x5f, 0x1b, 0xf9, 0x5a, 0x56, + 0x73, 0x95, 0x8f, 0xb3, 0x7c, 0x0e, 0x8d, 0xb7, 0x98, 0x19, 0x09, 0x4b, 0xe6, 0x25, 0x1f, 0x03, + 0x36, 0x73, 0x81, 0x1d, 0x68, 0x2c, 0x37, 0x3a, 0x8b, 0xe3, 0xe7, 0x36, 0x40, 0x85, 0x2c, 0x06, + 0xb2, 0x90, 0xd3, 0x0c, 0x0b, 0x79, 0x0b, 0xb5, 0x54, 0xc7, 0x43, 0x92, 0x1f, 0x85, 0x6c, 0x1b, + 0x64, 0x66, 0x82, 0x52, 0xb0, 0x24, 0x0b, 0xeb, 0xc2, 0xf6, 0x15, 0x65, 0x36, 0xf5, 0x79, 0xbd, + 0x24, 0x8d, 0x50, 0xce, 0xbd, 0xec, 0xe7, 0x65, 0x18, 0x66, 0xb6, 0xd5, 0x43, 0x74, 0x93, 0x18, + 0x39, 0x6f, 0x8c, 0xb8, 0xe4, 0x06, 0x9a, 0xab, 0x45, 0x91, 0x43, 0xb1, 0xb8, 0xb3, 0xbc, 0x02, + 0xb2, 0x5e, 0x20, 0x4d, 0x9b, 0xec, 0x67, 0x68, 0xd4, 0xf7, 0x19, 0xa1, 0x50, 0x4f, 0x1f, 0x8f, + 0xb4, 0xf3, 0x0f, 0x2d, 0xae, 0xe9, 0x81, 0x88, 0x8a, 0x2b, 0xc5, 0xf7, 0x62, 0x46, 0x26, 0xd0, + 0x58, 0x16, 0x95, 0xc5, 0x73, 0xe7, 0x0a, 0xbf, 0xd9, 0x2e, 0x5a, 0xe6, 0x64, 0x5d, 0x24, 0xdb, + 0x27, 0x7b, 0x19, 0xb2, 0x18, 0xbd, 0x89, 0x0b, 0xcd, 0x54, 0xe9, 0x09, 0xe5, 0x6e, 0xad, 0xde, + 0x1e, 0x9a, 0x0b, 0xf3, 0x4a, 0xde, 0x9d, 0xb5, 0x9b, 0xe5, 0xe0, 0xfb, 0x78, 0x0e, 0xff, 0x1a, + 0x9a, 0x57, 0x4f, 0x64, 0xc9, 0x37, 0x5b, 0x1d, 0x24, 0x31, 0x48, 0x01, 0x09, 0xf9, 0x4d, 0x46, + 0x60, 0xf0, 0x5b, 0x81, 0x14, 0x1c, 0xba, 0x30, 0x18, 0x0b, 0x79, 0x0e, 0x0a, 0x34, 0x45, 0x60, + 0xde, 0x2d, 0x71, 0x25, 0x9d, 0x7d, 0xae, 0x98, 0xad, 0xf6, 0xfd, 0x85, 0xc4, 0xdf, 0x43, 0xe2, + 0x8e, 0x99, 0xcd, 0x40, 0xf5, 0x5b, 0xfc, 0xb1, 0x76, 0x7a, 0xfe, 0x2f, 0x1d, 0x40, 0x7e, 0xc6, + 0x70, 0x55, 0x0f, 0x84, 0xaa, 0xaf, 0x7c, 0xd8, 0x7c, 0xe7, 0xd4, 0x7c, 0xa8, 0xd8, 0x90, 0x81, + 0xfc, 0x01, 0x76, 0xf3, 0x3f, 0xa6, 0xc8, 0xb1, 0x82, 0x7d, 0xf0, 0x63, 0xab, 0x30, 0xfc, 0x23, + 0xa4, 0x3e, 0x34, 0x0b, 0xa9, 0x79, 0x1a, 0x85, 0xea, 0x9b, 0x6f, 0x95, 0xfc, 0x3b, 0x2a, 0xa2, + 0x8c, 0xf7, 0xb4, 0x38, 0x5e, 0x1f, 0x76, 0x2e, 0x7d, 0xea, 0x64, 0xa2, 0xfd, 0xb6, 0x69, 0x25, + 0x5f, 0xf7, 0xf4, 0xa0, 0x88, 0xa9, 0xef, 0xf8, 0xfe, 0xa7, 0x3f, 0xfe, 0xdb, 0xfb, 0x8e, 0xf6, + 0xf5, 0xfb, 0x8e, 0xf6, 0xcd, 0xfb, 0x8e, 0xf6, 0xe5, 0x87, 0xce, 0xb3, 0xaf, 0x3f, 0x74, 0x9e, + 0xfd, 0xf3, 0x43, 0xe7, 0x19, 0xc8, 0xbf, 0xfd, 0x3e, 0xd3, 0xbe, 0xd8, 0x9a, 0x04, 0x11, 0x75, + 0x83, 0xa1, 0x04, 0xfa, 0xe4, 0xf6, 0xe5, 0xbb, 0x35, 0x24, 0xfb, 0xd1, 0xff, 0x02, 0x00, 0x00, + 0xff, 0xff, 0xd6, 0x05, 0xf6, 0xca, 0x33, 0x14, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1431,6 +1487,8 @@ type DocumentAPIClient interface { GetDocumentScore(ctx context.Context, in *DocumentScore, opts ...grpc.CallOption) (*DocumentScore, error) // 将文档一键设置为重转 SetDocumentReconvert(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) + // 批量更新文档分类 + SetDocumentsCategory(ctx context.Context, in *SetDocumentsCategoryRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) } type documentAPIClient struct { @@ -1558,6 +1616,15 @@ func (c *documentAPIClient) SetDocumentReconvert(ctx context.Context, in *emptyp return out, nil } +func (c *documentAPIClient) SetDocumentsCategory(ctx context.Context, in *SetDocumentsCategoryRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/api.v1.DocumentAPI/SetDocumentsCategory", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // DocumentAPIServer is the server API for DocumentAPI service. type DocumentAPIServer interface { // 针对首页的文档查询 @@ -1586,6 +1653,8 @@ type DocumentAPIServer interface { GetDocumentScore(context.Context, *DocumentScore) (*DocumentScore, error) // 将文档一键设置为重转 SetDocumentReconvert(context.Context, *emptypb.Empty) (*emptypb.Empty, error) + // 批量更新文档分类 + SetDocumentsCategory(context.Context, *SetDocumentsCategoryRequest) (*emptypb.Empty, error) } // UnimplementedDocumentAPIServer can be embedded to have forward compatible implementations. @@ -1631,6 +1700,9 @@ func (*UnimplementedDocumentAPIServer) GetDocumentScore(ctx context.Context, req func (*UnimplementedDocumentAPIServer) SetDocumentReconvert(ctx context.Context, req *emptypb.Empty) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method SetDocumentReconvert not implemented") } +func (*UnimplementedDocumentAPIServer) SetDocumentsCategory(ctx context.Context, req *SetDocumentsCategoryRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetDocumentsCategory not implemented") +} func RegisterDocumentAPIServer(s *grpc.Server, srv DocumentAPIServer) { s.RegisterService(&_DocumentAPI_serviceDesc, srv) @@ -1870,6 +1942,24 @@ func _DocumentAPI_SetDocumentReconvert_Handler(srv interface{}, ctx context.Cont return interceptor(ctx, in, info, handler) } +func _DocumentAPI_SetDocumentsCategory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetDocumentsCategoryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DocumentAPIServer).SetDocumentsCategory(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/api.v1.DocumentAPI/SetDocumentsCategory", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DocumentAPIServer).SetDocumentsCategory(ctx, req.(*SetDocumentsCategoryRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _DocumentAPI_serviceDesc = grpc.ServiceDesc{ ServiceName: "api.v1.DocumentAPI", HandlerType: (*DocumentAPIServer)(nil), @@ -1926,6 +2016,10 @@ var _DocumentAPI_serviceDesc = grpc.ServiceDesc{ MethodName: "SetDocumentReconvert", Handler: _DocumentAPI_SetDocumentReconvert_Handler, }, + { + MethodName: "SetDocumentsCategory", + Handler: _DocumentAPI_SetDocumentsCategory_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "api/v1/document.proto", @@ -2536,6 +2630,67 @@ func (m *GetDocumentRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *SetDocumentsCategoryRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SetDocumentsCategoryRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SetDocumentsCategoryRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CategoryId) > 0 { + dAtA14 := make([]byte, len(m.CategoryId)*10) + var j13 int + for _, num1 := range m.CategoryId { + num := uint64(num1) + for num >= 1<<7 { + dAtA14[j13] = uint8(uint64(num)&0x7f | 0x80) + num >>= 7 + j13++ + } + dAtA14[j13] = uint8(num) + j13++ + } + i -= j13 + copy(dAtA[i:], dAtA14[:j13]) + i = encodeVarintDocument(dAtA, i, uint64(j13)) + i-- + dAtA[i] = 0x12 + } + if len(m.DocumentId) > 0 { + dAtA16 := make([]byte, len(m.DocumentId)*10) + var j15 int + for _, num1 := range m.DocumentId { + num := uint64(num1) + for num >= 1<<7 { + dAtA16[j15] = uint8(uint64(num)&0x7f | 0x80) + num >>= 7 + j15++ + } + dAtA16[j15] = uint8(num) + j15++ + } + i -= j15 + copy(dAtA[i:], dAtA16[:j15]) + i = encodeVarintDocument(dAtA, i, uint64(j15)) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *ListDocumentRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -2582,59 +2737,59 @@ func (m *ListDocumentRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x4a } if len(m.Status) > 0 { - dAtA14 := make([]byte, len(m.Status)*10) - var j13 int + dAtA18 := make([]byte, len(m.Status)*10) + var j17 int for _, num1 := range m.Status { num := uint64(num1) for num >= 1<<7 { - dAtA14[j13] = uint8(uint64(num)&0x7f | 0x80) + dAtA18[j17] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j13++ + j17++ } - dAtA14[j13] = uint8(num) - j13++ + dAtA18[j17] = uint8(num) + j17++ } - i -= j13 - copy(dAtA[i:], dAtA14[:j13]) - i = encodeVarintDocument(dAtA, i, uint64(j13)) + i -= j17 + copy(dAtA[i:], dAtA18[:j17]) + i = encodeVarintDocument(dAtA, i, uint64(j17)) i-- dAtA[i] = 0x42 } if len(m.UserId) > 0 { - dAtA16 := make([]byte, len(m.UserId)*10) - var j15 int + dAtA20 := make([]byte, len(m.UserId)*10) + var j19 int for _, num1 := range m.UserId { num := uint64(num1) for num >= 1<<7 { - dAtA16[j15] = uint8(uint64(num)&0x7f | 0x80) + dAtA20[j19] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j15++ + j19++ } - dAtA16[j15] = uint8(num) - j15++ + dAtA20[j19] = uint8(num) + j19++ } - i -= j15 - copy(dAtA[i:], dAtA16[:j15]) - i = encodeVarintDocument(dAtA, i, uint64(j15)) + i -= j19 + copy(dAtA[i:], dAtA20[:j19]) + i = encodeVarintDocument(dAtA, i, uint64(j19)) i-- dAtA[i] = 0x3a } if len(m.CategoryId) > 0 { - dAtA18 := make([]byte, len(m.CategoryId)*10) - var j17 int + dAtA22 := make([]byte, len(m.CategoryId)*10) + var j21 int for _, num1 := range m.CategoryId { num := uint64(num1) for num >= 1<<7 { - dAtA18[j17] = uint8(uint64(num)&0x7f | 0x80) + dAtA22[j21] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j17++ + j21++ } - dAtA18[j17] = uint8(num) - j17++ + dAtA22[j21] = uint8(num) + j21++ } - i -= j17 - copy(dAtA[i:], dAtA18[:j17]) - i = encodeVarintDocument(dAtA, i, uint64(j17)) + i -= j21 + copy(dAtA[i:], dAtA22[:j21]) + i = encodeVarintDocument(dAtA, i, uint64(j21)) i-- dAtA[i] = 0x32 } @@ -2791,21 +2946,21 @@ func (m *CreateDocumentRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { } } if len(m.CategoryId) > 0 { - dAtA20 := make([]byte, len(m.CategoryId)*10) - var j19 int + dAtA24 := make([]byte, len(m.CategoryId)*10) + var j23 int for _, num1 := range m.CategoryId { num := uint64(num1) for num >= 1<<7 { - dAtA20[j19] = uint8(uint64(num)&0x7f | 0x80) + dAtA24[j23] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j19++ + j23++ } - dAtA20[j19] = uint8(num) - j19++ + dAtA24[j23] = uint8(num) + j23++ } - i -= j19 - copy(dAtA[i:], dAtA20[:j19]) - i = encodeVarintDocument(dAtA, i, uint64(j19)) + i -= j23 + copy(dAtA[i:], dAtA24[:j23]) + i = encodeVarintDocument(dAtA, i, uint64(j23)) i-- dAtA[i] = 0x12 } @@ -2848,21 +3003,21 @@ func (m *SetDocumentRecommendRequest) MarshalToSizedBuffer(dAtA []byte) (int, er dAtA[i] = 0x10 } if len(m.Id) > 0 { - dAtA22 := make([]byte, len(m.Id)*10) - var j21 int + dAtA26 := make([]byte, len(m.Id)*10) + var j25 int for _, num1 := range m.Id { num := uint64(num1) for num >= 1<<7 { - dAtA22[j21] = uint8(uint64(num)&0x7f | 0x80) + dAtA26[j25] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j21++ + j25++ } - dAtA22[j21] = uint8(num) - j21++ + dAtA26[j25] = uint8(num) + j25++ } - i -= j21 - copy(dAtA[i:], dAtA22[:j21]) - i = encodeVarintDocument(dAtA, i, uint64(j21)) + i -= j25 + copy(dAtA[i:], dAtA26[:j25]) + i = encodeVarintDocument(dAtA, i, uint64(j25)) i-- dAtA[i] = 0xa } @@ -3025,21 +3180,21 @@ func (m *SearchDocumentRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x2a } if len(m.CategoryId) > 0 { - dAtA24 := make([]byte, len(m.CategoryId)*10) - var j23 int + dAtA28 := make([]byte, len(m.CategoryId)*10) + var j27 int for _, num1 := range m.CategoryId { num := uint64(num1) for num >= 1<<7 { - dAtA24[j23] = uint8(uint64(num)&0x7f | 0x80) + dAtA28[j27] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j23++ + j27++ } - dAtA24[j23] = uint8(num) - j23++ + dAtA28[j27] = uint8(num) + j27++ } - i -= j23 - copy(dAtA[i:], dAtA24[:j23]) - i = encodeVarintDocument(dAtA, i, uint64(j23)) + i -= j27 + copy(dAtA[i:], dAtA28[:j27]) + i = encodeVarintDocument(dAtA, i, uint64(j27)) i-- dAtA[i] = 0x22 } @@ -3084,22 +3239,22 @@ func (m *DocumentScore) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l if m.UpdatedAt != nil { - n25, err25 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.UpdatedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.UpdatedAt):]) - if err25 != nil { - return 0, err25 + n29, err29 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.UpdatedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.UpdatedAt):]) + if err29 != nil { + return 0, err29 } - i -= n25 - i = encodeVarintDocument(dAtA, i, uint64(n25)) + i -= n29 + i = encodeVarintDocument(dAtA, i, uint64(n29)) i-- dAtA[i] = 0x32 } if m.CreatedAt != nil { - n26, err26 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.CreatedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.CreatedAt):]) - if err26 != nil { - return 0, err26 + n30, err30 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.CreatedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.CreatedAt):]) + if err30 != nil { + return 0, err30 } - i -= n26 - i = encodeVarintDocument(dAtA, i, uint64(n26)) + i -= n30 + i = encodeVarintDocument(dAtA, i, uint64(n30)) i-- dAtA[i] = 0x2a } @@ -3390,6 +3545,29 @@ func (m *GetDocumentRequest) Size() (n int) { return n } +func (m *SetDocumentsCategoryRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.DocumentId) > 0 { + l = 0 + for _, e := range m.DocumentId { + l += sovDocument(uint64(e)) + } + n += 1 + sovDocument(uint64(l)) + l + } + if len(m.CategoryId) > 0 { + l = 0 + for _, e := range m.CategoryId { + l += sovDocument(uint64(e)) + } + n += 1 + sovDocument(uint64(l)) + l + } + return n +} + func (m *ListDocumentRequest) Size() (n int) { if m == nil { return 0 @@ -4983,6 +5161,208 @@ func (m *GetDocumentRequest) Unmarshal(dAtA []byte) error { } return nil } +func (m *SetDocumentsCategoryRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDocument + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SetDocumentsCategoryRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SetDocumentsCategoryRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType == 0 { + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDocument + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.DocumentId = append(m.DocumentId, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDocument + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthDocument + } + postIndex := iNdEx + packedLen + if postIndex < 0 { + return ErrInvalidLengthDocument + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var elementCount int + var count int + for _, integer := range dAtA[iNdEx:postIndex] { + if integer < 128 { + count++ + } + } + elementCount = count + if elementCount != 0 && len(m.DocumentId) == 0 { + m.DocumentId = make([]int64, 0, elementCount) + } + for iNdEx < postIndex { + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDocument + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.DocumentId = append(m.DocumentId, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field DocumentId", wireType) + } + case 2: + if wireType == 0 { + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDocument + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.CategoryId = append(m.CategoryId, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDocument + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthDocument + } + postIndex := iNdEx + packedLen + if postIndex < 0 { + return ErrInvalidLengthDocument + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var elementCount int + var count int + for _, integer := range dAtA[iNdEx:postIndex] { + if integer < 128 { + count++ + } + } + elementCount = count + if elementCount != 0 && len(m.CategoryId) == 0 { + m.CategoryId = make([]int64, 0, elementCount) + } + for iNdEx < postIndex { + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDocument + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.CategoryId = append(m.CategoryId, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field CategoryId", wireType) + } + default: + iNdEx = preIndex + skippy, err := skipDocument(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthDocument + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *ListDocumentRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/api/v1/document.pb.gw.go b/api/v1/document.pb.gw.go index e50e13b..4d0eab4 100644 --- a/api/v1/document.pb.gw.go +++ b/api/v1/document.pb.gw.go @@ -476,6 +476,40 @@ func local_request_DocumentAPI_SetDocumentReconvert_0(ctx context.Context, marsh } +func request_DocumentAPI_SetDocumentsCategory_0(ctx context.Context, marshaler runtime.Marshaler, client DocumentAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SetDocumentsCategoryRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.SetDocumentsCategory(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_DocumentAPI_SetDocumentsCategory_0(ctx context.Context, marshaler runtime.Marshaler, server DocumentAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SetDocumentsCategoryRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.SetDocumentsCategory(ctx, &protoReq) + return msg, metadata, err + +} + var ( filter_RecycleAPI_ListRecycleDocument_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) @@ -905,6 +939,29 @@ func RegisterDocumentAPIHandlerServer(ctx context.Context, mux *runtime.ServeMux }) + mux.Handle("PUT", pattern_DocumentAPI_SetDocumentsCategory_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_DocumentAPI_SetDocumentsCategory_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_DocumentAPI_SetDocumentsCategory_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -1307,6 +1364,26 @@ func RegisterDocumentAPIHandlerClient(ctx context.Context, mux *runtime.ServeMux }) + mux.Handle("PUT", pattern_DocumentAPI_SetDocumentsCategory_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_DocumentAPI_SetDocumentsCategory_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_DocumentAPI_SetDocumentsCategory_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -1336,6 +1413,8 @@ var ( pattern_DocumentAPI_GetDocumentScore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "document", "score"}, "", runtime.AssumeColonVerbOpt(true))) pattern_DocumentAPI_SetDocumentReconvert_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "document", "reconvert"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_DocumentAPI_SetDocumentsCategory_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "document", "category"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( @@ -1364,6 +1443,8 @@ var ( forward_DocumentAPI_GetDocumentScore_0 = runtime.ForwardResponseMessage forward_DocumentAPI_SetDocumentReconvert_0 = runtime.ForwardResponseMessage + + forward_DocumentAPI_SetDocumentsCategory_0 = runtime.ForwardResponseMessage ) // RegisterRecycleAPIHandlerFromEndpoint is same as RegisterRecycleAPIHandler but diff --git a/api/v1/document.proto b/api/v1/document.proto index f676cba..23ba44b 100644 --- a/api/v1/document.proto +++ b/api/v1/document.proto @@ -67,6 +67,11 @@ message GetDocumentRequest { bool with_author = 2; // 是否查询作者信息 } +message SetDocumentsCategoryRequest { + repeated int64 document_id = 1; // 文档ID + repeated int64 category_id = 2; // 分类ID +} + // 文档列表 message ListDocumentRequest { int64 page = 1; // 页码 @@ -256,6 +261,15 @@ service DocumentAPI { put : '/api/v1/document/reconvert', }; } + + // 批量更新文档分类 + rpc SetDocumentsCategory(SetDocumentsCategoryRequest) + returns (google.protobuf.Empty) { + option (google.api.http) = { + put : '/api/v1/document/category', + body : '*', + }; + } } service RecycleAPI { diff --git a/biz/document.go b/biz/document.go index a780a53..6db5098 100644 --- a/biz/document.go +++ b/biz/document.go @@ -786,3 +786,17 @@ func (s *DocumentAPIService) SetDocumentReconvert(ctx context.Context, req *empt return &emptypb.Empty{}, nil } + +func (s *DocumentAPIService) SetDocumentsCategory(ctx context.Context, req *pb.SetDocumentsCategoryRequest) (res *emptypb.Empty, err error) { + _, err = s.checkPermission(ctx) + if err != nil { + return nil, err + } + + err = s.dbModel.SetDocumentsCategory(req.DocumentId, req.CategoryId) + if err != nil { + return nil, status.Errorf(codes.Internal, "更新文档分类失败:%s", err.Error()) + } + + return &emptypb.Empty{}, nil +} diff --git a/model/document.go b/model/document.go index 151f42c..168b587 100644 --- a/model/document.go +++ b/model/document.go @@ -292,8 +292,6 @@ func (m *DBModel) DeleteDocument(ids []int64, deletedUserId int64, deepDelete .. } for _, doc := range docs { - // 文档不是禁用状态,且未被逻辑删除,则需要减少用户、分类下的文档统计数量 - // if doc.Status != DocumentStatusDisabled && doc.DeletedAt == nil { if doc.DeletedAt == nil { err = sess.Model(modelUser).Where("id = ?", doc.UserId).Update("doc_count", gorm.Expr("doc_count - ?", 1)).Error if err != nil { @@ -765,3 +763,56 @@ func (m *DBModel) CountDocument(status ...int) (count int64, err error) { } return } + +func (m *DBModel) SetDocumentsCategory(documentId, categoryId []int64) (err error) { + tx := m.db.Begin() + defer func() { + if err != nil { + tx.Rollback() + } else { + tx.Commit() + } + }() + + for _, id := range documentId { + // 1. 旧的文档分类,减少计数 + var docCates []DocumentCategory + m.db.Model(&DocumentCategory{}).Where("document_id = ?", id).Find(&docCates) + for _, cate := range docCates { + err = tx.Model(&Category{}).Where("id = ?", cate.CategoryId).Update("doc_count", gorm.Expr("doc_count - ?", 1)).Error + if err != nil { + m.logger.Error("SetDocumentsCategory", zap.Error(err)) + return + } + } + + // 2. 删除旧的分类 + err = tx.Model(&DocumentCategory{}).Where("document_id = ?", id).Delete(&DocumentCategory{}).Error + if err != nil { + m.logger.Error("SetDocumentsCategory", zap.Error(err)) + return + } + + // 3. 添加新的分类 + docCates = []DocumentCategory{} + for _, cid := range categoryId { + docCates = append(docCates, DocumentCategory{ + DocumentId: id, + CategoryId: cid, + }) + } + err = tx.Create(&docCates).Error + if err != nil { + m.logger.Error("SetDocumentsCategory", zap.Error(err)) + return + } + + // 4. 更新文档分类统计 + err = tx.Model(&Category{}).Where("id in (?)", categoryId).Update("doc_count", gorm.Expr("doc_count + ?", 1)).Error + if err != nil { + m.logger.Error("SetDocumentsCategory", zap.Error(err)) + return + } + } + return +} diff --git a/web/api/document.js b/web/api/document.js index bbcd58b..809ae53 100644 --- a/web/api/document.js +++ b/web/api/document.js @@ -135,3 +135,11 @@ export const setDocumentScore = (data) => { data, }) } + +export const setDocumentsCategory = (data) => { + return service({ + url: '/api/v1/document/category', + method: 'put', + data, + }) +} diff --git a/web/components/FormUpdateDocumentsCategory.vue b/web/components/FormUpdateDocumentsCategory.vue new file mode 100644 index 0000000..0f48ca6 --- /dev/null +++ b/web/components/FormUpdateDocumentsCategory.vue @@ -0,0 +1,112 @@ + + + diff --git a/web/pages/admin/document/list.vue b/web/pages/admin/document/list.vue index 594e77d..8ba23df 100644 --- a/web/pages/admin/document/list.vue +++ b/web/pages/admin/document/list.vue @@ -28,6 +28,22 @@ > + + + 批量分类 + + @@ -105,6 +121,18 @@ @success="formSuccess" /> + + + {}) }, + batchUpdateDocumentsCategory() { + this.categoryDocuments = this.selectedRow + this.formDocumentsCategoryVisible = true + }, deleteRow(row) { this.$confirm( `您确定要删除文档【${row.title}】吗?删除之后将会进入到回收站,可以在回收站中恢复。`,