fix: 修改生成竞品报告的请求参数

This commit is contained in:
cjy 2026-03-02 15:35:06 +08:00
parent 62ee062bc5
commit c5748d673b
2 changed files with 15 additions and 22 deletions

View File

@ -2,7 +2,6 @@ package cast
import (
"context"
"encoding/json"
"errors"
"fmt"
"fonchain-fiee/api/accountFiee"
@ -35,8 +34,8 @@ import (
// CreateCompetitiveReportReqEx 扩展的竞品报告请求包含AI生成的JSON数据
type CreateCompetitiveReportReqEx struct {
*cast.CreateCompetitiveReportReq // 嵌入原有请求
ReportData string `json:"reportData"` // AI生成的竞品报告JSON数据
*cast.CreateCompetitiveReportReq // 嵌入原有请求
ReportData utils.CompetitorReportData `json:"reportData"` // AI生成的竞品报告数据
}
// CreateCompetitiveReport 创建竞品报告
@ -58,7 +57,7 @@ func CreateCompetitiveReport(ctx *gin.Context) {
return
}
func CreateCompetitiveReportCore(ctx *gin.Context, req *cast.CreateCompetitiveReportReq, reportData string) (*cast.CreateCompetitiveReportResp, error) {
func CreateCompetitiveReportCore(ctx *gin.Context, req *cast.CreateCompetitiveReportReq, reportData utils.CompetitorReportData) (*cast.CreateCompetitiveReportResp, error) {
loginInfo := login.GetUserInfoFromC(ctx)
lockKey := fmt.Sprintf("lock_create_competitive_report_%d", loginInfo.ID)
reply := cache.RedisClient.SetNX(lockKey, time.Now().Format("2006-01-02 15:04:05"), time.Second*5)
@ -113,7 +112,9 @@ func CreateCompetitiveReportCore(ctx *gin.Context, req *cast.CreateCompetitiveRe
req.BundleOrderUuid = resp1.OrderUUID
// 验证报告内容、AI生成的JSON数据和图片不能同时为空
if req.ReportContent == "" && reportData == "" && req.ImageUrl == "" {
// 检查 reportData 是否有数据
hasReportData := reportData.OverallSummary != "" || reportData.HighlightAnalysis.Summary != ""
if req.ReportContent == "" && !hasReportData && req.ImageUrl == "" {
return nil, errors.New("报告内容、AI数据和图片不能同时为空")
}
@ -127,29 +128,21 @@ func CreateCompetitiveReportCore(ctx *gin.Context, req *cast.CreateCompetitiveRe
}
// 判断使用哪种方式生成PDF
if reportData != "" {
// 检查 reportData 是否有数据(通过判断 OverallSummary 是否为空)
if reportData.OverallSummary != "" || reportData.HighlightAnalysis.Summary != "" {
// 使用 GenerateCompetitorReportPDF 生成PDF
// 解析 JSON 数据
var competitorReportData utils.CompetitorReportData
zap.L().Info("reportData内容", zap.String("reportData", reportData))
zap.L().Info("reportData内容", zap.Any("reportData", reportData))
// 处理双重编码问题:替换中文引号为英文引号
processedReportData := strings.ReplaceAll(reportData, "”", "\"")
processedReportData = strings.ReplaceAll(processedReportData, "“", "\"")
if err := json.Unmarshal([]byte(processedReportData), &competitorReportData); err != nil {
zap.L().Error("解析竞品报告数据失败", zap.String("reportData", processedReportData), zap.Error(err))
// 尝试打印更详细的错误信息
zap.L().Error("详细错误", zap.Error(err))
return nil, errors.New("竞品报告数据格式错误")
}
zap.L().Info("解析成功", zap.Any("competitorReportData", competitorReportData))
// 直接使用传入的结构体数据
competitorReportData := reportData
// 如果有图片URL设置到reportData中
if req.ImageUrl != "" {
competitorReportData.ImageURL = req.ImageUrl
}
zap.L().Info("解析成功", zap.Any("competitorReportData", competitorReportData))
today := time.Now().Format("20060102")
timestamp := time.Now().UnixMicro()
pdfFileName := fmt.Sprintf("%s%s老师的竞品报告%d.pdf", today, req.ArtistName, timestamp)

View File

@ -383,8 +383,8 @@ type CreateWorkAnalysisWithTaskUUIDReq struct {
type CreateCompetitiveReportWithTaskUUIDReq struct {
*cast.CreateCompetitiveReportReq
AssignRecordsUUID string `json:"assignRecordsUUID"`
ReportData string `json:"reportData"` // AI生成的竞品报告JSON数据
AssignRecordsUUID string `json:"assignRecordsUUID"`
ReportData utils.CompetitorReportData `json:"reportData"` // AI生成的竞品报告数据
}
func UpdateWorkImageWithTaskUUID(ctx *gin.Context) {