Ver Fonte

Merge branch 'master' into feature/v4.9.10

lianbingjie há 1 ano atrás
pai
commit
60501cbec9

+ 1 - 1
src/go.mod

@@ -6,7 +6,7 @@ require (
 	app.yhyue.com/moapp/jyMarketing v0.0.2-0.20230308011651-df591d32df88
 	app.yhyue.com/moapp/jybase v0.0.0-20240104022202-158734833402
 	app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545
-	app.yhyue.com/moapp/jypkg v1.15.3
+	app.yhyue.com/moapp/jypkg v1.14.7
 	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.16
 	github.com/SKatiyar/qr v0.0.0-20151201054752-25b6bdf44e67
 	github.com/bwmarrin/snowflake v0.3.0

+ 3 - 2
src/go.sum

@@ -1,3 +1,4 @@
+
 app.yhyue.com/moapp/MessageCenter v0.0.0-20230918064638-5cd2498053ae/go.mod h1:SJsuvb720yzCajIfwtVNPKT6y4OiIqD3cOXJgOLZ52Q=
 app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d h1:WPsYuuptAd3UEgN+jPzpnsDe/OvcshDUUtOTZPYGSJ8=
 app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d/go.mod h1:91/lSD/hS+ckMVP3WdidRzDhC60lLMdyce9QHy0cSMA=
@@ -20,8 +21,8 @@ app.yhyue.com/moapp/jybase v0.0.0-20240104022202-158734833402/go.mod h1:fjaD11Z3
 app.yhyue.com/moapp/jyfs v0.0.0-20231024061508-480c270480d4/go.mod h1:61hzZ3dZHXL28BNl8BOgZsvM2S5UVY5YFzOkEUPrSu4=
 app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545 h1:+Lak4m1zgsigQloOsvp8AJ+0XeX/+PGp9QP550xlbBQ=
 app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545/go.mod h1:uFrsdUBFbETiJlEmr4PtJWPsZlUpPj2bHQRhryu6ggk=
-app.yhyue.com/moapp/jypkg v1.15.3 h1:NWlrzMjXzRPklAeU6EbUONs3wWu24LPgFoLJIGqKruE=
-app.yhyue.com/moapp/jypkg v1.15.3/go.mod h1:uGSHEjlIVCDFeud5hD7bY5Z1Csrvh+c3vr4Mg50qCW0=
+app.yhyue.com/moapp/jypkg v1.14.7 h1:X8/6LO59ZpzS/FhxKR3m9avO6zbq+KV1lwhowqGhQ7k=
+app.yhyue.com/moapp/jypkg v1.14.7/go.mod h1:uGSHEjlIVCDFeud5hD7bY5Z1Csrvh+c3vr4Mg50qCW0=
 app.yhyue.com/moapp/message v0.0.0-20231204024949-8c7145bfc161 h1:WGi4OEIoqw6NpNFGioUEBZnjK9aBa+xJqf/5WY+QyhM=
 app.yhyue.com/moapp/message v0.0.0-20231204024949-8c7145bfc161/go.mod h1:0Oj8SB4pVjdCLD28sy2zyM3hS0WHGpNuVcakLW43GmI=
 bp.jydev.jianyu360.cn/BP/jynsq v0.0.0-20220222052708-ebc43af90698/go.mod h1:ojo/AUH9Yr1wzarEjOaNMkj1Cet/9r8IgLyba64Z52E=

+ 78 - 76
src/jfw/front/swordfish.go

@@ -859,15 +859,6 @@ func pcVRT(sid, industry, content string, isPayUser bool, isLogin bool) (po, bo,
 			obj["stypeadd"], obj["areaadd"], obj["indadd"] = classify(finalType, area, industry)
 			//增加处理信息逻辑
 			objdata = obj
-			queryStr := ""
-			commonQuery := func(mustquery string) *[]map[string]interface{} {
-				//付费用户可查看 详情页关联信息
-				if util.IntAll(config.Sysconfig["biddingRelatesLevel"]) > 0 && (!isPayUser || content == "bdcontent" || content == "advancedProject") {
-					return nil //elastic.GetPage("bidding", "bidding", queryStr, bidSearch_sort, `"_id","title","publishtime","toptype","subtype","type","area","href","s_subscopeclass","spidercode","site"`, 0, 11)
-				}
-				return elastic.Get("bidding", "bidding", queryStr)
-				//, bidSearch_sort, `"_id","title","publishtime","toptype","subtype","type","area","href","s_subscopeclass","spidercode","site"`, 0, 11)
-			}
 			// p397 收回未登录查看拟建权限调整
 			mustNotStr := ""
 			if isLogin {
@@ -875,81 +866,92 @@ func pcVRT(sid, industry, content string, isPayUser bool, isLogin bool) (po, bo,
 			} else {
 				mustNotStr = `{"terms":{"subtype":["采购意向","拟建"]}}`
 			}
-			baseQuery := `{"query":{"bool":{"must":%s,"must_not":[` + mustNotStr + `]}},"sort":[{"dataweight":"desc","publishtime":"desc"}],"size":11,"_source":["_id","title","publishtime","toptype","subtype","type","area","href","s_subscopeclass","spidercode","site"]}`
-			//同一个项目的其他招标信息
-			projectName, _ := obj["projectname"].(string)
-			projectCode, _ := obj["projectcode"].(string)
-			if projectName != "" || projectCode != "" {
-				// p397 收回未登录查看拟建权限调整
-				// 缓存登录和未登录分开存 因为未登录的不查拟建采购意向
-				projectNameCode := ""
-				if isLogin {
-					projectNameCode = fmt.Sprintf("projectNameCode_%s_%s_%s", projectName, projectCode, util.If(isPayUser, "pay", "free"))
-				} else {
-					projectNameCode = fmt.Sprintf("projectNameCode_%s_%s_noLogin", projectName, projectCode)
+			if isLogin {
+				queryStr := ""
+				commonQuery := func(mustquery string) *[]map[string]interface{} {
+					//付费用户可查看 详情页关联信息
+					if util.IntAll(config.Sysconfig["biddingRelatesLevel"]) > 0 && (!isPayUser || content == "bdcontent" || content == "advancedProject") {
+						return nil //elastic.GetPage("bidding", "bidding", queryStr, bidSearch_sort, `"_id","title","publishtime","toptype","subtype","type","area","href","s_subscopeclass","spidercode","site"`, 0, 11)
+					}
+					return elastic.Get("bidding", "bidding", queryStr)
+					//, bidSearch_sort, `"_id","title","publishtime","toptype","subtype","type","area","href","s_subscopeclass","spidercode","site"`, 0, 11)
 				}
-				projectOther = EntAssociated(projectNameCode)
-				if projectOther == nil {
-					tmpQuery := ""
-					if projectName != "" && projectCode != "" {
-						projectName = strings.ReplaceAll(projectName, "\"", "###剑鱼###")
-						projectCode = strings.ReplaceAll(projectCode, "\"", "###剑鱼###")
-						tmpQuery = fmt.Sprintf(`{"bool": {"should": [{"term": {"projectname": "%s"}}, {"term": {"projectcode": "%s"}}]}}`, projectName, projectCode)
-					} else if projectName != "" && projectCode == "" {
-						projectName = strings.ReplaceAll(projectName, "\"", "###剑鱼###")
-						tmpQuery = `{"term":{"projectname":"` + projectName + `"}}`
-					} else if projectName == "" && projectCode != "" {
-						projectCode = strings.ReplaceAll(projectCode, "\"", "###剑鱼###")
-						tmpQuery = `{"term":{"projectcode":"` + projectCode + `"}}`
+				baseQuery := `{"query":{"bool":{"must":%s,"must_not":[` + mustNotStr + `]}},"sort":[{"dataweight":"desc","publishtime":"desc"}],"size":11,"_source":["_id","title","publishtime","toptype","subtype","type","area","href","s_subscopeclass","spidercode","site"]}`
+				//同一个项目的其他招标信息
+				projectName, _ := obj["projectname"].(string)
+				projectCode, _ := obj["projectcode"].(string)
+				if projectName != "" || projectCode != "" {
+					// p397 收回未登录查看拟建权限调整
+					// 缓存登录和未登录分开存 因为未登录的不查拟建采购意向
+					projectNameCode := ""
+					if isLogin {
+						projectNameCode = fmt.Sprintf("projectNameCode_%s_%s_%s", projectName, projectCode, util.If(isPayUser, "pay", "free"))
+					} else {
+						projectNameCode = fmt.Sprintf("projectNameCode_%s_%s_noLogin", projectName, projectCode)
 					}
-					queryStr = fmt.Sprintf(baseQuery, tmpQuery)
-					projectOther = bidDataConvert(sid, commonQuery(queryStr))
-					if projectOther != nil && len(projectOther) > 0 {
-						if bytes, err := json.Marshal(projectOther); err == nil && len(bytes) > 0 {
-							_ = redis.PutBytes(RedisNameNew, projectNameCode, &bytes, 24*60*60)
+					projectOther = EntAssociated(projectNameCode)
+					if projectOther == nil {
+						tmpQuery := ""
+						if projectName != "" && projectCode != "" {
+							projectName = strings.ReplaceAll(projectName, "\"", "###剑鱼###")
+							projectCode = strings.ReplaceAll(projectCode, "\"", "###剑鱼###")
+							tmpQuery = fmt.Sprintf(`{"bool": {"should": [{"term": {"projectname": "%s"}}, {"term": {"projectcode": "%s"}}]}}`, projectName, projectCode)
+						} else if projectName != "" && projectCode == "" {
+							projectName = strings.ReplaceAll(projectName, "\"", "###剑鱼###")
+							tmpQuery = `{"term":{"projectname":"` + projectName + `"}}`
+						} else if projectName == "" && projectCode != "" {
+							projectCode = strings.ReplaceAll(projectCode, "\"", "###剑鱼###")
+							tmpQuery = `{"term":{"projectcode":"` + projectCode + `"}}`
+						}
+						queryStr = fmt.Sprintf(baseQuery, tmpQuery)
+						projectOther = bidDataConvert(sid, commonQuery(queryStr))
+						if projectOther != nil && len(projectOther) > 0 {
+							if bytes, err := json.Marshal(projectOther); err == nil && len(bytes) > 0 {
+								_ = redis.PutBytes(RedisNameNew, projectNameCode, &bytes, 24*60*60)
+							}
 						}
 					}
 				}
-			}
-			//同一个业主最近的其他招标信息
-			buyer, _ := obj["buyer"].(string) //采购单位
-			if buyer != "" {
-				// P397 调整
-				buyerNameOther := ""
-				if isLogin {
-					buyerNameOther = fmt.Sprintf("buyerNameOther_%s_%s", buyer, util.If(isPayUser, "pay", "free"))
-				} else {
-					buyerNameOther = fmt.Sprintf("buyerNameOther_%s_noLogin", buyer)
-				}
-				buyerOther = EntAssociated(buyerNameOther)
-				if buyerOther == nil {
-					tmpQuery := `[{"term":{"buyer":"` + buyer + `"}}]`
-					queryStr = fmt.Sprintf(baseQuery, tmpQuery)
-					buyerOther = bidDataConvert(sid, commonQuery(queryStr))
-					if buyerOther != nil && len(buyerOther) > 0 {
-						if bytes, err := json.Marshal(buyerOther); err == nil && len(bytes) > 0 {
-							_ = redis.PutBytes(RedisNameNew, buyerNameOther, &bytes, 24*60*60)
+				//同一个业主最近的其他招标信息
+				buyer, _ := obj["buyer"].(string) //采购单位
+				if buyer != "" {
+					// P397 调整
+					buyerNameOther := ""
+					if isLogin {
+						buyerNameOther = fmt.Sprintf("buyerNameOther_%s_%s", buyer, util.If(isPayUser, "pay", "free"))
+					} else {
+						buyerNameOther = fmt.Sprintf("buyerNameOther_%s_noLogin", buyer)
+					}
+					buyerOther = EntAssociated(buyerNameOther)
+					if buyerOther == nil {
+						tmpQuery := `[{"term":{"buyer":"` + buyer + `"}}]`
+						queryStr = fmt.Sprintf(baseQuery, tmpQuery)
+						buyerOther = bidDataConvert(sid, commonQuery(queryStr))
+						if buyerOther != nil && len(buyerOther) > 0 {
+							if bytes, err := json.Marshal(buyerOther); err == nil && len(bytes) > 0 {
+								_ = redis.PutBytes(RedisNameNew, buyerNameOther, &bytes, 24*60*60)
+							}
 						}
 					}
 				}
-			}
-			//同一中标人最近中标的其他信息
-			winner, _ := obj["winner"].(string) //中标人
-			if winner != "" {
-				winnerNameOther := ""
-				if isLogin {
-					winnerNameOther = fmt.Sprintf("winnerNameOther_%s_%s", winner, util.If(isPayUser, "pay", "free"))
-				} else {
-					winnerNameOther = fmt.Sprintf("winnerNameOther_%s_noLogin", winner)
-				}
-				winnerOther = EntAssociated(winnerNameOther)
-				if winnerOther == nil {
-					tmpQuery := `[{"term":{"s_winner":"` + winner + `"}}]`
-					queryStr = fmt.Sprintf(baseQuery, tmpQuery)
-					winnerOther = bidDataConvert(sid, commonQuery(queryStr))
-					if winnerOther != nil && len(winnerOther) > 0 {
-						if bytes, err := json.Marshal(winnerOther); err == nil && len(bytes) > 0 {
-							_ = redis.PutBytes(RedisNameNew, winnerNameOther, &bytes, 24*60*60)
+				//同一中标人最近中标的其他信息
+				winner, _ := obj["winner"].(string) //中标人
+				if winner != "" {
+					winnerNameOther := ""
+					if isLogin {
+						winnerNameOther = fmt.Sprintf("winnerNameOther_%s_%s", winner, util.If(isPayUser, "pay", "free"))
+					} else {
+						winnerNameOther = fmt.Sprintf("winnerNameOther_%s_noLogin", winner)
+					}
+					winnerOther = EntAssociated(winnerNameOther)
+					if winnerOther == nil {
+						tmpQuery := `[{"term":{"s_winner":"` + winner + `"}}]`
+						queryStr = fmt.Sprintf(baseQuery, tmpQuery)
+						winnerOther = bidDataConvert(sid, commonQuery(queryStr))
+						if winnerOther != nil && len(winnerOther) > 0 {
+							if bytes, err := json.Marshal(winnerOther); err == nil && len(bytes) > 0 {
+								_ = redis.PutBytes(RedisNameNew, winnerNameOther, &bytes, 24*60*60)
+							}
 						}
 					}
 				}

+ 1 - 1
src/jfw/modules/app/src/config.json

@@ -153,7 +153,7 @@
   "redisSessionLockSize":20,
   "nsq":"192.168.3.240:4260",
   "nsq_topic": "jy_event",
-  "accountMergeOnline":"3333-03-30 00:00:00",
+  "accountMergeOnline":"2021-04-07 12:00:00",
   "bidSearchOldUserLimit": 1626105600,
   "contextOldVipLimit": 1664553600,
   "firstBindPop":3,

+ 1 - 1
src/jfw/modules/app/src/db.json

@@ -40,7 +40,7 @@
     },
   "redis": {
     "main":{
-      "address": "other=192.168.3.11:1712,push=192.168.3.206:1712,sso=192.168.3.206:1712,session=192.168.3.11:1713,recovery=192.168.3.11:1712,merge=192.168.3.11:1712,newother=192.168.3.11:1712,seoCache=192.168.3.11:1712,limitation=192.168.3.11:1713"
+      "address": "other=192.168.3.149:1712,sso=192.168.3.149:1713,push=192.168.3.149:1711,session=192.168.3.149:1713,merge=192.168.3.149:1712,grayupdate=192.168.3.206:1712,newother=192.168.3.149:1712,seoCache=192.168.3.149:1712,limitation=192.168.3.149:1713"
     }
     },
     "mysql": {

+ 1 - 1
src/jfw/modules/app/src/web/staticres/jyapp/js/common.js

@@ -1638,7 +1638,7 @@ function checkNeedGoBindPhonePage () {
     }
   })
   if (!userPhone) {
-    locationReplace('/jyapp/account/phone/bind?mode=mergeBind')
+    locationReplace('/jyapp/account/phone/bind?mode=mergeBind&act=logout')
     return true
   }
   return false

+ 1 - 1
src/jfw/modules/app/src/web/templates/me/account/phone_bind.html

@@ -206,7 +206,7 @@
     <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
     <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
     <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
-    <script src="//cdn-common.jianyu360.com/cdn/lib/number-auth-web-sdk/2.0.10/numberAuth-web-sdk.js"></script>
+    <script src="//cdn-common.jianyu360.com/cdn/lib/number-auth-web-sdk/2.1.2/numberAuth-web-sdk.js"></script>
     {{include "/big-member/commonjs.html"}}
     <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
     <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/me/js/phone_bind.js?v={{Msg "seo" "version"}}'></script>

+ 1 - 1
src/jfw/modules/app/src/web/templates/me/login.html

@@ -213,7 +213,7 @@
   </div>
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/ad/js/index.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/utils.js?v={{Msg "seo" "version"}}'></script>
-  <script src="//cdn-common.jianyu360.com/cdn/lib/number-auth-web-sdk/2.0.10/numberAuth-web-sdk.js"></script>
+  <script src="//cdn-common.jianyu360.com/cdn/lib/number-auth-web-sdk/2.1.2/numberAuth-web-sdk.js"></script>
   <script src="//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js"></script>
   <script src="//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js"></script>
     <!--S 加载荟聚SDK初始化及剑鱼自定义埋点注入 -->

+ 1 - 1
src/jfw/modules/bigmember/src/service/use/use.go

@@ -768,7 +768,7 @@ func (u *Use) IsAdd() {
 		userInfo.EntNiche = bigPower.EntnicheStatus == 1 && IsEntPower > 0
 		userInfo.EntIsNew = bigPower.EntIsNew && userInfo.EntNiche
 		//有商机管理服务的用户 就不是商机管理用户
-		if userInfo.IsEntService = PowerSource > 0 && IsEntPower > 0; userInfo.IsEntService {
+		if userInfo.IsEntService = bigPower.EntnicheStatus > 0 && PowerSource > 0 && IsEntPower > 0; userInfo.IsEntService {
 			userInfo.EntIsNew = false
 			userInfo.EntNiche = false
 		}

+ 1 - 1
src/jfw/modules/publicapply/src/activityday/dao/dao.go

@@ -48,7 +48,7 @@ func GetLotteryActiveInfo(activeId int64, sess map[string]interface{}, session *
 	//活动期间
 	if r.DLai.ActiveStartTime <= now.Unix() && r.DLai.ActiveEndTime >= now.Unix() && config.Config.FASwitch {
 		//首次访问活动页面 赠送剑鱼币100
-		onceKey := fmt.Sprintf("activity_day_once_%s", r.UserInfo.UserId)
+		onceKey := fmt.Sprintf("activity_day_once_%s_%s", r.DLai.Name, r.UserInfo.UserId)
 		if ok, err := redis.Exists(consts.RedisNewCode, onceKey); err == nil && !ok {
 			err = r.PointHarvest(r.DLai.Cost)
 			if err == nil {

+ 6 - 3
src/jfw/modules/publicapply/src/oneclick/entity/entity.go

@@ -180,14 +180,16 @@ type authToken struct {
 
 func GetAuthTokenWithOptions(host string) (_err error, token *authToken) {
 	// 判断是微信还是h5的域名
-	origin, url := "", ""
+	origin, url, sceneCode := "", "", ""
 	log.Println(initjson.OneClick.H5.Origin, "========", host)
 	if strings.Contains(initjson.OneClick.H5.Origin, host) {
 		origin = initjson.OneClick.H5.Origin
 		url = initjson.OneClick.H5.Url
+		sceneCode = initjson.OneClick.H5.SceneCode
 	} else if strings.Contains(initjson.OneClick.Wx.Origin, host) {
 		origin = initjson.OneClick.Wx.Origin
 		url = initjson.OneClick.Wx.Url
+		sceneCode = initjson.OneClick.Wx.SceneCode
 	} else {
 		log.Println("未匹配到host:", host)
 		return errors.New("host未匹配到"), token
@@ -212,8 +214,9 @@ func GetAuthTokenWithOptions(host string) (_err error, token *authToken) {
 		return
 	}
 	getAuthTokenRequest := &dypnsapi20170525.GetAuthTokenRequest{
-		Origin: tea.String(origin),
-		Url:    tea.String(url),
+		Origin:    tea.String(origin),
+		Url:       tea.String(url),
+		SceneCode: tea.String(sceneCode),
 	}
 	runtime := &util.RuntimeOptions{}
 	tryErr := func() (_e error) {

+ 8 - 9
src/jfw/modules/publicapply/src/oneclick/initjson/oc.go

@@ -4,18 +4,17 @@ import (
 	qu "app.yhyue.com/moapp/jybase/common"
 )
 
+type Params struct {
+	Origin    string `json:"origin"`
+	Url       string `json:"url"`
+	SceneCode string `json:"sceneCode"`
+}
 type oneClick struct {
 	AccessKeyId     string `json:"accessKeyId"`
 	AccessKeySecret string `json:"accessKeySecret"`
-	H5              struct {
-		Origin string `json:"origin"`
-		Url    string `json:"url"`
-	} `json:"h5"`
-	Wx struct {
-		Origin string `json:"origin"`
-		Url    string `json:"url"`
-	} `json:"wx"`
-	TokenCache struct {
+	H5              Params `json:"h5"`
+	Wx              Params `json:"wx"`
+	TokenCache      struct {
 		Open    bool   `json:"open"`
 		Key     string `json:"key"`
 		Timeout int    `json:"timeout"`

+ 5 - 3
src/jfw/modules/publicapply/src/oneclick/oneClick.json

@@ -3,11 +3,13 @@
   "accessKeySecret": "DWAt7v7HtfpJcJzRjzWOoPZ0D4oSRu",
   "h5": {
     "origin": "https://apph3-jytest.jydev.jianyu360.com",
-    "url": "https://apph3-jytest.jydev.jianyu360.com/"
+    "url": "https://apph3-jytest.jydev.jianyu360.com/",
+    "sceneCode": "FC220000002280467"
   },
   "wx": {
-    "origin": "https://jybx-webtest.jydev.jianyu360.com",
-    "url": "https://jybx-webtest.jydev.jianyu360.com/"
+    "origin": "https://jybx3-webtest.jydev.jianyu360.com",
+    "url": "https://jybx3-webtest.jydev.jianyu360.com/",
+    "sceneCode": "FC220000002350445"
   },
   "tokenCache": {
     "open": false,

+ 1 - 1
src/web/templates/weixin/me/account/phone_bind.html

@@ -212,7 +212,7 @@
     <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
     <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
     <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
-    <script src="//cdn-common.jianyu360.com/cdn/lib/number-auth-web-sdk/2.0.10/numberAuth-web-sdk.js"></script>
+    <script src="//cdn-common.jianyu360.com/cdn/lib/number-auth-web-sdk/2.1.2/numberAuth-web-sdk.js"></script>
     <script src='/common-module/public/js/utils.js?v={{Msg "seo" "version"}}'></script>
     <script src='/me/js/phone_bind.js?v={{Msg "seo" "version"}}'></script>
     <script src='/common-module/message-tip/js/index.js?v={{Msg "seo" "version"}}'></script>