Pārlūkot izejas kodu

Merge branch 'master' into feature/v4.10.18

yuelujie 1 nedēļu atpakaļ
vecāks
revīzija
3ed5558ba7
1 mainītis faili ar 20 papildinājumiem un 0 dzēšanām
  1. 20 0
      src/jfw/front/material.go

+ 20 - 0
src/jfw/front/material.go

@@ -16,6 +16,7 @@ import (
 	"jy/src/jfw/config"
 	"log"
 	"net/http"
+	"net/url"
 	"sync"
 	"time"
 )
@@ -71,13 +72,32 @@ func (m *Material) LinkTransfer(mid, personChannel string) error {
 	addLog(sess, m.Request, mlid, types, personChannel, realUrl)
 
 	if types == 1 && imgWebpage != "" {
+		if hasParameters(imgWebpage) { //链接带参
+			imgWebpage = fmt.Sprintf("%s&material_id=%d&pcode=%s&types=%d&tp=material", imgWebpage, mlid, personChannel, types)
+		} else {
+			imgWebpage = fmt.Sprintf("%s?material_id=%d&pcode=%s&types=%d&tp=material", imgWebpage, mlid, personChannel, types)
+		}
 		return m.Redirect(imgWebpage)
 	} else if types == 0 && realUrl != "" {
+		if hasParameters(realUrl) { //链接带参
+			realUrl = fmt.Sprintf("%s&material_id=%d&pcode=%s&types=%d&tp=material", realUrl, mlid, personChannel, types)
+		} else {
+			realUrl = fmt.Sprintf("%s?material_id=%d&pcode=%s&types=%d&tp=material", realUrl, mlid, personChannel, types)
+		}
 		return m.Redirect(realUrl)
 	}
 	return m.Redirect(util.InterfaceToStr(config.Sysconfig["webdomain"]))
 }
 
+func hasParameters(rawURL string) bool {
+	u, err := url.Parse(rawURL)
+	if err != nil {
+		fmt.Printf("解析错误: %v\n", err)
+		return false
+	}
+	return u.RawQuery != "" // 关键判断
+}
+
 func ImageToBase64(img image.Image, format string) (string, error) {
 	var buf bytes.Buffer
 	switch format {