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

兼容申万系统缩略图

kobe6258 1 день тому
батько
коміт
9bb05ffa68

+ 41 - 28
controllers/data_manage/chart_info.go

@@ -20,6 +20,7 @@ import (
 	"fmt"
 	"os"
 	"os/exec"
+	"regexp"
 	"sort"
 	"strconv"
 	"strings"
@@ -876,18 +877,18 @@ func (this *ChartInfoController) ChartInfoMove() {
 		go data.EsAddOrEditChartInfo(chartInfo.ChartInfoId)
 
 		// 判断是否为精选目录
-			// 如果该目录不是精选目录,且该图表已经上架,则需撤回该图表
-			if oldClassifyId != req.ChartClassifyId {
-				parentChartClassifyInfo, err := data_manage.GetChartClassifyById(req.ChartClassifyId)
-				if err != nil {
-					br.Msg = "移动失败"
-					br.ErrMsg = "获取上级分类信息失败,Err:" + err.Error()
-					return
-				}
-				if parentChartClassifyInfo.IsSelected == 0 && chartInfo.ForumChartInfoId > 0 {
-					go eta_forum.DeleteChart(chartInfo.ChartInfoId)
-				}
+		// 如果该目录不是精选目录,且该图表已经上架,则需撤回该图表
+		if oldClassifyId != req.ChartClassifyId {
+			parentChartClassifyInfo, err := data_manage.GetChartClassifyById(req.ChartClassifyId)
+			if err != nil {
+				br.Msg = "移动失败"
+				br.ErrMsg = "获取上级分类信息失败,Err:" + err.Error()
+				return
+			}
+			if parentChartClassifyInfo.IsSelected == 0 && chartInfo.ForumChartInfoId > 0 {
+				go eta_forum.DeleteChart(chartInfo.ChartInfoId)
 			}
+		}
 	}
 
 	if err != nil {
@@ -1833,7 +1834,7 @@ func (this *ChartInfoController) ChartInfoDetailV2() {
 	}
 
 	// 图表当前分类的分类树
-	
+
 	classifyLevels := make([]string, 0)
 	{
 		list, e := data_manage.GetChartClassifyAllBySource(utils.CHART_SOURCE_DEFAULT)
@@ -4474,7 +4475,7 @@ func (this *ChartInfoController) UpdateToForum() {
 
 	// 更新指标数据
 	utils.Rc.LPush(utils.CACHE_KEY_EDB_DATA_UPDATE_LOG, []byte("1"))
-	
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "保存成功"
@@ -4650,6 +4651,19 @@ func (this *ChartInfoController) ChartInfoImgSetBySvg() {
 		br.ErrMsg = "图片参数错误,Img Is Empty"
 		return
 	}
+	NotBackendGenerate, _ := this.GetBool("BackendGenerate", false)
+	if NotBackendGenerate {
+		b, _ := regexp.MatchString(`^data:\s*image\/(\w+);base64,`, imgData)
+		if !b {
+			br.Msg = "图片格式不正确"
+			br.ErrMsg = "图片格式不正确"
+			return
+		}
+		re, _ := regexp.Compile(`^data:\s*image\/(\w+);base64,`)
+		base64Str := re.ReplaceAllString(imgData, "")
+		base64Str = strings.Replace(base64Str, " ", "", -1)
+		imgData = base64Str
+	}
 	chartInfoId, _ := this.GetInt("ChartInfoId", 0)
 	if chartInfoId <= 0 {
 		br.Msg = "图片参数错误"
@@ -4659,7 +4673,7 @@ func (this *ChartInfoController) ChartInfoImgSetBySvg() {
 	resp := new(models.ResourceResp)
 
 	// 通过svg图片生成图片资源地址
-	resourceUrl, err, errMsg := services.GetResourceUrlBySvgImg(imgData)
+	resourceUrl, err, errMsg := services.GetResourceUrlBySvgImg(imgData, NotBackendGenerate)
 	if err != nil {
 		br.Msg = errMsg
 		br.ErrMsg = err.Error()
@@ -5141,7 +5155,7 @@ func (this *ChartInfoController) ModifyChartList() {
 		br.ErrMsg = "更新图表分类失败,Err:" + err.Error()
 		return
 	}
-	
+
 	go eta_forum.ChartInfoDeleteBatchByChartInfoIds(chartIds, req.ChartClassifyId)
 
 	br.Ret = 200
@@ -5186,12 +5200,12 @@ func (this *ChartInfoController) GetChartDescriptionList() {
 	response := new(data_manage.ChartDescriptionListResponse)
 	for _, v := range chartDescriptionList {
 		list = append(list, &data_manage.ChartDescriptionList{
-			Id:               v.Id,
-			Description:      v.Description,
-			ChartInfoId:      v.ChartInfoId,
-			SysUserId:        v.SysUserId,
-			SysUserRealName:  v.SysUserRealName,
-			CreateTime:       v.CreateTime.Format(utils.FormatDateTime),
+			Id:              v.Id,
+			Description:     v.Description,
+			ChartInfoId:     v.ChartInfoId,
+			SysUserId:       v.SysUserId,
+			SysUserRealName: v.SysUserRealName,
+			CreateTime:      v.CreateTime.Format(utils.FormatDateTime),
 		})
 	}
 	response.List = list
@@ -5220,7 +5234,7 @@ func (this *ChartInfoController) AddChartDescription() {
 		br.ErrMsg = "请登录,SysUser Is Empty"
 		br.Ret = 408
 		return
-	}	
+	}
 
 	var req data_manage.ChartDescriptionAddReq
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
@@ -5249,12 +5263,12 @@ func (this *ChartInfoController) AddChartDescription() {
 		return
 	}
 	item := &data_manage.ChartDescription{
-		ChartInfoId: req.ChartInfoId,
-		Description: req.Description,
-		SysUserId: sysUser.AdminId,
+		ChartInfoId:     req.ChartInfoId,
+		Description:     req.Description,
+		SysUserId:       sysUser.AdminId,
 		SysUserRealName: sysUser.RealName,
-		ModifyTime: time.Now(),
-		CreateTime: time.Now(),
+		ModifyTime:      time.Now(),
+		CreateTime:      time.Now(),
 	}
 	err = data_manage.AddChartDescription(item)
 	if err != nil {
@@ -5267,4 +5281,3 @@ func (this *ChartInfoController) AddChartDescription() {
 	br.Success = true
 	br.Msg = "添加成功"
 }
-

+ 15 - 1
controllers/data_manage/future_good/future_good_chart_info.go

@@ -18,6 +18,7 @@ import (
 	"fmt"
 	"os"
 	"os/exec"
+	"regexp"
 	"sort"
 	"strconv"
 	"strings"
@@ -3570,6 +3571,19 @@ func (this *FutureGoodChartInfoController) ChartInfoImgSetBySvg() {
 		br.ErrMsg = "图片参数错误,Img Is Empty"
 		return
 	}
+	NotBackendGenerate, _ := this.GetBool("BackendGenerate", false)
+	if NotBackendGenerate {
+		b, _ := regexp.MatchString(`^data:\s*image\/(\w+);base64,`, imgData)
+		if !b {
+			br.Msg = "图片格式不正确"
+			br.ErrMsg = "图片格式不正确"
+			return
+		}
+		re, _ := regexp.Compile(`^data:\s*image\/(\w+);base64,`)
+		base64Str := re.ReplaceAllString(imgData, "")
+		base64Str = strings.Replace(base64Str, " ", "", -1)
+		imgData = base64Str
+	}
 	chartInfoId, _ := this.GetInt("ChartInfoId", 0)
 	if chartInfoId <= 0 {
 		br.Msg = "图片参数错误"
@@ -3579,7 +3593,7 @@ func (this *FutureGoodChartInfoController) ChartInfoImgSetBySvg() {
 	resp := new(models.ResourceResp)
 
 	// 通过svg图片生成图片资源地址
-	resourceUrl, err, errMsg := services.GetResourceUrlBySvgImg(imgData)
+	resourceUrl, err, errMsg := services.GetResourceUrlBySvgImg(imgData,NotBackendGenerate)
 	if err != nil {
 		br.Msg = errMsg
 		br.ErrMsg = err.Error()

+ 16 - 1
controllers/data_manage/predict_edb_info.go

@@ -13,6 +13,7 @@ import (
 	"eta/eta_api/services/elastic"
 	"eta/eta_api/utils"
 	"fmt"
+	"regexp"
 	"sort"
 	"strconv"
 	"strings"
@@ -2183,6 +2184,20 @@ func (this *PredictEdbInfoController) ChartImageSetBySvg() {
 		br.ErrMsg = "图片参数错误,Img Is Empty"
 		return
 	}
+	NotBackendGenerate, _ := this.GetBool("BackendGenerate", false)
+	if NotBackendGenerate {
+		b, _ := regexp.MatchString(`^data:\s*image\/(\w+);base64,`, imgData)
+		if !b {
+			br.Msg = "图片格式不正确"
+			br.ErrMsg = "图片格式不正确"
+			return
+		}
+		re, _ := regexp.Compile(`^data:\s*image\/(\w+);base64,`)
+		base64Str := re.ReplaceAllString(imgData, "")
+		base64Str = strings.Replace(base64Str, " ", "", -1)
+		imgData = base64Str
+	}
+
 	edbInfoId, _ := this.GetInt("EdbInfoId", 0)
 	if edbInfoId <= 0 {
 		br.Msg = "指标参数错误"
@@ -2191,7 +2206,7 @@ func (this *PredictEdbInfoController) ChartImageSetBySvg() {
 	}
 
 	// 通过svg图片生成图片资源地址
-	resourceUrl, err, errMsg := services.GetResourceUrlBySvgImg(imgData)
+	resourceUrl, err, errMsg := services.GetResourceUrlBySvgImg(imgData,NotBackendGenerate)
 	if err != nil {
 		br.Msg = errMsg
 		br.ErrMsg = err.Error()

+ 2 - 8
services/file.go

@@ -108,7 +108,7 @@ func saveToFileByHeader(fileHeader *multipart.FileHeader, tofile string) error {
 // @return resourceUrl string
 // @return err error
 // @return errMsg string
-func GetResourceUrlBySvgImg(imgData string, backendGenerate ...bool) (resourceUrl string, err error, errMsg string) {
+func GetResourceUrlBySvgImg(imgData string, backendGenerate bool) (resourceUrl string, err error, errMsg string) {
 	errMsg = "图表保存失败"
 	uploadDir := "static/images/"
 	if !utils.FileIsExist(uploadDir) {
@@ -119,15 +119,11 @@ func GetResourceUrlBySvgImg(imgData string, backendGenerate ...bool) (resourceUr
 		}
 	}
 	var fileName, outFileName string
-	var NotGenerate bool
 	uploadDir = "static/images/"
 	randStr := utils.GetRandStringNoSpecialChar(28)
 	outFileName = randStr + ".png"
-	if len(backendGenerate) > 0 {
-		NotGenerate = backendGenerate[0]
-	}
 
-	if NotGenerate {
+	if backendGenerate {
 		err = utils.SaveBase64ToFile(imgData, outFileName)
 		if err != nil {
 			err = errors.New("图片保存失败,Err:" + err.Error())
@@ -151,7 +147,6 @@ func GetResourceUrlBySvgImg(imgData string, backendGenerate ...bool) (resourceUr
 			}
 		}()
 
-
 		doneChannel := make(chan bool, 1)
 		errorChannel := make(chan error, 1)
 
@@ -167,7 +162,6 @@ func GetResourceUrlBySvgImg(imgData string, backendGenerate ...bool) (resourceUr
 			doneChannel <- true
 		}()
 
-
 		select {
 		case <-time.After(30 * time.Second):
 			utils.FileLog.Info("执行超过30秒 杀死超时进程")