Browse Source

fix: 短链生成

hsun 1 week ago
parent
commit
233132d48b
3 changed files with 15 additions and 8 deletions
  1. 7 2
      controllers/report.go
  2. 0 1
      models/report.go
  3. 8 5
      services/report_v2.go

+ 7 - 2
controllers/report.go

@@ -2007,9 +2007,10 @@ func (this *ReportController) ShareGenerate() {
 		br.ErrMsg = "参数解析失败, Err: " + e.Error()
 		return
 	}
+	var title string
 	reportItem, _ := models.GetReportByReportId(req.ReportId)
 	if reportItem != nil && reportItem.Title != "" {
-		req.Title = reportItem.Title
+		title = reportItem.Title
 	}
 
 	link, err := services.GetReportShareUrlToken(req, this.SysUser.AdminId)
@@ -2020,7 +2021,7 @@ func (this *ReportController) ShareGenerate() {
 	}
 
 	resp := new(models.ReportShartUrlResp)
-	resp.UrlToken = link
+	resp.UrlToken = fmt.Sprint(link, " ", title)
 
 	br.Ret = 200
 	br.Success = true
@@ -2042,6 +2043,10 @@ func (this *ReportCommonController) ShareTransform() {
 	}()
 
 	token := this.GetString("Token")
+	tokenArr := strings.Split(token, " ")
+	if len(tokenArr) > 0 {
+		token = tokenArr[0]
+	}
 
 	link, msg, err := services.TransfromToOriginUrl(token)
 	if err != nil {

+ 0 - 1
models/report.go

@@ -1846,7 +1846,6 @@ b.classify_id_first = c.classify_id
 type ReportShartUrlReq struct {
 	Url      string `description:"分享链接"`
 	ReportId int    `description:"报告ID"`
-	Title    string `description:"报告标题"`
 }
 
 type ReportShartUrlResp struct {

+ 8 - 5
services/report_v2.go

@@ -1442,9 +1442,11 @@ func GetGeneralPdfUrl(reportCode string, reportLayout int8) (pdfUrl string) {
 func GetReportShareUrlToken(req models.ReportShartUrlReq, adminId int) (linkToken string, err error) {
 	cacheLinkKey := utils.CACHE_REPORT_SHARE_SHORT_Url + strconv.Itoa(req.ReportId) + "userId:" + strconv.Itoa(adminId)
 	linkToken, _ = utils.Rc.RedisString(cacheLinkKey)
-	if linkToken != "" && utils.Rc.IsExist(utils.CACHE_REPORT_SHARE_ORIGIN_Url+linkToken) {
+	if linkToken != "" && utils.Rc.IsExist(fmt.Sprint(utils.CACHE_REPORT_SHARE_ORIGIN_Url, utils.MD5(linkToken))) {
 		return
 	}
+	var tokenKey string
+
 	var ok bool
 	// 冲突检测
 	for i := 0; i < 3; i++ {
@@ -1455,9 +1457,10 @@ func GetReportShareUrlToken(req models.ReportShartUrlReq, adminId int) (linkToke
 		hashUrl := utils.MurmurHash64([]byte(linkToken))
 		linkToken = utils.ConvertNumToBase62(hashUrl)
 		// 拼上报告标题
-		linkToken = fmt.Sprintf("%s %s", linkToken, req.Title)
+		//linkToken = fmt.Sprintf("%s %s", linkToken, req.Title)
 
-		ok = utils.Rc.IsExist(utils.CACHE_REPORT_SHARE_ORIGIN_Url + linkToken)
+		tokenKey = fmt.Sprint(utils.CACHE_REPORT_SHARE_ORIGIN_Url, utils.MD5(linkToken))
+		ok = utils.Rc.IsExist(tokenKey)
 		if !ok {
 			break
 		}
@@ -1468,7 +1471,7 @@ func GetReportShareUrlToken(req models.ReportShartUrlReq, adminId int) (linkToke
 		if err != nil {
 			return
 		}
-		err = utils.Rc.Put(utils.CACHE_REPORT_SHARE_ORIGIN_Url+linkToken, req.Url, time.Until(after))
+		err = utils.Rc.Put(tokenKey, req.Url, time.Until(after))
 		if err != nil {
 			return
 		}
@@ -1480,7 +1483,7 @@ func GetReportShareUrlToken(req models.ReportShartUrlReq, adminId int) (linkToke
 }
 
 func TransfromToOriginUrl(linkToken string) (originLink string, msg string, err error) {
-	cacheLinkKey := utils.CACHE_REPORT_SHARE_ORIGIN_Url + linkToken
+	cacheLinkKey := fmt.Sprint(utils.CACHE_REPORT_SHARE_ORIGIN_Url, utils.MD5(linkToken))
 	originLink, err = utils.Rc.RedisString(cacheLinkKey)
 	if err != nil {
 		if err == redis.Nil {