فهرست منبع

fix:企业画像pc退出302seo处理

duxin 1 سال پیش
والد
کامیت
fd3b901196
2فایلهای تغییر یافته به همراه58 افزوده شده و 14 حذف شده
  1. 20 14
      src/jfw/filter/pcfilter.go
  2. 38 0
      src/jfw/front/frontRouter.go

+ 20 - 14
src/jfw/filter/pcfilter.go

@@ -1,10 +1,13 @@
 package filter
 
 import (
+	"app.yhyue.com/moapp/jybase/encrypt"
 	"fmt"
 	"jy/src/jfw/config"
 	"jy/src/jfw/jyutil"
+	"log"
 	"net/http"
+	"net/url"
 	"strings"
 	"time"
 
@@ -37,11 +40,6 @@ func (this *pcFilter) Do() bool {
 		//wx
 		return true
 	}
-	//画像页面未登录跳转seo
-	if seoUrl := PortraitSkip(this.R.RequestURI, util.InterfaceToStr(this.GetSession["userid"])); seoUrl != "" {
-		http.Redirect(this.W, this.R, seoUrl, 302)
-		return false
-	}
 	//企业搜索
 	if strings.Contains(this.R.RequestURI, "/jylab/entSearch/index.html") ||
 		strings.Contains(this.R.RequestURI, "/swordfish/page_big_pc/ent_portrait/") ||
@@ -86,25 +84,33 @@ func (this *pcFilter) Do() bool {
 }
 
 // 画像页面未登录用户跳转302
-func PortraitSkip(url, userid string) string {
+func PortraitSkip(urls, userid string) string {
 	var seoUrl string
 	if userid == "" {
+		log.Println("未登录用户", urls)
 		var sql string
-		if strings.Contains(url, "/swordfish/page_big_pc/unit_portrayal/") ||
-			strings.Contains(url, "/entpc/unit_portrayal/") {
-			urlArr := strings.Split(url, "/")
+		if strings.Contains(urls, "swordfish/page_big_pc/unit_portrayal/") ||
+			strings.Contains(urls, "entpc/unit_portrayal/") {
+			urlArr := strings.Split(urls, "/")
 			//buyerName := urlArr[len(urlArr)-1]
-			sql = fmt.Sprintf("SELECT  seo_id  FROM   dws_f_ent_baseinfo WHERE     name =='%s'  AND (identity_type &(1 << 0)) > 0", urlArr[len(urlArr)-1])
+			// 解码 URL 编码的字符串
+			decodedString, _ := url.QueryUnescape(urlArr[len(urlArr)-1])
+			sql = fmt.Sprintf("SELECT  seo_id  FROM   dws_f_ent_baseinfo WHERE     name ='%s'  AND (identity_type &(1 << 0)) > 0", decodedString)
+			log.Println("未登录用户采购单位", sql)
 			data := public.GlobalCommonMysql.SelectBySql(sql)
 			if data != nil && len(*data) > 0 {
+				log.Println("未登录用户采购单位", *data)
 				seoUrl = fmt.Sprintf("/dw/%s.html", util.InterfaceToStr((*data)[0]["seo_id"]))
 			}
-		} else if strings.Contains(url, "swordfish/page_big_pc/svip/ent_ser_portrait/") ||
-			strings.Contains(url, "/swordfish/page_big_pc/ent_portrait/") {
-			urlArr := strings.Split(url, "/")
-			sql = fmt.Sprintf("SELECT  seo_id  FROM   dws_f_ent_baseinfo WHERE     name_id =='%s'  AND (identity_type &(1 << 1)) > 0", urlArr[len(urlArr)-1])
+		} else if strings.Contains(urls, "swordfish/page_big_pc/svip/ent_ser_portrait/") ||
+			strings.Contains(urls, "/swordfish/page_big_pc/ent_portrait/") {
+			urlArr := strings.Split(urls, "/")
+			entId := encrypt.DecodeArticleId2ByCheck(urlArr[len(urlArr)-1])[0]
+			sql = fmt.Sprintf("SELECT  seo_id  FROM   dws_f_ent_baseinfo WHERE     name_id ='%s'  AND (identity_type &(1 << 1)) > 0", entId)
+			log.Println("未登录用户企业单位", sql)
 			data := public.GlobalCommonMysql.SelectBySql(sql)
 			if data != nil && len(*data) > 0 {
+				log.Println("未登录用户企业单位", *data)
 				seoUrl = fmt.Sprintf("/qy/%s.html", util.InterfaceToStr((*data)[0]["seo_id"]))
 			}
 		}

+ 38 - 0
src/jfw/front/frontRouter.go

@@ -1,6 +1,9 @@
 package front
 
 import (
+	"app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/encrypt"
+	elastic "app.yhyue.com/moapp/jybase/esv1"
 	"app.yhyue.com/moapp/jypkg/public"
 	"fmt"
 	"jy/src/jfw/config"
@@ -217,9 +220,44 @@ func (this *CommonRouter) doPcBigPage(pageSign, types string) error {
 	if !strings.Contains(pageSign, "unit_portrayal") && !strings.Contains(pageSign, "ent_portrait") && !strings.Contains(pageSign, "ent_ser_portrait") && userid == "" {
 		return this.Redirect("/notin/page")
 	}
+	if userid == "" {
+		if strings.Contains(pageSign, "ent_ser_portrait") || strings.Contains(pageSign, "ent_portrait") {
+			urlArr := strings.Split(pageSign, "/")
+			entId := encrypt.DecodeArticleId2ByCheck(urlArr[len(urlArr)-1])[0]
+			if seoId := esSeoId(true, entId); seoId != "" {
+				return this.Redirect(fmt.Sprintf("/qy/%s.html", seoId))
+			}
+		} else if strings.Contains(pageSign, "unit_portrayal") {
+			urlArr := strings.Split(pageSign, "/")
+			//buyerName := urlArr[len(urlArr)-1]
+			// 解码 URL 编码的字符串
+			buyer, _ := url.QueryUnescape(urlArr[len(urlArr)-1])
+			//buyer := this.GetString("buyer")
+			if seoId := esSeoId(false, buyer); seoId != "" {
+				return this.Redirect(fmt.Sprintf("/dw/%s.html", seoId))
+			}
+		}
+	}
 	return this.Render(fmt.Sprintf("/frontRouter/pc/page_big_pc/sess/index.html"))
 }
 
+func esSeoId(isWinner bool, idName string) string {
+	var seoId string
+	if isWinner {
+		winnerSeo := elastic.GetById("qyxy", "qyxy", idName)
+		if winnerSeo != nil && len(*winnerSeo) > 0 {
+			seoId = common.InterfaceToStr((*winnerSeo)[0]["seo_id"])
+		}
+	} else {
+		q := `{"query": {"bool": {"must": [{"match": {"buyer_name": "嘉善县国有资产投资有限公司"}}]}},"from": 0,"size": 1,"_source":["seo_id"]}`
+		winnerSeo := elastic.Get("buyer", "buyer", q)
+		if winnerSeo != nil && len(*winnerSeo) > 0 {
+			seoId = common.InterfaceToStr((*winnerSeo)[0]["seo_id"])
+		}
+	}
+	return seoId
+}
+
 // 卡卷
 func (this *CommonRouter) CouponIndex() error {
 	return this.doCouponPage()