Browse Source

研报宽度-pdf下载移动端实现

gmy 2 months ago
parent
commit
f55ccc84e6
4 changed files with 165 additions and 6 deletions
  1. 16 0
      models/english_report.go
  2. 18 0
      models/report.go
  3. 3 2
      models/smart_report/smart_report.go
  4. 128 4
      services/smart_report.go

+ 16 - 0
models/english_report.go

@@ -47,6 +47,8 @@ type EnglishReport struct {
 	ApproveId          int       `description:"审批ID"`
 	DetailImgUrl       string    `description:"报告详情长图地址"`
 	DetailPdfUrl       string    `description:"报告详情PDF地址"`
+	DetailImgUrlMobile string    `description:"报告详情长图地址-手机端"`
+	DetailPdfUrlMobile string    `description:"报告详情PDF地址-手机端"`
 	EmailHasFail       int       `description:"是否存在邮件发送失败的记录: 0-否; 1-是"`
 }
 
@@ -937,6 +939,20 @@ func ModifyEnglishReportImgUrl(reportId int, detailImgUrl string) (err error) {
 	return
 }
 
+func ModifyEnglishReportPdfUrlMobile(reportId int, detailPdfUrlMobile string) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `UPDATE english_report SET detail_pdf_url_mobile=? WHERE id=? `
+	_, err = o.Raw(sql, detailPdfUrlMobile, reportId).Exec()
+	return
+}
+
+func ModifyEnglishReportImgUrlMobile(reportId int, detailImgUrlMobile string) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `UPDATE english_report SET detail_img_url_mobile=? WHERE id=? `
+	_, err = o.Raw(sql, detailImgUrlMobile, reportId).Exec()
+	return
+}
+
 // UpdatePdfUrlEnglishReportById 清空pdf相关字段
 func UpdatePdfUrlEnglishReportById(reportId int) (err error) {
 	o := orm.NewOrmUsingDB("rddp")

+ 18 - 0
models/report.go

@@ -66,6 +66,8 @@ type Report struct {
 	ApproveId          int       `description:"审批ID"`
 	DetailImgUrl       string    `description:"报告详情长图地址"`
 	DetailPdfUrl       string    `description:"报告详情PDF地址"`
+	DetailImgUrlMobile string    `description:"报告详情长图地址-手机端"`
+	DetailPdfUrlMobile string    `description:"报告详情PDF地址-手机端"`
 
 	ContentStruct       string    `description:"内容组件"`
 	LastModifyAdminId   int       `description:"最后更新人ID"`
@@ -131,6 +133,8 @@ type ReportList struct {
 	ApproveTime        string                    `description:"审批时间"`
 	DetailImgUrl       string                    `description:"报告详情长图地址"`
 	DetailPdfUrl       string                    `description:"报告详情PDF地址"`
+	DetailImgUrlMobile string                    `description:"报告详情长图地址-手机端"`
+	DetailPdfUrlMobile string                    `description:"报告详情PDF地址-手机端"`
 
 	CollaborateType     int8      `description:"协作方式,1:个人,2:多人协作。默认:1"`
 	ReportLayout        int8      `description:"报告布局,1:常规布局,2:智能布局。默认:1"`
@@ -1432,6 +1436,20 @@ func ModifyReportImgUrl(reportId int, detailImgUrl string) (err error) {
 	return
 }
 
+func ModifyReportPdfUrlMobile(reportId int, detailPdfUrlMobile string) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `UPDATE report SET detail_pdf_url_mobile=? WHERE id=? `
+	_, err = o.Raw(sql, detailPdfUrlMobile, reportId).Exec()
+	return
+}
+
+func ModifyReportImgUrlMobile(reportId int, detailImgUrlMobile string) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `UPDATE report SET detail_img_url_mobile=? WHERE id=? `
+	_, err = o.Raw(sql, detailImgUrlMobile, reportId).Exec()
+	return
+}
+
 // UpdatePdfUrlReportById 清空pdf相关字段
 func UpdatePdfUrlReportById(reportId int) (err error) {
 	o := orm.NewOrmUsingDB("rddp")

+ 3 - 2
models/smart_report/smart_report.go

@@ -51,6 +51,8 @@ type SmartReport struct {
 	MsgSendTime         time.Time `description:"模版消息发送时间"`
 	DetailImgUrl        string    `description:"报告详情长图地址"`
 	DetailPdfUrl        string    `description:"报告详情PDF地址"`
+	DetailImgUrlMobile  string    `description:"报告详情长图地址-手机端"`
+	DetailPdfUrlMobile  string    `description:"报告详情PDF地址-手机端"`
 	CreateTime          time.Time `description:"创建时间"`
 	ModifyTime          time.Time `description:"修改时间"`
 	HeadImg             string    `description:"报告头图地址"`
@@ -419,11 +421,10 @@ func UpdateSmartReportsStateBySecondIds(oldState, newState int, secondIds []int)
 	return
 }
 
-
 // UpdatePdfUrlSmartReportById 清空pdf相关字段
 func UpdatePdfUrlSmartReportById(reportId int) (err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	sql := `UPDATE smart_report SET detail_img_url = '',detail_pdf_url='',modify_time=NOW() WHERE smart_report_id = ? `
 	_, err = o.Raw(sql, reportId).Exec()
 	return
-}
+}

+ 128 - 4
services/smart_report.go

@@ -326,8 +326,9 @@ func Report2pdfAndJpeg(reportUrl string, reportId, reportType int) {
 
 	reportCode := utils.MD5(strconv.Itoa(reportId))
 
-	pdfPath := `./static/` + reportCode + ".pdf"
-	jpegPath := `./static/` + reportCode + ".jpeg"
+	// pc端
+	pdfPath := `./static/` + reportCode + "_1200.pdf"
+	jpegPath := `./static/` + reportCode + "_1200.jpeg"
 
 	go func() {
 		err := ReportToPdf(reportUrl, pdfPath)
@@ -392,9 +393,9 @@ func Report2pdfAndJpeg(reportUrl string, reportId, reportType int) {
 
 	go func() {
 		width := 1200
-		if reportType == 3 {
+		/*if reportType == 3 {
 			width = 800
-		}
+		}*/
 		err := ReportToJpeg(width, reportUrl, jpegPath)
 		if err != nil {
 			utils.FileLog.Info("ReportToJpeg failed: , error: \n" + err.Error())
@@ -450,4 +451,127 @@ func Report2pdfAndJpeg(reportUrl string, reportId, reportType int) {
 		}
 
 	}()
+
+	// 移动端
+	pdfPathMobile := `./static/` + reportCode + "_600.pdf"
+	jpegPathMobile := `./static/` + reportCode + "_600.jpeg"
+
+	go func() {
+		err := ReportToPdf(reportUrl, pdfPathMobile)
+		if err != nil {
+			utils.FileLog.Info("ReportToPdf failed: , error: \n" + err.Error())
+			go alarm_msg.SendAlarmMsg("ReportToPdf failed:"+err.Error(), 3)
+		}
+
+		file, err := os.Open(pdfPathMobile)
+		if err != nil {
+			utils.FileLog.Info("Open failed: , error: \n" + err.Error())
+			go alarm_msg.SendAlarmMsg("Open failed:"+err.Error(), 3)
+			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, pdfPathMobile, "")
+		if err != nil {
+			utils.FileLog.Info("文件上传失败, Err: \n" + err.Error())
+			go alarm_msg.SendAlarmMsg("文件上传失败:"+err.Error(), 3)
+			return
+		}
+		defer func() {
+			_ = os.Remove(pdfPathMobile)
+		}()
+
+		if reportType == 3 {
+			// 更新pdf url
+			ob := new(smart_report.SmartReport)
+			ob.SmartReportId = reportId
+			ob.DetailPdfUrlMobile = resourceUrl
+			if err = ob.Update([]string{"DetailPdfUrlMobile"}); err != nil {
+				utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+				return
+			}
+		} else if reportType == 2 {
+			err = models.ModifyEnglishReportPdfUrlMobile(reportId, resourceUrl)
+			if err != nil {
+				utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+				return
+			}
+		} else if reportType == 1 {
+			err = models.ModifyReportPdfUrlMobile(reportId, resourceUrl)
+			if err != nil {
+				utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+				return
+			}
+		}
+
+	}()
+
+	go func() {
+		width := 600
+		err := ReportToJpeg(width, reportUrl, jpegPathMobile)
+		if err != nil {
+			utils.FileLog.Info("ReportToJpeg failed: , error: \n" + err.Error())
+		}
+		file, err := os.Open(jpegPathMobile)
+		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, jpegPathMobile, "")
+		if err != nil {
+			utils.FileLog.Info("文件上传失败, Err: \n" + err.Error())
+			return
+		}
+		defer func() {
+			_ = os.Remove(jpegPathMobile)
+		}()
+
+		if reportType == 3 {
+			// 更新jpeg url
+			ob := new(smart_report.SmartReport)
+			ob.SmartReportId = reportId
+			ob.DetailImgUrlMobile = resourceUrl
+			if err = ob.Update([]string{"DetailImgUrlMobile"}); err != nil {
+				utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+				return
+			}
+		} else if reportType == 2 {
+			err = models.ModifyEnglishReportImgUrlMobile(reportId, resourceUrl)
+			if err != nil {
+				utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+				return
+			}
+		} else if reportType == 1 {
+			err = models.ModifyReportImgUrlMobile(reportId, resourceUrl)
+			if err != nil {
+				utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+				return
+			}
+		}
+
+	}()
 }