This commit is contained in:
2026-01-29 15:27:45 +08:00
parent 88787c6145
commit 360fed3907

View File

@@ -42,12 +42,14 @@ func ProcessPDFG01GZRequest(ctx context.Context, params []byte, deps *processors
// 从context获取config如果存在
var cacheTTL time.Duration = 24 * time.Hour
var cacheDir string
var apiDomain string
if cfg, ok := ctx.Value("config").(*config.Config); ok && cfg != nil {
cacheTTL = cfg.PDFGen.Cache.TTL
if cacheTTL == 0 {
cacheTTL = 24 * time.Hour
}
cacheDir = cfg.PDFGen.Cache.CacheDir
apiDomain = cfg.API.Domain
}
// 获取最大缓存大小
@@ -111,12 +113,15 @@ func ProcessPDFG01GZRequest(ctx context.Context, params []byte, deps *processors
time.Sleep(2 * time.Second)
// 生成下载链接基于报告ID
downloadURL := generateDownloadURL(reportID)
downloadURL := generateDownloadURL(apiDomain, reportID)
expiresAt := createdAt.Add(cacheTTL)
return json.Marshal(map[string]interface{}{
"download_url": downloadURL,
"report_id": reportID,
"cached": true,
"created_at": createdAt.Format(time.RFC3339),
"expires_at": expiresAt.Format(time.RFC3339),
"ttl_seconds": int(cacheTTL.Seconds()),
})
}
@@ -186,7 +191,8 @@ func ProcessPDFG01GZRequest(ctx context.Context, params []byte, deps *processors
}
// 生成下载链接基于报告ID
downloadURL := generateDownloadURL(reportID)
downloadURL := generateDownloadURL(apiDomain, reportID)
expiresAt := time.Now().Add(cacheTTL)
zapLogger.Info("PDF生成成功",
zap.String("name", paramsDto.Name),
@@ -201,6 +207,8 @@ func ProcessPDFG01GZRequest(ctx context.Context, params []byte, deps *processors
"report_id": reportID,
"report_number": reportNumber,
"cached": false,
"expires_at": expiresAt.Format(time.RFC3339),
"ttl_seconds": int(cacheTTL.Seconds()),
})
}
@@ -494,9 +502,13 @@ func generateReportNumber() string {
}
// generateDownloadURL 生成下载链接基于报告ID/缓存键)
func generateDownloadURL(reportID string) string {
// 这里应该生成实际的下载URL
// 暂时返回一个占位符,实际应该根据服务器配置生成
return fmt.Sprintf("/api/v1/pdfg/download?id=%s", reportID)
// apiDomain: 外部可访问的API域名如 api.tianyuanapi.com
func generateDownloadURL(apiDomain, reportID string) string {
if apiDomain == "" {
// 兜底:保留相对路径,方便本地/测试环境使用
return fmt.Sprintf("/api/v1/pdfg/download?id=%s", reportID)
}
// 生成完整链接例如https://api.tianyuanapi.com/api/v1/pdfg/download?id=xxx
return fmt.Sprintf("https://%s/api/v1/pdfg/download?id=%s", apiDomain, reportID)
}