This commit is contained in:
toom1996
2026-09-03 19:45:20 +08:00
parent ffe84efc4c
commit b049104a0b
8 changed files with 99 additions and 22 deletions

View File

@ -15,6 +15,21 @@ func Data(c *gin.Context, status int, v any) {
c.JSON(status, gin.H{"data": v})
}
// DataPreview 同 Data,但可附加 preview 标记(详情接口对未登录请求截断图片集时 preview=true)。
//
// 详情接口对未登录请求只返回预览上限(PreviewLimit)张图片,并打 preview=true,
// 前端据此在详情页展示「登录查看全部图片」门禁;已登录(携带有效 Bearer)返回完整图片集,不打标记。
// imageTotal 为图片集的真实总数(截断前),前端用它渲染「剩余 N 张需登录」的占位遮罩,
// 避免匿名用户误以为图集只有预览上限那几张。
func DataPreview(c *gin.Context, status int, v any, preview bool, imageTotal int) {
m := gin.H{"data": v}
if preview {
m["preview"] = true
}
m["image_total"] = imageTotal
c.JSON(status, m)
}
// Page 返回分页列表:{ data, last_page }。
//
// 只保留前端真正消费的字段:data(本页数据)与 last_page(总页数,供页码导航)。
@ -26,6 +41,21 @@ func Page(c *gin.Context, status int, data any, total int64, size int) {
})
}
// PagePreview 同 Page,但可附加 preview 标记(未登录截断预览时 preview=true)。
//
// 列表接口对未登录请求只返回预览上限(PreviewLimit)条数据,并打 preview=true,
// 前端据此弹出「登录查看全部」门禁;已登录或总量本就不超上限时不打标记。
func PagePreview(c *gin.Context, status int, data any, total int64, size int, preview bool) {
m := gin.H{
"data": data,
"last_page": LastPage(total, size),
}
if preview {
m["preview"] = true
}
c.JSON(status, m)
}
// Error 返回错误:{ "error": msg }。
func Error(c *gin.Context, status int, msg string) {
c.JSON(status, gin.H{"error": msg})