Bläddra i källkod

修改为异步

zwxi 10 månader sedan
förälder
incheckning
88508bf467
3 ändrade filer med 110 tillägg och 110 borttagningar
  1. 8 108
      controllers/smart_report/smart_report.go
  2. 3 2
      models/smart_report/smart_report.go
  3. 99 0
      services/smart_report.go

+ 8 - 108
controllers/smart_report/smart_report.go

@@ -17,6 +17,7 @@ import (
 	"io/ioutil"
 	"os"
 	"path"
+	"strconv"
 	"strings"
 	"time"
 )
@@ -501,10 +502,10 @@ func (this *SmartReportController) Publish() {
 		item.PrePublishTime = time.Time{}
 
 		// 写入队列
-		var queue smart_report.Report2ImgQueueReq
-		queue.ReportType = 2
-		queue.ReportCode = item.ReportCode
-		_ = utils.Rc.LPush(utils.CACHE_CREATE_REPORT_IMGPDF_QUEUE, queue)
+		//var queue smart_report.Report2ImgQueueReq
+		//queue.ReportType = 2
+		//queue.ReportCode = item.ReportCode
+		//_ = utils.Rc.LPush(utils.CACHE_CREATE_REPORT_IMGPDF_QUEUE, queue)
 	}
 
 	// 取消发布时同时清除掉Img和PDF的文件地址, 发布时间以及预发布时间
@@ -543,6 +544,9 @@ func (this *SmartReportController) Publish() {
 		go func() {
 			_ = services.SmartReportElasticUpsert(item.SmartReportId, models.ReportStatePublished)
 		}()
+
+		// 生成报告pdf和长图
+		go services.Report2pdfAndJpeg(req.ReportUrl, req.SmartReportId)
 	}
 	if state == smart_report.SmartReportStateWaitPublish {
 		// ES更新报告
@@ -1534,107 +1538,3 @@ func (this *SmartReportController) CancelApprove() {
 	br.Msg = "操作成功"
 }
 
-// GetReportPdfUrl
-// @Title 研报生成pdf和图片
-// @Description 研报生成pdf和图片接口
-// @Success 200 {object} smart_report.SmartReportListResp
-// @router /get_pdf_url [post]
-func (this *SmartReportController) GetReportPdfUrl() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		return
-	}
-
-	var req models.GetReportPdfUrlReq
-	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
-		br.Msg = "参数有误"
-		br.ErrMsg = "参数解析失败, Err: " + e.Error()
-		return
-	}
-	if req.ReportUrl == "" {
-		br.Msg = "参数有误"
-		br.ErrMsg = "报告链接有误"
-		return
-	}
-
-	if req.Type != 1 && req.Type != 2 {
-		br.Msg = "参数有误"
-		br.ErrMsg = "获取资源类型有误"
-		return
-	}
-
-	filePath := `./static/` + req.ReportCode
-	var err error
-	if req.Type == 1 {
-		filePath += ".pdf"
-		err = services.ReportToPdf(req.ReportUrl, filePath)
-		if err != nil {
-			br.Msg = "转换失败"
-			br.ErrMsg = "报告转PDF失败,Err:" + err.Error()
-			return
-		}
-	} else {
-		filePath += ".jpeg"
-		err = services.ReportToJpeg(req.ReportUrl, filePath)
-		if err != nil {
-			br.Msg = "转换失败"
-			br.ErrMsg = "报告转图片失败,Err:" + err.Error()
-			return
-		}
-	}
-
-	file, err := os.Open(filePath)
-	if err != nil {
-		fmt.Println("Error:", err)
-		return
-	}
-
-
-	ext := path.Ext(file.Name())
-	//dateDir := time.Now().Format("20060102")
-	//uploadDir := utils.STATIC_DIR + "hongze/" + dateDir
-	//err = os.MkdirAll(uploadDir, utils.DIR_MOD)
-	//if err != nil {
-	//	br.Msg = "存储目录创建失败"
-	//	br.ErrMsg = "存储目录创建失败,Err:" + err.Error()
-	//	return
-	//}
-	randStr := utils.GetRandStringNoSpecialChar(28)
-	fileName := randStr + ext
-	//fpath := utils.STATIC_DIR + "/" + fileName
-	defer file.Close() //关闭上传文件
-
-	resourceUrl := ``
-	ossClient := services.NewOssClient()
-	if ossClient == nil {
-		br.Msg = "上传失败"
-		br.ErrMsg = "初始化OSS服务失败"
-		return
-	}
-	resourceUrl, err = ossClient.UploadFile(fileName, filePath, "")
-	if err != nil {
-		br.Msg = "文件上传失败"
-		br.ErrMsg = "文件上传失败,Err:" + err.Error()
-		return
-	}
-	defer func() {
-		_ = os.Remove(filePath)
-	}()
-
-
-	br.Ret = 200
-	br.Success = true
-	br.Data = resourceUrl
-	br.Msg = "操作成功"
-}

+ 3 - 2
models/smart_report/smart_report.go

@@ -315,8 +315,9 @@ type SmartReportRemoveReq struct {
 
 // SmartReportPublishReq 发布智能研报请求体
 type SmartReportPublishReq struct {
-	SmartReportId int `description:"智能研报ID"`
-	PublishState  int `description:"1-取消发布; 2-发布"`
+	SmartReportId int    `description:"智能研报ID"`
+	PublishState  int    `description:"1-取消发布; 2-发布"`
+	ReportUrl     string `description:"报告Url"`
 }
 
 // SmartReportPrePublishReq 预发布智能研报请求体

+ 99 - 0
services/smart_report.go

@@ -8,7 +8,9 @@ import (
 	"eta/eta_api/utils"
 	"fmt"
 	"html"
+	"os"
 	"os/exec"
+	"path"
 	"strconv"
 	"time"
 )
@@ -237,3 +239,100 @@ finally:
 	return
 }
 
+func Report2pdfAndJpeg(reportUrl string, reportId int) {
+	var err error
+
+	defer func() {
+		if err != nil {
+			utils.FileLog.Info("Report2pdfAndJpeg failed: , error: \n" + err.Error())
+		}
+	}()
+	reportCode := utils.MD5(strconv.Itoa(reportId))
+
+	filePath := `./static/` + reportCode
+
+	go func() {
+		err := ReportToPdf(reportUrl, filePath+".pdf")
+		if err != nil {
+			utils.FileLog.Info("ReportToPdf failed: , error: \n" + err.Error())
+		}
+
+		file, err := os.Open(filePath)
+		if err != nil {
+			fmt.Println("Error:", err)
+			return
+		}
+
+		ext := path.Ext(file.Name())
+
+		randStr := utils.GetRandStringNoSpecialChar(28)
+		fileName := randStr + ext
+		defer file.Close() //关闭上传文件
+
+		resourceUrl := ``
+		ossClient := NewOssClient()
+		if ossClient == nil {
+			utils.FileLog.Info("初始化OSS服务失败")
+			return
+		}
+		resourceUrl, err = ossClient.UploadFile(fileName, filePath, "")
+		if err != nil {
+			utils.FileLog.Info("文件上传失败, Err: \n" + err.Error())
+			return
+		}
+		defer func() {
+			_ = os.Remove(filePath)
+		}()
+
+		// 更新pdf url
+		ob := new(smart_report.SmartReport)
+		ob.SmartReportId = reportId
+		ob.DetailPdfUrl = resourceUrl
+		if err = ob.Update([]string{"DetailPdfUrl"}); err != nil {
+			utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+			return
+		}
+	}()
+
+	go func() {
+		err := ReportToJpeg(reportUrl, filePath+".jpeg")
+		if err != nil {
+			utils.FileLog.Info("ReportToJpeg failed: , error: \n" + err.Error())
+		}
+		file, err := os.Open(filePath)
+		if err != nil {
+			utils.FileLog.Info("open file failed: , error: \n" + err.Error())
+			return
+		}
+
+		ext := path.Ext(file.Name())
+
+		randStr := utils.GetRandStringNoSpecialChar(28)
+		fileName := randStr + ext
+		defer file.Close() //关闭上传文件
+
+		resourceUrl := ``
+		ossClient := NewOssClient()
+		if ossClient == nil {
+			utils.FileLog.Info("初始化OSS服务失败")
+			return
+		}
+		resourceUrl, err = ossClient.UploadFile(fileName, filePath, "")
+		if err != nil {
+			utils.FileLog.Info("文件上传失败, Err: \n" + err.Error())
+			return
+		}
+		defer func() {
+			_ = os.Remove(filePath)
+		}()
+
+		// 更新jpeg url
+		ob := new(smart_report.SmartReport)
+		ob.SmartReportId = reportId
+		ob.DetailImgUrl = resourceUrl
+		if err = ob.Update([]string{"DetailImgUrl"}); err != nil {
+			utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+			return
+		}
+	}()
+}