Merge branch 'feat-cjy-report' into dev
This commit is contained in:
commit
e2dadb5bc9
@ -13,13 +13,18 @@ import (
|
||||
modelCast "fonchain-fiee/pkg/model/cast"
|
||||
"fonchain-fiee/pkg/model/login"
|
||||
"fonchain-fiee/pkg/service"
|
||||
"fonchain-fiee/pkg/service/bundle/common"
|
||||
"fonchain-fiee/pkg/service/upload"
|
||||
"fonchain-fiee/pkg/utils"
|
||||
"net/url"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
|
||||
"dubbo.apache.org/dubbo-go/v3/common/constant"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/xuri/excelize/v2"
|
||||
@ -90,6 +95,17 @@ func CreateCompetitiveReport(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// 检查图片URL是否包含阿里云,如果包含则下载并重新上传到OSS
|
||||
if req.ImageUrl != "" {
|
||||
newImageUrl, err := checkAndReuploadImageForReport(req.ImageUrl)
|
||||
if err != nil {
|
||||
zap.L().Error("图片重新上传失败", zap.String("imageUrl", req.ImageUrl), zap.Error(err))
|
||||
service.Error(ctx, fmt.Errorf("图片处理失败: %v", err))
|
||||
return
|
||||
}
|
||||
req.ImageUrl = newImageUrl
|
||||
}
|
||||
|
||||
// 如果提供了报告内容和图片URL,则生成PDF并上传
|
||||
if req.ReportContent != "" {
|
||||
// 生成临时PDF文件路径
|
||||
@ -815,3 +831,48 @@ func autoConfirmReport(ctx context.Context, reportUuid string) (err error) {
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// checkAndReuploadImageForReport 检查图片链接是否包含aliyuncs.com,如果包含则下载并重新上传到OSS
|
||||
func checkAndReuploadImageForReport(imageUrl string) (string, error) {
|
||||
// 如果不包含阿里云域名,直接返回原URL
|
||||
if !strings.Contains(imageUrl, "aliyuncs.com") {
|
||||
return imageUrl, nil
|
||||
}
|
||||
|
||||
// 解析URL获取文件扩展名
|
||||
u, err := url.Parse(imageUrl)
|
||||
if err != nil {
|
||||
return "", errors.New("图片链接解析错误")
|
||||
}
|
||||
fileExt := filepath.Ext(u.Path)
|
||||
|
||||
// 确保目录存在
|
||||
_, err = utils.CheckDirPath("./runtime/report_pdf/", true)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("创建目录失败: %v", err)
|
||||
}
|
||||
|
||||
// 下载图片到本地
|
||||
fullPath, err := utils.SaveUrlFileDisk(imageUrl, "runtime/report_pdf/", uuid.New().String()+fileExt)
|
||||
if err != nil {
|
||||
zap.L().Error("SaveUrlFileDisk err", zap.Error(err))
|
||||
return "", errors.New("保存图片失败")
|
||||
}
|
||||
|
||||
// 上传到OSS
|
||||
compressUrl, err := upload.PutBos(fullPath, "image", true)
|
||||
if err != nil {
|
||||
return "", errors.New(common.ErrorUploadFile)
|
||||
}
|
||||
|
||||
// 清理临时文件
|
||||
defer func() {
|
||||
if fullPath != "" {
|
||||
if _, err := os.Stat(fullPath); err == nil {
|
||||
os.Remove(fullPath)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
return compressUrl, nil
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user