fix: 竞品报告批量导入的时候添加到正文

This commit is contained in:
cjy 2026-03-02 16:47:55 +08:00
parent 9c4c4b1c66
commit 8022eca1f8
2 changed files with 70 additions and 0 deletions

View File

@ -577,6 +577,11 @@ func ImportCompetitiveReportBatch(ctx *gin.Context) {
// 将上传后的PDF链接设置到请求中 // 将上传后的PDF链接设置到请求中
temp.PdfUrl = pdfUrl temp.PdfUrl = pdfUrl
// 生成竞品报告正文
// 判断是否为视频如果有图片URL则为图片否则根据配乐亮点和完播率是否有值来判断
isVideo := competitorReportData.HighlightAnalysis.Points.Music != "" || competitorReportData.DataPerformance.Completion != ""
temp.ReportContent = utils.ConvertCompetitorReportToText(competitorReportData, isVideo)
// 清理临时PDF文件 // 清理临时PDF文件
if _, err := os.Stat(pdfFilePath); err == nil { if _, err := os.Stat(pdfFilePath); err == nil {
if err := os.Remove(pdfFilePath); err != nil { if err := os.Remove(pdfFilePath); err != nil {

View File

@ -9,6 +9,7 @@ import (
"net/url" "net/url"
"os" "os"
"path/filepath" "path/filepath"
"strings"
"unicode" "unicode"
"github.com/phpdave11/gofpdf" "github.com/phpdave11/gofpdf"
@ -497,3 +498,67 @@ func wrapText(text string, maxLen int) []string {
return lines return lines
} }
// ConvertCompetitorReportToText 将竞品报告数据转换为文本格式
// 参数:
// - data: 竞品报告数据
// - isVideo: 是否为视频(视频需要包含完播率和配乐亮点)
//
// 返回: 转换后的文本内容
func ConvertCompetitorReportToText(data CompetitorReportData, isVideo bool) string {
var sb strings.Builder
// 一、亮点表现分析
sb.WriteString("一、亮点表现分析\n")
sb.WriteString(data.HighlightAnalysis.Summary)
sb.WriteString("\n\n")
sb.WriteString("1. 标题亮点:")
sb.WriteString(data.HighlightAnalysis.Points.Theme)
sb.WriteString("\n")
sb.WriteString("2. 题材亮点:")
sb.WriteString(data.HighlightAnalysis.Points.Narrative)
sb.WriteString("\n")
sb.WriteString("3. 内容亮点:")
sb.WriteString(data.HighlightAnalysis.Points.Content)
sb.WriteString("\n")
sb.WriteString("4. 文案亮点:")
sb.WriteString(data.HighlightAnalysis.Points.Copywriting)
sb.WriteString("\n")
sb.WriteString("5. 数据亮点:")
sb.WriteString(data.HighlightAnalysis.Points.Data)
sb.WriteString("\n")
if isVideo && data.HighlightAnalysis.Points.Music != "" {
sb.WriteString("6. 配乐亮点:")
sb.WriteString(data.HighlightAnalysis.Points.Music)
sb.WriteString("\n")
}
// 二、数据表现分析
sb.WriteString("\n二、数据表现分析\n")
sb.WriteString("1. 浏览量表现:")
sb.WriteString(data.DataPerformance.Views)
sb.WriteString("\n")
if isVideo && data.DataPerformance.Completion != "" {
sb.WriteString("2. 完播率表现:")
sb.WriteString(data.DataPerformance.Completion)
sb.WriteString("\n")
sb.WriteString("3. 点赞/分享/评论表现:")
} else {
sb.WriteString("2. 点赞/分享/评论表现:")
}
sb.WriteString(data.DataPerformance.Engagement)
sb.WriteString("\n")
// 三、整体总结及可优化建议
sb.WriteString("\n三、整体总结及可优化建议\n")
sb.WriteString(data.OverallSummary)
return sb.String()
}