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