Explorar el Código

Merge branch 'eta/2.4.5' into debug

Roc hace 2 semanas
padre
commit
04f217f02a

+ 24 - 5
controllers/report_share.go

@@ -36,6 +36,7 @@ func (this *ReportShareController) Detail() {
 		br.ErrMsg = "参数错误,reportCode 为空"
 		return
 	}
+
 	report, err := models.GetReportByCode(reportCode)
 	if err != nil {
 		br.Msg = "该报告已删除"
@@ -153,6 +154,8 @@ func (this *ReportShareController) Detail() {
 			resp.ReportLogo = strings.ReplaceAll(resp.ReportLogo, urlReplace.OssUrlOrigin, urlReplace.OssUrlNew)
 			report.Content = strings.ReplaceAll(report.Content, urlReplace.OssUrlOrigin, urlReplace.OssUrlNew)
 			report.ContentSub = strings.ReplaceAll(report.ContentSub, urlReplace.OssUrlOrigin, urlReplace.OssUrlNew)
+			report.HeadImg = strings.ReplaceAll(report.HeadImg, urlReplace.OssUrlOrigin, urlReplace.OssUrlNew)
+			report.EndImg = strings.ReplaceAll(report.EndImg, urlReplace.OssUrlOrigin, urlReplace.OssUrlNew)
 		}
 		if urlReplace.ChartUrlOrigin != "" {
 			report.Content = strings.ReplaceAll(report.Content, urlReplace.ChartUrlOrigin, urlReplace.ChartUrlNew)
@@ -167,16 +170,32 @@ func (this *ReportShareController) Detail() {
 		return
 	}
 
+	var hasAuth bool
+	authToken := this.GetString("AuthToken")
+	if authToken != "" {
+		key := fmt.Sprint(utils.CACHE_REPORT_AUTH, authToken)
+		redisReportId, err := utils.Rc.GetUInt64(key)
+		if err == nil && int(redisReportId) == report.Id {
+			hasAuth = true
+		}
+	}
+
 	// 报告内图表授权
 	if v, ok := conf[models.BusinessConfIsOpenChartExpired]; ok {
 		if v == `true` {
-			tokenMap := make(map[string]string)
-			report.Content = services.HandleReportContent(report.Content, "add", tokenMap)
-			//report.ContentStruct = services.HandleReportContent(report.ContentStruct, "add", tokenMap)
+			resp.IsOpenChartExpired = true
 
-			for _, v := range reportChapters {
-				v.Content = services.HandleReportContent(v.Content, "add", tokenMap)
+			// 有权限才会添加token
+			if hasAuth {
+				tokenMap := make(map[string]string)
+				report.Content = services.HandleReportContent(report.Content, "add", tokenMap)
+				//report.ContentStruct = services.HandleReportContent(report.ContentStruct, "add", tokenMap)
+
+				for _, v := range reportChapters {
+					v.Content = services.HandleReportContent(v.Content, "add", tokenMap)
+				}
 			}
+
 		}
 	}
 

+ 26 - 0
controllers/smart_report.go

@@ -1,6 +1,7 @@
 package controllers
 
 import (
+	"encoding/json"
 	"eta/eta_report/models"
 	"eta/eta_report/utils"
 	"fmt"
@@ -29,6 +30,7 @@ func (this *SmartReportController) Detail() {
 		this.ServeJSON()
 	}()
 	reportCode := this.GetString("ReportCode")
+	isReplace, _ := this.GetInt("IsReplace", 0)
 	if reportCode == "" {
 		br.Msg = "获取失败"
 		br.ErrMsg = fmt.Sprintf("参数有误, ReportCode: %s", reportCode)
@@ -83,6 +85,15 @@ func (this *SmartReportController) Detail() {
 		br.ErrMsg = "获取免责声明失败, Err: " + e.Error()
 		return
 	}
+	// (为了兼容内网客户)需要判断是否替换资源地址
+	var urlReplace models.Report2ImgReplace
+	if isReplace == 1 && conf[models.BusinessConfReport2ImgReplace] != "" {
+		if e := json.Unmarshal([]byte(conf[models.BusinessConfReport2ImgReplace]), &urlReplace); e != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = fmt.Sprintf("获取报告替换配置失败, %v", e)
+			return
+		}
+	}
 	if conf[models.BusinessConfDisclaimer] != "" {
 		resp.Disclaimer = conf[models.BusinessConfDisclaimer]
 	}
@@ -94,6 +105,21 @@ func (this *SmartReportController) Detail() {
 		resp.H5ReportShareImg = v
 	}
 
+	// 替换地址
+	if urlReplace.IsReplace {
+		if urlReplace.OssUrlOrigin != "" {
+			resp.H5ReportShareImg = strings.ReplaceAll(resp.H5ReportShareImg, urlReplace.OssUrlOrigin, urlReplace.OssUrlNew)
+			resp.Report.Content = strings.ReplaceAll(resp.Report.Content, urlReplace.OssUrlOrigin, urlReplace.OssUrlNew)
+			resp.Report.ContentSub = strings.ReplaceAll(resp.Report.ContentSub, urlReplace.OssUrlOrigin, urlReplace.OssUrlNew)
+			resp.Report.HeadImg = strings.ReplaceAll(resp.Report.HeadImg, urlReplace.OssUrlOrigin, urlReplace.OssUrlNew)
+			resp.Report.EndImg = strings.ReplaceAll(resp.Report.EndImg, urlReplace.OssUrlOrigin, urlReplace.OssUrlNew)
+		}
+		if urlReplace.ChartUrlOrigin != "" {
+			resp.Report.Content = strings.ReplaceAll(resp.Report.Content, urlReplace.ChartUrlOrigin, urlReplace.ChartUrlNew)
+			resp.Report.ContentSub = strings.ReplaceAll(resp.Report.ContentSub, urlReplace.ChartUrlOrigin, urlReplace.ChartUrlNew)
+		}
+	}
+
 	// 更新pv
 	if e = models.UpdateSmartReportPv(item.SmartReportId); e != nil {
 		br.Msg = "获取失败"

+ 9 - 8
models/report.go

@@ -66,14 +66,15 @@ func GetReportByCode(reportCode string) (item *Report, err error) {
 }
 
 type ReportShareDetailResp struct {
-	Report           *ReportItem `description:"报告"`
-	Disclaimer       string      `description:"免责声明"`
-	H5ShareName      string      `description:"研报分享抬头"`
-	H5ReportShareImg string      `description:"研报分享图片"`
-	WatermarkChart   string      `description:"图表是否需要水印"`
-	WatermarkReport  string      `description:"报告是否需要水印"`
-	Hz               int
-	ReportLogo       string `description:"报告logo"`
+	Report             *ReportItem `description:"报告"`
+	Disclaimer         string      `description:"免责声明"`
+	H5ShareName        string      `description:"研报分享抬头"`
+	H5ReportShareImg   string      `description:"研报分享图片"`
+	WatermarkChart     string      `description:"图表是否需要水印"`
+	WatermarkReport    string      `description:"报告是否需要水印"`
+	Hz                 int
+	ReportLogo         string `description:"报告logo"`
+	IsOpenChartExpired bool   `description:"是否开启图表有效期鉴权/报告禁止复制"`
 }
 
 type ReportItem struct {

+ 4 - 0
utils/constants.go

@@ -70,3 +70,7 @@ const (
 	DbNameAI          = "eta_ai"
 	DbNameWeekly      = "weekly_report"
 )
+
+const (
+	CACHE_REPORT_AUTH = "eta:report:auth:" //报告图表数据授权
+)

+ 2 - 0
utils/redis.go

@@ -7,6 +7,8 @@ import (
 
 type RedisClient interface {
 	Get(key string) interface{}
+	GetStr(key string) string
+	GetUInt64(key string) (uint64, error)
 	RedisBytes(key string) (data []byte, err error)
 	RedisString(key string) (data string, err error)
 	RedisInt(key string) (data int, err error)

+ 19 - 0
utils/redis/cluster_redis.go

@@ -86,6 +86,25 @@ func (rc *ClusterRedisClient) Get(key string) interface{} {
 	return data
 }
 
+// GetStr
+// @Description: 根据key获取字符串数据
+// @receiver rc
+// @param key
+// @return string
+func (rc *ClusterRedisClient) GetStr(key string) string {
+	return rc.redisClient.Get(context.TODO(), key).Val()
+}
+
+// GetUInt64
+// @Description: 根据key获取uint64数据
+// @receiver rc
+// @param key
+// @return int
+// @return error
+func (rc *ClusterRedisClient) GetUInt64(key string) (uint64, error) {
+	return rc.redisClient.Get(context.TODO(), key).Uint64()
+}
+
 // RedisBytes
 // @Description: 根据key获取字节编码数据
 // @receiver rc

+ 19 - 0
utils/redis/standalone_redis.go

@@ -78,6 +78,25 @@ func (rc *StandaloneRedisClient) Get(key string) interface{} {
 	return data
 }
 
+// GetStr
+// @Description: 根据key获取字符串数据
+// @receiver rc
+// @param key
+// @return string
+func (rc *StandaloneRedisClient) GetStr(key string) string {
+	return rc.redisClient.Get(context.TODO(), key).Val()
+}
+
+// GetUInt64
+// @Description: 根据key获取uint64数据
+// @receiver rc
+// @param key
+// @return int
+// @return error
+func (rc *StandaloneRedisClient) GetUInt64(key string) (uint64, error) {
+	return rc.redisClient.Get(context.TODO(), key).Uint64()
+}
+
 // RedisBytes
 // @Description: 根据key获取字节编码数据
 // @receiver rc