ソースを参照

feat:快照页面数据优化

wangshan 3 年 前
コミット
3eabdd2c4a

+ 158 - 147
src/jfw/front/shorturl.go

@@ -233,8 +233,11 @@ func (s *Short) Article(stype, id string) error {
 	isMember = util.IntAll((*res)["i_member_status"]) > 0
 
 	if phone, _ := util.If(util.ObjToString((*res)["s_phone"]) != "", util.ObjToString((*res)["s_phone"]), util.ObjToString((*res)["s_m_phone"])).(string); phone != "" {
+		//商机管理用户
 		isEntniche = public.Mysql.CountBySql(`SELECT count(1) from entniche_user a INNER JOIN entniche_info b on (a.phone=? and a.power=1 and a.ent_id=b.id and b.status>0)`, phone) > 0
+		//商机管理用户-新版
 		isEntnicheNew = public.Mysql.CountBySql(`SELECT count(1) from entniche_user a INNER JOIN entniche_info b on (a.phone=? and a.power=1 and a.ent_id=b.id and b.status>0 and b.isNew > 0)`, phone) > 0
+		//广东移动DICT 用户
 		privatedata = public.Mysql.CountBySql(`select count(1) from privatedata where phone = ?`, phone) > 0
 	}
 	if !isEntniche && privatedata {
@@ -244,7 +247,6 @@ func (s *Short) Article(stype, id string) error {
 	s.T["isMember"] = isMember
 	s.T["isEntniche"] = isEntniche
 	s.T["isEntnicheNew"] = isEntnicheNew
-
 	if bm {
 		//判断有没有取关,取关的话,跳转到关于剑鱼标讯页面
 		if ssOpenid != nil && ssOpenid != "" {
@@ -281,53 +283,83 @@ func (s *Short) Article(stype, id string) error {
 		} else {
 			s.T["openid"] = se.EncodeString(myopenid) //"-1"
 		}
-
 		mynickname, _ := s.GetSession("s_nickname").(string)
 		myavatar, _ := s.GetSession("s_avatar").(string)
 		s.T["nickname"] = mynickname
 		s.T["avatar"] = myavatar
 		s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
-
 		obj := wxvisitD(sid, userId, myopenid, isVip || isMember || isEntniche)
+		canRead := false
 		if isVip || isMember || isEntniche {
-			s.T["canRead"] = true
+			canRead = true
 		} else {
-			s.T["canRead"] = SeeDetailLimit(obj, userId, sid)
+			canRead = SeeDetailLimit(obj, userId, sid)
 		}
 		if len(obj) > 0 {
-			FieldProcessing(obj, ssOpenid, industry, id, from_userid, userId, stype, isVip || isMember || isEntniche, true)
-
-			//免费用户正文手机号替换
-			if obj["site"] == "剑鱼信息发布平台" && !isMember {
-				//采购电话中标单位电话置空
-				if util.InterfaceToStr(obj["buyertel"]) != "" {
-					obj["buyertel"] = "freeView"
-				}
-				if util.InterfaceToStr(obj["winnertel"]) != "" {
-					obj["winnertel"] = "freeView"
+			if canRead {
+				FieldProcessing(obj, ssOpenid, industry, id, from_userid, userId, stype, isVip || isMember || isEntniche, true)
+				//免费用户正文手机号替换
+				if obj["site"] == "剑鱼信息发布平台" && !isMember {
+					//采购电话中标单位电话置空
+					if util.InterfaceToStr(obj["buyertel"]) != "" {
+						obj["buyertel"] = "freeView"
+					}
+					if util.InterfaceToStr(obj["winnertel"]) != "" {
+						obj["winnertel"] = "freeView"
+					}
+					//正文电话 手机号 邮箱处理
+					if detail, _ := obj["detail"].(string); detail != "" {
+						//手机号
+						re1 := regexp.MustCompile("1[345789]{1}\\d{9}")
+						detail1 := re1.ReplaceAllString(detail, `<span class="freeView">点击查看</span>`)
+						code := util.InterfaceToStr(obj["projectcode"])
+						if code != "" {
+							detail1 = strings.ReplaceAll(detail1, code, "*********")
+						}
+						//座机
+						re2 := regexp.MustCompile("((0\\d{2,3})-)(\\d{7,8})(-(\\d{3,}))?")
+						detail2 := re2.ReplaceAllString(detail1, `<span class="freeView">点击查看</span>`)
+						re4 := regexp.MustCompile("((400)-)(\\d{3,4}-)(\\d{3,})")
+						detail4 := re4.ReplaceAllString(detail2, `<span class="freeView">点击查看</span>`)
+						//邮箱
+						re3 := regexp.MustCompile("([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)")
+						detail3 := re3.ReplaceAllString(detail4, `<span class="freeView">点击查看</span>`)
+						obj["detail"] = strings.ReplaceAll(strings.ReplaceAll(detail3, `<span class="freeView">点击查看</span><span class="freeView">点击查看</span>`, `<span class="freeView">点击查看</span>`), "*********", code)
+					}
 				}
-				//正文电话 手机号 邮箱处理
-				if detail, _ := obj["detail"].(string); detail != "" {
-					//手机号
-					re1 := regexp.MustCompile("1[345789]{1}\\d{9}")
-					detail1 := re1.ReplaceAllString(detail, `<span class="freeView">点击查看</span>`)
-					code := util.InterfaceToStr(obj["projectcode"])
-					if code != "" {
-						detail1 = strings.ReplaceAll(detail1, code, "*********")
+				if obj["entidlist"] != nil { //大会员中标企业跳转至画像
+					if winner := util.ObjToString(obj["winner"]); winner != "" {
+						s_winner := util.ObjToString(obj["s_winner"])
+						idObjs, _ := obj["entidlist"].([]interface{})
+						winnerId := ""
+						if names := strings.Split(s_winner, ","); len(names) > 1 {
+							index := 0
+							for i := 0; i < len(names); i++ {
+								if names[i] == winner {
+									index = i
+									break
+								}
+							}
+							if len(idObjs) > index {
+								winnerId = util.ObjToString(idObjs[index])
+							}
+						} else { //中标企业仅一个
+							if len(idObjs) > 0 {
+								winnerId = util.ObjToString(idObjs[0])
+							}
+						}
+						if winnerId != "" && winnerId != "-" {
+							obj["entId"] = util.EncodeArticleId2ByCheck(winnerId)
+						}
 					}
-					//座机
-					re2 := regexp.MustCompile("((0\\d{2,3})-)(\\d{7,8})(-(\\d{3,}))?")
-					detail2 := re2.ReplaceAllString(detail1, `<span class="freeView">点击查看</span>`)
-					re4 := regexp.MustCompile("((400)-)(\\d{3,4}-)(\\d{3,})")
-					detail4 := re4.ReplaceAllString(detail2, `<span class="freeView">点击查看</span>`)
-					//邮箱
-					re3 := regexp.MustCompile("([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)")
-					detail3 := re3.ReplaceAllString(detail4, `<span class="freeView">点击查看</span>`)
-					obj["detail"] = strings.ReplaceAll(strings.ReplaceAll(detail3, `<span class="freeView">点击查看</span><span class="freeView">点击查看</span>`, `<span class="freeView">点击查看</span>`), "*********", code)
+				}
+				s.T["advertcode"] = s.GetString("advertcode")
+			} else {
+				obj = map[string]interface{}{
+					"title": obj["title"],
+					"_id":   obj["_id"],
 				}
 			}
-			//获取打赏文案
-			s.T["rewardText"], s.T["advertText"] = getRewardText()
 			//纠错随机回复
 			recoveryRight, _ := config.Sysconfig["recoveryRight"].([]interface{})
 			recVal := rand.New(rand.NewSource(time.Now().UnixNano())).Intn(len(recoveryRight))
@@ -335,34 +367,11 @@ func (s *Short) Article(stype, id string) error {
 			s.T["advertImg"] = config.Sysconfig["advertImg"]
 			s.T["advertName"] = config.Sysconfig["advertName"]
 			s.T["advertUrl"] = config.Sysconfig["advertUrl"]
+			s.T["canRead"] = canRead
+			obj["industry"] = industry
 			s.T["obj"] = obj
-			if obj["entidlist"] != nil { //大会员中标企业跳转至画像
-				if winner := util.ObjToString(obj["winner"]); winner != "" {
-					s_winner := util.ObjToString(obj["s_winner"])
-					idObjs, _ := obj["entidlist"].([]interface{})
-					winnerId := ""
-					if names := strings.Split(s_winner, ","); len(names) > 1 {
-						index := 0
-						for i := 0; i < len(names); i++ {
-							if names[i] == winner {
-								index = i
-								break
-							}
-						}
-						if len(idObjs) > index {
-							winnerId = util.ObjToString(idObjs[index])
-						}
-					} else { //中标企业仅一个
-						if len(idObjs) > 0 {
-							winnerId = util.ObjToString(idObjs[0])
-						}
-					}
-					if winnerId != "" && winnerId != "-" {
-						obj["entId"] = util.EncodeArticleId2ByCheck(winnerId)
-					}
-				}
-			}
-			s.T["advertcode"] = s.GetString("advertcode")
+			//获取打赏文案
+			s.T["rewardText"], s.T["advertText"] = getRewardText()
 			content, _ := s.Render4Cache("/weixin/wxinfocontent_rec.html", &s.T)
 			return s.SetBody(content)
 		}
@@ -379,14 +388,13 @@ func (s *Short) Article(stype, id string) error {
 
 		//免费用户浏览三级页判断留资与浏览次数
 		indust := s.GetString("industry")
-		_, _, _, objc := pcVRT(sid, indust, isVip || isMember || isEntniche)
 		var node bool
 		if isVip || isMember || isEntniche {
 			node = true
 		} else {
+			_, _, _, objc := pcVRT(sid, indust, isVip || isMember || isEntniche)
 			node = SeeDetailLimit(objc, userId, sid)
 		}
-
 		s.T["canRead"] = node
 		var nodeStr string
 		if node {
@@ -397,7 +405,6 @@ func (s *Short) Article(stype, id string) error {
 		if userId != "" && stype == "indexcontent" { //已登录用户直接跳转至正常三级页
 			return s.Redirect(fmt.Sprintf("/article/content/%s.html", util.CommonEncodeArticle("content", sid)))
 		}
-
 		catchKey := fmt.Sprintf("jypcdetail_%s_%s_%s_%v_%v_%v_%s", userId, stype, sid, isVip, isEntniche, isMember, nodeStr)
 		//缓存读取
 		if res := redis.Get("newother", catchKey); res == nil || res == "" {
@@ -412,103 +419,107 @@ func (s *Short) Article(stype, id string) error {
 			s.DisableHttpCache()
 			po, bo, wo, obj := pcVRT(sid, industry, isVip || isMember || isEntniche)
 			if obj != nil && len(obj) > 0 {
-
-				if len(po) > 0 {
-					s.T["projectOther"] = po
-				}
-				if len(bo) > 0 {
-					s.T["buyerOther"] = bo
-				}
-				if len(wo) > 0 {
-					s.T["winnerOther"] = wo
-				}
-				obj["urlpath"] = s.Uri()
-				obj["industry"] = industry
-				if ssOpenid != nil {
-					obj["ucbsId"] = util.EncodeArticleId2ByCheck("ucbs#" + ssOpenid.(string) + "#" + id)
-				}
-				if isbid(obj["subtype"]) {
-					obj["winner_enttel"] = getwinnertel(obj["winner"])
-				}
-
-				if !(isVip || isMember || isEntniche) { //非会员不展示电话字段
-					if obj["winnertel"] != nil {
-						obj["winnertel"] = "无权限"
+				if node {
+					if len(po) > 0 {
+						s.T["projectOther"] = po
 					}
-					if obj["winner_enttel"] != "" {
-						obj["winner_enttel"] = "无权限"
+					if len(bo) > 0 {
+						s.T["buyerOther"] = bo
 					}
-				}
-				//判断时间 //如果是seo页面超过时间访问的进入首页
-				comeinTime := time.Unix(util.Int64All(obj["comeintime"]), 0)
-				if stype == "indexcontent" {
-					if count := public.MQFW.Count("seobidding", map[string]interface{}{"bid": sid}); count <= 0 && comeinTime.Before(time.Now().Add(time.Duration(-util.IntAll(config.Sysconfig["seoBeforeTimeHour"]))*time.Hour)) {
-						return s.Redirect("/")
+					if len(wo) > 0 {
+						s.T["winnerOther"] = wo
 					}
-				}
-				FieldProcessing(obj, ssOpenid, industry, id, from_userid, userId, stype, isVip || isMember || isEntniche, false)
-
-				//免费用户正文手机号替换
-				if obj["site"] == "剑鱼信息发布平台" && !isMember {
-					//采购电话中标单位电话置空
-					if util.InterfaceToStr(obj["buyertel"]) != "" {
-						obj["buyertel"] = "freeView"
+					if isbid(obj["subtype"]) {
+						obj["winner_enttel"] = getwinnertel(obj["winner"])
 					}
-					if util.InterfaceToStr(obj["winnertel"]) != "" {
-						obj["winnertel"] = "freeView"
+
+					if !(isVip || isMember || isEntniche) { //非会员不展示电话字段
+						if obj["winnertel"] != nil {
+							obj["winnertel"] = "无权限"
+						}
+						if obj["winner_enttel"] != "" {
+							obj["winner_enttel"] = "无权限"
+						}
 					}
-					//正文电话 手机号 邮箱处理
-					if detail, _ := obj["detail"].(string); detail != "" {
-						//手机号
-						re1 := regexp.MustCompile("1[345789]{1}\\d{9}")
-						detail1 := re1.ReplaceAllString(detail, `<span class="freeView">点击查看</span>`)
-						code := util.InterfaceToStr(obj["projectcode"])
-						if code != "" {
-							detail1 = strings.ReplaceAll(detail1, code, "*********")
+					//判断时间 //如果是seo页面超过时间访问的进入首页
+					comeinTime := time.Unix(util.Int64All(obj["comeintime"]), 0)
+					if stype == "indexcontent" {
+						if count := public.MQFW.Count("seobidding", map[string]interface{}{"bid": sid}); count <= 0 && comeinTime.Before(time.Now().Add(time.Duration(-util.IntAll(config.Sysconfig["seoBeforeTimeHour"]))*time.Hour)) {
+							return s.Redirect("/")
 						}
-						//座机
-						re2 := regexp.MustCompile("((0\\d{2,3})-)(\\d{7,8})(-(\\d{3,}))?")
-						detail2 := re2.ReplaceAllString(detail1, `<span class="freeView">点击查看</span>`)
-						re4 := regexp.MustCompile("((400)-)(\\d{3,4}-)(\\d{3,})")
-						detail4 := re4.ReplaceAllString(detail2, `<span class="freeView">点击查看</span>`)
-						//邮箱
-						re3 := regexp.MustCompile("([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)")
-						detail3 := re3.ReplaceAllString(detail4, `<span class="freeView">点击查看</span>`)
-						obj["detail"] = strings.ReplaceAll(strings.ReplaceAll(detail3, `<span class="freeView">点击查看</span><span class="freeView">点击查看</span>`, `<span class="freeView">点击查看</span>`), "*********", code)
 					}
-				}
-
-				s.T["obj"] = obj
+					FieldProcessing(obj, ssOpenid, industry, id, from_userid, userId, stype, isVip || isMember || isEntniche, false)
 
-				if obj["projectname"] != nil {
-					s.SetSession("projectname", obj["projectname"])
-				}
-				if obj["entidlist"] != nil { //大会员中标企业跳转至画像
-					if winner := util.ObjToString(obj["winner"]); winner != "" {
-						s_winner := util.ObjToString(obj["s_winner"])
-						idObjs, _ := obj["entidlist"].([]interface{})
-						winnerId := ""
-						if names := strings.Split(s_winner, ","); len(names) > 1 {
-							index := 0
-							for i := 0; i < len(names); i++ {
-								if names[i] == winner {
-									index = i
-									break
-								}
+					//免费用户正文手机号替换
+					if obj["site"] == "剑鱼信息发布平台" && !isMember {
+						//采购电话中标单位电话置空
+						if util.InterfaceToStr(obj["buyertel"]) != "" {
+							obj["buyertel"] = "freeView"
+						}
+						if util.InterfaceToStr(obj["winnertel"]) != "" {
+							obj["winnertel"] = "freeView"
+						}
+						//正文电话 手机号 邮箱处理
+						if detail, _ := obj["detail"].(string); detail != "" {
+							//手机号
+							re1 := regexp.MustCompile("1[345789]{1}\\d{9}")
+							detail1 := re1.ReplaceAllString(detail, `<span class="freeView">点击查看</span>`)
+							code := util.InterfaceToStr(obj["projectcode"])
+							if code != "" {
+								detail1 = strings.ReplaceAll(detail1, code, "*********")
 							}
-							if len(idObjs) > index {
-								winnerId = util.ObjToString(idObjs[index])
+							//座机
+							re2 := regexp.MustCompile("((0\\d{2,3})-)(\\d{7,8})(-(\\d{3,}))?")
+							detail2 := re2.ReplaceAllString(detail1, `<span class="freeView">点击查看</span>`)
+							re4 := regexp.MustCompile("((400)-)(\\d{3,4}-)(\\d{3,})")
+							detail4 := re4.ReplaceAllString(detail2, `<span class="freeView">点击查看</span>`)
+							//邮箱
+							re3 := regexp.MustCompile("([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)")
+							detail3 := re3.ReplaceAllString(detail4, `<span class="freeView">点击查看</span>`)
+							obj["detail"] = strings.ReplaceAll(strings.ReplaceAll(detail3, `<span class="freeView">点击查看</span><span class="freeView">点击查看</span>`, `<span class="freeView">点击查看</span>`), "*********", code)
+						}
+					}
+					if obj["projectname"] != nil {
+						s.SetSession("projectname", obj["projectname"])
+					}
+					if obj["entidlist"] != nil { //大会员中标企业跳转至画像
+						if winner := util.ObjToString(obj["winner"]); winner != "" {
+							s_winner := util.ObjToString(obj["s_winner"])
+							idObjs, _ := obj["entidlist"].([]interface{})
+							winnerId := ""
+							if names := strings.Split(s_winner, ","); len(names) > 1 {
+								index := 0
+								for i := 0; i < len(names); i++ {
+									if names[i] == winner {
+										index = i
+										break
+									}
+								}
+								if len(idObjs) > index {
+									winnerId = util.ObjToString(idObjs[index])
+								}
+							} else { //中标企业仅一个
+								if len(idObjs) > 0 {
+									winnerId = util.ObjToString(idObjs[0])
+								}
 							}
-						} else { //中标企业仅一个
-							if len(idObjs) > 0 {
-								winnerId = util.ObjToString(idObjs[0])
+							if winnerId != "" && winnerId != "-" {
+								obj["entId"] = util.EncodeArticleId2ByCheck(winnerId)
 							}
 						}
-						if winnerId != "" && winnerId != "-" {
-							obj["entId"] = util.EncodeArticleId2ByCheck(winnerId)
-						}
 					}
+				} else {
+					obj = map[string]interface{}{
+						"title": obj["title"],
+						"_id":   obj["_id"],
+					}
+				}
+				obj["urlpath"] = s.Uri()
+				obj["industry"] = industry
+				if ssOpenid != nil {
+					obj["ucbsId"] = util.EncodeArticleId2ByCheck("ucbs#" + ssOpenid.(string) + "#" + id)
 				}
+				s.T["obj"] = obj
 				s.T["url"] = s.Uri()
 
 				content, _ := s.Render4Cache("/pc/biddetail_rec.html", &s.T)

+ 3 - 3
src/jfw/front/swordfish.go

@@ -516,13 +516,13 @@ func wxvisitD(sid, userId, openId string, isPayUser bool) (objdata map[string]in
 
 //wx pc obj字段统一处理
 func ObjData(isPayUser bool, sid string, lent int) (t bool, obj map[string]interface{}) {
-	brobj, ok := mongodb.Find("bidding_rec", bson.M{"s_id": sid}, `{"l_recoverydate":-1}`, nil, false, 0, 1)
+	brobj, ok := mongodb.Find("bidding_rec", bson.M{"s_id": sid}, `{"l_recoverydate":-1}`, public.MgoBiddingFields, false, 0, 1)
 	if ok && (*brobj) != nil && len(*brobj) == 1 && (*brobj)[0] != nil {
 		obj = (*brobj)[0]
 	} else {
-		aobj, ok := public.Mgo_Bidding.FindById(public.DbConf.Mongodb.Bidding.Collection, sid, nil)
+		aobj, ok := public.Mgo_Bidding.FindById(public.DbConf.Mongodb.Bidding.Collection, sid, public.MgoBiddingFields)
 		if ok && (aobj == nil || *aobj == nil || len(*aobj) == 0) {
-			aobj, ok = public.Mgo_Bidding.FindById(public.DbConf.Mongodb.Bidding.Collection_back, sid, nil)
+			aobj, ok = public.Mgo_Bidding.FindById(public.DbConf.Mongodb.Bidding.Collection_back, sid, public.MgoBiddingFields)
 		}
 		obj = *aobj
 	}

+ 98 - 91
src/jfw/modules/app/src/app/front/shorturl.go

@@ -66,30 +66,31 @@ func (s *Short) Article(stype, id string) error {
 
 	s.T["keywords"] = kds
 	var obj map[string]interface{}
+	var canRead bool = true
 	obj = wxvisitD(sid, userId, isVip || isEntniche || i_member_status > 0)
 	if isVip || i_member_status > 0 || isEntniche {
-		s.T["canRead"] = true
+		canRead = true
 	} else {
 		watchKey := fmt.Sprintf("article_count_%d_%s_%d_%s", time.Now().Year(), time.Now().Month(), time.Now().Day(), userId)
 		subTypeStr, _ := obj["subtype"].(string)
 		if strings.Contains(subTypeStr, "拟建") || strings.Contains(subTypeStr, "采购意向") {
-			s.T["canRead"] = false
+			canRead = false
 		} else {
 			if seeRes := redis.Get("other", watchKey); seeRes != nil && seeRes != "" {
 				if resVal, _ := seeRes.(string); resVal != "" {
 					sidss := strings.Split(resVal, "_")
 					canRead := config.Sysconfig["canReadNotice"]
 					if len(sidss) < util.IntAll(canRead) {
-						s.T["canRead"] = true
+						canRead = true
 						sidss = append(sidss, sid)
 						arrs := RemoveDuplicatesAndEmpty(sidss)
 						newVal := strings.Join(arrs, "_")
 						redis.Put("other", watchKey, newVal, jy.GetExpire())
 					} else {
-						s.T["canRead"] = false
+						canRead = false
 						for _, v := range sidss {
 							if sid == v {
-								s.T["canRead"] = true
+								canRead = true
 								break
 							}
 						}
@@ -97,113 +98,119 @@ func (s *Short) Article(stype, id string) error {
 				}
 			} else {
 				redis.Put("other", watchKey, sid, jy.GetExpire())
-				s.T["canRead"] = true
+				canRead = true
 			}
 			//检验是否留资
 			ok := CNode(userId)
 			if ok {
-				s.T["canRead"] = true
+				canRead = true
 			}
 		}
 	}
-
+	s.T["canRead"] = canRead
 	if len(obj) > 0 {
-		if belongUserId != "" && belongUserId != userId && util.ObjToString(obj["subtype"]) != "拟建" { //分享开打的
-			article_id := util.CommonDecodeArticle(stype, id)[0]
-			key := fmt.Sprintf("integral_article_%s_%s_%s", article_id, belongUserId, userId)
-			if redis.Incr("other", key) == 1 {
-				redis.SetExpire("other", key, 60*60*24)
-				err := jy.Publish(public.Mgo_Log, config.Sysconfig["nsq"].(string), config.Sysconfig["nsq_topic"].(string), jy.Jyweb_article_open, belongUserId, jy.Jyapp_node1)
-				if err != nil {
-					log.Println("nsq队列写入失败-->", jy.Jyweb_article_open, belongUserId)
-				} /* else {
-					//integral_article_ +userId+ 三级页id
-					redis.Put("other", fmt.Sprintf("integral_article_%s_%s_%s", article_id, belongUserId, userId), "1", 60*60*24)
-				}*/
+		if canRead {
+			if belongUserId != "" && belongUserId != userId && util.ObjToString(obj["subtype"]) != "拟建" { //分享开打的
+				article_id := util.CommonDecodeArticle(stype, id)[0]
+				key := fmt.Sprintf("integral_article_%s_%s_%s", article_id, belongUserId, userId)
+				if redis.Incr("other", key) == 1 {
+					redis.SetExpire("other", key, 60*60*24)
+					err := jy.Publish(public.Mgo_Log, config.Sysconfig["nsq"].(string), config.Sysconfig["nsq_topic"].(string), jy.Jyweb_article_open, belongUserId, jy.Jyapp_node1)
+					if err != nil {
+						log.Println("nsq队列写入失败-->", jy.Jyweb_article_open, belongUserId)
+					} /* else {
+						//integral_article_ +userId+ 三级页id
+						redis.Put("other", fmt.Sprintf("integral_article_%s_%s_%s", article_id, belongUserId, userId), "1", 60*60*24)
+					}*/
+				}
 			}
-		}
-		//获取打赏文案
-		//util.ReadConfig(&config.Sysconfig)
-		s.T["rewardText"], s.T["advertText"] = getRewardText()
-		s.T["advertImg"] = config.Sysconfig["advertImg"]
-		s.T["advertName"] = config.Sysconfig["advertName"]
-		s.T["advertUrl"] = config.Sysconfig["advertUrl"]
-		obj["industry"] = industry
-		obj["ucbsId"] = util.EncodeArticleId2ByCheck("ucbs#" + userId + "#" + id)
-		if obj["entidlist"] != nil { //大会员中标企业跳转至画像
+			//获取打赏文案
+			//util.ReadConfig(&config.Sysconfig)
+			if obj["entidlist"] != nil { //大会员中标企业跳转至画像
 
-			if winner := util.ObjToString(obj["winner"]); winner != "" {
-				s_winner := util.ObjToString(obj["s_winner"])
-				idObjs, _ := obj["entidlist"].([]interface{})
-				winnerId := ""
-				if names := strings.Split(s_winner, ","); len(names) > 1 {
-					index := 0
-					for i := 0; i < len(names); i++ {
-						if names[i] == winner {
-							index = i
-							break
+				if winner := util.ObjToString(obj["winner"]); winner != "" {
+					s_winner := util.ObjToString(obj["s_winner"])
+					idObjs, _ := obj["entidlist"].([]interface{})
+					winnerId := ""
+					if names := strings.Split(s_winner, ","); len(names) > 1 {
+						index := 0
+						for i := 0; i < len(names); i++ {
+							if names[i] == winner {
+								index = i
+								break
+							}
+						}
+						if len(idObjs) > index {
+							winnerId = util.ObjToString(idObjs[index])
+						}
+					} else { //中标企业仅一个
+						if len(idObjs) > 0 {
+							winnerId = util.ObjToString(idObjs[0])
 						}
 					}
-					if len(idObjs) > index {
-						winnerId = util.ObjToString(idObjs[index])
-					}
-				} else { //中标企业仅一个
-					if len(idObjs) > 0 {
-						winnerId = util.ObjToString(idObjs[0])
+					if winnerId != "" && winnerId != "-" {
+						obj["entId"] = util.EncodeArticleId2ByCheck(winnerId)
 					}
 				}
-				if winnerId != "" && winnerId != "-" {
-					obj["entId"] = util.EncodeArticleId2ByCheck(winnerId)
-				}
-			}
-		}
-		s.T["userId"] = se.Encode2Hex(userId) //加密用户userid
-		if obj["winnertel"] == nil && isbid(obj["subtype"]) {
-			obj["winner_enttel"] = getwinnertel(obj["winner"])
-		}
-		if !(isVip || i_member_status > 0 || isEntniche) { //非会员不展示电话字段
-			if obj["winnertel"] != nil {
-				obj["winnertel"] = "无权限"
 			}
-			if obj["winner_enttel"] != "" {
-				obj["winner_enttel"] = "无权限"
+			s.T["userId"] = se.Encode2Hex(userId) //加密用户userid
+			if obj["winnertel"] == nil && isbid(obj["subtype"]) {
+				obj["winner_enttel"] = getwinnertel(obj["winner"])
 			}
-		}
-		//判断是否公开联系人信息
-		if util.Int64All(obj["buyerhint"]) == 2 {
-			obj["buyerperson"] = ""
-			obj["buyertel"] = ""
-		}
-		//免费用户正文手机号替换
-		if obj["site"] == "剑鱼信息发布平台" && i_member_status <= 0 {
-			//采购电话中标单位电话置空
-			if util.InterfaceToStr(obj["buyertel"]) != "" {
-				obj["buyertel"] = "freeView"
+			if !(isVip || i_member_status > 0 || isEntniche) { //非会员不展示电话字段
+				if obj["winnertel"] != nil {
+					obj["winnertel"] = "无权限"
+				}
+				if obj["winner_enttel"] != "" {
+					obj["winner_enttel"] = "无权限"
+				}
 			}
-			if util.InterfaceToStr(obj["winnertel"]) != "" {
-				obj["winnertel"] = "freeView"
+			//判断是否公开联系人信息
+			if util.Int64All(obj["buyerhint"]) == 2 {
+				obj["buyerperson"] = ""
+				obj["buyertel"] = ""
 			}
-			//正文电话 手机号 邮箱处理
-			if detail, _ := obj["detail"].(string); detail != "" {
-				//手机号
-				re1 := regexp.MustCompile("1[345789]{1}\\d{9}")
-				detail1 := re1.ReplaceAllString(detail, `<span class="freeView">点击查看</span>`)
-				code := util.InterfaceToStr(obj["projectcode"])
-				if code != "" {
-					detail1 = strings.ReplaceAll(detail1, code, "*********")
+			//免费用户正文手机号替换
+			if obj["site"] == "剑鱼信息发布平台" && i_member_status <= 0 {
+				//采购电话中标单位电话置空
+				if util.InterfaceToStr(obj["buyertel"]) != "" {
+					obj["buyertel"] = "freeView"
+				}
+				if util.InterfaceToStr(obj["winnertel"]) != "" {
+					obj["winnertel"] = "freeView"
+				}
+				//正文电话 手机号 邮箱处理
+				if detail, _ := obj["detail"].(string); detail != "" {
+					//手机号
+					re1 := regexp.MustCompile("1[345789]{1}\\d{9}")
+					detail1 := re1.ReplaceAllString(detail, `<span class="freeView">点击查看</span>`)
+					code := util.InterfaceToStr(obj["projectcode"])
+					if code != "" {
+						detail1 = strings.ReplaceAll(detail1, code, "*********")
+					}
+					//座机
+					re2 := regexp.MustCompile("((0\\d{2,3})-)(\\d{7,8})(-(\\d{3,}))?")
+					detail2 := re2.ReplaceAllString(detail1, `<span class="freeView">点击查看</span>`)
+					re4 := regexp.MustCompile("((400)-)(\\d{3,4}-)(\\d{3,})")
+					detail4 := re4.ReplaceAllString(detail2, `<span class="freeView">点击查看</span>`)
+					//邮箱
+					re3 := regexp.MustCompile("([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)")
+					detail3 := re3.ReplaceAllString(detail4, `<span class="freeView">点击查看</span>`)
+					obj["detail"] = strings.ReplaceAll(strings.ReplaceAll(detail3, `<span class="freeView">点击查看</span><span class="freeView">点击查看</span>`, `<span class="freeView">点击查看</span>`), "*********", code)
 				}
-				//座机
-				re2 := regexp.MustCompile("((0\\d{2,3})-)(\\d{7,8})(-(\\d{3,}))?")
-				detail2 := re2.ReplaceAllString(detail1, `<span class="freeView">点击查看</span>`)
-				re4 := regexp.MustCompile("((400)-)(\\d{3,4}-)(\\d{3,})")
-				detail4 := re4.ReplaceAllString(detail2, `<span class="freeView">点击查看</span>`)
-				//邮箱
-				re3 := regexp.MustCompile("([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)")
-				detail3 := re3.ReplaceAllString(detail4, `<span class="freeView">点击查看</span>`)
-				obj["detail"] = strings.ReplaceAll(strings.ReplaceAll(detail3, `<span class="freeView">点击查看</span><span class="freeView">点击查看</span>`, `<span class="freeView">点击查看</span>`), "*********", code)
+			}
+		} else {
+			obj = map[string]interface{}{
+				"title": obj["title"],
+				"_id":   obj["_id"],
 			}
 		}
-
+		s.T["rewardText"], s.T["advertText"] = getRewardText()
+		s.T["advertImg"] = config.Sysconfig["advertImg"]
+		s.T["advertName"] = config.Sysconfig["advertName"]
+		s.T["advertUrl"] = config.Sysconfig["advertUrl"]
+		obj["industry"] = industry
+		obj["ucbsId"] = util.EncodeArticleId2ByCheck("ucbs#" + userId + "#" + id)
 		s.T["obj"] = obj
 		s.T["forceShareFlag"] = public.CheckUserNeedForceShare(userId, public.ShareType_detail)
 		s.T["isIosExam"], s.T["isIosExamPhone"], _, _ = IosExamInfo(s.Action, false, false)

+ 2 - 2
src/jfw/modules/app/src/app/front/swordfish.go

@@ -484,9 +484,9 @@ func wxvisitD(sid, userId string, isPayUser bool) (objdata map[string]interface{
 	defer util.Catch()
 	var obj map[string]interface{}
 	if len(sid) > 5 {
-		aobj, ok := public.Mgo_Bidding.FindById(public.DbConf.Mongodb.Bidding.Collection, sid, nil)
+		aobj, ok := public.Mgo_Bidding.FindById(public.DbConf.Mongodb.Bidding.Collection, sid, public.MgoBiddingFields)
 		if ok && (aobj == nil || *aobj == nil || len(*aobj) == 0) {
-			aobj, ok = public.Mgo_Bidding.FindById(public.DbConf.Mongodb.Bidding.Collection_back, sid, nil)
+			aobj, ok = public.Mgo_Bidding.FindById(public.DbConf.Mongodb.Bidding.Collection_back, sid, public.MgoBiddingFields)
 		}
 		//aobj, ok := elastic.GetByIdField("bidding", "bidding", sid, ""), true
 		obj = *aobj

+ 8 - 7
src/jfw/modules/app/src/web/templates/weixin/wxinfocontent.html

@@ -543,6 +543,13 @@
                     <!-- 标签列表 -->
                     <div class="collec_list"></div>
                     <div class="tool_bottom">
+                        <div class="right-container">
+                            <div class="collec_star">
+                                <span class="icon weishoucang"></span>
+                                <span class="icon-text">收藏</span>
+                            </div>
+                            {{if .T.obj.hasSession}}{{if or .T.obj.projectname .T.obj.projectcode}}<span class="follow" style="display: none">{{if .T.obj.followFlag}}<i class="glyphicon yiguanzhu"></i>已关注{{else}}<i class="glyphicon weiguanzhu"></i>关注项目{{end}}</span>{{end}}{{else}}<!--<a href="/swordfish/share/-1" style="text-decoration: none;color:#24C0D7;"><span class="follow"><i class="glyphicon weiguanzhu"></i></span>关注项目</a>-->{{end}}
+                        </div>
                         <script>
                             var l_publishtime = {{.T.obj.l_publishtime}};
                             if(l_publishtime != ""){
@@ -552,13 +559,6 @@
                                 }
                             }
                         </script>
-                        <div class="right-container">
-                            <div class="collec_star">
-                                <span class="icon weishoucang"></span>
-                                <span class="icon-text">收藏</span>
-                            </div>
-                            {{if .T.obj.hasSession}}{{if or .T.obj.projectname .T.obj.projectcode}}<span class="follow" style="display: none">{{if .T.obj.followFlag}}<i class="glyphicon yiguanzhu"></i>已关注{{else}}<i class="glyphicon weiguanzhu"></i>关注项目{{end}}</span>{{end}}{{else}}<!--<a href="/swordfish/share/-1" style="text-decoration: none;color:#24C0D7;"><span class="follow"><i class="glyphicon weiguanzhu"></i></span>关注项目</a>-->{{end}}
-                        </div>
                     </div>
                 {{end}}
                 <div class="forecast" style="display: none">
@@ -1306,6 +1306,7 @@
             $(".tab-ct").hide()
             $(".atta-list").hide()
             $(".abs").hide()
+            $(".right-container").hide()
         }
 
         if (hasSubType || !canRead) {

+ 4 - 4
src/jfw/modules/weixin/src/config.json

@@ -16,11 +16,11 @@
     "weixinrpcport": "8083",
     "webrpcport": "127.0.0.1:8084",
     "jyop_webrpcport": "127.0.0.1:8012",
-    "webdomain": "https://web-zxl.jydev.jianyu360.com",
-    "appid":"wxdedd73f450993685",
-    "appsecret":"d55898fde0b7887e5fe4660bd2494700",
+    "webdomain": "https://web-ws.jydev.jianyu360.com",
+    "appid":"wx5b1c6e7cc4dac0e4",
+    "appsecret":"b026103ffebd2291b3edb7a269612112",
     "apptoken": "top2022top2022",
-    "proxysess": "https://web-zxl.jydev.jianyu360.com/front/sess/%s",
+    "proxysess": "https://web-ws.jydev.jianyu360.com/front/sess/%s",
     "followCompany": 10,
     "welcomemsg": "用剑鱼标讯,所有功能完全免费,\n和传统的会员制说再见!\n\n<a href='%s'>点击这里</a>设置关键词,或直接回复“订阅 关键词”,如“订阅 教学设备”,您将随时随地接收招标信息!\n\n剑鱼标讯,让投标无限可能!",
     "tpl_subscribe_push_id": "IY_RWWzMlwDK6hcd6RAzTec6qre8n5r8PNOOUM_hgk0",

+ 1 - 0
src/jfw/public/public.go

@@ -21,6 +21,7 @@ var filterReg_3 = regexp.MustCompile("(项目|公告|公示)$")
 var filterReg_2 = regexp.MustCompile("^[)\\)>》】\\]}}〕,,;;::'\"“”。.\\??、/+=\\_—*&……\\^%$¥@!!`~·(\\(<《【\\[{{〔]+$")
 var filterReg_1 = regexp.MustCompile("^([0-9]{1,3}|[零一二三四五六七八九十]{1,2}|联系人?|电话|地址|编号|采购|政府采购|成交|更正|招标|中标|变更|结果)$")
 var filterReg = regexp.MustCompile("^[的人号时元万公告项目地址电话邮编日期联系招标中结果成交项目项目采购采购项目政府采购公告更正公告]+$")
+var MgoBiddingFields = `{"_id":1,"projectname":1,"projectcode":1,"title":1,"s_winner":1,"buyertel":1,"bidstatus":1,"site":1,"bidamount":1,"toptype":1,"winneraddr":1,"winner":1,"agency":1,"buyer":1,"detail":1,"city":1,"subtype":1,"buyerclass":1,"href":1,"comeintime":1,"winnertel":1,"area":1,"publishtime":1,"buyeraddr":1,"agencytel":1,"budget":1,"entidlist":1,"buyerperson":1,"winnerperson":1,"agencyaddr":1}`
 
 const (
 	INDEX = "bidding"

+ 7 - 5
src/web/staticres/public-pc/js/article-content.js

@@ -741,8 +741,10 @@ $(window).scroll(function(event){
   var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
   var t1top = 0;
   if(goTemplateData.params.obj.subtype!="拟建"&&goTemplateData.params.obj.subtype!="违规"){
-    offsetTop = $(".recoveryfat").offset().top;
-    t1top = $(".tab1").offset().top;
+	if ($(".recoveryfat").html()!=undefined){
+    	offsetTop = $(".recoveryfat").offset().top;
+    	t1top = $(".tab1").offset().top;
+    }
   }
   if(t1top<=(scrollTop+65)&&t1top!=0){
     if(scrollflag){
@@ -1217,7 +1219,7 @@ $(function(){
   //获取原文百度统计跳转
   var originalhref;
   var originalUrl = goTemplateData.params.obj.url;
-  if (originalUrl!=""){
+  if (originalUrl!=""&&originalUrl!=undefined){
     originalUrl = originalUrl.replace("http://https://","https://");
     if (window.location.href.indexOf("mailprivate")>0||isWechat()){
       originalhref='/front/transfer?url='+encodeURIComponent(originalUrl);
@@ -1287,7 +1289,7 @@ $(function(){
       }
     }
   }
-  if(sds){
+  if(sds&&content){
     if(!insertflog){
       $(".com-guanzhu .scanqr>span:last").html("随时掌握招标信息");
       $(".com-guanzhu>.scanqr>img").height(135);
@@ -1795,7 +1797,7 @@ var industry = getQueryString("industry");
 var subscopeclass = goTemplateData.params.obj.s_subscopeclass;
 var buyerclass =goTemplateData.params.obj.buyerclass;
 
-if (area !="" && area != "A"){
+if (area !="" && area != "A"&&area!=undefined){
   $(".com-statusbar").append('<span class="com-area"><a href="/list/area/'+goTemplateData.params.obj.areaadd+'.html">'+area+'</a></span>');
 }
 if(typeof(type) == "undefined" || type == null || type == ""){

+ 3 - 2
src/web/templates/pc/biddetail_rec.html

@@ -335,7 +335,7 @@
 						var doReq = false
 
 						$.post("/bigmember/follow/project/check",{sid:{{.T.obj._id}}},function(res){
-							if(res.data.showFollow){
+							if(res.data&&res.data.showFollow){
 								if( res.data.flag ){
 									//已关注
 									$("#followedProject").css("display","")
@@ -1464,6 +1464,7 @@ var ucbs_source="pc_rec",ucbsId="{{.T.obj.ucbsId}}";
       $(".tabfat").hide()
       $(".recoveryfat").hide()
       $("#attach-list").hide()
+      $(".com-statusbar").hide()
     }
 
 		//是否显示遮罩层
@@ -1564,7 +1565,7 @@ var ucbs_source="pc_rec",ucbsId="{{.T.obj.ucbsId}}";
 	<!-- 多条广告如下脚本只需引入一次 -->
 	<script type="text/javascript" src="//cpro.baidustatic.com/cpro/ui/cm.js" async="async" defer="defer" >
 	</script>
-  <script src='{{Msg "seo" "cdn"}}/public-pc/js/article-content.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Msg "seo" "cdn"}}/public-pc/js/article-content.js?v=1{{Msg "seo" "version"}}'></script>
 <!--百度统计start-->
 {{include "/common/baiducc.html"}}
 <!--百度统计end-->

+ 4 - 3
src/web/templates/weixin/wxinfocontent_rec.html

@@ -1714,6 +1714,7 @@ function checkShowDialog () {
     $(".tab-ct").hide()
     $(".atta-list").hide()
     $(".abs").hide()
+    $(".toolbar").hide()
   }
   if (hasSubType || !canRead) {
 		$(".prebuilt").remove()
@@ -2090,7 +2091,7 @@ $('.bigvip_drain').on('click', function() {
 	if(window.entniche) {
 			powerInt.push(3)
 	}
-	console.log(powerInt)
+	//console.log(powerInt)
 	$.ajax({
 			type: 'POST',
 			url: '/publicapply/drainage/behaviorLog',
@@ -2116,7 +2117,7 @@ $('.bigvip_drain').on('click', function() {
 // 投标决策分析入口
 $('.bid-dec-in').click(function(){
   sessionStorage.removeItem('big-analysis_filter')
-  console.log(powerArr, id)
+  //console.log(powerArr, id)
   if (powerArr.indexOf(6) > -1) {
     // 目前微信端无大会员相关功能 不会展示投标决策分析入口
     // location.href = '/big/wx/page/analysis_filter?sId=' + id
@@ -3200,7 +3201,7 @@ $.ajax({
               });
               getAjaxAdv()
               var frames = document.getElementById("iframeu6603899_0");
-              console.log(frames, 'frames')
+              //console.log(frames, 'frames')
               IframeOnClick.track(frames, function() {
                   jQuery(document).click();
               });