小程序一些功能更新

This commit is contained in:
李琦
2026-09-30 17:01:18 +08:00
parent 75499ba85c
commit 6f51d99a78
46 changed files with 5280 additions and 37 deletions

View File

@@ -0,0 +1,64 @@
package v1
import "github.com/gogf/gf/v2/frame/g"
// ============================================================================
// 管理端附件管理契约(迭代-2026-09-29):upload / list / delete
//
// 所有上传(含用户端头像)都会登记到 attachments 表;本模块提供后台统一查看、
// 上传日期、删除。删除为「记录软删 + 文件本体按引用检查」:仍被头像/封面等引用
// 的文件只移除记录不删文件,返回 removed_file=false 说明这一点。
// ============================================================================
// AdminUploadReq 管理端上传(multipart/form-data,文件字段名 file,表单字段 scene=cover|attachment)
type AdminUploadReq struct {
g.Meta `path:"/admin/upload" method:"post" mime:"multipart/form-data" tags:"admin" summary:"管理端上传文件"`
Scene string `v:"required|in:cover,attachment#请指定上传场景|不支持的上传场景" json:"scene"`
}
type AdminUploadRes struct {
Id int64 `json:"id"` // 附件登记 id(0 = 登记跳过/失败,不影响文件可用)
Url string `json:"url"` // 绝对 URL(按 site.base_url 现拼,直接展示用)
Path string `json:"path"` // 相对路径(/static/...)—— 商品封面等库内只存这个
FileName string `json:"file_name"` // 原始文件名
Ext string `json:"ext"` // 扩展名(小写含点)
SizeBytes int64 `json:"size_bytes"` // 字节
}
// AdminAttachmentItem 附件列表项(响应 snake_case)
type AdminAttachmentItem struct {
Id int64 `json:"id"`
Scene string `json:"scene"` // avatar / cover / attachment
FileName string `json:"file_name"`
FilePath string `json:"file_path"`
Url string `json:"url"` // 绝对 URL(现拼)
Ext string `json:"ext"`
SizeBytes int64 `json:"size_bytes"`
Md5 string `json:"md5"`
UploaderId int64 `json:"uploader_id"`
UploaderType string `json:"uploader_type"` // admin / user
IsReferenced bool `json:"is_referenced"` // 是否仍被头像/封面/其他记录引用
IsImage bool `json:"is_image"` // 是否图片(可缩略预览)
CreatedAt string `json:"created_at"` // 上传日期
}
// AdminAttachmentListReq 附件列表
type AdminAttachmentListReq struct {
g.Meta `path:"/admin/attachment/list" method:"get" tags:"admin" summary:"附件列表"`
Keyword string `json:"keyword"` // 文件名模糊
Scene string `json:"scene"` // 空=全部;avatar/cover/attachment
Page int `json:"page"`
PageSize int `json:"pageSize"`
}
type AdminAttachmentListRes struct {
List []AdminAttachmentItem `json:"list"`
Total int `json:"total"`
}
// AdminAttachmentDeleteReq 删除附件(记录软删;文件本体无引用时才落盘删除)
type AdminAttachmentDeleteReq struct {
g.Meta `path:"/admin/attachment/delete" method:"post" tags:"admin" summary:"删除附件"`
Id int64 `v:"required" json:"id"`
}
type AdminAttachmentDeleteRes struct {
RemovedFile bool `json:"removed_file"` // false = 文件仍被引用,仅移除了登记记录
}