Переглянути джерело

fix:短链支持报告授权

Roc 1 місяць тому
батько
коміт
d855d67db6
4 змінених файлів з 42 додано та 12 видалено
  1. 4 4
      controllers/report_v2.go
  2. 1 1
      services/report_approve.go
  3. 35 5
      services/report_v2.go
  4. 2 2
      utils/constants.go

+ 4 - 4
controllers/report_v2.go

@@ -598,9 +598,9 @@ func (this *ReportController) Edit() {
 
 	req.Content = services.HandleReportContentTable(int(req.ReportId), req.Content)
 	req.ContentStruct = services.HandleReportContentStructTable(int(req.ReportId), req.ContentStruct)
-    req.Content = services.HandleReportContent(req.Content, "del", nil)
+	req.Content = services.HandleReportContent(req.Content, "del", nil)
 	req.ContentStruct = services.HandleReportContentStruct(req.ContentStruct, "del", nil)
-	
+
 	// 编辑报告信息
 	err, errMsg := services.EditReport(reportInfo, req, sysUser)
 	if err != nil {
@@ -719,7 +719,7 @@ func (this *ReportController) Detail() {
 		v.ContentStruct = services.HandleReportContentStructTable(item.Id, v.ContentStruct)
 	}
 
-    businessConf, err := models.GetBusinessConfByKey(models.BusinessConfIsOpenChartExpired)
+	businessConf, err := models.GetBusinessConfByKey(models.BusinessConfIsOpenChartExpired)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取配置失败,Err:" + err.Error()
@@ -1491,7 +1491,7 @@ func (this *ReportController) PrePublishReport() {
 
 	// 生成报告pdf和长图
 	{
-		reportPdfUrl := services.GetGeneralPdfUrl(reportDetail.ReportCode, reportDetail.ClassifyNameFirst, reportDetail.ReportLayout)
+		reportPdfUrl := services.GetGeneralPdfUrl(reportDetail.Id, reportDetail.ReportCode, reportDetail.ClassifyNameFirst, reportDetail.ReportLayout)
 		go services.Report2pdfAndJpeg(reportPdfUrl, reportDetail.Id, 1)
 	}
 

+ 1 - 1
services/report_approve.go

@@ -841,7 +841,7 @@ func AfterReportApprovePass(reportType, reportId int) (err error) {
 
 		// 生成报告pdf和长图
 		{
-			reportPdfUrl := GetGeneralPdfUrl(reportInfo.ReportCode, reportInfo.ClassifyNameFirst, reportInfo.ReportLayout)
+			reportPdfUrl := GetGeneralPdfUrl(reportInfo.Id, reportInfo.ReportCode, reportInfo.ClassifyNameFirst, reportInfo.ReportLayout)
 			go Report2pdfAndJpeg(reportPdfUrl, reportId, 1)
 		}
 

+ 35 - 5
services/report_v2.go

@@ -1225,7 +1225,7 @@ func PublishReport(reportId int, reportUrl string, sysUser *system.Admin) (tips
 
 	// 生成报告pdf和长图
 	{
-		reportPdfUrl := GetGeneralPdfUrl(reportInfo.ReportCode, reportInfo.ClassifyNameFirst, reportInfo.ReportLayout)
+		reportPdfUrl := GetGeneralPdfUrl(reportInfo.Id, reportInfo.ReportCode, reportInfo.ClassifyNameFirst, reportInfo.ReportLayout)
 		go Report2pdfAndJpeg(reportPdfUrl, reportId, 1)
 	}
 
@@ -1352,7 +1352,7 @@ func PublishChapterReport(reportInfo *models.Report, reportUrl string, sysUser *
 
 	// 生成报告pdf和长图
 	{
-		reportPdfUrl := GetGeneralPdfUrl(reportInfo.ReportCode, reportInfo.ClassifyNameFirst, reportInfo.ReportLayout)
+		reportPdfUrl := GetGeneralPdfUrl(reportInfo.Id, reportInfo.ReportCode, reportInfo.ClassifyNameFirst, reportInfo.ReportLayout)
 		go Report2pdfAndJpeg(reportPdfUrl, reportId, 1)
 	}
 
@@ -1590,7 +1590,7 @@ func UpdateReportVideo(reportInfo *models.Report) {
 // @param reportCode string
 // @param reportLayout int8
 // @return pdfUrl string
-func GetGeneralPdfUrl(reportCode, classifyFirstName string, reportLayout int8) (pdfUrl string) {
+func GetGeneralPdfUrl(reportId int, reportCode, classifyFirstName string, reportLayout int8) (pdfUrl string) {
 	// 如果是弘则,且是晨、周报,那么就不返回
 	if utils.InArrayByStr([]string{utils.BusinessCodeRelease, utils.BusinessCodeSandbox, utils.BusinessCodeDebug}, utils.BusinessCode) && utils.InArrayByStr([]string{"晨报", "周报"}, classifyFirstName) {
 		return
@@ -1618,6 +1618,13 @@ func GetGeneralPdfUrl(reportCode, classifyFirstName string, reportLayout int8) (
 		// 智能布局
 		pdfUrl = fmt.Sprintf("%s/reportshare_smart_pdf?code=%s", reportUrl, reportCode)
 	}
+	if reportUrl != "" {
+		token := utils.MD5(fmt.Sprint(pdfUrl, time.Now().UnixNano()/1e6))
+		e := generalReportAuthToken(token, reportId)
+		if e == nil {
+			pdfUrl = fmt.Sprintf("%s&authToken=%s", pdfUrl, token)
+		}
+	}
 
 	return
 }
@@ -2079,13 +2086,36 @@ func GeneralChartToken(showType, uniqueCode string) (token string, err error) {
 // @return token string
 // @return err error
 func GeneralReportToken(linkToken string, reportId int) (token string, err error) {
-	// 缓存key
+	// 图表授权token
 	token = utils.MD5(fmt.Sprint(linkToken, time.Now().UnixNano()/1e6))
+
+	// 缓存key
 	reportKey := getReportShareTokenKey(linkToken)
 	err = utils.Rc.Put(reportKey, token, utils.BusinessConfReportChartExpiredTime)
+	if err != nil {
+		return
+	}
 
+	// 生成报告的图表授权token
+	err = generalReportAuthToken(token, reportId)
+	if err != nil {
+		return
+	}
+
+	return
+}
+
+// generalReportAuthToken
+// @Description: 生成报告的图表授权token
+// @author: Roc
+// @datetime 2025-03-17 17:47:07
+// @param token string
+// @param reportId int
+// @return err error
+func generalReportAuthToken(token string, reportId int) (err error) {
+	// 缓存key
 	reportTokenKey := getReportTokenKey(token)
-	err = utils.Rc.Put(reportTokenKey, fmt.Sprint(reportId), utils.BusinessConfReportChartExpiredTime)
+	err = utils.Rc.Put(reportTokenKey, reportId, utils.BusinessConfReportChartExpiredTime)
 
 	return
 }

+ 2 - 2
utils/constants.go

@@ -263,8 +263,8 @@ const (
 
 	CACHE_EXCEL_REFRESH     = "CACHE_EXCEL_REFRESH"    // 表格刷新
 	CACHE_CHART_AUTH        = "eta:chart:auth:"        //图表数据授权
-	CACHE_REPORT_SHARE_AUTH = "eta:report:auth:share:" //报告短链映射key
-	CACHE_REPORT_AUTH       = "eta:report:auth:"       //图表数据授权
+	CACHE_REPORT_SHARE_AUTH = "eta:report:auth:share:" //报告短链与报告图表授权映射key
+	CACHE_REPORT_AUTH       = "eta:report:auth:"       //报告图表数据授权
 )
 
 // 模板消息推送类型