初始化v1
This commit is contained in:
301
api/v1/attachment.go
Normal file
301
api/v1/attachment.go
Normal file
@@ -0,0 +1,301 @@
|
||||
package v1
|
||||
|
||||
// 附件管理相关请求和响应结构
|
||||
|
||||
// AttachmentUploadReq 上传附件请求
|
||||
type AttachmentUploadReq struct {
|
||||
Type string `json:"type" v:"required|in:image,video,audio,document#附件类型不能为空|附件类型只能为image,video,audio,document"`
|
||||
Category string `json:"category" v:"required|length:1,50#分类不能为空|分类长度为1-50个字符"`
|
||||
Description string `json:"description" v:"max:200#描述长度不能超过200个字符"`
|
||||
}
|
||||
|
||||
// AttachmentUploadRes 上传附件响应
|
||||
type AttachmentUploadRes struct {
|
||||
Id uint `json:"id"`
|
||||
Filename string `json:"filename"`
|
||||
Url string `json:"url"`
|
||||
Size int64 `json:"size"`
|
||||
Type string `json:"type"`
|
||||
}
|
||||
|
||||
// AttachmentListReq 获取附件列表请求
|
||||
type AttachmentListReq struct {
|
||||
Page int `json:"page" v:"min:1#页码必须大于0"`
|
||||
Size int `json:"size" v:"min:1|max:100#每页数量必须大于0|每页数量不能超过100"`
|
||||
Type string `json:"type" v:"in:,image,video,audio,document#附件类型只能为image,video,audio,document"`
|
||||
Category string `json:"category" v:"max:50#分类长度不能超过50个字符"`
|
||||
Keyword string `json:"keyword" v:"max:50#关键词长度不能超过50个字符"`
|
||||
StartDate string `json:"start_date" v:"date#开始日期格式不正确"`
|
||||
EndDate string `json:"end_date" v:"date#结束日期格式不正确"`
|
||||
MinSize int64 `json:"min_size" v:"min:0#最小文件大小不能小于0"`
|
||||
MaxSize int64 `json:"max_size" v:"min:0#最大文件大小不能小于0"`
|
||||
UserId uint `json:"user_id" v:"min:0#用户ID不能小于0"`
|
||||
}
|
||||
|
||||
// AttachmentListRes 获取附件列表响应
|
||||
type AttachmentListRes struct {
|
||||
List []AttachmentItem `json:"list"`
|
||||
Total int `json:"total"`
|
||||
Page int `json:"page"`
|
||||
Size int `json:"size"`
|
||||
}
|
||||
|
||||
// AttachmentItem 附件列表项
|
||||
type AttachmentItem struct {
|
||||
Id uint `json:"id"`
|
||||
Filename string `json:"filename"`
|
||||
OriginalName string `json:"original_name"`
|
||||
Url string `json:"url"`
|
||||
Size int64 `json:"size"`
|
||||
Type string `json:"type"`
|
||||
Category string `json:"category"`
|
||||
Description string `json:"description"`
|
||||
UserId uint `json:"user_id"`
|
||||
Username string `json:"username"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
UpdatedAt string `json:"updated_at"`
|
||||
}
|
||||
|
||||
// AttachmentDetailReq 获取附件详情请求
|
||||
type AttachmentDetailReq struct {
|
||||
Id uint `json:"id" v:"required|min:1#附件ID不能为空"`
|
||||
}
|
||||
|
||||
// AttachmentDetailRes 获取附件详情响应
|
||||
type AttachmentDetailRes struct {
|
||||
Attachment AttachmentDetail `json:"attachment"`
|
||||
}
|
||||
|
||||
// AttachmentDetail 附件详情
|
||||
type AttachmentDetail struct {
|
||||
Id uint `json:"id"`
|
||||
Filename string `json:"filename"`
|
||||
OriginalName string `json:"original_name"`
|
||||
Url string `json:"url"`
|
||||
Size int64 `json:"size"`
|
||||
Type string `json:"type"`
|
||||
Category string `json:"category"`
|
||||
Description string `json:"description"`
|
||||
UserId uint `json:"user_id"`
|
||||
Username string `json:"username"`
|
||||
DownloadCount int `json:"download_count"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
UpdatedAt string `json:"updated_at"`
|
||||
}
|
||||
|
||||
// AttachmentUpdateReq 更新附件请求
|
||||
type AttachmentUpdateReq struct {
|
||||
Id uint `json:"id" v:"required|min:1#附件ID不能为空"`
|
||||
Category string `json:"category" v:"required|length:1,50#分类不能为空|分类长度为1-50个字符"`
|
||||
Description string `json:"description" v:"max:200#描述长度不能超过200个字符"`
|
||||
}
|
||||
|
||||
// AttachmentDeleteReq 删除附件请求
|
||||
type AttachmentDeleteReq struct {
|
||||
Id uint `json:"id" v:"required|min:1#附件ID不能为空"`
|
||||
}
|
||||
|
||||
// AttachmentBatchDeleteReq 批量删除附件请求
|
||||
type AttachmentBatchDeleteReq struct {
|
||||
Ids []uint `json:"ids" v:"required|min:1#附件ID列表不能为空"`
|
||||
}
|
||||
|
||||
// AttachmentDownloadReq 下载附件请求
|
||||
type AttachmentDownloadReq struct {
|
||||
Id uint `json:"id" v:"required|min:1#附件ID不能为空"`
|
||||
}
|
||||
|
||||
// AttachmentDownloadRes 下载附件响应
|
||||
type AttachmentDownloadRes struct {
|
||||
Url string `json:"url"`
|
||||
Filename string `json:"filename"`
|
||||
}
|
||||
|
||||
// AttachmentCategoryListReq 获取附件分类列表请求
|
||||
type AttachmentCategoryListReq struct {
|
||||
Type string `json:"type" v:"in:,image,video,audio,document#附件类型只能为image,video,audio,document"`
|
||||
}
|
||||
|
||||
// AttachmentCategoryListRes 获取附件分类列表响应
|
||||
type AttachmentCategoryListRes struct {
|
||||
Categories []AttachmentCategoryItem `json:"categories"`
|
||||
}
|
||||
|
||||
// AttachmentCategoryItem 附件分类项
|
||||
type AttachmentCategoryItem struct {
|
||||
Category string `json:"category"`
|
||||
Count int `json:"count"`
|
||||
}
|
||||
|
||||
// AttachmentStatisticsReq 获取附件统计请求
|
||||
type AttachmentStatisticsReq struct {
|
||||
StartDate string `json:"start_date" v:"date#开始日期格式不正确"`
|
||||
EndDate string `json:"end_date" v:"date#结束日期格式不正确"`
|
||||
Type string `json:"type" v:"in:,image,video,audio,document#附件类型只能为image,video,audio,document"`
|
||||
}
|
||||
|
||||
// AttachmentStatisticsRes 获取附件统计响应
|
||||
type AttachmentStatisticsRes struct {
|
||||
TotalCount int `json:"total_count"` // 总附件数
|
||||
TotalSize int64 `json:"total_size"` // 总文件大小
|
||||
TypeStats []AttachmentTypeStatItem `json:"type_stats"` // 类型统计
|
||||
CategoryStats []AttachmentCategoryStatItem `json:"category_stats"` // 分类统计
|
||||
UploadChart []AttachmentUploadChartItem `json:"upload_chart"` // 上传图表数据
|
||||
SizeChart []AttachmentSizeChartItem `json:"size_chart"` // 大小图表数据
|
||||
PopularFiles []AttachmentPopularItem `json:"popular_files"` // 热门文件
|
||||
RecentUploads []AttachmentRecentItem `json:"recent_uploads"` // 最近上传
|
||||
}
|
||||
|
||||
// AttachmentTypeStatItem 附件类型统计项
|
||||
type AttachmentTypeStatItem struct {
|
||||
Type string `json:"type"`
|
||||
Count int `json:"count"`
|
||||
Size int64 `json:"size"`
|
||||
Percentage string `json:"percentage"`
|
||||
}
|
||||
|
||||
// AttachmentCategoryStatItem 附件分类统计项
|
||||
type AttachmentCategoryStatItem struct {
|
||||
Category string `json:"category"`
|
||||
Count int `json:"count"`
|
||||
Size int64 `json:"size"`
|
||||
Percentage string `json:"percentage"`
|
||||
}
|
||||
|
||||
// AttachmentUploadChartItem 附件上传图表项
|
||||
type AttachmentUploadChartItem struct {
|
||||
Date string `json:"date"`
|
||||
Count int `json:"count"`
|
||||
Size int64 `json:"size"`
|
||||
}
|
||||
|
||||
// AttachmentSizeChartItem 附件大小图表项
|
||||
type AttachmentSizeChartItem struct {
|
||||
SizeRange string `json:"size_range"` // 大小范围,如 "0-1MB", "1-10MB"
|
||||
Count int `json:"count"`
|
||||
}
|
||||
|
||||
// AttachmentPopularItem 热门附件项
|
||||
type AttachmentPopularItem struct {
|
||||
Id uint `json:"id"`
|
||||
Filename string `json:"filename"`
|
||||
Type string `json:"type"`
|
||||
Size int64 `json:"size"`
|
||||
DownloadCount int `json:"download_count"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
}
|
||||
|
||||
// AttachmentRecentItem 最近上传附件项
|
||||
type AttachmentRecentItem struct {
|
||||
Id uint `json:"id"`
|
||||
Filename string `json:"filename"`
|
||||
OriginalName string `json:"original_name"`
|
||||
Type string `json:"type"`
|
||||
Size int64 `json:"size"`
|
||||
UserId uint `json:"user_id"`
|
||||
Username string `json:"username"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
}
|
||||
|
||||
// AttachmentCleanupReq 清理附件请求
|
||||
type AttachmentCleanupReq struct {
|
||||
Type string `json:"type" v:"in:,image,video,audio,document#附件类型只能为image,video,audio,document"`
|
||||
Days int `json:"days" v:"min:1#天数必须大于0"`
|
||||
MinSize int64 `json:"min_size" v:"min:0#最小文件大小不能小于0"`
|
||||
MaxSize int64 `json:"max_size" v:"min:0#最大文件大小不能小于0"`
|
||||
Unused bool `json:"unused"` // 是否只清理未使用的附件
|
||||
DryRun bool `json:"dry_run"` // 是否只是预览,不实际删除
|
||||
}
|
||||
|
||||
// AttachmentCleanupRes 清理附件响应
|
||||
type AttachmentCleanupRes struct {
|
||||
DeletedCount int `json:"deleted_count"` // 删除数量
|
||||
DeletedSize int64 `json:"deleted_size"` // 删除大小
|
||||
DeletedFiles []string `json:"deleted_files"` // 删除的文件列表
|
||||
}
|
||||
|
||||
// AttachmentMoveReq 移动附件请求
|
||||
type AttachmentMoveReq struct {
|
||||
Ids []uint `json:"ids" v:"required|min:1#附件ID列表不能为空"`
|
||||
NewCategory string `json:"new_category" v:"required|length:1,50#新分类不能为空|新分类长度为1-50个字符"`
|
||||
}
|
||||
|
||||
// AttachmentCopyReq 复制附件请求
|
||||
type AttachmentCopyReq struct {
|
||||
Id uint `json:"id" v:"required|min:1#附件ID不能为空"`
|
||||
NewCategory string `json:"new_category" v:"length:1,50#新分类长度为1-50个字符"`
|
||||
Description string `json:"description" v:"max:200#描述长度不能超过200个字符"`
|
||||
}
|
||||
|
||||
// AttachmentCopyRes 复制附件响应
|
||||
type AttachmentCopyRes struct {
|
||||
Id uint `json:"id"`
|
||||
Filename string `json:"filename"`
|
||||
Url string `json:"url"`
|
||||
}
|
||||
|
||||
// AttachmentRenameReq 重命名附件请求
|
||||
type AttachmentRenameReq struct {
|
||||
Id uint `json:"id" v:"required|min:1#附件ID不能为空"`
|
||||
Filename string `json:"filename" v:"required|length:1,100#文件名不能为空|文件名长度为1-100个字符"`
|
||||
}
|
||||
|
||||
// AttachmentSearchReq 搜索附件请求
|
||||
type AttachmentSearchReq struct {
|
||||
Query string `json:"query" v:"required|length:1,100#搜索关键词不能为空|搜索关键词长度为1-100个字符"`
|
||||
Type string `json:"type" v:"in:,image,video,audio,document#附件类型只能为image,video,audio,document"`
|
||||
Category string `json:"category" v:"max:50#分类长度不能超过50个字符"`
|
||||
Page int `json:"page" v:"min:1#页码必须大于0"`
|
||||
Size int `json:"size" v:"min:1|max:100#每页数量必须大于0|每页数量不能超过100"`
|
||||
}
|
||||
|
||||
// AttachmentSearchRes 搜索附件响应
|
||||
type AttachmentSearchRes struct {
|
||||
List []AttachmentItem `json:"list"`
|
||||
Total int `json:"total"`
|
||||
Page int `json:"page"`
|
||||
Size int `json:"size"`
|
||||
}
|
||||
|
||||
// AttachmentExportReq 导出附件请求
|
||||
type AttachmentExportReq struct {
|
||||
Type string `json:"type" v:"in:,image,video,audio,document#附件类型只能为image,video,audio,document"`
|
||||
Category string `json:"category" v:"max:50#分类长度不能超过50个字符"`
|
||||
StartDate string `json:"start_date" v:"date#开始日期格式不正确"`
|
||||
EndDate string `json:"end_date" v:"date#结束日期格式不正确"`
|
||||
}
|
||||
|
||||
// AttachmentExportRes 导出附件响应
|
||||
type AttachmentExportRes struct {
|
||||
FileUrl string `json:"file_url"` // 导出文件URL
|
||||
}
|
||||
|
||||
// AttachmentUserListReq 获取用户附件列表请求(用户端)
|
||||
type AttachmentUserListReq struct {
|
||||
Page int `json:"page" v:"min:1#页码必须大于0"`
|
||||
Size int `json:"size" v:"min:1|max:50#每页数量必须大于0|每页数量不能超过50"`
|
||||
Type string `json:"type" v:"in:,image,video,audio,document#附件类型只能为image,video,audio,document"`
|
||||
Category string `json:"category" v:"max:50#分类长度不能超过50个字符"`
|
||||
Keyword string `json:"keyword" v:"max:50#关键词长度不能超过50个字符"`
|
||||
}
|
||||
|
||||
// AttachmentUserListRes 获取用户附件列表响应(用户端)
|
||||
type AttachmentUserListRes struct {
|
||||
List []AttachmentUserItem `json:"list"`
|
||||
Total int `json:"total"`
|
||||
Page int `json:"page"`
|
||||
Size int `json:"size"`
|
||||
}
|
||||
|
||||
// AttachmentUserItem 用户附件列表项
|
||||
type AttachmentUserItem struct {
|
||||
Id uint `json:"id"`
|
||||
Filename string `json:"filename"`
|
||||
OriginalName string `json:"original_name"`
|
||||
Url string `json:"url"`
|
||||
Size int64 `json:"size"`
|
||||
Type string `json:"type"`
|
||||
Category string `json:"category"`
|
||||
Description string `json:"description"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
}
|
||||
Reference in New Issue
Block a user