Browse Source

报告转图兼容内网客户

hsun 4 months ago
parent
commit
7a78f99e17
3 changed files with 37 additions and 6 deletions
  1. 35 5
      controllers/chart.go
  2. 1 1
      controllers/report_share.go
  3. 1 0
      services/chart.go

+ 35 - 5
controllers/chart.go

@@ -8,6 +8,7 @@ import (
 	"fmt"
 	"io/ioutil"
 	"net/http"
+	"strings"
 )
 
 // ChartController 图表详情
@@ -15,13 +16,12 @@ type ChartController struct {
 	BaseAuthController
 }
 
-
-// ExcelDetail
+// ChartDetail
 // @Title 表格详情
 // @Description 表格详情
 // @Success 200 {object} models.EnglishReportShareDetailResp
 // @router /detail [post]
-func (this *ChartController) ChartDetail()  {
+func (this *ChartController) ChartDetail() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		if br.ErrMsg == "" {
@@ -43,7 +43,7 @@ func (this *ChartController) ChartDetail()  {
 		br.ErrMsg = "参数不能为空!"
 		return
 	}
-	url := utils.ChartLibUrl+`/chart/common/detail?UniqueCode=%s`
+	url := utils.ChartLibUrl + `/chart/common/detail?UniqueCode=%s`
 	url = fmt.Sprintf(url, req.UniqueCode)
 
 	resp, e := http.Get(url)
@@ -77,9 +77,39 @@ func (this *ChartController) ChartDetail()  {
 		br.ErrMsg = err.Error()
 		return
 	}
+
+	// (为了兼容内网客户)需要判断是否替换资源地址
+	var urlReplace models.Report2ImgReplace
+	if req.IsReplace == 1 {
+		conf, e := models.GetBusinessConf()
+		if e != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取免责声明失败, Err: " + e.Error()
+			return
+		}
+		if conf[models.BusinessConfReport2ImgReplace] != "" {
+			if e := json.Unmarshal([]byte(conf[models.BusinessConfReport2ImgReplace]), &urlReplace); e != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = fmt.Sprintf("获取报告替换配置失败, %v", e)
+				return
+			}
+		}
+		if urlReplace.IsReplace && urlReplace.OssUrlOrigin != "" {
+			// 替换水印图片地址
+			replaceFunc := func(data interface{}, originUrl, newUrl string) {
+				if dataMap, ok := data.(map[string]interface{}); ok {
+					if waterMark, ok := dataMap["WaterMark"].(string); ok {
+						newWaterMark := strings.ReplaceAll(waterMark, originUrl, newUrl)
+						dataMap["WaterMark"] = newWaterMark
+					}
+				}
+			}
+			replaceFunc(result.Data, urlReplace.OssUrlOrigin, urlReplace.OssUrlNew)
+		}
+	}
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"
 	br.Data = result.Data
-	return
 }

+ 1 - 1
controllers/report_share.go

@@ -74,7 +74,7 @@ func (this *ReportShareController) 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 {

+ 1 - 0
services/chart.go

@@ -2,4 +2,5 @@ package services
 
 type ChartDetailReq struct {
 	UniqueCode string //"图表唯一编码,如果是管理后台访问,传固定字符串:7c69b590249049942070ae9dcd5bf6dc"
+	IsReplace  int    // 是否报告转长图的场景:1-是(为了兼容内网客户,需要判断配置中是否要替换地址)
 }