refactor: reorganize modules and add Linux build tooling
This commit is contained in:
102
module/base/cloud/proto/album.proto
Normal file
102
module/base/cloud/proto/album.proto
Normal file
@@ -0,0 +1,102 @@
|
||||
syntax = "proto3";
|
||||
package cloud;
|
||||
option go_package = ".;cloud";
|
||||
import "blocks.proto";
|
||||
|
||||
// 相册服务
|
||||
service Album {
|
||||
// 创建相册
|
||||
rpc CreateAlbum(CreateAlbumRequest) returns (StatusReply);
|
||||
// 获取相册详情
|
||||
rpc GetAlbum(IdentRequest) returns (CloudAlbumItem);
|
||||
// 更新相册
|
||||
rpc UpdateAlbum(CloudAlbumItem) returns (StatusReply);
|
||||
// 删除相册
|
||||
rpc DeleteAlbum(IdentRequest) returns (StatusReply);
|
||||
// 获取相册列表
|
||||
rpc ListAlbums(FetchRequest) returns (ListAlbumsResponse);
|
||||
// 设置封面照片
|
||||
rpc SetCoverPhoto(SetCoverPhotoRequest) returns (StatusReply);
|
||||
|
||||
// 上传照片
|
||||
rpc UploadPhoto(CloudPhotoItem) returns (StatusReply);
|
||||
// 获取照片详情
|
||||
rpc GetPhoto(IdentRequest) returns (CloudPhotoItem);
|
||||
// 更新照片
|
||||
rpc UpdatePhoto(CloudPhotoItem) returns (StatusReply);
|
||||
// 删除照片
|
||||
rpc DeletePhoto(IdentRequest) returns (StatusReply);
|
||||
// 获取照片列表
|
||||
rpc ListPhotos(FetchRequest) returns (ListPhotosResponse);
|
||||
// 移动照片到其他相册
|
||||
rpc MovePhoto(MovePhotoRequest) returns (StatusReply);
|
||||
}
|
||||
|
||||
// 请求消息定义
|
||||
message CreateAlbumRequest {
|
||||
uint64 cloud_id = 1;
|
||||
string cloud_identity = 2;
|
||||
string name = 3; // 相册名称
|
||||
string description = 4; // 相册描述
|
||||
string cover_photo = 5; // 封面照片URL
|
||||
bool is_private = 6; // 是否私有
|
||||
}
|
||||
|
||||
message ListAlbumsResponse {
|
||||
repeated CloudAlbumItem albums = 1;
|
||||
int64 total = 2;
|
||||
}
|
||||
|
||||
message SetCoverPhotoRequest {
|
||||
uint64 album_id = 1;
|
||||
uint64 photo_id = 2;
|
||||
}
|
||||
|
||||
// 相册模型
|
||||
message CloudAlbumItem {
|
||||
uint64 id = 1;
|
||||
string identity = 2;
|
||||
string name = 3; // 相册名称
|
||||
string description = 4; // 相册描述
|
||||
string cover_photo = 5; // 封面照片URL
|
||||
bool is_private = 6; // 是否私有
|
||||
string created_at = 7;
|
||||
string updated_at = 8;
|
||||
|
||||
// 关联关系
|
||||
repeated CloudPhotoItem photos = 9; // 相册下的照片
|
||||
}
|
||||
|
||||
|
||||
message ListPhotosResponse {
|
||||
repeated CloudPhotoItem photos = 1;
|
||||
int64 total = 2;
|
||||
}
|
||||
|
||||
message MovePhotoRequest {
|
||||
uint64 photo_id = 1;
|
||||
uint64 new_album_id = 2;
|
||||
}
|
||||
|
||||
|
||||
// 照片模型
|
||||
message CloudPhotoItem {
|
||||
uint64 id = 1;
|
||||
string identity = 2;
|
||||
uint64 album_id = 3; // 专辑ID
|
||||
string title = 4; // 照片标题
|
||||
string description = 5; // 照片描述
|
||||
string file_path = 6; // 文件路径
|
||||
int64 file_size = 7; // 文件大小
|
||||
string mime_type = 8; // 文件类型
|
||||
int32 width = 9; // 图片宽度
|
||||
int32 height = 10; // 图片高度
|
||||
string taken_at = 11; // 拍摄时间
|
||||
string location = 12; // 拍摄地点
|
||||
string tags = 13; // 标签,逗号分隔
|
||||
string created_at = 14;
|
||||
string updated_at = 15;
|
||||
|
||||
// 关联关系
|
||||
CloudAlbumItem album = 16;
|
||||
}
|
||||
58
module/base/cloud/proto/blocks.proto
Normal file
58
module/base/cloud/proto/blocks.proto
Normal file
@@ -0,0 +1,58 @@
|
||||
syntax = "proto3";
|
||||
package cloud;
|
||||
option go_package = ".;cloud";
|
||||
|
||||
|
||||
// 通用响应消息
|
||||
message Empty {}
|
||||
|
||||
// 通用ID请求
|
||||
message IDRequest {
|
||||
uint64 id = 1;
|
||||
}
|
||||
|
||||
message IdentRequest{
|
||||
int64 id = 1; // 唯一ID
|
||||
string identity = 2; // 唯一码
|
||||
}
|
||||
|
||||
// 通用ID列表请求
|
||||
message IDListRequest {
|
||||
repeated uint64 ids = 1;
|
||||
}
|
||||
|
||||
// 列表请求参数
|
||||
message FetchRequest {
|
||||
int64 page_no=1 [json_name = "page_no"]; // 页数
|
||||
int64 page_size=2 [json_name = "page_size"]; // 每页记录数
|
||||
map<string,string> params=3; // 条件参数,key=val,eg key:category_id=?,vlaue=11
|
||||
}
|
||||
|
||||
|
||||
// 基础时间戳和ID结构
|
||||
message StdIicuds {
|
||||
uint64 id = 1;
|
||||
string created_at = 2;
|
||||
string updated_at = 3;
|
||||
string deleted_at = 4;
|
||||
}
|
||||
|
||||
// 用户身份信息
|
||||
message StdPassport {
|
||||
uint64 passport_id = 1;
|
||||
string passport_identity = 2;
|
||||
}
|
||||
|
||||
// 云盘基础信息
|
||||
message CloudBase {
|
||||
uint64 cloud_id = 1;
|
||||
string cloud_identity = 2;
|
||||
}
|
||||
|
||||
// 状态回复
|
||||
message StatusReply{
|
||||
int32 code=1; // 状态码
|
||||
string message=2; // 状态说明
|
||||
string details=3; // 数据
|
||||
int64 timeseq=4; // 响应时间序列
|
||||
}
|
||||
57
module/base/cloud/proto/bookmark.proto
Normal file
57
module/base/cloud/proto/bookmark.proto
Normal file
@@ -0,0 +1,57 @@
|
||||
syntax = "proto3";
|
||||
package cloud;
|
||||
option go_package = ".;cloud";
|
||||
import "blocks.proto";
|
||||
|
||||
// 书签服务
|
||||
service Bookmark {
|
||||
// 创建书签
|
||||
rpc CreateBookmark(CreateBookmarkRequest) returns (StatusReply);
|
||||
// 获取书签详情
|
||||
rpc GetBookmark(IDRequest) returns (CloudBookmarkItem);
|
||||
// 更新书签
|
||||
rpc UpdateBookmark(CloudBookmarkItem) returns (StatusReply);
|
||||
// 删除书签
|
||||
rpc DeleteBookmark(IDRequest) returns (StatusReply);
|
||||
// 获取书签列表
|
||||
rpc ListBookmarks(FetchRequest) returns (ListBookmarksResponse);
|
||||
// 导入书签
|
||||
rpc ImportBookmarks(ImportBookmarksRequest) returns (StatusReply);
|
||||
}
|
||||
|
||||
message CreateBookmarkRequest {
|
||||
uint64 cloud_id = 1;
|
||||
string cloud_identity = 2;
|
||||
string title = 3; // 标题
|
||||
string url = 4; // 网址
|
||||
string description = 5; // 描述
|
||||
string category = 6; // 分类
|
||||
string tags = 7; // 标签
|
||||
string icon = 8; // 网站图标URL
|
||||
bool is_private = 9; // 是否私有
|
||||
}
|
||||
|
||||
message ListBookmarksResponse {
|
||||
repeated CloudBookmarkItem bookmarks = 1;
|
||||
int64 total = 2;
|
||||
}
|
||||
|
||||
message ImportBookmarksRequest {
|
||||
string data = 1; // JSON格式的书签数据
|
||||
string format = 2; // 导入格式: chrome, firefox, safari, etc.
|
||||
}
|
||||
|
||||
// 网址收藏夹模型
|
||||
message CloudBookmarkItem {
|
||||
uint64 id = 1;
|
||||
string identity = 2;
|
||||
string title = 3; // 标题
|
||||
string url = 4; // 网址
|
||||
string description = 5; // 描述
|
||||
string category = 6; // 分类
|
||||
string tags = 7; // 标签
|
||||
string icon = 8; // 网站图标URL
|
||||
bool is_private = 9; // 是否私有
|
||||
string created_at = 10;
|
||||
string updated_at = 11;
|
||||
}
|
||||
122
module/base/cloud/proto/disk.proto
Normal file
122
module/base/cloud/proto/disk.proto
Normal file
@@ -0,0 +1,122 @@
|
||||
syntax = "proto3";
|
||||
package cloud;
|
||||
option go_package = ".;cloud";
|
||||
import "blocks.proto";
|
||||
|
||||
// 云盘目录服务
|
||||
service Disk {
|
||||
// 创建目录
|
||||
rpc CreateDir(CreateDirRequest) returns (StatusReply);
|
||||
// 获取目录详情
|
||||
rpc GetDir(IdentRequest) returns (CloudDiskDirItem);
|
||||
// 更新目录
|
||||
rpc UpdateDir(CloudDiskDirItem) returns (StatusReply);
|
||||
// 删除目录
|
||||
rpc DeleteDir(IdentRequest) returns (StatusReply);
|
||||
// 获取目录列表
|
||||
rpc ListDirs(FetchRequest) returns (ListDirsResponse);
|
||||
// 获取目录树
|
||||
rpc GetDirTree(IdentRequest) returns (CloudDiskDirItem);
|
||||
// 移动目录
|
||||
rpc MoveDir(MoveDirRequest) returns (StatusReply);
|
||||
|
||||
// 上传文件
|
||||
rpc UploadFile(CloudDiskFileRequest) returns (StatusReply);
|
||||
// 获取文件详情
|
||||
rpc GetFile(IdentRequest) returns (CloudDiskFileItem);
|
||||
// 更新文件
|
||||
rpc UpdateFile(CloudDiskFileItem) returns (StatusReply);
|
||||
// 删除文件
|
||||
rpc DeleteFile(IdentRequest) returns (StatusReply);
|
||||
// 获取文件列表
|
||||
rpc ListFiles(FetchRequest) returns (ListFilesResponse);
|
||||
// 移动文件
|
||||
rpc MoveFile(MoveFileRequest) returns (StatusReply);
|
||||
// 复制文件
|
||||
rpc CopyFile(CopyFileRequest) returns (StatusReply);
|
||||
// 搜索文件
|
||||
rpc SearchFiles(FetchRequest) returns (ListFilesResponse);
|
||||
}
|
||||
|
||||
message CreateDirRequest {
|
||||
uint64 cloud_id = 1;
|
||||
string cloud_identity = 2;
|
||||
uint64 parent_id = 3; // 支持嵌套目录
|
||||
string name = 4; // 目录名称
|
||||
string path = 5; // 完整路径
|
||||
}
|
||||
|
||||
// 请求消息定义
|
||||
message ListDirsResponse {
|
||||
repeated CloudDiskDirItem dirs = 1;
|
||||
int64 total = 2;
|
||||
}
|
||||
|
||||
// 云盘目录模型
|
||||
message CloudDiskDirItem {
|
||||
uint64 id = 1;
|
||||
string identity = 2;
|
||||
uint64 parent_id = 3; // 支持嵌套目录
|
||||
string name = 4; // 目录名称
|
||||
string path = 5; // 完整路径
|
||||
string created_at = 6;
|
||||
string updated_at = 7;
|
||||
|
||||
// 自关联
|
||||
CloudDiskDirItem parent = 8; // 父级目录
|
||||
repeated CloudDiskDirItem subdirectories = 9; // 子级目录
|
||||
repeated CloudDiskFileItem files = 10; // 文件
|
||||
}
|
||||
|
||||
|
||||
message MoveDirRequest {
|
||||
uint64 id = 1;
|
||||
uint64 new_parent_id = 2;
|
||||
}
|
||||
|
||||
|
||||
message ListFilesResponse {
|
||||
repeated CloudDiskFileItem files = 1;
|
||||
int64 total = 2;
|
||||
}
|
||||
|
||||
message MoveFileRequest {
|
||||
uint64 id = 1;
|
||||
uint64 new_directory_id = 2;
|
||||
}
|
||||
|
||||
message CopyFileRequest {
|
||||
uint64 id = 1;
|
||||
uint64 target_directory_id = 2;
|
||||
string new_name = 3;
|
||||
}
|
||||
|
||||
message CloudDiskFileRequest {
|
||||
uint64 cloud_id = 1;
|
||||
string cloud_identity = 2;
|
||||
uint64 directory_id = 3; // 文件所属目录
|
||||
string name = 4; // 文件名
|
||||
string original_name = 5; // 原始文件名
|
||||
int64 size = 6; // 文件大小 (bytes)
|
||||
string mime_type = 7; // 文件类型
|
||||
string storage_path = 8; // 实际存储路径
|
||||
string hash = 9; // 文件哈希,用于去重
|
||||
}
|
||||
|
||||
// 云盘文件
|
||||
message CloudDiskFileItem {
|
||||
uint64 id = 1;
|
||||
string identity = 2;
|
||||
uint64 directory_id = 3; // 文件所属目录
|
||||
string name = 4; // 文件名
|
||||
string original_name = 5; // 原始文件名
|
||||
int64 size = 6; // 文件大小 (bytes)
|
||||
string mime_type = 7; // 文件类型
|
||||
string storage_path = 8; // 实际存储路径
|
||||
string hash = 9; // 文件哈希,用于去重
|
||||
string created_at = 10;
|
||||
string updated_at = 11;
|
||||
|
||||
// 关联关系
|
||||
CloudDiskDirItem directory = 12; // 文件所属目录
|
||||
}
|
||||
84
module/base/cloud/proto/note.proto
Normal file
84
module/base/cloud/proto/note.proto
Normal file
@@ -0,0 +1,84 @@
|
||||
syntax = "proto3";
|
||||
package cloud;
|
||||
option go_package = ".;cloud";
|
||||
import "blocks.proto";
|
||||
|
||||
// 笔记服务
|
||||
service Note {
|
||||
// 创建笔记
|
||||
rpc CreateNote(CreateNoteRequest) returns (StatusReply);
|
||||
// 获取笔记详情
|
||||
rpc GetNote(IdentRequest) returns (CloudNoteItem);
|
||||
// 更新笔记
|
||||
rpc UpdateNote(CloudNoteItem) returns (StatusReply);
|
||||
// 删除笔记
|
||||
rpc DeleteNote(IdentRequest) returns (StatusReply);
|
||||
// 获取笔记列表
|
||||
rpc ListNotes(FetchRequest) returns (ListNotesResponse);
|
||||
// 置顶/取消置顶笔记
|
||||
rpc TogglePin(TogglePinRequest) returns (StatusReply);
|
||||
// 增加浏览次数
|
||||
rpc IncrementViews(IdentRequest) returns (StatusReply);
|
||||
// 搜索笔记
|
||||
rpc SearchNotes(FetchRequest) returns (ListNotesResponse);
|
||||
|
||||
// 上传附件
|
||||
rpc InsertAttachment(NoteAttachmentItem) returns (StatusReply);
|
||||
// 删除附件
|
||||
rpc DeleteAttachment(IdentRequest) returns (StatusReply);
|
||||
}
|
||||
|
||||
// 请求消息定义
|
||||
message CreateNoteRequest {
|
||||
uint64 cloud_id = 1;
|
||||
string cloud_identity = 2;
|
||||
string title = 3; // 标题
|
||||
string content = 4; // 内容
|
||||
string category = 5; // 分类
|
||||
string tags = 6; // 标签,逗号分隔
|
||||
bool is_markdown = 7; // 是否是markdown格式
|
||||
bool is_pinned = 8; // 是否是置顶
|
||||
bool is_private = 9; // 是否是私有
|
||||
}
|
||||
|
||||
message ListNotesResponse {
|
||||
repeated CloudNoteItem notes = 1;
|
||||
int64 total = 2;
|
||||
}
|
||||
|
||||
message TogglePinRequest {
|
||||
uint64 id = 1;
|
||||
bool is_pinned = 2;
|
||||
}
|
||||
|
||||
|
||||
// 知识笔记模型
|
||||
message CloudNoteItem {
|
||||
uint64 id = 1;
|
||||
string identity = 2;
|
||||
string title = 3; // 标题
|
||||
string content = 4; // 内容
|
||||
string category = 5; // 分类
|
||||
string tags = 6; // 标签,逗号分隔
|
||||
bool is_markdown = 7; // 是否是markdown格式
|
||||
bool is_pinned = 8; // 是否是置顶
|
||||
bool is_private = 9; // 是否是私有
|
||||
int32 views = 10; // 浏览次数
|
||||
string created_at = 11;
|
||||
string updated_at = 12;
|
||||
|
||||
// 关联关系
|
||||
repeated NoteAttachmentItem attachments = 13;
|
||||
}
|
||||
|
||||
|
||||
// 笔记附件模型
|
||||
message NoteAttachmentItem {
|
||||
uint64 id = 1;
|
||||
uint64 note_id = 2; // 笔记ID
|
||||
string file_name = 3; // 文件名
|
||||
string file_path = 4; // 文件路径
|
||||
int64 file_size = 5; // 文件大小
|
||||
string mime_type = 6; // 文件类型
|
||||
string created_at = 7; // 创建时间
|
||||
}
|
||||
62
module/base/cloud/proto/private.proto
Normal file
62
module/base/cloud/proto/private.proto
Normal file
@@ -0,0 +1,62 @@
|
||||
syntax = "proto3";
|
||||
package cloud;
|
||||
option go_package = ".;cloud";
|
||||
import "blocks.proto";
|
||||
|
||||
// 隐私数据服务
|
||||
service Private {
|
||||
// 创建隐私数据
|
||||
rpc CreatePrivateData(CreatePrivateDataRequest) returns (StatusReply);
|
||||
// 获取隐私数据详情
|
||||
rpc GetPrivateData(IdentRequest) returns (CloudPrivateItem);
|
||||
// 更新隐私数据
|
||||
rpc UpdatePrivateData(CloudPrivateItem) returns (StatusReply);
|
||||
// 删除隐私数据
|
||||
rpc DeletePrivateData(IdentRequest) returns (StatusReply);
|
||||
// 获取隐私数据列表
|
||||
rpc ListPrivateData(FetchRequest) returns (ListPrivateDataResponse);
|
||||
// 按类型获取隐私数据
|
||||
rpc GetPrivateDataByType(FetchRequest) returns (ListPrivateDataResponse);
|
||||
// 搜索隐私数据
|
||||
rpc SearchPrivateData(FetchRequest) returns (ListPrivateDataResponse);
|
||||
// 加密数据
|
||||
rpc EncryptData(DataRequest) returns (StatusReply);
|
||||
// 解密数据
|
||||
rpc DecryptData(DataRequest) returns (StatusReply);
|
||||
}
|
||||
// 请求消息定义
|
||||
message CreatePrivateDataRequest {
|
||||
uint64 cloud_id = 1;
|
||||
string cloud_identity = 2;
|
||||
string data_type = 3; // 数据类型: password, card, document, etc.
|
||||
string title = 4; // 标题
|
||||
string description = 5; // 描述
|
||||
string data = 6; // 加密存储的实际数据
|
||||
bool is_encrypted = 7; // 是否已加密
|
||||
string tags = 8; // 标签
|
||||
}
|
||||
|
||||
message ListPrivateDataResponse {
|
||||
repeated CloudPrivateItem data = 1;
|
||||
int64 total = 2;
|
||||
}
|
||||
|
||||
message DataRequest {
|
||||
string data = 1; // 数据
|
||||
string key = 2; // 密钥KEY
|
||||
}
|
||||
|
||||
|
||||
// 个人隐私数据模型
|
||||
message CloudPrivateItem {
|
||||
uint64 id = 1;
|
||||
string identity = 2;
|
||||
string data_type = 3; // 数据类型: password, card, document, etc.
|
||||
string title = 4; // 标题
|
||||
string description = 5; // 描述
|
||||
string data = 6; // 加密存储的实际数据
|
||||
bool is_encrypted = 7; // 是否已加密
|
||||
string tags = 8; // 标签
|
||||
string created_at = 9;
|
||||
string updated_at = 10;
|
||||
}
|
||||
56
module/base/cloud/proto/share.proto
Normal file
56
module/base/cloud/proto/share.proto
Normal file
@@ -0,0 +1,56 @@
|
||||
syntax = "proto3";
|
||||
package cloud;
|
||||
option go_package = ".;cloud";
|
||||
import "blocks.proto";
|
||||
|
||||
// 分享服务
|
||||
service Share {
|
||||
// 创建分享
|
||||
rpc CreateShare(CreateShareRequest) returns (StatusReply);
|
||||
// 获取分享详情
|
||||
rpc GetShare(IdentRequest) returns (CloudShareItem);
|
||||
// 删除分享
|
||||
rpc DeleteShare(IdentRequest) returns (StatusReply);
|
||||
// 获取分享列表
|
||||
rpc ListShares(FetchRequest) returns (ListSharesResponse);
|
||||
// 验证分享密码
|
||||
rpc ValidateSharePassword(ValidateSharePasswordRequest) returns (StatusReply);
|
||||
}
|
||||
|
||||
// 请求消息定义
|
||||
message CreateShareRequest {
|
||||
uint64 cloud_id = 1;
|
||||
string cloud_identity = 2;
|
||||
string share_type = 3; // file, album, note, etc.
|
||||
uint64 resource_id = 4; // 对应资源的ID
|
||||
string share_token = 5; // 分享令牌
|
||||
string password = 6; // 可选分享密码
|
||||
string expires_at = 7; // 过期时间
|
||||
bool is_public = 8; // 是否公开
|
||||
}
|
||||
|
||||
message ListSharesResponse {
|
||||
repeated CloudShareItem shares = 1;
|
||||
int64 total = 2;
|
||||
}
|
||||
|
||||
message ValidateSharePasswordRequest {
|
||||
string identity = 1;
|
||||
string password = 2;
|
||||
}
|
||||
|
||||
// 分享系统模型
|
||||
message CloudShareItem {
|
||||
uint64 id = 1;
|
||||
string identity = 2;
|
||||
string share_type = 3; // file, album, note, etc.
|
||||
uint64 resource_id = 4; // 对应资源的ID
|
||||
string share_token = 5; // 分享令牌
|
||||
string password = 6; // 可选分享密码
|
||||
string expires_at = 7; // 过期时间
|
||||
int32 view_count = 8; // 浏览次数
|
||||
int32 download_count = 9; // 下载次数
|
||||
bool is_public = 10; // 是否公开
|
||||
string created_at = 11;
|
||||
string updated_at = 12;
|
||||
}
|
||||
44
module/base/cloud/proto/space.proto
Normal file
44
module/base/cloud/proto/space.proto
Normal file
@@ -0,0 +1,44 @@
|
||||
syntax = "proto3";
|
||||
package cloud;
|
||||
option go_package = ".;cloud";
|
||||
|
||||
import "blocks.proto";
|
||||
import "disk.proto";
|
||||
import "album.proto";
|
||||
import "note.proto";
|
||||
import "bookmark.proto";
|
||||
import "private.proto";
|
||||
import "share.proto";
|
||||
|
||||
service Space {
|
||||
// 获取空间数据
|
||||
rpc Get(Empty) returns (CloudSpace);
|
||||
|
||||
// 获取空间数据
|
||||
rpc GetByKeyIdentifier(IdentRequest) returns (CloudSpace);
|
||||
}
|
||||
|
||||
// 系统统计和配置模型
|
||||
message CloudSpace {
|
||||
uint64 id = 1;
|
||||
string identity = 2;
|
||||
int64 total_storage = 3; // 总存储空间
|
||||
int64 used_storage = 4; // 已用存储空间
|
||||
int64 max_storage = 5; // 最大存储空间
|
||||
int32 file_count = 6; // 文件数量
|
||||
int32 album_count = 7; // 相册数量
|
||||
int32 photo_count = 8; // 照片数量
|
||||
int32 note_count = 9; // 笔记数量
|
||||
int32 bookmark_count = 10; // 书签数量
|
||||
int32 private_count = 11; // 私有数量
|
||||
string created_at = 12;
|
||||
string updated_at = 13;
|
||||
|
||||
// 关联关系
|
||||
repeated CloudDiskDirItem cloud_disk_dirs = 14; // 关联云盘目录
|
||||
repeated CloudAlbumItem cloud_albums = 15; // 关联相册
|
||||
repeated CloudNoteItem cloud_notes = 16; // 关联笔记
|
||||
repeated CloudBookmarkItem cloud_bookmarks = 17; // 关联书签
|
||||
repeated CloudPrivateItem cloud_private = 18; // 关联私有数据
|
||||
repeated CloudShareItem cloud_shares = 19; // 关联分享
|
||||
}
|
||||
Reference in New Issue
Block a user