From 9d74cbcf8dd0d776aaaccaf3177703ec6a658e47 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Thu, 23 Jul 2026 17:30:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=BE=E7=89=87=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/modules/listing/presenter.go | 26 ++++++++++++++----- backend/internal/modules/listing/service.go | 2 +- .../admin/views/AdminListingReviewView.vue | 4 +-- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/backend/internal/modules/listing/presenter.go b/backend/internal/modules/listing/presenter.go index b394718..aa6efe4 100644 --- a/backend/internal/modules/listing/presenter.go +++ b/backend/internal/modules/listing/presenter.go @@ -306,20 +306,34 @@ func centToYuan(value int64) float64 { func cleanScreenshotURLs(urls []string) []string { cleaned := make([]string, 0, len(urls)) seen := make(map[string]struct{}, len(urls)) - for _, url := range urls { - url = strings.TrimSpace(url) - if url == "" { + for _, fileURL := range urls { + fileURL = normalizeDefaultScreenshotURL(strings.TrimSpace(fileURL)) + if fileURL == "" { continue } - if _, ok := seen[url]; ok { + if _, ok := seen[fileURL]; ok { continue } - seen[url] = struct{}{} - cleaned = append(cleaned, url) + seen[fileURL] = struct{}{} + cleaned = append(cleaned, fileURL) } return cleaned } +// normalizeDefaultScreenshotURL 把历史默认图地址升级到当前版本,避免浏览器继续吃旧 SVG 缓存。 +func normalizeDefaultScreenshotURL(fileURL string) string { + if fileURL == "" { + return "" + } + switch { + case fileURL == "/api/listings/default-upload-screenshot", + strings.HasPrefix(fileURL, "/api/listings/default-upload-screenshot?"): + return defaultUploadScreenshot + default: + return fileURL + } +} + func firstScreenshotURL(urls []string) string { if len(urls) == 0 { return "" diff --git a/backend/internal/modules/listing/service.go b/backend/internal/modules/listing/service.go index 9c24f1d..a07dc06 100644 --- a/backend/internal/modules/listing/service.go +++ b/backend/internal/modules/listing/service.go @@ -47,7 +47,7 @@ const ( defaultFireLevelMin = 38 defaultPublishCooldownMinutes = 5 maxExternalUploadItems = 10 - defaultUploadScreenshot = "/api/listings/default-upload-screenshot" + defaultUploadScreenshot = "/api/listings/default-upload-screenshot?v=webp1" ) type PublishCooldownError struct { diff --git a/frontend/src/features/admin/views/AdminListingReviewView.vue b/frontend/src/features/admin/views/AdminListingReviewView.vue index 893d9dd..e2077ac 100644 --- a/frontend/src/features/admin/views/AdminListingReviewView.vue +++ b/frontend/src/features/admin/views/AdminListingReviewView.vue @@ -36,7 +36,7 @@ interface RiskItem { level: RiskLevel } -const defaultScreenshotURL = '/api/listings/default-upload-screenshot' +const defaultScreenshotURL = '/api/listings/default-upload-screenshot?v=webp1' const rejectReasonOptions = [ '默认截图,需补充真实截图', '账号资产信息不完整', @@ -451,7 +451,7 @@ function hasDefaultScreenshot(row: Listing) { } function isDefaultScreenshot(url: string) { - return url.includes(defaultScreenshotURL) + return url.includes('/api/listings/default-upload-screenshot') } function riskItems(row: Listing): RiskItem[] {