wangshan 5 жил өмнө
parent
commit
4be9020f94

+ 6 - 0
src/jfw/front/vipsubscribe.go

@@ -20,6 +20,7 @@ type Subscribepay struct {
 	toSetInfoTypePage xweb.Mapper `xweb:"/front/vipsubscribe/toSetInfoTypePage"`   //订阅收费设置信息类型
 	toSetPushSetPage  xweb.Mapper `xweb:"/front/vipsubscribe/toSetPushSetPage"`    //订阅收费推送设置
 	toSetOtherKwsPage xweb.Mapper `xweb:"/front/vipsubscribe/toSet(.*)Page"`       //订阅收费附加词和排除词设置
+	toVIPViewPage     xweb.Mapper `xweb:"/front/vipsubscribe/toVIPViewPage"`       //订阅收费预览
 
 	//修改
 	toEditSubPage     xweb.Mapper `xweb:"/front/vipsubscribe/toEditSubPage"`     //订阅收费修改页面
@@ -44,6 +45,11 @@ func init() {
 	xweb.AddAction(&Subscribepay{})
 }
 
+//推送设置
+func (s *Subscribepay) ToVIPViewPage() {
+	s.Render("/weixin/vipsubscribe/vip_viewPage.html")
+}
+
 //附加词|排除词
 func (s *Subscribepay) ToSetOtherKwsPage(page string) {
 	s.Render("/weixin/vipsubscribe/" + page + "Word.html")

+ 2 - 0
src/jfw/modules/subscribepay/src/config.json

@@ -2,6 +2,8 @@
 	"mongodbServers": "192.168.3.11:27080",
     "mongodbPoolSize": 25,
     "mongodbName": "qfw",
+    "elasticsearch": "http://192.168.3.11:9800",
+    "elasticPoolSize": 30,
     "redisaddrs": "other=192.168.3.128:1712,session=192.168.3.128:1712",
     "webport": "86",
     "weixinrpc": "127.0.0.1:8083",

+ 2 - 0
src/jfw/modules/subscribepay/src/config/config.go

@@ -9,6 +9,8 @@ type config struct {
 	MongodbServers  string
 	MongodbPoolSize int
 	MongodbName     string
+	Elasticsearch   string
+	ElasticPoolSize int
 	Redisaddrs      string
 	Webport         string
 	Weixinrpc       string

+ 10 - 6
src/jfw/modules/subscribepay/src/service/afterPay.go

@@ -1,6 +1,7 @@
 package service
 
 import (
+	"fmt"
 	"log"
 	qutil "qfw/util"
 	"qfw/util/redis"
@@ -18,18 +19,21 @@ type AfterPay struct {
 	*xweb.Action
 	getUserInfo xweb.Mapper `xweb:"/afterPay/getUserInfo"` //获取用户当前支付后的信息
 	setUserInfo xweb.Mapper `xweb:"/afterPay/setUserInfo"` //保存用户当前支付后的信息
-	pushView    xweb.Mapper `xweb:"/afterPay/pushView"`    //VIP推送预览
+	getPushView xweb.Mapper `xweb:"/afterPay/getPushView"` //VIP推送预览
 }
 
 //
-func (a *AfterPay) PushView() error {
+func (a *AfterPay) GetPushView() error {
 	defer qutil.Catch()
 	userId, _ := a.GetSession("userId").(string)
 	if userId != "" {
-		sql := GetSqlObjFromId(userId)
-		log.Println(sql.Buyerclass)
-		qstr := GetVIPViewSql(sql)
-		log.Println("qstr:", qstr)
+		pageNum, _ := a.GetInteger("pageNum")
+		keys, list, hasNextPage := util.SubViewDatas(userId, "", pageNum)
+		a.ServeJson(map[string]interface{}{
+			"keys":        strings.Replace(strings.Trim(fmt.Sprint(keys), "[]"), " ", ",", -1),
+			"list":        list,
+			"hasNextPage": hasNextPage,
+		})
 	}
 	return nil
 }

+ 0 - 2
src/jfw/modules/subscribepay/src/service/orderListDetails.go

@@ -264,8 +264,6 @@ func (o *OrderListDetails) PayCancel() bool {
 	}, bson.M{
 		"order_code":   order_code,
 		"order_status": orderStatus_deleted, //已删除
-	}, bson.M{
-		"order_status": orderStatus_paid, //已购买
 	}, bson.M{
 		"order_status": orderStatus_cancel,
 	})

+ 7 - 0
src/jfw/modules/subscribepay/src/util/db.go

@@ -2,6 +2,8 @@ package util
 
 import (
 	. "config"
+	qutil "qfw/util"
+	"qfw/util/elastic"
 	mg "qfw/util/mongodb"
 	"qfw/util/mysql"
 	"qfw/util/redis"
@@ -20,6 +22,11 @@ func init() {
 	// 	Config.Cassandra.Host,
 	// 	map[string]int{"port": Config.Cassandra.Port},
 	// )
+	//初始化elastic
+	elastic.InitElasticSize(
+		Config.Elasticsearch,
+		qutil.IntAllDef(Config.ElasticPoolSize, 30),
+	)
 	//初始化redis
 	redisConfig := Config.Redisaddrs
 	if redisConfig != "" {

+ 52 - 18
src/jfw/modules/subscribepay/src/service/vrew.go → src/jfw/modules/subscribepay/src/util/vrew.go

@@ -1,36 +1,68 @@
-package service
+package util
 
 import (
 	"encoding/json"
 	"fmt"
 	"log"
 	qutil "qfw/util"
+	"qfw/util/elastic"
 	"strconv"
 	"strings"
-	"util"
 
 	"gopkg.in/mgo.v2/bson"
 )
 
 /*已选条件--关键词*/
-type KeyWord struct {
+type ViewKeyWord struct {
 	Keyword  []string `json:"key"`       //关键词
 	Appended []string `json:"appendkey"` //附加词
 	Exclude  []string `json:"notkey"`    //排除词
 }
 
 /*已选条件*/
-type SieveCondition struct {
-	Area       []string  //地区-省份
-	City       []string  //地区-城市
-	Buyerclass []string  //采购行业
-	Keyword    []KeyWord //关键词
-	SelectType string    //筛选(正文 or 标题)
-	Subtype    []string  //信息类型
+type ViewCondition struct {
+	Area       []string      //地区-省份
+	City       []string      //地区-城市
+	Buyerclass []string      //采购行业
+	Keyword    []ViewKeyWord //关键词
+	SelectType string        //筛选(正文 or 标题)
+	Subtype    []string      //信息类型
+}
+
+const (
+	INDEX          = "bidding"
+	TYPE           = "bidding"
+	bidSearch_sort = `{"publishtime":-1}`
+	findfields     = `"title"`
+
+	view_maxPageNum = 20
+	view_pageSize   = 50
+	bidSearch_field = `"_id","title","publishtime","toptype","subtype","type","area","buyerclass"`
+)
+
+func SubViewDatas(userId, allquery string, pageNum int) (keys []interface{}, list *[]map[string]interface{}, hasNextPage bool) {
+	if userId == "" {
+		return
+	}
+	sql := GetSqlObjFromId(userId)
+	for _, v := range sql.Keyword {
+		for _, k := range v.Keyword {
+			keys = append(keys, k)
+		}
+	}
+	qstr := GetVIPViewSql(sql)
+	list = elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSearch_sort, bidSearch_field, (pageNum-1)*view_pageSize, view_pageSize, 0, false)
+	if list != nil {
+		for _, v := range *list {
+			v["_id"] = qutil.EncodeArticleId2ByCheck(qutil.ObjToString(v["_id"]))
+		}
+	}
+	hasNextPage = list != nil && len(*list) == view_pageSize && pageNum < view_maxPageNum
+	return
 }
 
 //获取vip订阅预览的查询语句
-func GetVIPViewSql(scd *SieveCondition) string {
+func GetVIPViewSql(scd *ViewCondition) string {
 	query := `{"query":{"bool":{"must":[%s],"should":[%s],"minimum_should_match": %d}}}`
 	query_bool_should := `{"bool":{"should":[%s],"minimum_should_match": 1}}`
 	multi_match := `{"multi_match": {"query": %s,"type": "phrase", "fields": [%s]}}`
@@ -131,12 +163,14 @@ func GetVIPViewSql(scd *SieveCondition) string {
 	//	log.Println("------qstr", qstr)
 	return qstr
 }
-func GetSqlObjFromId(_id string) *SieveCondition {
+
+//
+func GetSqlObjFromId(_id string) *ViewCondition {
 	var (
 		query *map[string]interface{}
 		ok    bool
 	)
-	if query, ok = util.MQFW.FindById("user", _id, `{"o_vipjy":1}`); !ok {
+	if query, ok = MQFW.FindById("user", _id, `{"o_vipjy":1}`); !ok {
 		return nil
 	}
 	o_vipjy, _ := (*query)["o_vipjy"].(map[string]interface{})
@@ -144,7 +178,7 @@ func GetSqlObjFromId(_id string) *SieveCondition {
 	a_buyerclass := o_vipjy["a_buyerclass"].([]interface{})
 	a_infotype := o_vipjy["a_infotype"].([]interface{})
 	o_area := o_vipjy["o_area"].(map[string]interface{})
-	return &SieveCondition{
+	return &ViewCondition{
 		Keyword:    getKeyWordArrFromDbResult(a_items),
 		Buyerclass: qutil.ObjArrToStringArr(a_buyerclass),
 		Subtype:    qutil.ObjArrToStringArr(a_infotype),
@@ -177,14 +211,14 @@ func getStringArrFromDbResult(area map[string]interface{}, i int) (arr []string)
 }
 
 //关键词 附加词 排除词
-func getKeyWordArrFromDbResult(a_items []interface{}) (arr []KeyWord) {
+func getKeyWordArrFromDbResult(a_items []interface{}) (arr []ViewKeyWord) {
 	if a_items == nil {
 		return
 	}
 	for _, v := range a_items {
 		kwsArr := v.(map[string]interface{})["a_key"]
 		for _, k := range kwsArr.([]interface{}) {
-			kw := KeyWord{}
+			kw := ViewKeyWord{}
 			b, e := json.Marshal(k)
 			if e != nil {
 				log.Println(e.Error())
@@ -202,7 +236,7 @@ func MergeKws(userId string) {
 	if userId == "" {
 		return
 	}
-	data, ok := util.MQFW.FindById("user", userId, `{"o_jy":1,"o_vipjy":1}`)
+	data, ok := MQFW.FindById("user", userId, `{"o_jy":1,"o_vipjy":1}`)
 	var o_jy map[string]interface{}
 	var o_vipjy map[string]interface{}
 	if ok && data != nil && len(*data) > 0 {
@@ -222,7 +256,7 @@ func MergeKws(userId string) {
 			}
 			o_kws["a_key"] = _key
 			if o_kws != nil && len(o_kws) > 0 {
-				a := util.MQFW.UpdateById("user", userId, bson.M{
+				a := MQFW.UpdateById("user", userId, bson.M{
 					"$push": bson.M{"o_vipjy.a_items": o_kws},
 				})
 				log.Println(a)

+ 1 - 1
src/web/templates/weixin/resultpreview.html

@@ -89,7 +89,7 @@ if(firstPage != null && firstPage.length == 1){
 				$("#list").css("visibility","visible");
 			//},300);
 		}
-
+console.log(hasNextPage)
 		if(firstPage && firstPage.length == pageSize && noMore != "true"){
 			wxflag = $('.listcontent').dropload({
 				        scrollArea : window,

+ 1 - 1
src/web/templates/weixin/vipsubscribe/vip_index.html

@@ -101,7 +101,7 @@
                             </div>
                         </div>
                     </div>
-                    <div class="media_list" style="margin-top:.2rem;margin-bottom: .98rem;">
+                    <div class="media_list" style="margin-top:.2rem;margin-bottom: .98rem;display: none;">
                         <div class="media_left">
                             <img src="/vipsubscribe/image/data.png?v={{Msg "seo" "version"}}" alt="">
                             <span>数据报告</span>

+ 1 - 1
src/web/templates/weixin/vipsubscribe/vip_seniorset.html

@@ -103,7 +103,7 @@
 				if(!clickDelayed){
 					return;
 				}
-				window.location.href = "/wxpush/wxpushview";
+				window.location.href = "/front/vipsubscribe/toVIPViewPage";
 			});
 			
 			//微信提醒

+ 395 - 0
src/web/templates/weixin/vipsubscribe/vip_viewPage.html

@@ -0,0 +1,395 @@
+<html>
+<head>
+	<meta name="viewport" content="width=device-width,initial-scale=1.0">
+	<title>VIP订阅结果预览</title>
+	{{include "/common/inc.html"}}
+	<link href="{{Msg "seo" "cdn"}}/css/dropload.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+	<link href="{{Msg "seo" "cdn"}}/css/wxlist.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+	{{include "/common/weixin.html"}}
+	<script src="{{Msg "seo" "cdn"}}/js/jquery.js"></script>
+	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
+	<script src="{{Msg "seo" "cdn"}}/js/dropload.js?v={{Msg "seo" "version"}}"></script>
+	<script src="{{Msg "seo" "cdn"}}/js/fastclick.js?v={{Msg "seo" "version"}}"></script>
+	<script>
+		initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
+		var zbadd = {{Msg "seo" "ZBADDRESS"}};
+		var keys = [];
+		var sds = "";
+		var noMore = "false";
+		var listCache = "";
+		var wxflag = null;
+		var scrollTop = 0;
+		var pageNum = 1;
+		var pageSize = 50;
+		var hasNextPage = false;
+		$(function(){
+			new FastClick(document.body);
+			$(window).scroll(function(){
+				scrollTop = $(this).scrollTop();
+			});
+			if(sessionStorage && sessionStorage.resultpreviewScrollTop && sessionStorage.resultpreviewListCache){
+				pageNum = sessionStorage.resultpreviewPageNumCache;
+				noMore = sessionStorage.resultpreviewNoMoreCache;
+				hasNextPage = sessionStorage.resultpreviewHasNextData;
+				sds = sessionStorage.resultpreviewSds;
+				keys = sessionStorage.resultpreviewKeys;
+				appendListHtml([sessionStorage.resultpreviewListCache],pageNum);
+				if(noMore == "true"){
+					wxflag = $('.listcontent').dropload({
+						scrollArea : window,
+						loadDownFn : function(me){
+							if(wxflag == null){
+								wxflag = me;
+							}
+							noMoreData(me);
+						}
+					});
+					noMoreData(wxflag);
+				}
+				$(window).scrollTop(sessionStorage.resultpreviewScrollTop);
+				sessionStorage.removeItem("resultpreviewScrollTop");
+				sessionStorage.removeItem("resultpreviewPageNumCache");
+				sessionStorage.removeItem("resultpreviewListCache");
+				sessionStorage.removeItem("resultpreviewNoMoreCache");
+				sessionStorage.removeItem("resultpreviewHasNextData");
+				sessionStorage.removeItem("resultpreviewSds");
+			}else{
+				$("#list").css("visibility","hidden");
+				$(window).scrollTop(0);
+				getData();
+				$("#list").css("visibility","visible");
+			}
+			setTimeout(function(){
+				reloadData();
+			},500);
+		});
+		//
+		function getData(){
+			var reqParam = {
+				"pageNum": pageNum++
+			};
+			$.ajax({
+				type: 'post',
+				url: '/subscribepay/afterPay/getPushView',
+				data: reqParam,
+				dataType: 'json',
+				success: function(data){
+					if(data["list"] == null || data["list"].length == 0){
+						hasNoData();
+						return;
+					}else{
+						keys =  data["keys"].split(",")
+						sds = "VIPkey_"+keys.join("_").replace(/\s+/g,"+");
+						hasNextPage = data["hasNextPage"]
+						var html = getHtml(data["list"],reqParam["pageNum"]);
+						appendListHtml(html,pageNum);
+						if (pageNum==1){
+							wxflag = $('.listcontent').dropload({
+								scrollArea : window,
+								loadDownFn : function(me){
+									if(wxflag == null){
+										wxflag = me;
+									}
+									noMoreData(me);
+								}
+							});
+						}
+					}
+				},
+				error: function(xhr, type){
+					noMoreData(wxflag);
+				}
+			});
+		}
+		//
+		function reloadData(){
+			if (hasNextPage){
+				wxflag = $('.listcontent').dropload({
+					scrollArea : window,
+					loadDownFn : function(me){
+						if(wxflag == null){
+							wxflag = me;
+						}
+						if(!hasNextPage){
+							noMoreData(me);
+							return;
+						}
+						var reqParam = {
+							"pageNum": pageNum++
+						};
+						$.ajax({
+							type: 'post',
+							url: '/subscribepay/afterPay/getPushView',
+							data: reqParam,
+							dataType: 'json',
+							success: function(data){
+								if(data["list"] == null || data["list"].length == 0){
+									noMoreData(me);
+								}else{
+									var html = getHtml(data["list"],reqParam["pageNum"]);
+									appendListHtml(html,pageNum);
+									//没有下一页了
+									if(!data.hasNextPage){
+										noMoreData(me);
+									}else{
+										me.resetload();
+									}
+								}
+							},
+							error: function(xhr, type){
+								noMoreData(me);
+							}
+						});
+					}
+				});
+			}else{
+				wxflag = $('.main').dropload({
+			        scrollArea : window,
+			        loadDownFn : function(me){
+						if(wxflag == null){
+							wxflag = me;
+						}
+						noMoreData(me);
+			        }
+			    });
+				noMoreData(wxflag);
+			}
+		}
+		//
+		function hasNoData(){
+			$(".listcontent").hide();
+			$(".findnull").css("display","block");
+			$(".tipHeader").hide();
+		}
+		function getHtml(list,pageNum){
+			var html = '';
+			for(var i=0;i<list.length;i++){
+				var index = (pageNum-1)*pageSize+i+1;
+				var thisStyle = " style='padding-left: 15px;'";
+				if(index >= 10 && index < 100){
+					thisStyle = " style='padding-left: 26px;'";
+				}else if(index >= 100 && index < 1000){
+					thisStyle = " style='padding-left: 35px;'";
+				}else if(index >= 1000){
+					thisStyle = " style='padding-left: 45px;'";
+				}
+				var href = list[i].href;
+				if(!href || href.indexOf("java") > -1){							
+					href = "";
+				}
+				var title = list[i].title;
+				//关键词高亮
+				if(keys.length > 0){
+					for(var n=0;n<keys.length;n++){
+						var keysTemp = keys[n];
+						var isReplace = true;
+						var titleTemp = title;
+						for(var m=0;m<keysTemp.length;m++){
+							var _titleTemp = keyWordHighlight(titleTemp,keysTemp[m],'<font class="keyword">$1</font>');
+							if(titleTemp == _titleTemp){
+								isReplace = false;
+								break;
+							}
+							titleTemp = _titleTemp;
+						}
+						if(isReplace){
+							title = titleTemp;
+						}
+					}
+				}
+				//
+				var area = list[i].area;
+				if(!area){
+					area = "";
+				}else{
+					area = $.trim(area);
+					area = area=="A"?"全国":area;
+				}
+				if(area != ""){
+					area = '<span class="location">'+area+'</span>';
+				}
+				//
+				var tdf = list[i].publishtime;
+				if(tdf){
+					tdf = timeDiff(new Date(Number(tdf+"000")));
+					if(tdf != null){
+						tdf='<span><i class="glyphicon bofangjilu" style="color:#7a7a7a;margin-right:2px;"></i>'+tdf+'</span>'
+					}
+				}else{
+					tdf = '';
+				}
+				//
+				var datatype = "";
+				if(list[i].subtype){
+					datatype='<span class="type">'+list[i].subtype+'</span>'
+				}else if(list[i].toptype){
+					datatype='<span class="type">'+list[i].toptype+'</span>'
+				}else if(list[i].type){
+					if(list[i].type == "tender"){
+						datatype='<span class="type">招标</span>'
+					}else if(list[i].type == "bid"){
+						datatype='<span class="type">中标</span>'
+					}
+				}
+				//
+				var buyerclass = "";
+				if(list[i].buyerclass){
+					buyerclass='<span class="buyclass">'+list[i].buyerclass+'</span>'
+				}
+				var tabletime = formatDate(list[i].publishtime);
+				//					
+				html += '<div class="tslist">'
+				+'<div class="resnumb">'
+				+'<div class="one">'
+				+'<span class="xh">'+index+'.</span>'
+				+'</div>'
+				+'<div class="two bt-parent"'+thisStyle+'>'
+				+'<a class="bt" eid="'+list[i]._id+'" s="'+href+'" href="javascript:void(0);">'+title+'</a>'
+				+'</div>'
+				+'</div>'
+				+'<div style="clear:both;"></div>'
+				+'<div class="restime time-diff">'
+				+area+datatype+buyerclass+tdf
+				+'</div>'
+				+'<div style="clear:both;"></div>'
+				+'</div>';
+			}
+			return [html];							                    					                    
+		}
+		
+		//
+		function formatDate(date,sl)   { 
+			var myDate = new Date(date*1000);      
+			var   year=myDate.getFullYear();
+			var   month=myDate.getMonth()+1; 
+			if(month<10&&sl!="1"){
+				month="0"+month
+			} 
+			var   date=myDate.getDate();      
+			if(date<10&&sl!="1"){
+				date="0"+date
+			} 
+			var hour = myDate.getHours()
+			var min = myDate.getMinutes()
+			if(sl=="l"){
+				if(hour<10){
+					hour="0"+hour
+				} 
+				if(min<10){
+					min="0"+min
+				} 
+				return   year+"-"+month+"-"+date+"<br>"+hour+":"+min; 
+			}else{
+				return   year+"<br>"+month+""+date; 
+			}
+		}
+		
+		//
+		function appendListHtml(html,pageNum){
+			pageNumCache = pageNum;
+		    // 插入数据到页面,放到最后面
+		    var htmlObj = $(html[0]);
+			//缓存数据
+			listCache += html[0];
+			htmlObj.on("click", function(event){
+				var h = $(this).find("a.bt").attr("s");
+				var eid = $(this).find("a.bt").attr("eid");
+				beforeJump(eid,h);
+			});
+			$('#list').append(htmlObj);
+		}
+		function noMoreData(me){
+			if(me == null){
+				return;
+			}
+			noMore = "true";
+			// 锁定
+			me.lock();
+			// 无数据
+			me.noData();
+		    // 即使加载出错,也得重置
+		    me.resetload();
+		}
+		function tablejump(eid,h){
+			beforeJump(eid,h);
+		}
+		function beforeJump(eid,h){
+			if(sessionStorage){
+				sessionStorage.resultpreviewScrollTop = scrollTop;
+				sessionStorage.resultpreviewPageNumCache = pageNum;
+				sessionStorage.resultpreviewListCache = listCache;
+				sessionStorage.resultpreviewNoMoreCache = noMore;
+				sessionStorage.resultpreviewHasNextData = hasNextPage;
+				sessionStorage.resultpreviewSds = sds;
+				sessionStorage.resultpreviewKeys = keys;
+			}
+			newredirect(zbadd,h,eid,sds);
+		}
+</script>
+<style type="text/css">
+	.restime span.buyclass{
+	border: 1px solid #CFAD89;
+    background: #CFAD89;
+    border-radius: 3px;
+    margin: 0px 5px;
+    padding: 1px 3px;
+    color: #fff;
+    font-size: 14px;
+	}
+	.findnull{
+		display:none;
+	}
+	body{
+		color: #333;
+	}
+	body>div:first-child{
+		background-color: #F8F8F8;
+		padding: 10px 15px;
+		color: #a0a0a0;
+		font-size: 15px;
+	}
+	a{
+		text-decoration: none;
+		color: #333;
+	}
+	.keyword{
+		color: #2cb7ca;
+	}
+	.listcontent{
+		padding:0px 10px;
+	}
+	.shuxian{
+		padding: 0px !important;
+		margin-right: -10px;
+		color: #e0e0e0;
+	}
+	.prompt{
+		padding:10px 10px 0px;
+	}
+	.blue{
+		color:#0987ff;
+	}
+	.resnumb .two{
+		max-height: 45px;
+		overflow: hidden;
+	}
+</style>
+</head>
+<body>
+	<div class="tipHeader">根据您的设置,为您推荐的预览信息,点击标题可查看详情。</div>
+	<div class="listcontent">
+		<div id="list"></div>
+	</div>
+
+	<span class="text-center findnull" style="margin-top: 5rem;">
+		<div>
+			<img style="width:150px;margin:50px 0 50px 0;" src="{{Msg "seo" "cdn"}}/images/wx/jysorry_1.png">
+		</div>
+		<span style="color:#1d1d1d;font-size:16px;">没有找到和你订阅设置内容有关的信息<br/></span>
+		<div onClick="window.history.go(-1)" style="width: 200px;position: relative;left: 50%;margin-left: -100px;" class="text-center">
+			<img style="width: 200px;margin-top: 25px;pointer-events: none;" src="{{Msg "seo" "cdn"}}/images/wx/jydyshz.png">
+		</div>
+	</span>
+	{{include "/common/baiducc.html"}}
+</body>
+</html>