Parcourir la source

feat:需求提交

wangkaiyue il y a 1 an
Parent
commit
8f148f3bb1

+ 2 - 3
internal/controller/area.go

@@ -7,7 +7,6 @@ import (
 	"github.com/gogf/gf/v2/util/gconv"
 	"jyseo/internal/consts"
 	"jyseo/internal/service"
-	"jyseo/utility"
 )
 
 // AreaIndexHandler 地区站首页
@@ -29,7 +28,7 @@ func AreaIndexHandler(r *ghttp.Request) {
 		winnerList = service.JySeoEnterprises.GetEntList(r.Context(), "", node.Name, true)
 		buyerList = service.JySeoEnterprises.GetEntList(r.Context(), "", node.Name, false)
 	}
-	service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "area_index.html"),
+	service.HtmlRender.Render(r, "area_index.html",
 		g.Map{
 			"areaType":   areaType,
 			"areaNode":   node,
@@ -74,7 +73,7 @@ func AreaPageHandler(r *ghttp.Request) {
 		}
 	}
 
-	service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "area_list.html"),
+	service.HtmlRender.Render(r, "area_list.html",
 		g.Map{
 			"areaType":   areaType,
 			"areaNode":   areaNode,

+ 4 - 4
internal/controller/enterprise.go

@@ -34,7 +34,7 @@ func EnterpriseList(r *ghttp.Request) {
 		service.HtmlRender.RenderError(r, fmt.Errorf("获取列表数据异常"))
 		return
 	}
-	service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "enterprise_list.html"),
+	service.HtmlRender.Render(r, "enterprise_list.html",
 		g.Map{
 			"flag": flag,
 			"list": res.List,
@@ -83,7 +83,7 @@ func EnterpriseDetail(r *ghttp.Request) {
 		rData["otherEnt"] = service.JySeoEnterprises.RelevanceData(r.Context(), gconv.String(baseInfo["entId"]), true)            //关联采购单位
 		rData["recommendedEnt"] = service.JySeoEnterprises.RecommendedData(r.Context(), gconv.String(baseInfo["area"]), "", true) //其他企业推荐
 	}
-	service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "enterprise_detail.html"), rData)
+	service.HtmlRender.Render(r, "enterprise_detail.html", rData)
 }
 
 func LoginIntercept(r *ghttp.Request, seoId string, status int) {
@@ -132,9 +132,9 @@ func LoginIntercept(r *ghttp.Request, seoId string, status int) {
 
 		//pc端登录前后url一致
 		if status == 0 {
-			service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "enterprise_detail_login_buyer.html"), baseInfo)
+			service.HtmlRender.Render(r, "enterprise_detail_login_buyer.html", baseInfo)
 		} else {
-			service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "enterprise_detail_login_winner.html"), baseInfo)
+			service.HtmlRender.Render(r, "enterprise_detail_login_winner.html", baseInfo)
 		}
 	}
 }

+ 1 - 2
internal/controller/index.go

@@ -5,11 +5,10 @@ import (
 	"github.com/gogf/gf/v2/frame/g"
 	"github.com/gogf/gf/v2/net/ghttp"
 	"jyseo/internal/service"
-	"jyseo/utility"
 )
 
 func IndexHandler(r *ghttp.Request) {
-	service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "index.html"),
+	service.HtmlRender.Render(r, "index.html",
 		g.Map{
 			"isIndex":       true,
 			"tdk":           service.JySeoTdk.GetIndexTdk(r.Context()),

+ 2 - 3
internal/controller/keyWordClass.go

@@ -7,11 +7,10 @@ import (
 	"github.com/gogf/gf/v2/util/gconv"
 	"jyseo/internal/consts"
 	"jyseo/internal/service"
-	"jyseo/utility"
 )
 
 func IndustryIndexHandler(r *ghttp.Request) {
-	service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "industry_index.html"),
+	service.HtmlRender.Render(r, "industry_index.html",
 		g.Map{
 			"industryList": service.JySeoIndustryRoot.GetIndustry(),
 			"tdk":          service.JySeoTdk.GetIndustryTdk(r.Context(), ""),
@@ -48,7 +47,7 @@ func IndustryListHandler(r *ghttp.Request) {
 		return
 	}
 
-	service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "industry_list.html"),
+	service.HtmlRender.Render(r, "industry_list.html",
 		g.Map{
 			"tdk":          service.JySeoTdk.GetIndustryTdk(r.Context(), keyWordStruct.KeyWord),
 			"keywordsNode": keyWordStruct,

+ 2 - 3
internal/controller/keywordLetter.go

@@ -6,7 +6,6 @@ import (
 	"github.com/gogf/gf/v2/net/ghttp"
 	"jyseo/internal/consts"
 	"jyseo/internal/service"
-	"jyseo/utility"
 )
 
 // LetterIndexHandler 字母聚合页
@@ -20,7 +19,7 @@ func LetterIndexHandler(r *ghttp.Request) {
 		return
 	}
 
-	service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "keywordLetter_index.html"),
+	service.HtmlRender.Render(r, "keywordLetter_index.html",
 		g.Map{
 			"list":       rData,
 			"letterCode": letterCode,
@@ -57,7 +56,7 @@ func LetterListHandler(r *ghttp.Request) {
 		service.HtmlRender.RenderError(r, fmt.Errorf("获取列表数据异常"))
 		return
 	}
-	service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "keywordLetter_list.html"),
+	service.HtmlRender.Render(r, "keywordLetter_list.html",
 		g.Map{
 			"letterKeywordNode": letterKeyword,
 			"list":              rData,

+ 6 - 6
internal/controller/keywordPinyin.go

@@ -6,14 +6,14 @@ import (
 	"github.com/gogf/gf/v2/net/ghttp"
 	"jyseo/internal/consts"
 	"jyseo/internal/service"
-	"jyseo/utility"
 )
 
 func PinyinIndexHandler(r *ghttp.Request) {
-	service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "keywordPinyin_index.html"), g.Map{
-		"nodeList": service.JySeoKeyWordPinyinRoot.GetPinyinNodeByIndustry(),
-		"showSort": service.JySeoKeyWordPinyinRoot.GetPinyinIndustryShowSort(),
-	})
+	service.HtmlRender.Render(r, "keywordPinyin_index.html",
+		g.Map{
+			"nodeList": service.JySeoKeyWordPinyinRoot.GetPinyinNodeByIndustry(),
+			"showSort": service.JySeoKeyWordPinyinRoot.GetPinyinIndustryShowSort(),
+		})
 }
 
 // PinyinHandler 行业拼音关键词列表页面
@@ -35,7 +35,7 @@ func PinyinHandler(r *ghttp.Request) {
 		return
 	}
 
-	service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "keywordPinyin_list.html"),
+	service.HtmlRender.Render(r, "keywordPinyin_list.html",
 		g.Map{
 			"list":       rData,
 			"pinyinNode": pinyinNode,

+ 3 - 6
internal/controller/keywordSite.go

@@ -6,19 +6,16 @@ import (
 	"github.com/gogf/gf/v2/net/ghttp"
 	"jyseo/internal/consts"
 	"jyseo/internal/service"
-	"jyseo/utility"
 )
 
 // SiteAreaIndexHandler 省份汇总页
 func SiteAreaIndexHandler(r *ghttp.Request) {
-	service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "keywordSiteArea_index.html"),
-		g.Map{})
+	service.HtmlRender.Render(r, "keywordSiteArea_index.html", g.Map{})
 }
 
 // SiteCityIndexHandler 城市汇总页
 func SiteCityIndexHandler(r *ghttp.Request) {
-	service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "keywordSiteCity_index.html"),
-		g.Map{})
+	service.HtmlRender.Render(r, "keywordSiteCity_index.html", g.Map{})
 }
 
 // SiteHandler 地区站首页
@@ -48,7 +45,7 @@ func SiteHandler(r *ghttp.Request) {
 		return
 	}
 	siteName := siteNode.GetKShowName(areaNode)
-	service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "keywordSite_list.html"),
+	service.HtmlRender.Render(r, "keywordSite_list.html",
 		g.Map{
 			"list":     rData,
 			"siteNode": siteNode,

+ 1 - 2
internal/controller/sign.go

@@ -7,7 +7,6 @@ import (
 	"github.com/gogf/gf/v2/util/gconv"
 	"jyseo/internal/consts"
 	"jyseo/internal/service"
-	"jyseo/utility"
 )
 
 func SignPageHandler(r *ghttp.Request) {
@@ -27,7 +26,7 @@ func SignPageHandler(r *ghttp.Request) {
 		return
 	}
 
-	service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "project_sign_list.html"),
+	service.HtmlRender.Render(r, "project_sign_list.html",
 		g.Map{
 			"signNode":   signNode,
 			"list":       rData.List,

+ 1 - 2
internal/controller/stype.go

@@ -7,7 +7,6 @@ import (
 	"github.com/gogf/gf/v2/util/gconv"
 	"jyseo/internal/consts"
 	"jyseo/internal/service"
-	"jyseo/utility"
 )
 
 func STypePageHandler(r *ghttp.Request) {
@@ -47,7 +46,7 @@ func STypePageHandler(r *ghttp.Request) {
 		rNode = sNode.PNode
 		nodeList = sNode.PNode.Child
 	}
-	service.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "sType_list.html"),
+	service.HtmlRender.Render(r, "sType_list.html",
 		g.Map{
 			"sTypeNode":  sNode,
 			"list":       rData.List,

+ 17 - 4
internal/service/response.go

@@ -2,8 +2,11 @@ package service
 
 import (
 	"fmt"
+	"github.com/gogf/gf/v2/errors/gcode"
+	"github.com/gogf/gf/v2/errors/gerror"
 	"github.com/gogf/gf/v2/frame/g"
 	"github.com/gogf/gf/v2/net/ghttp"
+	"jyseo/utility"
 	"net/http"
 )
 
@@ -19,14 +22,24 @@ var (
 )
 
 // Render 渲染html页面
-func (l *localHtmlRender) Render(r *ghttp.Request, filePath string, params ...Params) {
-	var usedParams Params
+func (l *localHtmlRender) Render(r *ghttp.Request, fileName string, params ...Params) {
+	var (
+		err        error
+		res        string
+		usedParams Params
+	)
 	if len(params) > 0 {
 		usedParams = params[0]
 	}
-	res, err := g.View().Parse(r.Context(), filePath, usedParams)
+	//当移动端未找到模版,渲染pc模版
+	for _, filePath := range utility.GetCommonRenderCachePaths(r.Request.UserAgent(), fileName) {
+		res, err = g.View().Parse(r.Context(), filePath, usedParams)
+		if gerror.Code(err) != gcode.CodeInvalidParameter {
+			break
+		}
+	}
 	if err != nil {
-		g.Log().Error(r.Context(), "渲染%s页面异常 %v", filePath, err)
+		g.Log().Error(r.Context(), "渲染%s页面异常 %v", fileName, err)
 		l.RenderError(r, fmt.Errorf("页面异常"), params...)
 	} else {
 		r.Response.Write(res)

+ 28 - 4
utility/util.go

@@ -11,6 +11,7 @@ import (
 	"regexp"
 	"strconv"
 	"strings"
+	"sync"
 )
 
 // ConversionMoney 金额格式化
@@ -51,18 +52,41 @@ func ConversionMoney(i_money interface{}) string {
 
 var mobileReg = regexp.MustCompile("(?i)(Android|Mobile|Phone)")
 
-func GetCommonRenderPatch(agent, value string) string {
+func GetCommonRenderPath(agent, value string) string {
 	if IsMobile(agent) {
 		return fmt.Sprintf("mobile/%s", value)
 	}
 	return fmt.Sprintf("pc/%s", value)
 }
 
-func GetCommonRenderPatchs(agent, value string) string {
+var getCacheRenderFilePaths = getRenderFilePaths()
+
+// GetCommonRenderPaths 当移动端未找到模版,渲染pc模版
+func GetCommonRenderPaths(agent, filename string) []string {
 	if IsMobile(agent) {
-		return fmt.Sprintf("mobile/%s", value)
+		return []string{fmt.Sprintf("mobile/%s", filename), fmt.Sprintf("pc/%s", filename)}
+	}
+	return []string{fmt.Sprintf("pc/%s", filename)}
+}
+func GetCommonRenderCachePaths(agent, value string) []string {
+	return getCacheRenderFilePaths(IsMobile(agent), value)
+}
+
+func getRenderFilePaths() func(bool, string) []string {
+	cacheMap := map[string]map[bool][]string{}
+	lock := sync.Mutex{}
+	return func(isMobile bool, filename string) []string {
+		lock.Lock()
+		defer lock.Unlock()
+		if m, ok := cacheMap[filename]; ok && len(m) == 2 {
+			return m[isMobile]
+		}
+		cacheMap[filename] = map[bool][]string{
+			true:  {fmt.Sprintf("mobile/%s", filename), fmt.Sprintf("pc/%s", filename)},
+			false: {fmt.Sprintf("pc/%s", filename)},
+		}
+		return cacheMap[filename][isMobile]
 	}
-	return fmt.Sprintf("pc/%s", value)
 }
 
 func IsMobile(agent string) bool {