fix: 固定使用模板生成报告
This commit is contained in:
parent
7cc03c02fa
commit
51f82425c5
@ -34,8 +34,8 @@ import (
|
|||||||
|
|
||||||
// CreateCompetitiveReportReqEx 扩展的竞品报告请求(包含AI生成的JSON数据)
|
// CreateCompetitiveReportReqEx 扩展的竞品报告请求(包含AI生成的JSON数据)
|
||||||
type CreateCompetitiveReportReqEx struct {
|
type CreateCompetitiveReportReqEx struct {
|
||||||
*cast.CreateCompetitiveReportReq // 嵌入原有请求
|
*cast.CreateCompetitiveReportReq // 嵌入原有请求
|
||||||
ReportData utils.CompetitorReportData `json:"reportData,json_data"` // AI生成的竞品报告数据(支持 reportData 和 json_data 两种字段名)
|
ReportData utils.CompetitorReportData `json:"reportData,json_data"` // AI生成的竞品报告数据(支持 reportData 和 json_data 两种字段名)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateCompetitiveReport 创建竞品报告
|
// CreateCompetitiveReport 创建竞品报告
|
||||||
@ -111,11 +111,10 @@ func CreateCompetitiveReportCore(ctx *gin.Context, req *cast.CreateCompetitiveRe
|
|||||||
}
|
}
|
||||||
req.BundleOrderUuid = resp1.OrderUUID
|
req.BundleOrderUuid = resp1.OrderUUID
|
||||||
|
|
||||||
// 验证:报告内容、AI生成的JSON数据和图片不能同时为空
|
// 验证:必须传入 json_data(使用模板方式生成PDF)
|
||||||
// 检查 reportData 是否有数据
|
|
||||||
hasReportData := reportData.OverallSummary != "" || reportData.HighlightAnalysis.Summary != ""
|
hasReportData := reportData.OverallSummary != "" || reportData.HighlightAnalysis.Summary != ""
|
||||||
if req.ReportContent == "" && !hasReportData && req.ImageUrl == "" {
|
if !hasReportData {
|
||||||
return nil, errors.New("报告内容、AI数据和图片不能同时为空")
|
return nil, errors.New("请传入json_data参数")
|
||||||
}
|
}
|
||||||
|
|
||||||
if req.ImageUrl != "" {
|
if req.ImageUrl != "" {
|
||||||
@ -127,21 +126,18 @@ func CreateCompetitiveReportCore(ctx *gin.Context, req *cast.CreateCompetitiveRe
|
|||||||
req.ImageUrl = newImageUrl
|
req.ImageUrl = newImageUrl
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断使用哪种方式生成PDF
|
// 使用模板方式生成PDF
|
||||||
// 检查 reportData 是否有数据(通过判断 OverallSummary 是否为空)
|
zap.L().Info("reportData内容", zap.Any("reportData", reportData))
|
||||||
if reportData.OverallSummary != "" || reportData.HighlightAnalysis.Summary != "" {
|
|
||||||
// 使用 GenerateCompetitorReportPDF 生成PDF
|
|
||||||
zap.L().Info("reportData内容", zap.Any("reportData", reportData))
|
|
||||||
|
|
||||||
// 直接使用传入的结构体数据
|
// 直接使用传入的结构体数据
|
||||||
competitorReportData := reportData
|
competitorReportData := reportData
|
||||||
|
|
||||||
// 如果有图片URL,设置到reportData中
|
// 如果有图片URL,设置到reportData中
|
||||||
if req.ImageUrl != "" {
|
if req.ImageUrl != "" {
|
||||||
competitorReportData.ImageURL = req.ImageUrl
|
competitorReportData.ImageURL = req.ImageUrl
|
||||||
}
|
}
|
||||||
|
|
||||||
zap.L().Info("解析成功", zap.Any("competitorReportData", competitorReportData))
|
zap.L().Info("解析成功", zap.Any("competitorReportData", competitorReportData))
|
||||||
|
|
||||||
today := time.Now().Format("20060102")
|
today := time.Now().Format("20060102")
|
||||||
timestamp := time.Now().UnixMicro()
|
timestamp := time.Now().UnixMicro()
|
||||||
@ -173,50 +169,12 @@ func CreateCompetitiveReportCore(ctx *gin.Context, req *cast.CreateCompetitiveRe
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
pdfUrl, uploadErr := upload.PutBos(pdfFilePath, upload.PdfType, true)
|
pdfUrl, uploadErr := upload.PutBos(pdfFilePath, upload.PdfType, true)
|
||||||
if uploadErr != nil {
|
if uploadErr != nil {
|
||||||
zap.L().Error("上传PDF失败: %v", zap.Error(uploadErr))
|
zap.L().Error("上传PDF失败: %v", zap.Error(uploadErr))
|
||||||
return nil, errors.New("上传PDF失败")
|
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
|
|
||||||
}
|
}
|
||||||
|
req.PdfUrl = pdfUrl
|
||||||
|
|
||||||
resp, err := service.CastProvider.CreateCompetitiveReport(newCtx, req)
|
resp, err := service.CastProvider.CreateCompetitiveReport(newCtx, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user