Roc 1 月之前
父节点
当前提交
40285381ef
共有 5 个文件被更改,包括 48 次插入14 次删除
  1. 1 1
      controllers/data_manage/chart_common.go
  2. 19 6
      models/business_conf.go
  3. 20 5
      services/report_v2.go
  4. 5 0
      utils/business_conf.go
  5. 3 2
      utils/constants.go

+ 1 - 1
controllers/data_manage/chart_common.go

@@ -396,7 +396,7 @@ func (this *ChartInfoController) GeneralChartToken() {
 		if source == `table` {
 			sourceType = source
 		}
-		token, err = services.GeneralChartToken(sourceType, uniqueCode, 30*time.Minute)
+		token, err = services.GeneralChartToken(sourceType, uniqueCode)
 		if err != nil {
 			br.Msg = "获取失败"
 			br.ErrMsg = "获取失败"

+ 19 - 6
models/business_conf.go

@@ -5,6 +5,7 @@ import (
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"html"
+	"strconv"
 	"strings"
 	"time"
 )
@@ -53,12 +54,13 @@ const (
 	BusinessConfTencentApiRecTaskCallbackUrl = "TencentApiRecTaskCallbackUrl" // 腾讯云API-语音识别回调地址
 	BusinessConfSmsJhgjVariable              = "SmsJhgjVariable"              // 聚合国际短信变量
 
-	BusinessConfEdbStopRefreshRule = "EdbStopRefreshRule" // 是否停止指标刷新规则
-	BusinessConfReport2ImgUrl      = "Report2ImgUrl"      // 报告转长图地址(用于兼容内外网环境的)
-	BusinessConfReportViewUrl      = "ReportViewUrl"      // 报告详情地址     // 报告详情地址
-	BusinessConfEsIndexNameExcel             = "EsIndexNameExcel"             // ES索引名称-表格
-	BusinessConfEsIndexNameDataSource        = "EsIndexNameDataSource"   
-	BusinessConfIsOpenChartExpired = "IsOpenChartExpired" // 图表是否鉴权
+	BusinessConfEdbStopRefreshRule     = "EdbStopRefreshRule" // 是否停止指标刷新规则
+	BusinessConfReport2ImgUrl          = "Report2ImgUrl"      // 报告转长图地址(用于兼容内外网环境的)
+	BusinessConfReportViewUrl          = "ReportViewUrl"      // 报告详情地址     // 报告详情地址
+	BusinessConfEsIndexNameExcel       = "EsIndexNameExcel"   // ES索引名称-表格
+	BusinessConfEsIndexNameDataSource  = "EsIndexNameDataSource"
+	BusinessConfIsOpenChartExpired     = "IsOpenChartExpired"     // 是否开启图表有效期鉴权/报告禁止复制
+	BusinessConfReportChartExpiredTime = "ReportChartExpiredTime" // 图表有效期鉴权时间,单位:分钟
 )
 
 const (
@@ -276,4 +278,15 @@ func InitBusinessConf() {
 	if BusinessConfMap[BusinessConfEsIndexNameDataSource] != "" {
 		utils.EsDataSourceIndexName = BusinessConfMap[BusinessConfEsIndexNameDataSource]
 	}
+
+	// 图表有效期的过期时间
+	if BusinessConfMap[BusinessConfReportChartExpiredTime] != "" {
+		reportChartExpiredTime, _ := strconv.Atoi(BusinessConfMap[BusinessConfReportChartExpiredTime])
+		if reportChartExpiredTime <= 0 {
+			reportChartExpiredTime = 30
+		}
+		utils.BusinessConfReportChartExpiredTime = time.Duration(reportChartExpiredTime) * time.Minute
+	} else {
+		utils.BusinessConfReportChartExpiredTime = 30 * time.Minute
+	}
 }

+ 20 - 5
services/report_v2.go

@@ -2016,7 +2016,7 @@ func linkAddToken(link string, tokenMap map[string]string) string {
 		}
 	}
 
-	token, err := GeneralChartToken(showType, code, 30*time.Minute)
+	token, err := GeneralChartToken(showType, code)
 	if err != nil {
 		return link
 	}
@@ -2055,19 +2055,34 @@ func linkDelToken(link string) string {
 }
 
 // GeneralChartToken
-// @Description: 生图表/表格授权token
+// @Description: 生图表/表格授权token
 // @author: Roc
 // @datetime 2025-01-07 10:41:36
 // @param showType string
 // @param uniqueCode string
-// @param expireTime time.Duration
 // @return token string
 // @return err error
-func GeneralChartToken(showType, uniqueCode string, expireTime time.Duration) (token string, err error) {
+func GeneralChartToken(showType, uniqueCode string) (token string, err error) {
 	// 缓存key
 	token = utils.MD5(fmt.Sprint(showType+`:`, uniqueCode, time.Now().UnixNano()/1e6))
 	key := fmt.Sprint(utils.CACHE_CHART_AUTH, token)
-	err = utils.Rc.Put(key, uniqueCode, expireTime)
+	err = utils.Rc.Put(key, uniqueCode, utils.BusinessConfReportChartExpiredTime)
+
+	return
+}
+
+// GeneralReportToken
+// @Description: 生成报告授权token
+// @author: Roc
+// @datetime 2025-01-07 10:41:36
+// @param uniqueCode string
+// @return token string
+// @return err error
+func GeneralReportToken(uniqueCode string) (token string, err error) {
+	// 缓存key
+	token = utils.MD5(fmt.Sprint(uniqueCode, time.Now().UnixNano()/1e6))
+	key := fmt.Sprint(utils.CACHE_REPORT_AUTH, token)
+	err = utils.Rc.Put(key, uniqueCode, utils.BusinessConfReportChartExpiredTime)
 
 	return
 }

+ 5 - 0
utils/business_conf.go

@@ -0,0 +1,5 @@
+package utils
+
+import "time"
+
+var BusinessConfReportChartExpiredTime time.Duration //图表有效期鉴权时间,单位:分钟

+ 3 - 2
utils/constants.go

@@ -255,14 +255,15 @@ const (
 	CACHE_CREATE_REPORT_IMGPDF_QUEUE = "eta_report:report_img_pdf_queue" // 生成报告长图PDF队列
 	CACHE_EDB_TERMINAL_CODE_URL      = "edb:terminal_code:edb_code:"     // 指标与终端关系的缓存
 
-	CACHE_KEY_REPLACE_EDB = "eta:replace_edb" //系统用户操作日志队列
+	CACHE_KEY_REPLACE_EDB         = "eta:replace_edb"                 //系统用户操作日志队列
 	CACHE_REPORT_SHARE_SHORT_Url  = "eta:report_share_url:report_id:" //报告短链映射key
 	CACHE_REPORT_SHARE_ORIGIN_Url = "eta:report_share_url:token:"     //短链与原始报告链接的映射key
 
 	CACHE_DATA_SOURCE_ES_HANDLE = "eta:data_source_es:handle" // 数据源es处理队列
 
 	CACHE_EXCEL_REFRESH = "CACHE_EXCEL_REFRESH" // 表格刷新
-	CACHE_CHART_AUTH      = "chart:auth:"     //图表数据授权
+	CACHE_CHART_AUTH    = "eta:chart:auth:"     //图表数据授权
+	CACHE_REPORT_AUTH   = "eta:report:auth:"    //图表数据授权
 )
 
 // 模板消息推送类型