diff --git a/pkg/service/import/imageContentImport.go b/pkg/service/import/imageContentImport.go index 2cce5fe..2a43cbe 100644 --- a/pkg/service/import/imageContentImport.go +++ b/pkg/service/import/imageContentImport.go @@ -103,14 +103,13 @@ func ImageContentImport(c *gin.Context) { // 读取excel readExcelResult, err := readExcel(excelPath) if err != nil { - service.Error(c, errors.New("读取excel失败")) + service.Error(c, fmt.Errorf("读取excel失败: %v", err)) return } if len(readExcelResult) == 0 { service.Error(c, errors.New("请检查excel文件")) return } - processor.SetStatus(StatusProcessing) for i, v := range readExcelResult { if err := GetBatchProcessorRead().submitSingleTask(v, i); err != nil { @@ -162,17 +161,23 @@ func readExcel(excelPath string) ([]excelData, error) { if len(row) == 0 || strings.TrimSpace(row[0]) == "" { continue } - photoNumStr := getCellValue(f, sheetName, i, 10) - photoNum, err := strconv.Atoi(strings.TrimSpace(photoNumStr)) - if err != nil { - // 提供详细的错误信息 - return nil, fmt.Errorf("第%d行图片数量格式错误: '%s',必须是整数", i+1, photoNumStr) + var num int + photoUrl := getCellValue(f, sheetName, i, 9) + if photoUrl == "" { //如果没有关联画作,数量有用 + photoNumStr := getCellValue(f, sheetName, i, 10) + photoNum, err := strconv.Atoi(strings.TrimSpace(photoNumStr)) + if err != nil { + // 提供详细的错误信息 + return nil, fmt.Errorf("第%d行图片数量格式错误: '%s',必须是整数", i+1, photoNumStr) + } + + // 验证图片数量范围 + if photoNum <= 0 { + return nil, fmt.Errorf("第%d行图片数量必须大于0,当前值: %d", i+1, photoNum) + } + num = photoNum } - // 验证图片数量范围 - if photoNum <= 0 { - return nil, fmt.Errorf("第%d行图片数量必须大于0,当前值: %d", i+1, photoNum) - } data := excelData{ ArtistName: getCellValue(f, sheetName, i, 0), SubNum: getCellValue(f, sheetName, i, 1), @@ -183,8 +188,8 @@ func readExcel(excelPath string) ([]excelData, error) { TitleRequire: getCellValue(f, sheetName, i, 6), ContentRequire: getCellValue(f, sheetName, i, 7), PhotoRequire: getCellValue(f, sheetName, i, 8), - PhotoUrl: getCellValue(f, sheetName, i, 9), - PhotoNum: photoNum, + PhotoUrl: photoUrl, + PhotoNum: num, } result = append(result, data) diff --git a/pkg/service/import/imageContentProcessor.go b/pkg/service/import/imageContentProcessor.go index e4108b2..e793c37 100644 --- a/pkg/service/import/imageContentProcessor.go +++ b/pkg/service/import/imageContentProcessor.go @@ -412,12 +412,17 @@ func (p *BatchProcessor) UpdateTaskStatuses(taskId string) (err error) { //生成标题 title, content, err := p.generateTitleAndContent(p.tasks[taskId].Data) if err != nil { + zap.L().Debug("生成标题失败") + localTask.Status = TaskSuccessful + p.tasks[getTaskDetailRes.Output.TaskID].Error = err + p.inProgress[getTaskDetailRes.Output.TaskID] = true + p.tasks[getTaskDetailRes.Output.TaskID].EndTime = time.Now() return fmt.Errorf("生成标题和内容失败: %v", err) } p.tasks[taskId].Title = title p.tasks[taskId].Content = content - localTask.Status = TaskSuccessful + // 直接下载并上传到桶 localTask.EndTime = time.Now() urls := make([]string, 0, len(getTaskDetailRes.Output.Results)) @@ -426,6 +431,11 @@ func (p *BatchProcessor) UpdateTaskStatuses(taskId string) (err error) { } uploadedURLs, err := downloadAndUploadImages(urls) if err != nil { + zap.L().Debug("图片上传失败") + localTask.Status = TaskSuccessful + p.tasks[getTaskDetailRes.Output.TaskID].Error = err + p.inProgress[getTaskDetailRes.Output.TaskID] = true + p.tasks[getTaskDetailRes.Output.TaskID].EndTime = time.Now() localTask.Error = fmt.Errorf("图片上传失败: %v", err) return err } @@ -441,6 +451,9 @@ func (p *BatchProcessor) UpdateTaskStatuses(taskId string) (err error) { GeneratePhotoUrl: uploadedURLs, }); err != nil { p.tasks[getTaskDetailRes.Output.TaskID].Error = err + localTask.Status = TaskSuccessful + p.inProgress[getTaskDetailRes.Output.TaskID] = true + p.tasks[getTaskDetailRes.Output.TaskID].EndTime = time.Now() } p.inProgress[getTaskDetailRes.Output.TaskID] = true p.tasks[getTaskDetailRes.Output.TaskID].EndTime = time.Now()