fix: 固定使用模板生成报告

This commit is contained in:
cjy 2026-03-03 10:09:32 +08:00
parent 7cc03c02fa
commit 51f82425c5

View File

@ -111,11 +111,10 @@ func CreateCompetitiveReportCore(ctx *gin.Context, req *cast.CreateCompetitiveRe
}
req.BundleOrderUuid = resp1.OrderUUID
// 验证报告内容、AI生成的JSON数据和图片不能同时为空
// 检查 reportData 是否有数据
// 验证:必须传入 json_data使用模板方式生成PDF
hasReportData := reportData.OverallSummary != "" || reportData.HighlightAnalysis.Summary != ""
if req.ReportContent == "" && !hasReportData && req.ImageUrl == "" {
return nil, errors.New("报告内容、AI数据和图片不能同时为空")
if !hasReportData {
return nil, errors.New("请传入json_data参数")
}
if req.ImageUrl != "" {
@ -127,10 +126,7 @@ func CreateCompetitiveReportCore(ctx *gin.Context, req *cast.CreateCompetitiveRe
req.ImageUrl = newImageUrl
}
// 判断使用哪种方式生成PDF
// 检查 reportData 是否有数据(通过判断 OverallSummary 是否为空)
if reportData.OverallSummary != "" || reportData.HighlightAnalysis.Summary != "" {
// 使用 GenerateCompetitorReportPDF 生成PDF
// 使用模板方式生成PDF
zap.L().Info("reportData内容", zap.Any("reportData", reportData))
// 直接使用传入的结构体数据
@ -179,44 +175,6 @@ func CreateCompetitiveReportCore(ctx *gin.Context, req *cast.CreateCompetitiveRe
return nil, errors.New("上传PDF失败")
}
req.PdfUrl = pdfUrl
} else if req.ReportContent != "" {
// 使用原有的 GeneratePDF 生成PDF
today := time.Now().Format("20060102")
timestamp := time.Now().UnixMicro()
pdfFileName := fmt.Sprintf("%s%s老师的竞品报告%d.pdf", today, req.ArtistName, timestamp)
pdfFilePath := "./runtime/report_pdf/" + pdfFileName
_, err = utils.CheckDirPath("./runtime/report_pdf/", true)
if err != nil {
return nil, fmt.Errorf("创建PDF目录失败: %v", err)
}
fontPath := "./data/simfang.ttf"
err = utils.GeneratePDF(req.ReportContent, req.ImageUrl, pdfFilePath, fontPath)
if err != nil {
zap.L().Error("生成PDF失败", zap.Error(err))
return nil, errors.New("生成PDF失败")
}
defer func() {
if _, err := os.Stat(pdfFilePath); err == nil {
if err := os.Remove(pdfFilePath); err != nil {
zap.L().Warn("删除临时PDF文件失败", zap.String("path", pdfFilePath), zap.Error(err))
} else {
zap.L().Info("删除临时PDF文件成功", zap.String("path", pdfFilePath))
}
}
}()
pdfUrl, uploadErr := upload.PutBos(pdfFilePath, upload.PdfType, true)
if uploadErr != nil {
zap.L().Error("上传PDF失败: %v", zap.Error(uploadErr))
return nil, errors.New("上传PDF失败")
}
req.PdfUrl = pdfUrl
} else {
req.PdfUrl = req.ImageUrl
}
resp, err := service.CastProvider.CreateCompetitiveReport(newCtx, req)
if err != nil {