Эх сурвалжийг харах

Merge branch 'dev4.6.2.4' of http://192.168.3.207:8080/qmx/jy into dev4.6.2.4

tsz 3 жил өмнө
parent
commit
a7b72bc724
76 өөрчлөгдсөн 1880 нэмэгдсэн , 730 устгасан
  1. 3 3
      src/jfw/front/shorturl.go
  2. 18 6
      src/jfw/front/swordfish.go
  3. 1 1
      src/jfw/modules/app/src/app/front/shorturl.go
  4. 8 1
      src/jfw/modules/app/src/app/front/swordfish.go
  5. 47 0
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/vip_introduce.css
  6. 20 263
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_introduce.html
  7. 336 0
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_introduce_old.html
  8. 5 1
      src/jfw/modules/bigmember/src/config.json
  9. 2 1
      src/jfw/modules/bigmember/src/config/config.go
  10. 16 10
      src/jfw/modules/bigmember/src/entity/portrait.go
  11. 184 61
      src/jfw/modules/bigmember/src/service/portrait/subvipPortraitAction.go
  12. 3 0
      src/jfw/modules/bigmember/src/service/use/use.go
  13. 6 17
      src/jfw/modules/common/src/qfw/util/jy/bigVipPower.go
  14. 68 0
      src/jfw/modules/common/src/qfw/util/jy/freeExperience.go
  15. 68 37
      src/jfw/modules/common/src/qfw/util/jy/subvipPortrait.go
  16. 10 0
      src/jfw/modules/publicapply/src/attachmentdow/init.go
  17. 74 0
      src/jfw/modules/publicapply/src/attachmentdow/service/service.go
  18. 4 1
      src/jfw/modules/publicapply/src/config.json
  19. 3 0
      src/jfw/modules/publicapply/src/config/config.go
  20. 48 50
      src/jfw/modules/publicapply/src/subscribe/entity/entity.go
  21. 106 0
      src/jfw/modules/publicapply/src/util/rpc.go
  22. 4 4
      src/jfw/modules/weixin/src/config.json
  23. 200 0
      src/web/staticres/big-member/css/page_index.css
  24. BIN
      src/web/staticres/big-member/image/new_info/Frame 1080.png
  25. BIN
      src/web/staticres/big-member/image/new_info/cg-bg.png
  26. BIN
      src/web/staticres/big-member/image/new_info/footer-bannar.png
  27. BIN
      src/web/staticres/big-member/image/new_info/footer-banner-qz.png
  28. BIN
      src/web/staticres/big-member/image/new_info/footer-banner-sc.png
  29. BIN
      src/web/staticres/big-member/image/new_info/footer-banner-zb.png
  30. BIN
      src/web/staticres/big-member/image/new_info/icon-1.png
  31. BIN
      src/web/staticres/big-member/image/new_info/icon-2.png
  32. BIN
      src/web/staticres/big-member/image/new_info/icon-3.png
  33. BIN
      src/web/staticres/big-member/image/new_info/icon-tick.png
  34. BIN
      src/web/staticres/big-member/image/new_info/icon-title.png
  35. BIN
      src/web/staticres/big-member/image/new_info/item-IntelligentAnalysis.png
  36. BIN
      src/web/staticres/big-member/image/new_info/item-aiForecast.png
  37. BIN
      src/web/staticres/big-member/image/new_info/item-allData.png
  38. BIN
      src/web/staticres/big-member/image/new_info/item-bigDataPrediction.png
  39. BIN
      src/web/staticres/big-member/image/new_info/item-cg-2.png
  40. BIN
      src/web/staticres/big-member/image/new_info/item-hz-2.png
  41. BIN
      src/web/staticres/big-member/image/new_info/item-hz-3.png
  42. BIN
      src/web/staticres/big-member/image/new_info/item-hz.png
  43. BIN
      src/web/staticres/big-member/image/new_info/item-per.png
  44. BIN
      src/web/staticres/big-member/image/new_info/item-phone.png
  45. BIN
      src/web/staticres/big-member/image/new_info/item-sc-01.png
  46. BIN
      src/web/staticres/big-member/image/new_info/item-sc-02.png
  47. BIN
      src/web/staticres/big-member/image/new_info/item-sc-03.png
  48. BIN
      src/web/staticres/big-member/image/new_info/item-sc-04.png
  49. BIN
      src/web/staticres/big-member/image/new_info/item-sc-05.png
  50. BIN
      src/web/staticres/big-member/image/new_info/item-sc-06.png
  51. BIN
      src/web/staticres/big-member/image/new_info/item-top.png
  52. BIN
      src/web/staticres/big-member/image/new_info/item-year.png
  53. BIN
      src/web/staticres/big-member/image/new_info/qz-bg.png
  54. BIN
      src/web/staticres/big-member/image/new_info/sc-bg.png
  55. BIN
      src/web/staticres/big-member/image/new_info/zb-bg.png
  56. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/btnBottom.png
  57. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/cut_01.jpg
  58. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/cut_02.jpg
  59. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/cut_03.jpg
  60. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/cut_04.jpg
  61. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/cut_05.jpg
  62. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/cut_06.jpg
  63. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/tagBottom.png
  64. 41 0
      src/web/staticres/vipsubscribe/css/vip_introduce.css
  65. 33 0
      src/web/templates/big-member/pc/page_cg.html
  66. 0 0
      src/web/templates/big-member/pc/page_index_old.html
  67. 33 0
      src/web/templates/big-member/pc/page_qy.html
  68. 33 0
      src/web/templates/big-member/pc/page_qz.html
  69. 33 0
      src/web/templates/big-member/pc/page_sc.html
  70. 33 0
      src/web/templates/big-member/pc/page_tb.html
  71. 33 0
      src/web/templates/big-member/pc/page_yw.html
  72. 33 0
      src/web/templates/big-member/pc/page_zb.html
  73. 20 0
      src/web/templates/big-member/wx/page_unit_portrayal.html
  74. 21 1
      src/web/templates/frontRouter/wx/collection/sess/ent_portrait.html
  75. 18 273
      src/web/templates/weixin/vipsubscribe/vip_introduce.html
  76. 315 0
      src/web/templates/weixin/vipsubscribe/vip_introduce_old.html

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

@@ -147,7 +147,7 @@ func (s *Short) Article(stype, id string) error {
 					var retMap = make(map[string]interface{})
 					stype = "content"
 					_id := util.CommonDecodeArticle(stype, id)[0]
-					_, _, _, obj := pcVRT(_id, "")
+					_, _, _, obj := pcVRT(_id, "", true)
 					if obj != nil && len(obj) > 0 {
 						retMap["_id"] = id
 						retMap["title"], _ = obj["title"].(string)
@@ -236,7 +236,7 @@ func (s *Short) Article(stype, id string) error {
 		s.T["avatar"] = myavatar
 		s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
 		var obj map[string]interface{}
-		obj = wxvisitD(sid, userId, myopenid)
+		obj = wxvisitD(sid, userId, myopenid, isVip || isMember || isEntniche)
 		if len(obj) > 0 {
 			//获取打赏文案
 			s.T["rewardText"], s.T["advertText"] = getRewardText()
@@ -337,7 +337,7 @@ func (s *Short) Article(stype, id string) error {
 			s.T["shareid"] = se.EncodeString(shareid)
 			s.T["keywords"] = s.GetString("kds")
 			s.DisableHttpCache()
-			po, bo, wo, obj := pcVRT(sid, industry)
+			po, bo, wo, obj := pcVRT(sid, industry, isVip || isMember || isEntniche)
 			if obj != nil && len(obj) > 0 {
 				href, _ := obj["href"].(string)
 				href = strings.Replace(href, "\n", "", -1)

+ 18 - 6
src/jfw/front/swordfish.go

@@ -121,8 +121,8 @@ func (m *Front) PcAjaxReq() {
 		hasBuyerTel, hasWinnerTel = m.GetString("buyertel"), m.GetString("winnertel")
 		notkey = m.GetString("notkey")
 	} else {
-		if currentPage > bidsearch.SearchMaxPageNum_PAYED {
-			currentPage = bidsearch.SearchMaxPageNum_PAYED
+		if currentPage > bidsearch.SearchMaxPageNum_PC {
+			currentPage = bidsearch.SearchMaxPageNum_PC
 		}
 		//时间自定义选择默认是vip 大会员 等权限
 		if len(strings.Split(publishtime, "_")) == 2 {
@@ -641,7 +641,7 @@ func (m *Front) VisitRedirect() {
 	m.T["signature"] = wx.SignJSSDK(m.Site() + m.Url())
 	userId, _ := m.GetSession("userId").(string)
 	var obj map[string]interface{}
-	obj = wxvisitD(sid, userId, myopenid)
+	obj = wxvisitD(sid, userId, myopenid, true)
 	if len(obj) > 0 {
 		//获取打赏文案
 		m.T["rewardText"], m.T["advertText"] = getRewardText()
@@ -653,7 +653,7 @@ func (m *Front) VisitRedirect() {
 		m.Redirect(surl)
 	}
 }
-func wxvisitD(sid, userId, openId string) (objdata map[string]interface{}) {
+func wxvisitD(sid, userId, openId string, isPayUser bool) (objdata map[string]interface{}) {
 	defer util.Catch()
 	var obj map[string]interface{}
 	if len(sid) > 5 {
@@ -669,6 +669,13 @@ func wxvisitD(sid, userId, openId string) (objdata map[string]interface{}) {
 			obj = *aobj
 		}
 		if ok && obj != nil && len(obj) >= 3 {
+			if !isPayUser && (util.ObjToString(obj["subtype"]) == "拟建" || util.ObjToString(obj["subtype"]) == "采购意向") {
+				for k, _ := range obj {
+					if k != "title" && k != "area" && k != "subtype" && k != "toptype" && k != "publishtime" && k != "budget" && k != "bidamount" {
+						delete(obj, k)
+					}
+				}
+			}
 			fwt := util.ObjToString(obj["subtype"])
 			ltfd := getLowestField(fwt)
 			if ltfd != "" {
@@ -808,7 +815,7 @@ func (m *Front) PcVisitRedirect(sid string) {
 		if href != "" && !strings.HasPrefix(href, "http") {
 			href = "http://" + href
 		}
-		po, bo, wo, obj := pcVRT(sid, "")
+		po, bo, wo, obj := pcVRT(sid, "", true)
 		if obj != nil && len(obj) > 0 {
 			if len(po) > 0 {
 				m.T["projectOther"] = po
@@ -834,7 +841,7 @@ func (m *Front) PcVisitRedirect(sid string) {
 
 //pc三级页跳转
 //20170821增加查询字段s_subscopeclass
-func pcVRT(sid, industry string) (po, bo, wo []map[string]interface{}, objdata map[string]interface{}) {
+func pcVRT(sid, industry string, isPayUser bool) (po, bo, wo []map[string]interface{}, objdata map[string]interface{}) {
 	defer util.Catch()
 	var projectOther, buyerOther, winnerOther []map[string]interface{}
 	var obj map[string]interface{}
@@ -851,6 +858,11 @@ func pcVRT(sid, industry string) (po, bo, wo []map[string]interface{}, objdata m
 		}
 		//obj, ok := elastic.GetByIdField("bidding", "bidding", sid, ""), true
 		if ok && obj != nil && len(obj) > 0 {
+			if !isPayUser && (util.ObjToString(obj["subtype"]) == "拟建" || util.ObjToString(obj["subtype"]) == "采购意向") {
+				delete(obj, "detail")
+				delete(obj, "projectinfo")
+
+			}
 			obj["_id"] = util.EncodeArticleId2ByCheck(sid)
 			var infoformat = util.IntAllDef(obj["infoformat"], 1)
 			obj["infoformat"] = infoformat

+ 1 - 1
src/jfw/modules/app/src/app/front/shorturl.go

@@ -129,7 +129,7 @@ func (s *Short) Article(stype, id string) error {
 
 	s.T["keywords"] = kds
 	var obj map[string]interface{}
-	obj = wxvisitD(sid, userId)
+	obj = wxvisitD(sid, userId, isVip || isEntniche || i_member_status > 0)
 	if len(obj) > 0 {
 		if belongUserId != "" && belongUserId != userId && util.ObjToString(obj["subtype"]) != "拟建" { //分享开打的
 			article_id := util.CommonDecodeArticle(stype, id)[0]

+ 8 - 1
src/jfw/modules/app/src/app/front/swordfish.go

@@ -580,7 +580,7 @@ func MFollow(userId, pname, pcode, title string) (bool, string) {
 	}
 	return followFlag, followId
 }
-func wxvisitD(sid, userId string) (objdata map[string]interface{}) {
+func wxvisitD(sid, userId string, isPayUser bool) (objdata map[string]interface{}) {
 	defer util.Catch()
 	var obj map[string]interface{}
 	if len(sid) > 5 {
@@ -591,6 +591,13 @@ func wxvisitD(sid, userId string) (objdata map[string]interface{}) {
 		//aobj, ok := elastic.GetByIdField("bidding", "bidding", sid, ""), true
 		obj = *aobj
 		if ok && obj != nil && len(obj) >= 3 {
+			if !isPayUser && (util.ObjToString(obj["subtype"]) == "拟建" || util.ObjToString(obj["subtype"]) == "采购意向") {
+				for k, _ := range obj {
+					if k != "title" && k != "area" && k != "subtype" && k != "toptype" && k != "publishtime" && k != "budget" && k != "bidamount" {
+						delete(obj, k)
+					}
+				}
+			}
 			obj["_id"] = util.EncodeArticleId2ByCheck(sid)
 			// obj["url"] = obj["href"]
 			pt := obj["publishtime"]

+ 47 - 0
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/vip_introduce.css

@@ -468,3 +468,50 @@ html,body {
   padding: 0 .24rem;
   width: 100%;
 }
+
+body {
+  background: #fff;
+  padding-bottom: constant(safe-area-inset-bottom);
+  padding-bottom: env(safe-area-inset-bottom);
+}
+body .j-container {
+  background: #fff;
+}
+.popup-bottom-group {
+  position: relative;
+  margin-bottom: constant(safe-area-inset-bottom);
+  margin-bottom: env(safe-area-inset-bottom);
+  box-shadow: unset;
+}
+.pop-tip-group img {
+  width: 100%;
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: -1;
+  height: 0.7rem;
+}
+.pop-tip-group span {
+  font-size: 0.36rem;
+}
+.pop-tip-group {
+  z-index: 0;
+  width: 2.4rem;
+  position: absolute;
+  top: -0.8rem;
+  left: 50%;
+  transform: translateX(-50%);
+  text-align: center;
+  font-size: 0.26rem;
+  font-family: PingFang SC-Bold, PingFang SC;
+  font-weight: bold;
+  color: #FFFFFF;
+  line-height: 0.64rem;
+}
+.vip_introduce .main img {
+  width: 100%;
+}
+.vip_introduce .main {
+  padding-bottom: 0;
+  margin-bottom: -1.8rem;
+}

+ 20 - 263
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_introduce.html

@@ -3,7 +3,7 @@
 <head>
     <meta charset="UTF-8">
     <meta name="viewport"
-          content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
+          content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"/>
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <title>超级订阅</title>
     <meta name="apple-mobile-web-app-capable" content="yes">
@@ -14,10 +14,8 @@
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css"/>
     <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.css' />
-    <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/vipsubscribe/css/vip-subscribe-set-template.css?v={{Msg "seo" "version"}}'>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/vip_introduce.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
-    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/land-page-coupon.css?v={{Msg "seo" "version"}}"/>
 </head>
 <body>
 <div class="j-container" id="vip-intro-container">
@@ -28,266 +26,39 @@
     </div>
     <div class="j-main vip_introduce vip-body" id="vip-body">
         <div class="main">
-            <div class="banner power group">
-                <div class="active-content-tip">
-                    <div class="active-content" style="display: none">
-                        <div class="active-c-item">
-                            <div class="active-i-l">大礼1:</div>
-                            <div class="active-i-r">
-                                <div class="active-r-t">买多久送你多久!</div>
-                                <div class="active-r-b">(如:买1年送1年,买3个月送3个月)</div>
-                            </div>
-                        </div>
-                        <div class="active-c-item">
-                            <div class="active-i-l">大礼2:</div>
-                            <div class="active-i-r">
-                                <div class="active-r-t">赠送剑鱼大会员【专家版】使用特权!</div>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="active-rules">
-                        <div class="active-r-text">活动规则:</div>
-                        <div class="active-r-text">1、本次活动产品为超级订阅,凡在2021年1月28日10:00至2021年2月5日10:00期间的新购和续费超级订阅用户可参与此活动。</div>
-                        <div class="active-r-text">2、参与活动的最低购买条件为3个月起(含3个月),最多送1年,每个用户赠送1次超级订阅时长,赠送时长及规格与购买时长相等的套餐</div>
-                        <div class="active-r-text">3、时间:1月28日10:00至2月5日10:00</div>
-                        <div class="active-r-text">4、此活动最终解释权归剑鱼标讯所有。</div>
-                    </div>
-                </div>
-                <div class="setaction" v-show="!compShow">
-                    <sub-component @footershow="footerShow" type="introduce" :linkobj="linkObj" :initdata="initData"></sub-component>
-                </div>
-                <div class="group-title" v-show="compShow">
-                    <span class="title-text line-title">超级订阅服务特权</span>
-                    <span class="title-bg-text">DINGYUEFUWU</span>
-                </div>
-                <div class="group-content grid" v-show="compShow">
-                    <span class="grid-item">
-                        <span class="circle-icon circle-icon-1"></span>
-                        <p class="item-desc">最多 300 组关键词</p>
-                    </span>
-                    <span class="grid-item">
-                        <span class="circle-icon circle-icon-2"></span>
-                        <p class="item-desc">每天最多接收 2000 条</p>
-                    </span>
-                    <span class="grid-item">
-                        <span class="circle-icon circle-icon-3"></span>
-                        <p class="item-desc">数据周报、月报</p>
-                    </span>
-                    <span class="grid-item">
-                        <span class="circle-icon circle-icon-4"></span>
-                        <p class="item-desc">订阅区域精确到市</p>
-                    </span>
-                    <span class="grid-item" style="height: 2.48rem;">
-                        <span class="circle-icon circle-icon-5"></span>
-                        <p class="item-desc">每购买一个省<br />可查看50个企业画像</p>
-                    </span>
-                    <span class="grid-item">
-                        <span class="circle-icon circle-icon-6"></span>
-                        <p class="item-desc">搜索全国超七千万企业</p>
-                    </span>
-                </div>
-            </div>
-            <div class="comparison group">
-                <div class="group-title">
-                    <span class="title-text line-title">整体服务对比</span>
-                    <span class="title-bg-text">FUWUDUIBI</span>
-                </div>
-                <div class="group-content">
-                    <div class="table">
-                        <div class="c-thead row">
-                            <span class="free column column-l">免费版</span>
-                            <span class="prop column column-r color-deep-gold">超级订阅专属服务</span>
-                        </div>
-                        <div class="c-tbody">
-                            <div class="row">
-                                <span class="column column-l">匹配单次公告信息</span>
-                                <span class="column column-r">
-                                    <p class="col-hd">匹配项目信息</p>
-                                    <p class="col-bd">根据你的订阅,为你推送所匹配项目后续的全部动态</p>
-                                </span>
-                            </div>
-                            <div class="row">
-                                <span class="column column-l">-</span>
-                                <span class="column column-r">
-                                    <p class="col-hd">按行业订阅</p>
-                                    <p class="col-bd">不知道如何设置关键词的时候,也可以按行业订阅</p>
-                                </span>
-                            </div>
-                            <div class="row">
-                                <span class="column column-l">-</span>
-                                <span class="column column-r">
-                                    <p class="col-hd">中标企业联系方式</p>
-                                    <p class="col-bd">招标公告与国家企业公示2种提取模式,让你直击企业</p>
-                                </span>
-                            </div>
-                            <div class="row">
-                                <span class="column column-l">最多10组关键词</span>
-                                <span class="column column-r">
-                                    <p class="col-hd">最多300组关键词</p>
-                                    <p class="col-bd">更多关键词,招标信息更全面</p>
-                                </span>
-                            </div>
-                            <div class="row">
-                                <span class="column column-l">仅支持标题匹配</span>
-                                <span class="column column-r">
-                                    <p class="col-hd">支持标题匹配+全文匹配</p>
-                                    <p class="col-bd">关键词匹配标题或全文 任你选</p>
-                                </span>
-                            </div>
-                            <div class="row">
-                                <span class="column column-l">订阅区域精确到省</span>
-                                <span class="column column-r">
-                                    <p class="col-hd">订阅区域精确到市</p>
-                                    <p class="col-bd">只看你最关注的招标信息</p>
-                                </span>
-                            </div>
-                            <div class="row">
-                                <span class="column column-l">-</span>
-                                <span class="column column-r">
-                                    <p class="col-hd">
-                                        <span class="icon-new">企业画像</span>
-                                    </p>
-                                    <p class="col-bd">对企业进行全景透视,提供企业基本信息,中标项目分析、重点客户等。每购买一个省,增加50个企业画像,最多可查看800个企业画像。</p>
-                                </span>
-                            </div>
-                            <div class="row">
-                                <span class="column column-l">-</span>
-                                <span class="column column-r">
-                                    <p class="col-hd">
-                                        <span class="icon-new">企业搜索</span>
-                                    </p>
-                                    <p class="col-bd">搜索全国超七千万企业,获取企业情报信息,全方位监控竞争对手或用户关注的企业。</p>
-                                </span>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
+                <img src="/common-module/vipsubscribe/image/info/cut_01.jpg">
+                <img src="/common-module/vipsubscribe/image/info/cut_02.jpg">
+                <img src="/common-module/vipsubscribe/image/info/cut_03.jpg">
+                <img src="/common-module/vipsubscribe/image/info/cut_04.jpg">
+                <img src="/common-module/vipsubscribe/image/info/cut_05.jpg">
+                <img src="/common-module/vipsubscribe/image/info/cut_06.jpg">
         </div>
     </div>
-    <div class="vip-footer-container">
-        <div class="vip-intro-footer">
-            {{if not .T.notShowTrial}}
-<!--            <span class="vi-footer-l" data-need-bind-phone data-url="/jyapp/vipsubscribe/trialInfo"  id="vip-free-7days">
-                <span class="text">试用7天</span>
-            </span>-->
-            {{end}}
-            <span class="vi-footer-r" data-need-bind-phone data-url="/jyapp/vipsubscribe/vipsubscribe_new{{if .T.disWord}}?disWord={{.T.disWord}}{{end}}"  id="vip-introduce">
-                <span class="text">开通 超级订阅</span>
-            </span>
-            <span style="display: none;" class="vi-footer-r" id="vip-introduce-renew" onclick="window.location.replace('/jyapp/vipsubscribe/vipsubscribe_renew{{if .T.disWord}}?disWord={{.T.disWord}}{{end}}')">
-                <span class="text">去续费</span>
-            </span>
+        <div class="j-footer j-button-group popup-bottom-group">
+            <div class="pop-tip-group">
+                <img src="/common-module/vipsubscribe/image/info/tagBottom.png">
+                <div>低至 <span>38</span>元/月</div>
         </div>
-        <div id="land-page-coupon" class="coupon-tips" style="display:none;">
-          <div class="coupon-text-area">用奖券最高立减 <em class="coupon-num"></em>元</div>
-          <div class="coupon-arrow-area"><span class="coupon-arrow-icon"></span></div>
+            <div class="pop-button" data-need-bind-phone data-url="/jyapp/vipsubscribe/vipsubscribe_new{{if .T.disWord}}?disWord={{.T.disWord}}{{end}}"  id="vip-introduce">
+                <img src="/common-module/vipsubscribe/image/info/btnBottom.png">
         </div>
     </div>
 </div>
-<script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
 <script src='https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.js'></script>
 <!--<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/check-bind-phone.js?v={{Msg "seo" "version"}}'></script>-->
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "mod_version"}}'></script>
-<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/vipsubscribe/js/vip-subscribe-set-template.js?v={{Msg "seo" "version"}}'></script>
-<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/land-page-coupon.js?v={{Msg "seo" "mod_version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/utils.js?v={{Msg "seo" "mod_version"}}'></script>
 <script>
-    $("#vip-introduce,#vip-free-7days").on('click', function () {
+    $("*[data-need-bind-phone]").on('click', function () {
         window.location.replace($(this).attr('data-url'))
     })
-</script>
-<script>
-    var subNode = new Vue({
-        delimiters: ['${', '}'],
-        el: '#vip-body',
-        components: {
-            subComponent: subComponent
-        },
-        data: function() {
-            return {
-                linkObj: {
-                    area: '/jyapp/vipsubscribe/toChangeArea?header=save&subvip=free',
-                    industry: '/jyapp/vipsubscribe/toChangeIndustry?header=save&subvip=free',
-                    keyword: '/jyapp/vipsubscribe/toSetKeyWordPage',
-                    infotype: '/jyapp/vipsubscribe/toSetInfoTypePage',
-                    resultview: '/jyapp/vipsubscribe/toVIPViewPage?vSwitch=v',
-                    pushsetting: '/jyapp/big/page/push_settings'
-                },
-                initData: {},
-                compShow: true
-            }
-        },
-        created () {
-          this.getUserInfo()
-        },
-        methods: {
-            getUserInfo: function() {
-                let _this = this;
-                let typeinfo = getParam('typeinfo')
-                if (typeinfo) {
-                    $('.vip_introduce .main .banner').css({'padding-top': '6.2rem'})
-                    _this.compShow = false
-                    $.ajax({
-                        type: 'POST',
-                        url: '/subscribepay/vipsubscribe/getSubBuyMsg?t=' + Date.now(),
-                        success:function(res) {
-                            if(res.success) {
-                                _this.initData = res.data
-                                if(res.data.area) {
-                                    let proArea = res.data.area
-                                    Object.keys(proArea).forEach(function(item, index) {
-                                        if(proArea[item].length !== 0) {
-                                            proArea[item] = []
-                                        }
-                                    })
-                                    if(JSON.stringify(proArea) == 'null' || JSON.stringify(proArea) == 'undefined') return
-                                    if(JSON.stringify(proArea) == '{}') {
-                                        proArea = {"全国":[]}
-                                    }
-                                    sessionStorage.setItem('vipSubSelectArea', JSON.stringify(proArea))
-                                }
-                            }
-                        }
-                    })
-                }
-            },
-            footerShow: function(data) {
-                console.log(data)
-                if(data == 'true') {
-                    $('.vip-footer-container').hide()
-                } else {
-                    $('.vip-footer-container').show()
-                }
-            }
-        }
-    })
-</script>
-<script>
-        if (location.href.lastIndexOf('type=renew') !== -1) {
-            $("#vip-introduce").hide()
-            $("#vip-introduce-renew").show()
-        }
-    $(function(){
+    $(function () {
         try{
             //隐藏底部栏 0:隐藏;1:显示
             JyObj.hiddenBottom("0");
         }catch(e){}
-      // @NewYearMarketing 2021/1/25
-      getNewYearMarketing()
-      function getNewYearMarketing () {
-        $.ajax({
-          url: '/getJson/NewYearMarketing?t=' + new Date().getTime(),
-          success: function (r) {
-            if (r && r.status) {
-              $('#vip-intro-container').addClass('active-20201111')
-            } else {
-              $('#vip-intro-container').removeClass('active-20201111')
-            }
-          }
-        })
-      }
+
 
         // 头部返回按钮事件
         $('.j-header .header-left').on('click', function () {
@@ -310,24 +81,10 @@
             }
         })
 
-        // 获取是否有优惠券 并展示
-      getCoupon('vip',function(res) {
-        console.log(res)
-        if (res.list && res.list.length > 0) {
-          $('.coupon-tips').show()
-          var max = res.list.sort(function(a,b){
-              return b.reduce - a.reduce;
-          })[0];
-          console.log(max.reduce)
-          $('.coupon-num').html(max.reduce)
-        } else {
-          $('.coupon-tips').hide()
-        }
-      })
-      // 清除超级订阅购买、续费、升级页面相关的优惠券、商品规格缓存
-      sessionStorage.removeItem('vip-cur-select-coupon')
-      sessionStorage.removeItem('$select-coupon')
-      sessionStorage.removeItem('vip-cur-select-size')
+        // 清除超级订阅购买、续费、升级页面相关的优惠券、商品规格缓存
+        sessionStorage.removeItem('vip-cur-select-coupon')
+        sessionStorage.removeItem('$select-coupon')
+        sessionStorage.removeItem('vip-cur-select-size')
     })
 </script>
 

+ 336 - 0
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_introduce_old.html

@@ -0,0 +1,336 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport"
+          content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>超级订阅</title>
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/rem.js"></script>
+    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}"/>
+    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}"/>
+    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css"/>
+    <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.css' />
+    <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/vipsubscribe/css/vip-subscribe-set-template.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/vip_introduce.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
+    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/land-page-coupon.css?v={{Msg "seo" "version"}}"/>
+</head>
+<body>
+<div class="j-container" id="vip-intro-container">
+    <div class="j-header jy-app-header transparent-header">
+      <span class="app-back jyapp-icon jyapp-icon-zuojiantou header-left"></span>
+      <span class="header-title">超级订阅</span>
+      <span class="header-right hide"></span>
+    </div>
+    <div class="j-main vip_introduce vip-body" id="vip-body">
+        <div class="main">
+            <div class="banner power group">
+                <div class="active-content-tip">
+                    <div class="active-content" style="display: none">
+                        <div class="active-c-item">
+                            <div class="active-i-l">大礼1:</div>
+                            <div class="active-i-r">
+                                <div class="active-r-t">买多久送你多久!</div>
+                                <div class="active-r-b">(如:买1年送1年,买3个月送3个月)</div>
+                            </div>
+                        </div>
+                        <div class="active-c-item">
+                            <div class="active-i-l">大礼2:</div>
+                            <div class="active-i-r">
+                                <div class="active-r-t">赠送剑鱼大会员【专家版】使用特权!</div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="active-rules">
+                        <div class="active-r-text">活动规则:</div>
+                        <div class="active-r-text">1、本次活动产品为超级订阅,凡在2021年1月28日10:00至2021年2月5日10:00期间的新购和续费超级订阅用户可参与此活动。</div>
+                        <div class="active-r-text">2、参与活动的最低购买条件为3个月起(含3个月),最多送1年,每个用户赠送1次超级订阅时长,赠送时长及规格与购买时长相等的套餐</div>
+                        <div class="active-r-text">3、时间:1月28日10:00至2月5日10:00</div>
+                        <div class="active-r-text">4、此活动最终解释权归剑鱼标讯所有。</div>
+                    </div>
+                </div>
+                <div class="setaction" v-show="!compShow">
+                    <sub-component @footershow="footerShow" type="introduce" :linkobj="linkObj" :initdata="initData"></sub-component>
+                </div>
+                <div class="group-title" v-show="compShow">
+                    <span class="title-text line-title">超级订阅服务特权</span>
+                    <span class="title-bg-text">DINGYUEFUWU</span>
+                </div>
+                <div class="group-content grid" v-show="compShow">
+                    <span class="grid-item">
+                        <span class="circle-icon circle-icon-1"></span>
+                        <p class="item-desc">最多 300 组关键词</p>
+                    </span>
+                    <span class="grid-item">
+                        <span class="circle-icon circle-icon-2"></span>
+                        <p class="item-desc">每天最多接收 2000 条</p>
+                    </span>
+                    <span class="grid-item">
+                        <span class="circle-icon circle-icon-3"></span>
+                        <p class="item-desc">数据周报、月报</p>
+                    </span>
+                    <span class="grid-item">
+                        <span class="circle-icon circle-icon-4"></span>
+                        <p class="item-desc">订阅区域精确到市</p>
+                    </span>
+                    <span class="grid-item" style="height: 2.48rem;">
+                        <span class="circle-icon circle-icon-5"></span>
+                        <p class="item-desc">每购买一个省<br />可查看50个企业画像</p>
+                    </span>
+                    <span class="grid-item">
+                        <span class="circle-icon circle-icon-6"></span>
+                        <p class="item-desc">搜索全国超七千万企业</p>
+                    </span>
+                </div>
+            </div>
+            <div class="comparison group">
+                <div class="group-title">
+                    <span class="title-text line-title">整体服务对比</span>
+                    <span class="title-bg-text">FUWUDUIBI</span>
+                </div>
+                <div class="group-content">
+                    <div class="table">
+                        <div class="c-thead row">
+                            <span class="free column column-l">免费版</span>
+                            <span class="prop column column-r color-deep-gold">超级订阅专属服务</span>
+                        </div>
+                        <div class="c-tbody">
+                            <div class="row">
+                                <span class="column column-l">匹配单次公告信息</span>
+                                <span class="column column-r">
+                                    <p class="col-hd">匹配项目信息</p>
+                                    <p class="col-bd">根据你的订阅,为你推送所匹配项目后续的全部动态</p>
+                                </span>
+                            </div>
+                            <div class="row">
+                                <span class="column column-l">-</span>
+                                <span class="column column-r">
+                                    <p class="col-hd">按行业订阅</p>
+                                    <p class="col-bd">不知道如何设置关键词的时候,也可以按行业订阅</p>
+                                </span>
+                            </div>
+                            <div class="row">
+                                <span class="column column-l">-</span>
+                                <span class="column column-r">
+                                    <p class="col-hd">中标企业联系方式</p>
+                                    <p class="col-bd">招标公告与国家企业公示2种提取模式,让你直击企业</p>
+                                </span>
+                            </div>
+                            <div class="row">
+                                <span class="column column-l">最多10组关键词</span>
+                                <span class="column column-r">
+                                    <p class="col-hd">最多300组关键词</p>
+                                    <p class="col-bd">更多关键词,招标信息更全面</p>
+                                </span>
+                            </div>
+                            <div class="row">
+                                <span class="column column-l">仅支持标题匹配</span>
+                                <span class="column column-r">
+                                    <p class="col-hd">支持标题匹配+全文匹配</p>
+                                    <p class="col-bd">关键词匹配标题或全文 任你选</p>
+                                </span>
+                            </div>
+                            <div class="row">
+                                <span class="column column-l">订阅区域精确到省</span>
+                                <span class="column column-r">
+                                    <p class="col-hd">订阅区域精确到市</p>
+                                    <p class="col-bd">只看你最关注的招标信息</p>
+                                </span>
+                            </div>
+                            <div class="row">
+                                <span class="column column-l">-</span>
+                                <span class="column column-r">
+                                    <p class="col-hd">
+                                        <span class="icon-new">企业画像</span>
+                                    </p>
+                                    <p class="col-bd">对企业进行全景透视,提供企业基本信息,中标项目分析、重点客户等。每购买一个省,增加50个企业画像,最多可查看800个企业画像。</p>
+                                </span>
+                            </div>
+                            <div class="row">
+                                <span class="column column-l">-</span>
+                                <span class="column column-r">
+                                    <p class="col-hd">
+                                        <span class="icon-new">企业搜索</span>
+                                    </p>
+                                    <p class="col-bd">搜索全国超七千万企业,获取企业情报信息,全方位监控竞争对手或用户关注的企业。</p>
+                                </span>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="vip-footer-container">
+        <div class="vip-intro-footer">
+            {{if not .T.notShowTrial}}
+<!--            <span class="vi-footer-l" data-need-bind-phone data-url="/jyapp/vipsubscribe/trialInfo"  id="vip-free-7days">
+                <span class="text">试用7天</span>
+            </span>-->
+            {{end}}
+            <span class="vi-footer-r" data-need-bind-phone data-url="/jyapp/vipsubscribe/vipsubscribe_new{{if .T.disWord}}?disWord={{.T.disWord}}{{end}}"  id="vip-introduce">
+                <span class="text">开通 超级订阅</span>
+            </span>
+            <span style="display: none;" class="vi-footer-r" id="vip-introduce-renew" onclick="window.location.replace('/jyapp/vipsubscribe/vipsubscribe_renew{{if .T.disWord}}?disWord={{.T.disWord}}{{end}}')">
+                <span class="text">去续费</span>
+            </span>
+        </div>
+        <div id="land-page-coupon" class="coupon-tips" style="display:none;">
+          <div class="coupon-text-area">用奖券最高立减 <em class="coupon-num"></em>元</div>
+          <div class="coupon-arrow-area"><span class="coupon-arrow-icon"></span></div>
+        </div>
+    </div>
+</div>
+<script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+<script src='https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.js'></script>
+<!--<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/check-bind-phone.js?v={{Msg "seo" "version"}}'></script>-->
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "mod_version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/vipsubscribe/js/vip-subscribe-set-template.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/land-page-coupon.js?v={{Msg "seo" "mod_version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/utils.js?v={{Msg "seo" "mod_version"}}'></script>
+<script>
+    $("#vip-introduce,#vip-free-7days").on('click', function () {
+        window.location.replace($(this).attr('data-url'))
+    })
+</script>
+<script>
+    var subNode = new Vue({
+        delimiters: ['${', '}'],
+        el: '#vip-body',
+        components: {
+            subComponent: subComponent
+        },
+        data: function() {
+            return {
+                linkObj: {
+                    area: '/jyapp/vipsubscribe/toChangeArea?header=save&subvip=free',
+                    industry: '/jyapp/vipsubscribe/toChangeIndustry?header=save&subvip=free',
+                    keyword: '/jyapp/vipsubscribe/toSetKeyWordPage',
+                    infotype: '/jyapp/vipsubscribe/toSetInfoTypePage',
+                    resultview: '/jyapp/vipsubscribe/toVIPViewPage',
+                    pushsetting: '/jyapp/big/page/push_settings'
+                },
+                initData: {},
+                compShow: true
+            }
+        },
+        created () {
+          this.getUserInfo()
+        },
+        methods: {
+            getUserInfo: function() {
+                let _this = this;
+                let typeinfo = getParam('typeinfo')
+                if (typeinfo) {
+                    $('.vip_introduce .main .banner').css({'padding-top': '6.2rem'})
+                    _this.compShow = false
+                    $.ajax({
+                        type: 'POST',
+                        url: '/subscribepay/vipsubscribe/getSubBuyMsg?t=' + Date.now(),
+                        success:function(res) {
+                            if(res.success) {
+                                _this.initData = res.data
+                                if(res.data.area) {
+                                    let proArea = res.data.area
+                                    Object.keys(proArea).forEach(function(item, index) {
+                                        if(proArea[item].length !== 0) {
+                                            proArea[item] = []
+                                        }
+                                    })
+                                    if(JSON.stringify(proArea) == 'null' || JSON.stringify(proArea) == 'undefined') return
+                                    if(JSON.stringify(proArea) == '{}') {
+                                        proArea = {"全国":[]}
+                                    }
+                                    sessionStorage.setItem('vipSubSelectArea', JSON.stringify(proArea))
+                                }
+                            }
+                        }
+                    })
+                }
+            },
+            footerShow: function(data) {
+                console.log(data)
+                if(data == 'true') {
+                    $('.vip-footer-container').hide()
+                } else {
+                    $('.vip-footer-container').show()
+                }
+            }
+        }
+    })
+</script>
+<script>
+        if (location.href.lastIndexOf('type=renew') !== -1) {
+            $("#vip-introduce").hide()
+            $("#vip-introduce-renew").show()
+        }
+    $(function(){
+        try{
+            //隐藏底部栏 0:隐藏;1:显示
+            JyObj.hiddenBottom("0");
+        }catch(e){}
+      // @NewYearMarketing 2021/1/25
+      getNewYearMarketing()
+      function getNewYearMarketing () {
+        $.ajax({
+          url: '/getJson/NewYearMarketing?t=' + new Date().getTime(),
+          success: function (r) {
+            if (r && r.status) {
+              $('#vip-intro-container').addClass('active-20201111')
+            } else {
+              $('#vip-intro-container').removeClass('active-20201111')
+            }
+          }
+        })
+      }
+
+        // 头部返回按钮事件
+        $('.j-header .header-left').on('click', function () {
+            window.history.back()
+        })
+        // 头部滚动事件
+        $('.j-main .main').on('scroll', function () {
+            var headerDOM = $('.j-header.jy-app-header')
+            var scrollTop = this.scrollTop
+
+            // 是否有header-transparent这个类名
+            var hasClassT = headerDOM.hasClass('transparent-header')
+
+            if(scrollTop >= 75) {
+                if (!hasClassT) return
+                headerDOM.removeClass('transparent-header')
+            }else {
+                if (hasClassT) return
+                headerDOM.addClass('transparent-header')
+            }
+        })
+
+        // 获取是否有优惠券 并展示
+      getCoupon('vip',function(res) {
+        console.log(res)
+        if (res.list && res.list.length > 0) {
+          $('.coupon-tips').show()
+          var max = res.list.sort(function(a,b){
+              return b.reduce - a.reduce;
+          })[0];
+          console.log(max.reduce)
+          $('.coupon-num').html(max.reduce)
+        } else {
+          $('.coupon-tips').hide()
+        }
+      })
+      // 清除超级订阅购买、续费、升级页面相关的优惠券、商品规格缓存
+      sessionStorage.removeItem('vip-cur-select-coupon')
+      sessionStorage.removeItem('$select-coupon')
+      sessionStorage.removeItem('vip-cur-select-size')
+    })
+</script>
+
+{{include "/common/baiducc.html"}}
+</body>
+</html>

+ 5 - 1
src/jfw/modules/bigmember/src/config.json

@@ -57,5 +57,9 @@
 			"wxer":"/big-member/image/customer/customer-wx.png"
 		}
     ],
-    "newFreeUser":1637647199
+    "newFreeUser":1637647199,
+    "fileUploadNum":{
+    	"f":0,
+    	"v":10
+    }
 }

+ 2 - 1
src/jfw/modules/bigmember/src/config/config.go

@@ -32,7 +32,8 @@ type config struct {
 	RegWinner           string
 	OldSubscribeMoveTip int64
 	Customers           []customerInfo
-	NewFreeUser         int64 //免费用户 -- 订阅升级新用户
+	NewFreeUser         int64          //免费用户 -- 订阅升级新用户
+	FileUploadNum       map[string]int //每月附件下载次数
 }
 type customerInfo struct {
 	Name string `json:"name"`

+ 16 - 10
src/jfw/modules/bigmember/src/entity/portrait.go

@@ -38,22 +38,28 @@ func CreatePortraitManager(userid string, pageFlag string) (*Portrait, bool, err
 	return &Portrait{uid}, true, nil
 }
 
-//超级订阅
-func CreateSubVipPortraitManager(userid string, pageFlag string) (*Portrait, *jy.BigVipBaseMsg, error) {
+//CreateSubVipPortraitManager 超级订阅权限校验
+func CreateSubVipPortraitManager(userid string, pageFlag, searchValue string, isWinner bool) (*Portrait, error) {
 	if userid == "" {
-		return nil, nil, errors.New("未登录")
+		return nil, errors.New("未登录")
 	}
 	if pageFlag == "" {
-		return nil, nil, errors.New("未知请求")
+		return nil, errors.New("未知请求")
 	}
-	bigMsg := jy.GetBigVipUserBaseMsg(userid, db.Mysql, db.Mgo)
-	if pageFlag != "entDetail" { //接口开放企业基础信息
-		if bigMsg.VipStatus <= 0 || bigMsg.Vip_BuySet.Upgrade != 1 {
-			return nil, nil, errors.New("非法请求")
+	if pageFlag != "entDetail" { //需要权限校验的接口
+		bigMsg := jy.GetBigVipUserBaseMsg(userid, db.Mysql, db.Mgo)
+		if bigMsg.VipStatus <= 0 || bigMsg.Vip_BuySet.Upgrade != 1 { //免费用户留资体验
+			if searchValue != "" && jy.Portraitexperience(userid, searchValue, isWinner) {
+				return &Portrait{userid}, nil
+			}
+			return nil, errors.New("非法请求")
+		} else { //超级订阅升级版-校验超级订阅画像浏览次数
+			if err := bigMsg.SubVipPortraitTimesCheck(db.Mysql, searchValue, isWinner); err != nil {
+				return nil, err
+			}
 		}
 	}
-	uid := qutil.If(bigMsg.Pid == "", userid, bigMsg.Pid).(string) //若为子账号则显示主账号行业信息
-	return &Portrait{uid}, bigMsg, nil
+	return &Portrait{userid}, nil
 }
 
 //获取企业基本信息

+ 184 - 61
src/jfw/modules/bigmember/src/service/portrait/subvipPortraitAction.go

@@ -24,18 +24,27 @@ type SubVipPortrait struct {
 	subVipNewMsgSelects xweb.Mapper `xweb:"/portrait/subVipPortrait/selects"`      //最新招标信息可筛选项
 	portraitUsage       xweb.Mapper `xweb:"/portrait/subVipPortrait/usage"`        //超级订阅升级版画像浏览详情
 	portraitRecord      xweb.Mapper `xweb:"/portrait/subVipPortrait/record"`       //超级订阅升级版画像浏览记录
+
+	buyerContacts xweb.Mapper `xweb:"/subVipPortrait/buyer/contacts"`  //采购项目联系方式
+	buyerSelects  xweb.Mapper `xweb:"/subVipPortrait/buyer/selects"`   //采购单位画像可筛选项
+	buyerNewMsg   xweb.Mapper `xweb:"/subVipPortrait/buyer/getNewMsg"` //最新项目动态[筛选]
+	buyerPortrait xweb.Mapper `xweb:"/subVipPortrait/buyer/getData"`   //采购单位画像数据[筛选]
 }
 
 //SubVipEntDetail 超级订阅升级版查询基本信息
 func (this *SubVipPortrait) SubVipEntDetail() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
-		cepm, _, err := entity.CreateSubVipPortraitManager(userId, "entDetail")
+		entId := util.DecodeId(this.GetString("entId"))
+		if entId == "" {
+			return nil, fmt.Errorf("参数异常")
+		}
+		cepm, err := entity.CreateSubVipPortraitManager(userId, "entDetail", entId, true)
 		if err != nil {
 			return nil, err
 		}
-		entId := this.GetString("entId")
-		entInfo, err := cepm.GetEntInfo(util.DecodeId(entId))
+
+		entInfo, err := cepm.GetEntInfo(entId)
 		if err != nil {
 			return nil, err
 		}
@@ -51,16 +60,12 @@ func (this *SubVipPortrait) SubVipEntDetail() {
 func (this *SubVipPortrait) SubVipWinnerNewMsg() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
-		cepm, bigMsg, err := entity.CreateSubVipPortraitManager(userId, "entNewMsg")
-		if err != nil {
-			return nil, err
-		}
 		entId := util.DecodeId(this.GetString("entId"))
 		if entId == "" {
 			return nil, fmt.Errorf("参数异常")
 		}
-		//校验超级订阅画像浏览次数
-		if err = bigMsg.SubVipPortraitTimesCheck(db.Mysql, entId); err != nil {
+		cepm, err := entity.CreateSubVipPortraitManager(userId, "entNewMsg", entId, true)
+		if err != nil {
 			return nil, err
 		}
 
@@ -101,16 +106,12 @@ func (this *SubVipPortrait) SubVipNewMsgSelects() {
 	rData, errMsg := func() (interface{}, error) {
 		entId := util.DecodeId(this.GetString("entId"))
 		if entId == "" {
-			return nil, fmt.Errorf("企业参数异常")
+			return nil, fmt.Errorf("参数异常")
 		}
-		_, bigMsg, err := entity.CreateSubVipPortraitManager(userId, "entNewMsg")
+		_, err := entity.CreateSubVipPortraitManager(userId, "entNewMsg", entId, true)
 		if err != nil {
 			return nil, err
 		}
-		//校验超级订阅画像浏览次数
-		if err = bigMsg.SubVipPortraitTimesCheck(db.Mysql, entId); err != nil {
-			return nil, err
-		}
 		pwp := &entity.PortraitScreen{Ent: entId}
 		return pwp.GetProjectSelectItems(true)
 	}()
@@ -124,16 +125,12 @@ func (this *SubVipPortrait) SubVipNewMsgSelects() {
 func (this *SubVipPortrait) SubVipPortrait() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
-		cepm, bigMsg, err := entity.CreateSubVipPortraitManager(userId, "entPortrait")
-		if err != nil {
-			return nil, err
-		}
 		entId := util.DecodeId(this.GetString("entId"))
 		if entId == "" {
 			return nil, fmt.Errorf("参数异常")
 		}
-		//校验超级订阅画像浏览次数
-		if err = bigMsg.SubVipPortraitTimesCheck(db.Mysql, entId); err != nil {
+		cepm, err := entity.CreateSubVipPortraitManager(userId, "entPortrait", entId, true)
+		if err != nil {
 			return nil, err
 		}
 		rData, err := cepm.WinnerPortraitData(&entity.PortraitScreen{
@@ -163,7 +160,7 @@ func (this *SubVipPortrait) PortraitUsage() {
 			return nil, fmt.Errorf("非法请求")
 		}
 		entId := util.DecodeId(this.GetString("entId"))
-		total, usage, isUsed := bigMsg.SubVipPortraitUsage(db.Mysql, entId)
+		total, usage, isUsed := bigMsg.SubVipPortraitUsage(db.Mysql, entId, this.GetString("p_type") != "1")
 		returnMap := map[string]interface{}{
 			"total":  total,
 			"usage":  usage,
@@ -198,33 +195,27 @@ func (this *SubVipPortrait) PortraitRecord() {
 		if bigMsg.VipStatus <= 0 && bigMsg.Vip_BuySet.Upgrade != 1 {
 			return nil, fmt.Errorf("非法请求")
 		}
+		isWinner := this.GetString("p_type") != "1"
 		//获取画像企业id
-		recordList, total := bigMsg.GetPortraitRecord(db.Mysql, year, month, pageNum, pageSize, pageNum == 0)
-		//followCheckMap, entDetailMap := func() (follcheck map[string]bool, entMsg map[string]map[string]interface{}) {
-		//	var swg sync.WaitGroup
-		//	swg.Add(2)
-		//	//补全关注状态
-		//	go func() {
-		//		follcheck = getEntListFollow(userId, recordList)
-		//		swg.Done()
-		//	}()
-		//	//补全企业信息
-		//	go func() {
-		//		entMsg = gitEntListMsg(recordList)
-		//		swg.Done()
-		//	}()
-		//	swg.Wait()
-		//	return
-		//}()
-		entDetailMap := gitEntListMsg(recordList)
+		recordList, total := bigMsg.GetPortraitRecord(db.Mysql, year, month, pageNum, pageSize, pageNum == 0, isWinner)
 		var infoList []map[string]interface{}
-		for _, eid := range recordList {
-			if entDetail, ok := entDetailMap[eid]; ok && entDetail != nil {
-				entDetail["id"] = util.EncodeId(eid)
-				//entDetail["followed"] = followCheckMap[eid]
-				infoList = append(infoList, entDetail)
+		if isWinner { //企业画像
+			entDetailMap := getEntListMsg(recordList)
+			for _, eid := range recordList {
+				if entDetail, ok := entDetailMap[eid]; ok && entDetail != nil {
+					entDetail["id"] = util.EncodeId(eid)
+					infoList = append(infoList, entDetail)
+				}
+			}
+		} else { //采购单位画像
+			buyerDetailMap := getBuyerListMsg(recordList)
+			for _, buyerName := range recordList {
+				if buyerDetail, ok := buyerDetailMap[buyerName]; ok && buyerDetail != nil {
+					infoList = append(infoList, buyerDetail)
+				}
 			}
 		}
+
 		returnMap := map[string]interface{}{
 			"list": infoList,
 		}
@@ -239,28 +230,152 @@ func (this *SubVipPortrait) PortraitRecord() {
 	this.ServeJson(NewResult(rData, errMsg))
 }
 
-func getEntListFollow(userId string, ids []string) (followMap map[string]bool) {
-	followMap = make(map[string]bool)
-	followed, _ := db.Mgo.Find("follow_entinfo_bigvip", map[string]interface{}{
-		"s_userid": userId,
-		"s_id":     map[string]interface{}{"$in": ids},
-	}, nil, `{"s_id":1}`, false, -1, -1)
-	if followed == nil || len(*followed) == 0 {
-		return
+//BuyerSelects 超级订阅筛选画像
+func (this *SubVipPortrait) BuyerSelects() {
+	userId := qutil.ObjToString(this.GetSession("userId"))
+	rData, errMsg := func() (interface{}, error) {
+		buyer := this.GetString("buyer")
+		if buyer == "" {
+			return nil, fmt.Errorf("参数异常")
+		}
+		_, err := entity.CreateSubVipPortraitManager(userId, "buyerPortrait", buyer, false)
+		if err != nil {
+			return nil, err
+		}
+		pwp := &entity.PortraitScreen{Ent: buyer}
+		return pwp.GetProjectSelectItems(false)
+	}()
+	if errMsg != nil {
+		log.Printf("%s BuyerSelects 获取采购的单位画像可筛选条件出错:%s\n", userId, errMsg.Error())
 	}
+	this.ServeJson(NewResult(rData, errMsg))
+}
 
-	for _, row := range *followed {
-		if entId, _ := row["id"].(string); entId != "" {
-			followMap[entId] = true
+//BuyerNewMsg 超级订阅采购单位画像动态
+func (this *SubVipPortrait) BuyerNewMsg() {
+	userId := qutil.ObjToString(this.GetSession("userId"))
+	rData, errMsg := func() (interface{}, error) {
+		buyer := this.GetString("buyer")
+		if buyer == "" {
+			return nil, fmt.Errorf("参数异常")
+		}
+		pageNum, _ := this.GetInteger("pageNum")
+		pageSize, _ := this.GetInteger("pageSize")
+		cepm, err := entity.CreateSubVipPortraitManager(userId, "buyerPortrait", buyer, false)
+		if err != nil {
+			return nil, err
+		}
+		//免费用户仅可查看三条记录
+		rData, total, err := cepm.GetBuyerNewMsg(&entity.PortraitProjectScreen{
+			Screen: &entity.PortraitScreen{
+				Ent:        buyer,
+				Match:      this.GetString("match"),
+				ExactMatch: this.GetString("exactMatch") == "1",
+				MatchRange: this.GetString("matchRange"),
+				Area:       this.GetString("area"),
+				ScopeClass: this.GetString("scopeClass"),
+				TimeRange:  this.GetString("timeRange"),
+				HasPower:   true,
+			},
+			PageNum:  pageNum,
+			PageSize: pageSize,
+		})
+		if err != nil {
+			return nil, err
+		}
+		return map[string]interface{}{
+			"list":  rData,
+			"count": total,
+		}, nil
+	}()
+	if errMsg != nil {
+		log.Printf("%s BuyerNewMsg获取采购单位最新招标信息出错:%s\n", userId, errMsg.Error())
+	}
+	this.ServeJson(NewResult(rData, errMsg))
+}
+
+//BuyerContacts 超级订阅采购单位联系人
+func (this *SubVipPortrait) BuyerContacts() {
+	userId := qutil.ObjToString(this.GetSession("userId"))
+	rData, errMsg := func() (interface{}, error) {
+		buyerName := this.GetString("buyer")
+		if buyerName == "" {
+			return nil, fmt.Errorf("企业参数异常")
+		}
+		cepm, err := entity.CreateSubVipPortraitManager(userId, "buyerPortrait", buyerName, false)
+		if err != nil {
+			return nil, err
+		}
+		rData, err := cepm.GetBuyerContactsMsg(buyerName)
+		if err != nil {
+			return nil, err
+		}
+		return map[string]interface{}{
+			"list": rData,
+		}, nil
+	}()
+	if errMsg != nil {
+		log.Printf("%s BuyerContacts获取历史项目联系方式出错:%s\n", userId, errMsg.Error())
+	}
+	this.ServeJson(NewResult(rData, errMsg))
+}
+
+//BuyerPortrait 超级订阅采购单位画像-数据
+func (this *SubVipPortrait) BuyerPortrait() {
+	userId := qutil.ObjToString(this.GetSession("userId"))
+	rData, errMsg := func() (interface{}, error) {
+		buyerName := this.GetString("buyer")
+		if buyerName == "" {
+			return nil, fmt.Errorf("参数异常")
+		}
+		cepm, err := entity.CreateSubVipPortraitManager(userId, "buyerPortrait", buyerName, false)
+		if err != nil {
+			return nil, err
+		}
+		flag := this.GetString("flag") //分段请求标识
+		rData, err := cepm.BuyerPortraitData(&entity.PortraitScreen{
+			Ent:        buyerName,
+			Match:      this.GetString("match"),
+			ExactMatch: this.GetString("exactMatch") == "1",
+			MatchRange: this.GetString("matchRange"),
+			Area:       this.GetString("area"),
+			ScopeClass: this.GetString("scopeClass"),
+			TimeRange:  this.GetString("timeRange"),
+			HasPower:   true,
+		}, flag)
+		if err != nil {
+			return nil, err
+		}
+		return rData, nil
+	}()
+	if errMsg != nil {
+		log.Printf("%s BuyerPortrait获取采购单位画像标信息出错:%s\n", userId, errMsg.Error())
+	}
+	this.ServeJson(NewResult(rData, errMsg))
+}
+
+//getEntListMsg 获取企业基本信息
+func getEntListMsg(ids []string) (dMap map[string]map[string]interface{}) {
+	dMap = make(map[string]map[string]interface{})
+	rData := elastic.Get("qyxy", "qyxy", fmt.Sprintf(`{"query":{"bool":{"must":[{"terms":{"id":["%s"]}}]}},"_source":["_id","company_name","company_status","legal_person","capital","company_address","company_shortname","company_phone","establish_date"],"size":%d}`, strings.Join(ids, `","`), len(ids)))
+	if rData == nil || len(*rData) == 0 {
+		return
+	}
+	for _, data := range *rData {
+		if id, ok := data["_id"].(string); ok && id != "" {
+			if dateTimestamp := qutil.Int64All(data["establish_date"]); dateTimestamp > 0 {
+				data["establish_date"] = time.Unix(dateTimestamp, 0).Format(qutil.Date_Short_Layout)
+			}
+			dMap[id] = data
 		}
 	}
 	return
 }
 
-func gitEntListMsg(ids []string) (detail map[string]map[string]interface{}) {
-	detail = make(map[string]map[string]interface{})
-	ids_str := `"` + strings.Join(ids, `","`) + `"`
-	rData := elastic.Get("qyxy", "qyxy", fmt.Sprintf(`{"query":{"bool":{"must":[{"terms":{"id":[%s]}}]}},"_source":["_id","company_name","company_status","legal_person","capital","company_address","company_shortname","company_phone","establish_date"],"size":%d}`, ids_str, len(ids)))
+//getBuyerListMsg 获取采购单位基本信息
+func getBuyerListMsg(buyerNames []string) (dMap map[string]map[string]interface{}) {
+	dMap = make(map[string]map[string]interface{})
+	rData := elastic.Get("buyer", "buyer", fmt.Sprintf(`{"query":{"bool":{"must":[{"terms":{"buyer_name":["%s"]}}]}},"size":%d,"_source":["buyer_name","city","province","buyerclass"]}`, strings.Join(buyerNames, `","`), len(buyerNames)))
 	if rData == nil || len(*rData) == 0 {
 		return
 	}
@@ -269,7 +384,15 @@ func gitEntListMsg(ids []string) (detail map[string]map[string]interface{}) {
 			if dateTimestamp := qutil.Int64All(data["establish_date"]); dateTimestamp > 0 {
 				data["establish_date"] = time.Unix(dateTimestamp, 0).Format(qutil.Date_Short_Layout)
 			}
-			detail[id] = data
+			dMap[id] = data
+		}
+		if buyerName, _ := data["buyer_name"].(string); buyerName != "" {
+			dMap[buyerName] = map[string]interface{}{
+				"name":       buyerName,
+				"city":       data["city"],
+				"province":   data["province"],
+				"buyerclass": data["buyerclass"],
+			}
 		}
 	}
 	return

+ 3 - 0
src/jfw/modules/bigmember/src/service/use/use.go

@@ -627,6 +627,9 @@ func (u *Use) IsAdd() {
 		//免费用户可查看企业画像次数//免费用户可查看采购单位画像次数//免费用户可以进行附件下载次数
 		d["freeEntPort"], d["freeBuyerPort"], d["freeFile"] = jy.FreeExperience(userid)
 		d["isUpgrade"] = bigPower.IsUpgrade //是否是升级后的免费用户  默认false
+		//超级用户附件下载本月可用次数
+		uk := qu.If(bigPower.VipStatus > 0, "v", "f").(string)
+		d["fileNum"] = config.Config.FileUploadNum[uk] - redis.GetInt(jy.PowerCacheDb, fmt.Sprintf(jy.VipFileUploadNumKey, userid, fmt.Sprint(time.Now().Month())))
 		//新用户->新订阅设置页面
 		if config.Config.NewFreeUser < bigPower.Registedate {
 			d["isUpgrade"] = true

+ 6 - 17
src/jfw/modules/common/src/qfw/util/jy/bigVipPower.go

@@ -29,9 +29,6 @@ type BigVipBaseMsg struct {
 
 	IsUpgrade   bool  `json:"isUpgrade"`   //是否是免费用户订阅升级用户 默认true
 	Registedate int64 `json:"registedate"` //用户注册时间
-	// FreeEntPort   int   `json:"freeEntPort"`   //免费用户可查看企业画像次数
-	// FreeBuyerPort int   `json:"freeBuyerPort"` //免费用户可查看采购单位画像次数
-	// FreeFile      int   `json:"freeFile"`      //免费用户可进行附件下载次数
 }
 
 //超级订阅购买内容
@@ -47,22 +44,14 @@ const (
 	BigmemberServiceTable   = "bigmember_service"
 	BigmemberUserPowerTable = "bigmember_service_user"
 
-	PowerCacheDb           = "other"
-	PowerCacheKey          = "bigmember_power_3_%s"
-	OneDay                 = 60 * 60 * 24
-	PowerCacheEntPortKey   = "free_ent_portrait_%s"
-	PowerCacheBuyerPortKey = "free_buyer_portrait_%s"
-	PowerCacheFileKey      = "free_article_attach_%s"
-	UserUpdateAreaKey      = "free_area_num_%s_%s"
-	BaseAreaNum            = 1
+	PowerCacheDb        = "other"
+	PowerCacheKey       = "bigmember_power_3_%s"
+	OneDay              = 60 * 60 * 24
+	UserUpdateAreaKey   = "free_area_num_%s_%s"
+	BaseAreaNum         = 1
+	VipFileUploadNumKey = "vip_file_num_%s_%s" //超级订阅附件本月一下载次数 %s:userid ; %s:当前月份-fmt.Sprint(time.Now().Month())
 )
 
-//免费用户体验会员功能权限
-//免费用户在企业画像/采购单位画像/附件下载留资 留资成功后用户才有功能使用次数
-func FreeExperience(userId string) (int, int, int) {
-	return redis.GetInt(PowerCacheDb, fmt.Sprintf(PowerCacheEntPortKey, userId)), redis.GetInt(PowerCacheDb, fmt.Sprintf(PowerCacheBuyerPortKey, userId)), redis.GetInt(PowerCacheDb, fmt.Sprintf(PowerCacheFileKey, userId))
-}
-
 //初始化大会员权益
 func InitBigVipService(mysql *mysql.Mysql) {
 	serviceList := mysql.Find(BigmemberServiceTable, nil, "id,s_url_front,s_url_back", "id", -1, -1)

+ 68 - 0
src/jfw/modules/common/src/qfw/util/jy/freeExperience.go

@@ -0,0 +1,68 @@
+package jy
+
+import (
+	"fmt"
+	"log"
+	"qfw/util"
+	"qfw/util/redis"
+	"time"
+)
+
+const (
+	PowerCacheEntPortKey   = "free_ent_portrait_%s"
+	PowerCacheBuyerPortKey = "free_buyer_portrait_%s"
+	PowerCacheFileKey      = "free_article_attach_%s"
+	PowerCachePortraitKey  = "free_portrait_%s_%s"
+)
+
+//免费用户体验会员功能权限
+//免费用户在企业画像/采购单位画像/附件下载留资 留资成功后用户才有功能使用次数
+func FreeExperience(userId string) (int, int, int) {
+	return redis.GetInt(PowerCacheDb, fmt.Sprintf(PowerCacheEntPortKey, userId)),
+		redis.GetInt(PowerCacheDb, fmt.Sprintf(PowerCacheBuyerPortKey, userId)),
+		redis.GetInt(PowerCacheDb, fmt.Sprintf(PowerCacheFileKey, userId))
+}
+
+func Portraitexperience(userId, queryEnt string, isWinner bool) (eOk bool) {
+	i := redis.GetInt(PowerCacheDb, fmt.Sprintf("free_%s_portrait_%s", util.If(isWinner, "ent", "buyer").(string), userId))
+	if i > 1 {
+		eOk = PortraitExperienceSet(userId, queryEnt, util.If(isWinner, "W", "B").(string))
+	} else if i == -1 {
+		eOk = PortraitExperienceUsing(userId, queryEnt)
+	}
+	return
+}
+
+//画像体验是否到期
+func PortraitExperienceUsing(userId, name string) bool {
+	b, err := redis.Exists(PowerCacheDb, fmt.Sprintf(PowerCachePortraitKey, userId, name))
+	if err != nil {
+		log.Println("查询redis 异常...")
+	}
+	return b
+}
+
+// 免费用户权限设置
+func PortraitExperienceSet(userId, name, p string) bool {
+	//企业画像
+	b := false
+	timeRemaining := int(RemainingTimes())
+	switch p {
+	case "W":
+		if redis.GetInt(PowerCacheDb, fmt.Sprintf(PowerCacheEntPortKey, userId)) > 0 {
+			b = redis.PutCKV(PowerCacheDb, fmt.Sprintf(PowerCacheEntPortKey, userId), -1) && redis.Put(PowerCacheDb, fmt.Sprintf(PowerCachePortraitKey, userId, name), name, timeRemaining)
+		}
+	case "B":
+		if redis.GetInt(PowerCacheDb, fmt.Sprintf(PowerCacheBuyerPortKey, userId)) > 0 {
+			b = redis.PutCKV(PowerCacheDb, fmt.Sprintf(PowerCacheBuyerPortKey, userId), -1) && redis.Put(PowerCacheDb, fmt.Sprintf(PowerCachePortraitKey, userId, name), name, timeRemaining)
+		}
+	}
+	return b
+}
+
+//当前剩余时间
+func RemainingTimes() int64 {
+	now := time.Now().Unix()
+	lastTime := time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 23, 59, 59, 59, time.Now().Location()).Unix()
+	return lastTime - now
+}

+ 68 - 37
src/jfw/modules/common/src/qfw/util/jy/subvipPortrait.go

@@ -2,6 +2,7 @@ package jy
 
 import (
 	"fmt"
+	qutil "qfw/util"
 	"qfw/util/mysql"
 	"qfw/util/redis"
 	"time"
@@ -9,13 +10,38 @@ import (
 
 //超级订阅画像使用次数
 const (
-	OneAreaTimes        = 50
-	PortraitRecordTimes = "subVipPortraitRecordTimes_%s_%d"
-	UsePortraitVisited  = "subVipPortraitVisited_%s_%d_%s"
-	PortraitRecordTable = "portrait_record"
+	OneAreaTimes              = 50
+	PortraitWinnerRecordTimes = "subVipPortraitRecordTimes_%s_%d"
+	PortraitBuyerRecordTimes  = "subVipBuyerPortraitRecordTimes_%s_%d"
+
+	UsePortraitWinnerVisited = "subVipPortraitVisited_%s_%d_%s"
+	UsePortraitBuyerVisited  = "subVipBuyerPortraitVisited_%s_%d_%s"
+	PortraitRecordTable      = "portrait_record"
 )
 
-func (this *BigVipBaseMsg) SubVipPortraitUsage(mysql *mysql.Mysql, entId string) (fullCount, usage int, visited bool) {
+//GetPortraitRecordTimesRedisKey 获取画像使用数量key
+func (this *BigVipBaseMsg) GetPortraitRecordTimesRedisKey(isWinnerPortrait bool) string {
+	if isWinnerPortrait {
+		return fmt.Sprintf(PortraitWinnerRecordTimes, this.Uid, int(time.Now().Month()))
+	}
+	return fmt.Sprintf(PortraitBuyerRecordTimes, this.Uid, int(time.Now().Month()))
+}
+
+//GetPortraitVisitedRedisKey 画像是否浏览过key
+func (this *BigVipBaseMsg) GetPortraitVisitedRedisKey(searchValue string, isWinnerPortrait bool) string {
+	if isWinnerPortrait {
+		return fmt.Sprintf(UsePortraitWinnerVisited, this.Uid, int(time.Now().Month()), searchValue)
+	}
+	return fmt.Sprintf(UsePortraitBuyerVisited, this.Uid, int(time.Now().Month()), searchValue)
+}
+
+/*
+SubVipPortraitUsage 画像使用情况查询
+mysql 数据库链接
+searchValue 中标企业 entId 采购单位 buyerName
+isWinnerPortrait 是否是企业画像标识
+*/
+func (this *BigVipBaseMsg) SubVipPortraitUsage(mysql *mysql.Mysql, searchValue string, isWinnerPortrait bool) (fullCount, usage int, visited bool) {
 	if this.VipStatus <= 0 {
 		return
 	}
@@ -24,61 +50,67 @@ func (this *BigVipBaseMsg) SubVipPortraitUsage(mysql *mysql.Mysql, entId string)
 	} else {
 		fullCount = this.Vip_BuySet.AreaCount * OneAreaTimes
 	}
-	usage = redis.GetInt(PowerCacheDb, fmt.Sprintf(PortraitRecordTimes, this.Uid, int(time.Now().Month())))
-	if mysql != nil && entId != "" {
-		visited = this.isVisitEnt(mysql, entId)
+	//当月查看次数
+	usage = this.GetUsageNum(mysql, isWinnerPortrait)
+	//是否查看过此画像
+	if mysql != nil && searchValue != "" {
+		visited = this.isVisitEnt(mysql, searchValue, isWinnerPortrait)
 	}
 	return
 }
 
-func (this *BigVipBaseMsg) isVisitEnt(mysql *mysql.Mysql, entId string) bool {
-	now := time.Now()
-	//浏览缓存
-	visitedCache := fmt.Sprintf(UsePortraitVisited, this.Uid, int(now.Month()), entId)
+//GetUsageNum 查询画像查看次数
+func (this *BigVipBaseMsg) GetUsageNum(mysql *mysql.Mysql, isWinnerPortrait bool) (usage int) {
+	usage = redis.GetInt(PowerCacheDb, this.GetPortraitRecordTimesRedisKey(isWinnerPortrait))
+	if usage == 0 && mysql != nil { //当缓存中无值时查询mysql中使用量
+		now := time.Now()
+		mysql.CountBySql(fmt.Sprintf("select count(id) from %s where user_id =? and p_type =? and year(create_time)=? and month(create_time)=?",
+			PortraitRecordTable), this.Uid, qutil.If(isWinnerPortrait, 0, 1).(int), now.Year(), int(now.Month()))
+	}
+	return
+}
+
+//isVisitEnt 查询当月是否查看过次画像
+func (this *BigVipBaseMsg) isVisitEnt(mysql *mysql.Mysql, searchValue string, isWinnerPortrait bool) bool {
 	//本月有浏览记录
-	if exists, err := redis.Exists(PowerCacheDb, visitedCache); err == nil && exists {
+	if exists, err := redis.Exists(PowerCacheDb, this.GetPortraitVisitedRedisKey(searchValue, isWinnerPortrait)); err == nil && exists {
 		return true
 	}
-	if mysql.CountBySql(fmt.Sprintf("select count(id) from %s where user_id =? and ent_id =? and year(create_time)=? and month(create_time)=?",
-		PortraitRecordTable), this.Uid, entId, now.Year(), int(now.Month())) == 0 {
+	now := time.Now()
+	if mysql.CountBySql(fmt.Sprintf("select count(id) from %s where user_id =? and ent_id =? and p_type = ? and year(create_time)=? and month(create_time)=?",
+		PortraitRecordTable), this.Uid, searchValue, qutil.If(isWinnerPortrait, 0, 1).(int), now.Year(), int(now.Month())) == 0 {
 		return false
 	}
 	return true
 }
 
-func (this *BigVipBaseMsg) SubVipPortraitTimesCheck(mysql *mysql.Mysql, entId string) error {
-	if this.VipStatus <= 0 || entId == "" {
+func (this *BigVipBaseMsg) SubVipPortraitTimesCheck(mysql *mysql.Mysql, searchValue string, isWinnerPortrait bool) error {
+	if this.VipStatus <= 0 || searchValue == "" {
 		return fmt.Errorf("非法请求")
 	}
-	fullCount, now := 0, time.Now()
-	//查询本月是否浏览过
-	if this.isVisitEnt(mysql, entId) {
+	now := time.Now()
+	fullCount, useCount, visited := this.SubVipPortraitUsage(mysql, searchValue, isWinnerPortrait)
+	if visited { //浏览过直接返回
 		return nil
 	}
-
 	//校验本月次数是否使用完
-	useKey := fmt.Sprintf(PortraitRecordTimes, this.Uid, int(now.Month()))
-	useCount := redis.GetInt(PowerCacheDb, useKey)
-	if this.Vip_BuySet.AreaCount == -1 {
-		fullCount = 16 * OneAreaTimes //全国全国行业
-	} else {
-		fullCount = this.Vip_BuySet.AreaCount * OneAreaTimes
-	}
 	if useCount >= fullCount {
 		return fmt.Errorf("本月次数已使用完")
 	}
-
 	//并发控制
-	if redis.Incr(PowerCacheDb, fmt.Sprintf(UsePortraitVisited, this.Uid, int(now.Month()), entId)) == 1 {
-		_ = redis.SetExpire(PowerCacheDb, fmt.Sprintf(UsePortraitVisited, this.Uid, int(now.Month()), entId), 60*60*5)
+	UsePortraitVisited := this.GetPortraitVisitedRedisKey(searchValue, isWinnerPortrait)
+	if redis.Incr(PowerCacheDb, UsePortraitVisited) == 1 {
+		_ = redis.SetExpire(PowerCacheDb, UsePortraitVisited, 60*60*5)
 		//新增使用记录
 		if mysql.Insert(PortraitRecordTable, map[string]interface{}{
 			"user_id":     this.Uid,
-			"ent_id":      entId,
+			"ent_id":      searchValue,
+			"p_type":      qutil.If(isWinnerPortrait, 0, 1),
 			"create_time": now.Format("2006-01-02 15:04:05"),
 		}) == 0 {
 			return fmt.Errorf("数据记录异常")
 		}
+		useKey := this.GetPortraitRecordTimesRedisKey(isWinnerPortrait)
 		if redis.Incr(PowerCacheDb, useKey) == 1 {
 			_ = redis.SetExpire(PowerCacheDb, useKey, 24*60*60*31) //次数缓存一个月
 		}
@@ -86,17 +118,16 @@ func (this *BigVipBaseMsg) SubVipPortraitTimesCheck(mysql *mysql.Mysql, entId st
 	return nil
 }
 
-func (this *BigVipBaseMsg) GetPortraitRecord(mysql *mysql.Mysql, year, month, pageNum, pageSize int, needCount bool) (ids []string, total int64) {
+func (this *BigVipBaseMsg) GetPortraitRecord(mysql *mysql.Mysql, year, month, pageNum, pageSize int, needCount, isWinnerPortrait bool) (ids []string, total int) {
 	total = -1
 	if needCount { //查询数量
-		total = mysql.CountBySql(fmt.Sprintf("select count(id) from %s where user_id =? and year(create_time)=? and month(create_time)=? ",
-			PortraitRecordTable), this.Uid, year, month)
+		total = this.GetUsageNum(mysql, isWinnerPortrait)
 		if total == 0 {
 			return
 		}
 	}
-	res := mysql.Query(fmt.Sprintf("select ent_id from %s where user_id =? and year(create_time)=? and month(create_time)=? order by create_time desc limit ?,?",
-		PortraitRecordTable), this.Uid, year, month, pageNum*pageSize, pageSize)
+	res := mysql.Query(fmt.Sprintf("select ent_id from %s where user_id =? and year(create_time)=? and month(create_time)=? and p_type = ? order by create_time desc limit ?,?",
+		PortraitRecordTable), this.Uid, year, month, qutil.If(isWinnerPortrait, 0, 1), pageNum*pageSize, pageSize)
 	if res == nil {
 		return
 	}

+ 10 - 0
src/jfw/modules/publicapply/src/attachmentdow/init.go

@@ -0,0 +1,10 @@
+package attachmentdow
+
+import (
+	"attachmentdow/service"
+	"github.com/go-xweb/xweb"
+)
+
+func init() {
+	xweb.AddAction(&service.Dow{})
+}

+ 74 - 0
src/jfw/modules/publicapply/src/attachmentdow/service/service.go

@@ -0,0 +1,74 @@
+package service
+
+import (
+	. "api"
+	"config"
+	"db"
+	"fmt"
+	"github.com/go-xweb/xweb"
+	"log"
+	qu "qfw/util"
+	"qfw/util/jy"
+	"qfw/util/redis"
+	"time"
+	"util"
+)
+
+type Dow struct {
+	*xweb.Action
+	subdow xweb.Mapper `xweb:"/attachment/get"` //超级订阅附件下载
+}
+
+//超级订阅 附件下载
+func (u *Dow) Subdow() {
+	if !R.CheckReqParam(u.ResponseWriter, u.Request, "infoId") {
+		return
+	}
+	r := func() Result {
+		userid := qu.ObjToString(u.GetSession("userId"))
+		if userid == "" {
+			return Result{Data: nil, Error_msg: "未登录"}
+		}
+
+		BaseMsg := jy.GetBigVipUserBaseMsg(userid, db.Mysql, db.Mgo)
+		status := BaseMsg.VipStatus
+		if status <= 0 {
+			return Result{Data: nil, Error_msg: "非超级订阅用户,无下载权限"}
+		}
+		mon := fmt.Sprintf(jy.VipFileUploadNumKey, userid, fmt.Sprint(time.Now().Month()))
+		ss := redis.GetInt(jy.PowerCacheDb, mon)
+		if config.Config.File_number <= ss {
+			return Result{Data: nil, Error_msg: "您本月查看机会已经消耗完毕,如需要更多服务,请前往联系客服。"}
+		}
+
+		//前端传的是加密的id 需要解密
+		infoId := util.DecodeId(u.GetString("infoId")) //"5ddf222ce9d1f601e469e00c  5f50c37dc0145440737556d0"
+		// 调用rpc
+		req := util.JyMemberRequest{infoId}
+		rep, err := util.Attachment(&req)
+		if err != nil {
+			return Result{Data: nil, Error_msg: "rpc调用失败"}
+		}
+		if rep.Rep == nil {
+			rep.Rep = []map[string]interface{}{}
+		}
+		//下载后自增一次
+		redis.Incr(jy.VipFileUploadNumKey, mon)
+
+		m := rep.Rep
+		data := make(map[string]interface{})
+		data["p_userid"] = userid
+		data["p_infoId"] = infoId
+		data["p_create_time"] = time.Now().Unix()
+		data["p_rep"] = rep
+		data["p_type"] = "超级订阅用户附件下载"
+		//存库记录
+		db.Mgo.Save("filehistroy", data)
+		log.Printf("超级订阅用户%s,%s月第%d次下载附件", userid, mon, ss)
+		return Result{Data: map[string]interface{}{
+			"attachment": m,
+			"len":        len(rep.Rep),
+		}}
+	}()
+	u.ServeJson(r)
+}

+ 4 - 1
src/jfw/modules/publicapply/src/config.json

@@ -14,6 +14,8 @@
             "user": "public03@topnet.net.cn"
         }
     ],
+    "attachmentRPC":"192.168.3.128:10082",
+    "followPushRpc": "127.0.0.1:8759",
     "industry": "分类综合测试",
     "defaultEntList": [
         "744fb1d7cc3561e11c639fcc2ad955c0",
@@ -39,5 +41,6 @@
         "3613232bc702d011232ed57f0027af1c"
 
     ],
-    "bidSearchOldUserLimit": 1626105600
+    "bidSearchOldUserLimit": 1626105600,
+    "file_number": 10
 }

+ 3 - 0
src/jfw/modules/publicapply/src/config/config.go

@@ -15,6 +15,9 @@ type config struct {
 	Industry              string
 	DefaultEntList        []string //企业查询默认展示企业
 	BidSearchOldUserLimit int64
+	File_number           int
+	AttachmentRPC		  string
+	FollowPushRpc         string
 }
 type BidColl struct {
 	PayUserCollLimit      int    //付费用户收藏数量最大限制

+ 48 - 50
src/jfw/modules/publicapply/src/subscribe/entity/entity.go

@@ -12,14 +12,12 @@ import (
 	"time"
 
 	// "reflect"
-	"strconv"
+	//"strconv"
 	"strings"
 	. "subscribePush/entity"
 )
 
 const (
-	INDEX          = "bidding"
-	TYPE           = "bidding"
 	bidSearch_sort = `{"publishtime":-1}`
 	findfields     = `"title"`
 
@@ -211,54 +209,54 @@ func (pi *ParamInfo) GetSubMsg() UserSubMsg {
 	return res
 }
 
-//免费用户对象
-func GetSqlObjFromFreeId(_id, item string, index int) *ViewCondition {
-	var (
-		query *map[string]interface{}
-		ok    bool
-	)
-	if query, ok = db.Mgo.FindById("user", _id, `{"o_jy":1}`); !ok && (*query)["o_jy"] == nil {
-		return nil
-	}
-	o_jy, _ := (*query)["o_jy"].(map[string]interface{})
+// //免费用户对象
+// func GetSqlObjFromFreeId(_id, item string, index int) *ViewCondition {
+// 	var (
+// 		query *map[string]interface{}
+// 		ok    bool
+// 	)
+// 	if query, ok = db.Mgo.FindById("user", _id, `{"o_jy":1}`); !ok && (*query)["o_jy"] == nil {
+// 		return nil
+// 	}
+// 	o_jy, _ := (*query)["o_jy"].(map[string]interface{})
 
-	if o_jy["a_key"] == nil {
-		return nil
-	}
-	//关键词组
-	a_items := []interface{}{}
-	a_items = append(a_items, o_jy["a_key"])
-	//采购单位类型
-	a_buyerclass := []interface{}{}
-	//信息类型
-	a_infotype := []string{}
-	infotypeArr := ""
-	if o_jy["a_infotype"] != nil {
-		a_infotype = qutil.ObjArrToStringArr(o_jy["a_infotype"].([]interface{}))
-		for k, v := range a_infotype {
-			infotype := v
-			infotypeArr += getstype(infotype)
-			if k != len(a_infotype)-1 {
-				infotypeArr += ","
-			}
-		}
-	}
-	if infotypeArr != "" {
-		a_infotype = strings.Split(infotypeArr, ",")
-	}
-	//省份
-	o_area := qutil.ObjToMap(o_jy["o_area"])
-	if qutil.IntAllDef(o_jy["i_ppstatus"], 0) == 1 && o_jy["o_area_p"] != nil {
-		o_area = qutil.ObjToMap(o_jy["o_area_p"])
-	}
-	return &ViewCondition{
-		Keyword:    getKeyWordArrFromDbResult(a_items, item, index), //关键词
-		Buyerclass: qutil.ObjArrToStringArr(a_buyerclass),           //采购单位类型
-		Subtype:    a_infotype,                                      //信息类型
-		Area:       getStringArrFromDbResult(*o_area, 1),            //省份
-		SelectType: strconv.Itoa(qutil.IntAll(o_jy["i_matchway"])),  //匹配方式
-	}
-}
+// 	if o_jy["a_key"] == nil {
+// 		return nil
+// 	}
+// 	//关键词组
+// 	a_items := []interface{}{}
+// 	a_items = append(a_items, o_jy["a_key"])
+// 	//采购单位类型
+// 	a_buyerclass := []interface{}{}
+// 	//信息类型
+// 	a_infotype := []string{}
+// 	infotypeArr := ""
+// 	if o_jy["a_infotype"] != nil {
+// 		a_infotype = qutil.ObjArrToStringArr(o_jy["a_infotype"].([]interface{}))
+// 		for k, v := range a_infotype {
+// 			infotype := v
+// 			infotypeArr += getstype(infotype)
+// 			if k != len(a_infotype)-1 {
+// 				infotypeArr += ","
+// 			}
+// 		}
+// 	}
+// 	if infotypeArr != "" {
+// 		a_infotype = strings.Split(infotypeArr, ",")
+// 	}
+// 	//省份
+// 	o_area := qutil.ObjToMap(o_jy["o_area"])
+// 	if qutil.IntAllDef(o_jy["i_ppstatus"], 0) == 1 && o_jy["o_area_p"] != nil {
+// 		o_area = qutil.ObjToMap(o_jy["o_area_p"])
+// 	}
+// 	return &ViewCondition{
+// 		Keyword:    getKeyWordArrFromDbResult(a_items, item, index), //关键词
+// 		Buyerclass: qutil.ObjArrToStringArr(a_buyerclass),           //采购单位类型
+// 		Subtype:    a_infotype,                                      //信息类型
+// 		Area:       getStringArrFromDbResult(*o_area, 1),            //省份
+// 		SelectType: strconv.Itoa(qutil.IntAll(o_jy["i_matchway"])),  //匹配方式
+// 	}
+// }
 
 // //关键词 附加词 排除词
 func getKeyWordArrFromDbResult(a_items []interface{}, item string, index int) (arr []ViewKeyWord) {

+ 106 - 0
src/jfw/modules/publicapply/src/util/rpc.go

@@ -0,0 +1,106 @@
+package util
+
+import (
+	"config"
+	"encoding/json"
+	"log"
+	"net/rpc"
+	"qfw/util"
+	qrpc "qfw/util/rpc"
+)
+
+//项目更新推送
+func FollowPush(p *qrpc.FollowPush) (repls []*map[string]interface{}, err error) {
+	util.Try(func() {
+		client, e := rpc.DialHTTP("tcp", config.Config.FollowPushRpc)
+		defer client.Close()
+		if e != nil {
+			err = e
+			log.Println(err.Error())
+			return
+		}
+		var repl []byte
+		err = client.Call("FollowPushRpc.FollowPush", p, &repl)
+		if err == nil && repl != nil && len(repl) > 0 {
+			var mp []*map[string]interface{}
+			json.Unmarshal(repl, &mp)
+			repls = mp
+		}
+		if err != nil {
+			log.Println(err.Error())
+		}
+	}, func(e interface{}) {})
+	return
+}
+
+type JyMemberRequest struct {
+	InfoId string
+}
+
+type JyMemberResponse struct {
+	Rep []map[string]interface{}
+}
+
+//附件下载
+func Attachment(am *JyMemberRequest) (rep *JyMemberResponse, err error) {
+	util.Try(func() {
+		client, e := rpc.DialHTTP("tcp", config.Config.AttachmentRPC)
+		defer client.Close()
+		if e != nil {
+			err = e
+			log.Println(err.Error())
+			return
+		}
+		err = client.Call("JyService.Download", am, &rep)
+		if err == nil && rep != nil {
+			return
+		}
+		if err != nil {
+			log.Println(err.Error())
+		}
+	}, func(e interface{}) {})
+	return
+}
+
+//JyService.Forecast  中标预测分析rpc接口
+
+type ForecastS struct {
+	Pname        string   `json:"pname"`        //项目名称
+	Id           string   `json:"id"`           //项目id
+	Infoid       string   `json:"infoid"`       //项目第一个listid
+	BuyerContent []string `json:"buyerContent"` //采购内容
+	Buyer        string   `json:"buyer"`        //采购单位
+	Budget       float64  `json:"budget"`       //预算
+	Area         string   `json:"area"`         //地区
+	City         string   `json:"city"`         //城市
+	RedisFKey    string   `json:"redisFKey"`    //保存数据rediskey值
+	Agency       string   `json:"agency"`       //招标代理机构
+	Buyertel     string   `json:"buyertel"`     //采购联系方式
+	Buyerperson  string   `json:"buyerperson"`  //采购联系人
+	Type         string   `json:"type"`         //是否需要传参数
+	ServiceId    int      `json:"serviceId"`    //服务id
+	MobileModel  string   `json:"mobileModel"`  //手机型号
+	AppVersion   string   `json:"appVersion"`   //app版本号
+}
+
+type repBool struct {
+	Rep bool
+}
+
+func JyForecastByRpc(getRes *ForecastS) bool {
+	// log.Println("-------:", getRes)
+	var ok repBool
+	util.Try(func() {
+		client, err := rpc.DialHTTP("tcp", config.Config.AttachmentRPC)
+		if err != nil {
+			log.Println("Forecast-1-err:", err)
+		}
+		defer client.Close()
+		err = client.Call("JyService.Forecast", getRes, &ok)
+		if err != nil {
+			log.Println("Forecast-2-err:", err)
+		}
+	}, func(e interface{}) {})
+	log.Println(ok.Rep)
+	return ok.Rep
+}

+ 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",

+ 200 - 0
src/web/staticres/big-member/css/page_index.css

@@ -1048,3 +1048,203 @@
   opacity: 0.5;
   cursor:not-allowed;
 }
+
+
+.top-banner {
+  background: url("/big-member/image/new_info/cg-bg.png");
+  background-size: 100% 100%;
+}
+.subpage-button {
+  display: inline-block;
+  min-width: 180px;
+  height: 46px;
+  padding: 0 16px;
+  box-sizing: border-box;
+  border-radius: 6px 6px 6px 6px;
+  opacity: 1;
+  color: #FFFFFF;
+  line-height: 46px;
+  text-align: center;
+  margin: 0 30px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+  transition: 0.7s;
+}
+
+.subpage-button::after {
+  position: absolute;
+  left: 0;
+  top: 0;
+  content: '';
+  display: block;
+  width: 180px;
+  height: 46px;
+  background-image: linear-gradient(
+          0deg,
+          rgba(0, 0, 0, 0),
+          rgba(255, 255, 255, 0.3),
+          rgba(0, 0, 0, 0)
+  );
+  transform: rotate(-45deg) translate(0, -360px);
+}
+.subpage-button:hover::after {
+  /* 过渡效果只能再鼠标放上去生效 不然鼠标离开也会有效果 */
+  transition: 1s ease-in-out;
+  transform: rotate(-45deg) translate(0, 80px);
+}
+
+.subpage-button:hover {
+  transform: scale(1.2);
+  box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.5);
+}
+
+.subpage-button.gold {
+  background: linear-gradient(90deg, #E9B769 6%, #C18845 100%, #EEB879 100%);
+  box-shadow: 0px 10px 16px 1px rgba(233, 183, 105, 0.20000000298023224);
+}
+
+.subpage-button.lightBlue {
+  background: linear-gradient(90deg, #F9FAFF 0%, #C0BDFB 100%);
+  box-shadow: 0px 10px 16px 1px rgba(51, 49, 110, 0.20000000298023224);
+}
+
+.top-info-group  h3 {
+  font-family: YouSheBiaoTiHei;
+  font-style: normal;
+  font-weight: normal;
+  font-size: 40px;
+  line-height: 52px;
+  color: #fff;
+}
+.top-info-group  p {
+  margin-top: 20px;
+  margin-bottom: 56px;
+  font-family: Microsoft YaHei;
+  font-style: normal;
+  font-weight: normal;
+  font-size: 18px;
+  line-height: 28px;
+  text-align: center;
+  color: rgba(255, 255, 255, 0.8);
+
+}
+.row-button-group {
+
+}
+.top-info-group {
+  padding-top: 112px;
+  padding-bottom: 68px;
+  display: flex;
+  flex-direction: column;
+  align-content: center;
+  justify-content: center;
+  text-align: center;
+}
+.title-info-group::after {
+  content: "";
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  display: inline-block;
+  width: 32px;
+  height: 32px;
+  background-image: url("/big-member/image/new_info/icon-title.png");
+  background-size: cover;
+}
+.title-info-group::before {
+  z-index: -1;
+  content: "";
+  position: absolute;
+  bottom: 7px;
+  left: 21px;
+  display: inline-block;
+  width: 236px;
+  height: 8px;
+  background: linear-gradient(270deg, #5326D1 0%, rgba(83, 39, 209, 0) 100%);
+  transform: rotate(-180deg);
+}
+.title-info-group {
+  display: inline-block;
+  position: relative;
+  font-family: Microsoft YaHei;
+  font-style: normal;
+  font-weight: bold;
+  font-size: 24px;
+  color: #1D1D1D;
+  padding-left: 44px;
+  line-height: 44px;
+}
+.content-info-group p {
+  position: relative;
+}
+.content-info-group p::before {
+  content: "";
+  position: absolute;
+  top: 4px;
+  left: -26px;
+  display: inline-block;
+  width: 18px;
+  height: 18px;
+  display: inline-block;
+  background-image: url("/big-member/image/new_info/icon-tick.png");
+  background-size: cover;
+}
+.content-info-group {
+  margin-top: 32px;
+  font-family: Microsoft YaHei;
+  font-style: normal;
+  font-weight: normal;
+  font-size: 16px;
+  line-height: 24px;
+  color: #1D1D1D;
+  padding-left: 44px;
+  box-sizing: border-box;
+}
+.content-info-group .subpage-button {
+  margin: 0;
+  margin-top: 42px;
+}
+.big-item-group:first-child {
+  padding-top: 120px;
+}
+.big-item-group.reverse {
+  flex-direction: row-reverse;
+}
+.big-item-group {
+  padding-bottom: 120px;
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+.item-img-group img {
+  width: 684px;
+}
+.page--big--index .inset-swiper-box {
+  padding: 24px 8px;
+  box-sizing: content-box;
+}
+.page--big--index .inset-swiper-box .swiper-pagination::before {
+  content: unset;
+}
+.swiper-container-horizontal>.swiper-pagination-bullets, .swiper-pagination-custom, .swiper-pagination-fraction {
+  bottom: 0;
+}
+.page--big--index .footer-banner img {
+  margin-top: -25px;
+}
+.page--big--index .footer-banner {
+  height: 68px;
+}
+.page--big--index .footer-banner .icon-close-box {
+  top: 15px;
+}
+.show-number-box {
+  padding-bottom: 30px;
+}
+.bg-651 {
+  padding-bottom: 148px;
+}
+.page--big--index {
+  padding-bottom: 0;
+}

BIN
src/web/staticres/big-member/image/new_info/Frame 1080.png


BIN
src/web/staticres/big-member/image/new_info/cg-bg.png


BIN
src/web/staticres/big-member/image/new_info/footer-bannar.png


BIN
src/web/staticres/big-member/image/new_info/footer-banner-qz.png


BIN
src/web/staticres/big-member/image/new_info/footer-banner-sc.png


BIN
src/web/staticres/big-member/image/new_info/footer-banner-zb.png


BIN
src/web/staticres/big-member/image/new_info/icon-1.png


BIN
src/web/staticres/big-member/image/new_info/icon-2.png


BIN
src/web/staticres/big-member/image/new_info/icon-3.png


BIN
src/web/staticres/big-member/image/new_info/icon-tick.png


BIN
src/web/staticres/big-member/image/new_info/icon-title.png


BIN
src/web/staticres/big-member/image/new_info/item-IntelligentAnalysis.png


BIN
src/web/staticres/big-member/image/new_info/item-aiForecast.png


BIN
src/web/staticres/big-member/image/new_info/item-allData.png


BIN
src/web/staticres/big-member/image/new_info/item-bigDataPrediction.png


BIN
src/web/staticres/big-member/image/new_info/item-cg-2.png


BIN
src/web/staticres/big-member/image/new_info/item-hz-2.png


BIN
src/web/staticres/big-member/image/new_info/item-hz-3.png


BIN
src/web/staticres/big-member/image/new_info/item-hz.png


BIN
src/web/staticres/big-member/image/new_info/item-per.png


BIN
src/web/staticres/big-member/image/new_info/item-phone.png


BIN
src/web/staticres/big-member/image/new_info/item-sc-01.png


BIN
src/web/staticres/big-member/image/new_info/item-sc-02.png


BIN
src/web/staticres/big-member/image/new_info/item-sc-03.png


BIN
src/web/staticres/big-member/image/new_info/item-sc-04.png


BIN
src/web/staticres/big-member/image/new_info/item-sc-05.png


BIN
src/web/staticres/big-member/image/new_info/item-sc-06.png


BIN
src/web/staticres/big-member/image/new_info/item-top.png


BIN
src/web/staticres/big-member/image/new_info/item-year.png


BIN
src/web/staticres/big-member/image/new_info/qz-bg.png


BIN
src/web/staticres/big-member/image/new_info/sc-bg.png


BIN
src/web/staticres/big-member/image/new_info/zb-bg.png


BIN
src/web/staticres/common-module/vipsubscribe/image/info/btnBottom.png


BIN
src/web/staticres/common-module/vipsubscribe/image/info/cut_01.jpg


BIN
src/web/staticres/common-module/vipsubscribe/image/info/cut_02.jpg


BIN
src/web/staticres/common-module/vipsubscribe/image/info/cut_03.jpg


BIN
src/web/staticres/common-module/vipsubscribe/image/info/cut_04.jpg


BIN
src/web/staticres/common-module/vipsubscribe/image/info/cut_05.jpg


BIN
src/web/staticres/common-module/vipsubscribe/image/info/cut_06.jpg


BIN
src/web/staticres/common-module/vipsubscribe/image/info/tagBottom.png


+ 41 - 0
src/web/staticres/vipsubscribe/css/vip_introduce.css

@@ -466,3 +466,44 @@ html,body {
   width: 100%;
 }
 
+body {
+  background: #fff;
+  padding-bottom: constant(safe-area-inset-bottom);
+  padding-bottom: env(safe-area-inset-bottom);
+}
+.popup-bottom-group {
+  position: relative;
+  margin-bottom: constant(safe-area-inset-bottom);
+  margin-bottom: env(safe-area-inset-bottom);
+  box-shadow: unset;
+}
+.pop-tip-group img {
+  width: 100%;
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: -1;
+  height: 0.7rem;
+}
+.pop-tip-group span {
+  font-size: 0.36rem;
+}
+.pop-tip-group {
+  z-index: 0;
+  width: 2.4rem;
+  position: absolute;
+  top: -0.8rem;
+  text-align: center;
+  font-size: 0.26rem;
+  font-family: PingFang SC-Bold, PingFang SC;
+  font-weight: bold;
+  color: #FFFFFF;
+  line-height: 0.64rem;
+}
+.vip_introduce .main img {
+  width: 100%;
+}
+.vip_introduce .main {
+  padding-bottom: 0;
+  margin-bottom: -1.8rem;
+}

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 33 - 0
src/web/templates/big-member/pc/page_cg.html


+ 0 - 0
src/web/templates/big-member/pc/page_index.html → src/web/templates/big-member/pc/page_index_old.html


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 33 - 0
src/web/templates/big-member/pc/page_qy.html


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 33 - 0
src/web/templates/big-member/pc/page_qz.html


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 33 - 0
src/web/templates/big-member/pc/page_sc.html


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 33 - 0
src/web/templates/big-member/pc/page_tb.html


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 33 - 0
src/web/templates/big-member/pc/page_yw.html


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 33 - 0
src/web/templates/big-member/pc/page_zb.html


+ 20 - 0
src/web/templates/big-member/wx/page_unit_portrayal.html

@@ -75,6 +75,21 @@
             background-size: 100% 100%;
             box-sizing: border-box;
         }
+        .freeExper{
+          display: flex;
+          align-items: center;
+          justify-content: space-between;
+          padding: 0.24rem 0.32rem;
+          margin-top: 0.24rem;
+          background: #fff;
+          color: #2cb7ca;
+        }
+        .freeExper span{
+          color: white;
+          background: #2cb7ca;
+          border-radius: 4px;
+          padding: 0.07rem 0.1rem;
+        }
     </style>
 </head>
 <body>
@@ -92,6 +107,11 @@
               <p class="region">所在地:${statistics.province || '--'} ${statistics.city}</p>
               <p class="buyer-type">采购单位类型:${statistics.buyerClass || '--'}</p>
           </div>
+          <!-- 免费用户体验-->
+          <div class="freeExper">
+              <p class="freeRemark">免费赠送1次【采购单位全景分析】权益体验机会!</p>
+              <span>去解锁</span>
+          </div>
           <!-- 采购单位通讯录 -->
           <div style="margin-top: .24rem;">
             <div v-if="getStatus" key="txl">

+ 21 - 1
src/web/templates/frontRouter/wx/collection/sess/ent_portrait.html

@@ -54,6 +54,21 @@
         font-weight: 500;
         color: #2abed1;
     }
+    .freeExper{
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      padding: 0.24rem 0.32rem;
+      margin: 0.24rem 0rem;
+      background: #fff;
+      color: #2cb7ca;
+    }
+    .freeExper span{
+      color: white;
+      background: #2cb7ca;
+      border-radius: 4px;
+      padding: 0.07rem 0.1rem;
+    }
 </style>
 <body>
 <div class="j-container">
@@ -205,7 +220,7 @@
             </van-tab>
             <van-tab name="2" >
                 <template #title>
-                    <span :class="{bidinfo:!hasOnePower}">中标信息</span>
+                    <span :class="{bidinfo:!hasOnePower}">中标分析</span>
                     <span v-if="isShowUpTip" class="bid_upgrade">升级</span>
                     <span v-if="isMember && (hasOnePower && surplus && isVip)" class="bid_surplus">剩余:${entvisit.total - entvisit.usage}</span>
                 </template>
@@ -228,6 +243,11 @@
                     <van-icon name="arrow"></van-icon>
                   </div>
                 </div>
+                <!--免费用户体验-->
+                <div class="freeExper">
+                    <p class="freeRemark">免费赠送1次【采购单位全景分析】权益体验机会!</p>
+                    <span>去解锁</span>
+                </div>
                 <div class="bg-white tab-card" v-if="conf._4 && !getStatus" data-cl-event="c_wx_open_buttionclick">
                     <div class="tab-card-title" style="padding: 0.16rem .32rem .12rem;">中标信息统计结果</div>
                     <div class="card-row zb-info">

+ 18 - 273
src/web/templates/weixin/vipsubscribe/vip_introduce.html

@@ -3,7 +3,8 @@
 
 <head>
     <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="viewport"
+          content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"/>
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <title>超级订阅</title>
     <meta name="apple-mobile-web-app-capable" content="yes">
@@ -14,300 +15,44 @@
     <link rel="stylesheet" type="text/css" href="/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" type="text/css" href="/css/wxbutton.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" type="text/css" href="/vipsubscribe/css/vip_introduce.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" type="text/css" href="/css/land-page-coupon.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" type="text/css" href="/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}"/>
-    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/vipsubscribe/css/vip-subscribe-set-template.css?v={{Msg "seo" "version"}}' />
 </head>
 
 <body>
     <div class="j-container" id="vip-intro-container">
         <div class="j-main vip_introduce vip-body" id="vip-body">
             <div class="main">
-                <div class="banner power group">
-                    <div class="active-content-tip">
-                    <div class="active-content" style="display: none">
-                            <div class="active-c-item">
-                                <div class="active-i-l">大礼1:</div>
-                                <div class="active-i-r">
-                                    <div class="active-r-t">买多久送你多久!</div>
-                                    <div class="active-r-b">(如:买1年送1年,买3个月送3个月)</div>
-                                </div>
-                            </div>
-                            <div class="active-c-item">
-                                <div class="active-i-l">大礼2:</div>
-                                <div class="active-i-r">
-                                    <div class="active-r-t">赠送剑鱼大会员【专家版】使用特权!</div>
-                                </div>
-                            </div>
-                        </div>
-                        <div class="active-rules">
-                            <div class="active-r-text">活动规则:</div>
-                        <div class="active-r-text">1、本次活动产品为超级订阅,凡在2021年1月28日10:00至2021年2月5日10:00期间的新购和续费超级订阅用户可参与此活动。</div>
-                        <div class="active-r-text">2、参与活动的最低购买条件为3个月起(含3个月),最多送1年,每个用户赠送1次超级订阅时长,赠送时长及规格与购买时长相等的套餐</div>
-                        <div class="active-r-text">3、时间:1月28日10:00至2月5日10:00</div>
-                        <div class="active-r-text">4、此活动最终解释权归剑鱼标讯所有。</div>
-                        </div>
-                    </div>
-                    <div class="setaction" v-show="!compShow">
-                        <sub-component @footershow="footerShow" type="introduce" :linkobj="linkObj" :initdata="initData"></sub-component>
-                    </div>
-                    <div class="group-title" v-show="compShow">
-                        <span class="title-text line-title">超级订阅服务特权</span>
-                        <span class="title-bg-text">DINGYUEFUWU</span>
-                    </div>
-                    <div class="group-content grid" v-show="compShow">
-                        <span class="grid-item">
-                            <span class="circle-icon circle-icon-1"></span>
-                            <p class="item-desc">最多 300 组关键词</p>
-                        </span>
-                        <span class="grid-item">
-                            <span class="circle-icon circle-icon-2"></span>
-                            <p class="item-desc">每天最多接收 2000 条</p>
-                        </span>
-                        <span class="grid-item">
-                            <span class="circle-icon circle-icon-3"></span>
-                            <p class="item-desc">数据周报、月报</p>
-                        </span>
-                        <span class="grid-item">
-                            <span class="circle-icon circle-icon-4"></span>
-                            <p class="item-desc">订阅区域精确到市</p>
-                        </span>
-                        <span class="grid-item" style="height: 2.48rem;">
-                            <span class="circle-icon circle-icon-5"></span>
-                            <p class="item-desc">每购买一个省<br />可查看50个企业画像</p>
-                        </span>
-                        <span class="grid-item">
-                            <span class="circle-icon circle-icon-6"></span>
-                            <p class="item-desc">搜索全国超七千万企业</p>
-                        </span>
-                    </div>
-                </div>
-                <div class="comparison group">
-                    <div class="group-title">
-                        <span class="title-text line-title">整体服务对比</span>
-                        <span class="title-bg-text">FUWUDUIBI</span>
-                    </div>
-                    <div class="group-content">
-                        <div class="table">
-                            <div class="c-thead row">
-                                <span class="free column column-l">免费版</span>
-                                <span class="prop column column-r color-deep-gold">超级订阅专属服务</span>
-                            </div>
-                            <div class="c-tbody">
-                                <div class="row">
-                                    <span class="column column-l">匹配单次公告信息</span>
-                                    <span class="column column-r">
-                                        <p class="col-hd">匹配项目信息</p>
-                                        <p class="col-bd">根据你的订阅,为你推送所匹配项目后续的全部动态</p>
-                                    </span>
-                                </div>
-                                <div class="row">
-                                    <span class="column column-l">-</span>
-                                    <span class="column column-r">
-                                        <p class="col-hd">按行业订阅</p>
-                                        <p class="col-bd">不知道如何设置关键词的时候,也可以按行业订阅</p>
-                                    </span>
-                                </div>
-                                <div class="row">
-                                    <span class="column column-l">-</span>
-                                    <span class="column column-r">
-                                        <p class="col-hd">中标企业联系方式</p>
-                                        <p class="col-bd">招标公告与国家企业公示2种提取模式,让你直击企业</p>
-                                    </span>
-                                </div>
-                                <div class="row">
-                                    <span class="column column-l">最多10组关键词</span>
-                                    <span class="column column-r">
-                                        <p class="col-hd">最多300组关键词</p>
-                                        <p class="col-bd">更多关键词,招标信息更全面</p>
-                                    </span>
-                                </div>
-                                <div class="row">
-                                    <span class="column column-l">仅支持标题匹配</span>
-                                    <span class="column column-r">
-                                        <p class="col-hd">支持标题匹配+全文匹配</p>
-                                        <p class="col-bd">关键词匹配标题或全文 任你选</p>
-                                    </span>
-                                </div>
-                                <div class="row">
-                                    <span class="column column-l">订阅区域精确到省</span>
-                                    <span class="column column-r">
-                                        <p class="col-hd">订阅区域精确到市</p>
-                                        <p class="col-bd">只看你最关注的招标信息</p>
-                                    </span>
-                                </div>
-                                <div class="row">
-                                    <span class="column column-l">-</span>
-                                    <span class="column column-r">
-                                        <p class="col-hd">
-                                            <span class="icon-new">企业画像</span>
-                                        </p>
-                                        <p class="col-bd">对企业进行全景透视,提供企业基本信息,中标项目分析、重点客户等。每购买一个省,增加50个企业画像,最多可查看800个企业画像。</p>
-                                    </span>
-                                </div>
-                                <div class="row">
-                                    <span class="column column-l">-</span>
-                                    <span class="column column-r">
-                                        <p class="col-hd">
-                                            <span class="icon-new">企业搜索</span>
-                                        </p>
-                                        <p class="col-bd">搜索全国超七千万企业,获取企业情报信息,全方位监控竞争对手或用户关注的企业。</p>
-                                    </span>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
+<!--                <img src="/common-module/vipsubscribe/image/info/cut_01.jpg">-->
+                <img src="/common-module/vipsubscribe/image/info/cut_02.jpg">
+                <img src="/common-module/vipsubscribe/image/info/cut_03.jpg">
+                <img src="/common-module/vipsubscribe/image/info/cut_04.jpg">
+                <img src="/common-module/vipsubscribe/image/info/cut_05.jpg">
+                <img src="/common-module/vipsubscribe/image/info/cut_06.jpg">
             </div>
         </div>
-        <div class="vip-footer-container">
-            <div class="vip-intro-footer">
-                {{if not .T.notShowTrial}}
-<!--                <span class="vi-footer-l" data-need-bind-phone data-url="/front/vipsubscribe/trialInfo">
-                    <span class="text">试用7天</span>
-                </span>-->
-                {{end}}
-                <span class="vi-footer-r" data-need-bind-phone data-url="/front/vipsubscribe/vipsubscribe_new{{if .T.disWord}}?disWord={{.T.disWord}}{{end}}"   id="vip-introduce">
-                    <span class="text">开通 超级订阅</span>
-                </span>
-                <span class="vi-footer-r" style="display: none;" id="vip-introduce-renew"  onclick="window.location.replace('/front/vipsubscribe/vipsubscribe_renew{{if .T.disWord}}?disWord={{.T.disWord}}{{end}}')">
-                    <span class="text">去续费</span>
-                </span>
+        <div class="j-footer j-button-group popup-bottom-group">
+            <div class="pop-tip-group">
+                <img src="/common-module/vipsubscribe/image/info/tagBottom.png">
+                <div>低至 <span>38</span>元/月</div>
             </div>
-            <div id="land-page-coupon" class="coupon-tips" style="display:none;">
-              <div class="coupon-text-area">用奖券最高立减 <em class="coupon-num"></em>元</div>
-              <div class="coupon-arrow-area"><span class="coupon-arrow-icon"></span></div>
+            <div class="pop-button" data-need-bind-phone data-url="/front/vipsubscribe/vipsubscribe_new{{if .T.disWord}}?disWord={{.T.disWord}}{{end}}"   id="vip-introduce">
+                <img src="/common-module/vipsubscribe/image/info/btnBottom.png">
             </div>
         </div>
     </div>
     {{include "/common/weixin.html"}}
-    <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
     <script src='{{Msg "seo" "cdn"}}/structuredata/mobile/js/jquery.min.js'></script>
     <script src="/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
     <script src='{{Msg "seo" "cdn"}}/vipsubscribe/js/share.js?v={{Msg "seo" "version"}}'></script>
-    <script src='{{Msg "seo" "cdn"}}/common-module/vipsubscribe/js/vip-subscribe-set-template.js?v={{Msg "seo" "version"}}'></script>
-    <!--<script src='{{Msg "seo" "cdn"}}/js/check-bind-phone.js?v={{Msg "seo" "version"}}'></script>-->
-    <script src='{{Msg "seo" "cdn"}}/js/land-page-coupon.js?v={{Msg "seo" "version"}}'></script>
     <script src='{{Msg "seo" "cdn"}}/big-member/js/utils.js?v={{Msg "seo" "version"}}'></script>
     <script>
         $("*[data-need-bind-phone]").on('click', function () {
             window.location.replace($(this).attr('data-url'))
         })
-    </script>
-    <script>
-        var subNode = new Vue({
-            delimiters: ['${', '}'],
-            el: '#vip-body',
-            components: {
-                subComponent: subComponent
-            },
-            data: function() {
-                return {
-                    linkObj: {
-                        area: '/front/vipsubscribe/toChangeArea?header=save&subvip=free',
-                        industry: '/front/vipsubscribe/toChangeIndustry?header=save&subvip=free',
-                        keyword: '/front/vipsubscribe/toSetKeyWordPage',
-                        infotype: '/front/vipsubscribe/toSetInfoTypePage',
-                        resultview: '/front/vipsubscribe/toVIPViewPage?vSwitch=v',
-                        pushsetting: '/front/vipsubscribe/toSetPushSetPage'
-                    },
-                    initData: {},
-                    compShow: true
-                }
-            },
-            created () {
-              this.getUserInfo()
-              utils.iosBackRefresh()
-            },
-            methods: {
-                getUserInfo: function() {
-                    let _this = this
-                    let typeinfo = _this.getParam('typeinfo')
-                    if(typeinfo) {
-                        $('.vip_introduce .main .banner').css({'padding-top': '6.2rem'})
-                        _this.compShow = false
-                        $.ajax({
-                            type: 'POST',
-                            url: '/subscribepay/vipsubscribe/getSubBuyMsg?t=' + Date.now(),
-                            success:function(res) {
-                                if(res.success) {
-                                    _this.initData = res.data
-                                    if(res.data.area) {
-                                        let proArea = res.data.area
-                                        Object.keys(proArea).forEach(function(item, index) {
-                                            if(proArea[item].length !== 0) {
-                                                proArea[item] = []
-                                            }
-                                        })
-                                        if(JSON.stringify(proArea) == 'null' || JSON.stringify(proArea) == 'undefined') return
-                                        if(JSON.stringify(proArea) == '{}') {
-                                            proArea = {"全国":[]}
-                                        }
-                                        sessionStorage.setItem('vipSubSelectArea', JSON.stringify(proArea))
-                                    }
-                                }
-                            }
-                        })
-                    }
-                },
-                getParam(name) {
-                    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
-                    var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
-                    var context = "";
-                    if (r != null)
-                        context = r[2];
-                    reg = null;
-                    r = null;
-                    return context == null || context == "" || context == "undefined" ? "" : context;
-                },
-                footerShow: function(data) {
-                    console.log(data)
-                    if(data == 'true') {
-                        $('.vip-footer-container').hide()
-                    } else {
-                        $('.vip-footer-container').show()
-                    }
-                }
-            }
-        })
-    </script>
-    <script>
-      if (location.href.lastIndexOf('type=renew') !== -1) {
-          $("#vip-introduce").hide()
-          $("#vip-introduce-renew").show()
-      }
-        initShare({{.T.signature }});
-      // @NewYearMarketing 2021/1/25
-      getNewYearMarketing()
-      function getNewYearMarketing () {
-        $.ajax({
-          url: '/getJson/NewYearMarketing?t=' + new Date().getTime(),
-          success: function (r) {
-            if (r && r.status) {
-              $('#vip-intro-container').addClass('active-20201111')
-            } else {
-              $('#vip-intro-container').removeClass('active-20201111')
-            }
-          }
-        })
-      }
-      // 获取是否有优惠券 并展示
-      getCoupon('vip',function(res) {
-        if (res.list && res.list.length > 0) {
-          $('.coupon-tips').show()
-          var max = res.list.sort(function(a,b){
-              return b.reduce - a.reduce;
-          })[0];
-          console.log(max.reduce)
-          $('.coupon-num').html(max.reduce)
-        } else {
-          $('.coupon-tips').hide()
-        }
-      })
-      // 清除超级订阅购买、续费、升级页面相关的优惠券、商品规格缓存
-      sessionStorage.removeItem('vip-cur-select-coupon')
-      sessionStorage.removeItem('$select-coupon')
-      sessionStorage.removeItem('vip-cur-select-size')
+        // 清除超级订阅购买、续费、升级页面相关的优惠券、商品规格缓存
+        sessionStorage.removeItem('vip-cur-select-coupon')
+        sessionStorage.removeItem('$select-coupon')
+        sessionStorage.removeItem('vip-cur-select-size')
     </script>
     {{include "/common/baiducc.html"}}
 </body>

+ 315 - 0
src/web/templates/weixin/vipsubscribe/vip_introduce_old.html

@@ -0,0 +1,315 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>超级订阅</title>
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <script src="/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+    <link rel="stylesheet" type="text/css" href="/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" type="text/css" href="/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" type="text/css" href="/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" type="text/css" href="/css/wxbutton.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" type="text/css" href="/vipsubscribe/css/vip_introduce.css?v={{Msg "seo" "version"}}1">
+    <link rel="stylesheet" type="text/css" href="/css/land-page-coupon.css?v={{Msg "seo" "version"}}1"> 
+    <link rel="stylesheet" type="text/css" href="/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}"/>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/vipsubscribe/css/vip-subscribe-set-template.css?v={{Msg "seo" "version"}}' />
+</head>
+
+<body>
+    <div class="j-container" id="vip-intro-container">
+        <div class="j-main vip_introduce vip-body" id="vip-body">
+            <div class="main">
+                <div class="banner power group">
+                    <div class="active-content-tip">
+                    <div class="active-content" style="display: none">
+                            <div class="active-c-item">
+                                <div class="active-i-l">大礼1:</div>
+                                <div class="active-i-r">
+                                    <div class="active-r-t">买多久送你多久!</div>
+                                    <div class="active-r-b">(如:买1年送1年,买3个月送3个月)</div>
+                                </div>
+                            </div>
+                            <div class="active-c-item">
+                                <div class="active-i-l">大礼2:</div>
+                                <div class="active-i-r">
+                                    <div class="active-r-t">赠送剑鱼大会员【专家版】使用特权!</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="active-rules">
+                            <div class="active-r-text">活动规则:</div>
+                        <div class="active-r-text">1、本次活动产品为超级订阅,凡在2021年1月28日10:00至2021年2月5日10:00期间的新购和续费超级订阅用户可参与此活动。</div>
+                        <div class="active-r-text">2、参与活动的最低购买条件为3个月起(含3个月),最多送1年,每个用户赠送1次超级订阅时长,赠送时长及规格与购买时长相等的套餐</div>
+                        <div class="active-r-text">3、时间:1月28日10:00至2月5日10:00</div>
+                        <div class="active-r-text">4、此活动最终解释权归剑鱼标讯所有。</div>
+                        </div>
+                    </div>
+                    <div class="setaction" v-show="!compShow">
+                        <sub-component @footershow="footerShow" type="introduce" :linkobj="linkObj" :initdata="initData"></sub-component>
+                    </div>
+                    <div class="group-title" v-show="compShow">
+                        <span class="title-text line-title">超级订阅服务特权</span>
+                        <span class="title-bg-text">DINGYUEFUWU</span>
+                    </div>
+                    <div class="group-content grid" v-show="compShow">
+                        <span class="grid-item">
+                            <span class="circle-icon circle-icon-1"></span>
+                            <p class="item-desc">最多 300 组关键词</p>
+                        </span>
+                        <span class="grid-item">
+                            <span class="circle-icon circle-icon-2"></span>
+                            <p class="item-desc">每天最多接收 2000 条</p>
+                        </span>
+                        <span class="grid-item">
+                            <span class="circle-icon circle-icon-3"></span>
+                            <p class="item-desc">数据周报、月报</p>
+                        </span>
+                        <span class="grid-item">
+                            <span class="circle-icon circle-icon-4"></span>
+                            <p class="item-desc">订阅区域精确到市</p>
+                        </span>
+                        <span class="grid-item" style="height: 2.48rem;">
+                            <span class="circle-icon circle-icon-5"></span>
+                            <p class="item-desc">每购买一个省<br />可查看50个企业画像</p>
+                        </span>
+                        <span class="grid-item">
+                            <span class="circle-icon circle-icon-6"></span>
+                            <p class="item-desc">搜索全国超七千万企业</p>
+                        </span>
+                    </div>
+                </div>
+                <div class="comparison group">
+                    <div class="group-title">
+                        <span class="title-text line-title">整体服务对比</span>
+                        <span class="title-bg-text">FUWUDUIBI</span>
+                    </div>
+                    <div class="group-content">
+                        <div class="table">
+                            <div class="c-thead row">
+                                <span class="free column column-l">免费版</span>
+                                <span class="prop column column-r color-deep-gold">超级订阅专属服务</span>
+                            </div>
+                            <div class="c-tbody">
+                                <div class="row">
+                                    <span class="column column-l">匹配单次公告信息</span>
+                                    <span class="column column-r">
+                                        <p class="col-hd">匹配项目信息</p>
+                                        <p class="col-bd">根据你的订阅,为你推送所匹配项目后续的全部动态</p>
+                                    </span>
+                                </div>
+                                <div class="row">
+                                    <span class="column column-l">-</span>
+                                    <span class="column column-r">
+                                        <p class="col-hd">按行业订阅</p>
+                                        <p class="col-bd">不知道如何设置关键词的时候,也可以按行业订阅</p>
+                                    </span>
+                                </div>
+                                <div class="row">
+                                    <span class="column column-l">-</span>
+                                    <span class="column column-r">
+                                        <p class="col-hd">中标企业联系方式</p>
+                                        <p class="col-bd">招标公告与国家企业公示2种提取模式,让你直击企业</p>
+                                    </span>
+                                </div>
+                                <div class="row">
+                                    <span class="column column-l">最多10组关键词</span>
+                                    <span class="column column-r">
+                                        <p class="col-hd">最多300组关键词</p>
+                                        <p class="col-bd">更多关键词,招标信息更全面</p>
+                                    </span>
+                                </div>
+                                <div class="row">
+                                    <span class="column column-l">仅支持标题匹配</span>
+                                    <span class="column column-r">
+                                        <p class="col-hd">支持标题匹配+全文匹配</p>
+                                        <p class="col-bd">关键词匹配标题或全文 任你选</p>
+                                    </span>
+                                </div>
+                                <div class="row">
+                                    <span class="column column-l">订阅区域精确到省</span>
+                                    <span class="column column-r">
+                                        <p class="col-hd">订阅区域精确到市</p>
+                                        <p class="col-bd">只看你最关注的招标信息</p>
+                                    </span>
+                                </div>
+                                <div class="row">
+                                    <span class="column column-l">-</span>
+                                    <span class="column column-r">
+                                        <p class="col-hd">
+                                            <span class="icon-new">企业画像</span>
+                                        </p>
+                                        <p class="col-bd">对企业进行全景透视,提供企业基本信息,中标项目分析、重点客户等。每购买一个省,增加50个企业画像,最多可查看800个企业画像。</p>
+                                    </span>
+                                </div>
+                                <div class="row">
+                                    <span class="column column-l">-</span>
+                                    <span class="column column-r">
+                                        <p class="col-hd">
+                                            <span class="icon-new">企业搜索</span>
+                                        </p>
+                                        <p class="col-bd">搜索全国超七千万企业,获取企业情报信息,全方位监控竞争对手或用户关注的企业。</p>
+                                    </span>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="vip-footer-container">
+            <div class="vip-intro-footer">
+                {{if not .T.notShowTrial}}
+<!--                <span class="vi-footer-l" data-need-bind-phone data-url="/front/vipsubscribe/trialInfo">
+                    <span class="text">试用7天</span>
+                </span>-->
+                {{end}}
+                <span class="vi-footer-r" data-need-bind-phone data-url="/front/vipsubscribe/vipsubscribe_new{{if .T.disWord}}?disWord={{.T.disWord}}{{end}}"   id="vip-introduce">
+                    <span class="text">开通 超级订阅</span>
+                </span>
+                <span class="vi-footer-r" style="display: none;" id="vip-introduce-renew"  onclick="window.location.replace('/front/vipsubscribe/vipsubscribe_renew{{if .T.disWord}}?disWord={{.T.disWord}}{{end}}')">
+                    <span class="text">去续费</span>
+                </span>
+            </div>
+            <div id="land-page-coupon" class="coupon-tips" style="display:none;">
+              <div class="coupon-text-area">用奖券最高立减 <em class="coupon-num"></em>元</div>
+              <div class="coupon-arrow-area"><span class="coupon-arrow-icon"></span></div>
+            </div>
+        </div>
+    </div>
+    {{include "/common/weixin.html"}}
+    <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+    <script src='{{Msg "seo" "cdn"}}/structuredata/mobile/js/jquery.min.js'></script>
+    <script src="/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+    <script src='{{Msg "seo" "cdn"}}/vipsubscribe/js/share.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/common-module/vipsubscribe/js/vip-subscribe-set-template.js?v={{Msg "seo" "version"}}'></script>
+    <!--<script src='{{Msg "seo" "cdn"}}/js/check-bind-phone.js?v={{Msg "seo" "version"}}'></script>-->
+    <script src='{{Msg "seo" "cdn"}}/js/land-page-coupon.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/big-member/js/utils.js?v={{Msg "seo" "version"}}'></script>
+    <script>
+        $("*[data-need-bind-phone]").on('click', function () {
+            window.location.replace($(this).attr('data-url'))
+        })
+    </script>
+    <script>
+        var subNode = new Vue({
+            delimiters: ['${', '}'],
+            el: '#vip-body',
+            components: {
+                subComponent: subComponent
+            },
+            data: function() {
+                return {
+                    linkObj: {
+                        area: '/front/vipsubscribe/toChangeArea?header=save&subvip=free',
+                        industry: '/front/vipsubscribe/toChangeIndustry?header=save&subvip=free',
+                        keyword: '/front/vipsubscribe/toSetKeyWordPage',
+                        infotype: '/front/vipsubscribe/toSetInfoTypePage',
+                        resultview: '/front/vipsubscribe/toVIPViewPage',
+                        pushsetting: '/front/vipsubscribe/toSetPushSetPage'
+                    },
+                    initData: {},
+                    compShow: true
+                }
+            },
+            created () {
+              this.getUserInfo()
+              utils.iosBackRefresh()
+            },
+            methods: {
+                getUserInfo: function() {
+                    let _this = this
+                    let typeinfo = _this.getParam('typeinfo')
+                    if(typeinfo) {
+                        $('.vip_introduce .main .banner').css({'padding-top': '6.2rem'})
+                        _this.compShow = false
+                        $.ajax({
+                            type: 'POST',
+                            url: '/subscribepay/vipsubscribe/getSubBuyMsg?t=' + Date.now(),
+                            success:function(res) {
+                                if(res.success) {
+                                    _this.initData = res.data
+                                    if(res.data.area) {
+                                        let proArea = res.data.area
+                                        Object.keys(proArea).forEach(function(item, index) {
+                                            if(proArea[item].length !== 0) {
+                                                proArea[item] = []
+                                            }
+                                        })
+                                        if(JSON.stringify(proArea) == 'null' || JSON.stringify(proArea) == 'undefined') return
+                                        if(JSON.stringify(proArea) == '{}') {
+                                            proArea = {"全国":[]}
+                                        }
+                                        sessionStorage.setItem('vipSubSelectArea', JSON.stringify(proArea))
+                                    }
+                                }
+                            }
+                        })
+                    }
+                },
+                getParam(name) {
+                    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
+                    var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
+                    var context = "";
+                    if (r != null)
+                        context = r[2];
+                    reg = null;
+                    r = null;
+                    return context == null || context == "" || context == "undefined" ? "" : context;
+                },
+                footerShow: function(data) {
+                    console.log(data)
+                    if(data == 'true') {
+                        $('.vip-footer-container').hide()
+                    } else {
+                        $('.vip-footer-container').show()
+                    }
+                }
+            }
+        })
+    </script>
+    <script>
+      if (location.href.lastIndexOf('type=renew') !== -1) {
+          $("#vip-introduce").hide()
+          $("#vip-introduce-renew").show()
+      }
+        initShare({{.T.signature }});
+      // @NewYearMarketing 2021/1/25
+      getNewYearMarketing()
+      function getNewYearMarketing () {
+        $.ajax({
+          url: '/getJson/NewYearMarketing?t=' + new Date().getTime(),
+          success: function (r) {
+            if (r && r.status) {
+              $('#vip-intro-container').addClass('active-20201111')
+            } else {
+              $('#vip-intro-container').removeClass('active-20201111')
+            }
+          }
+        })
+      }
+      // 获取是否有优惠券 并展示
+      getCoupon('vip',function(res) {
+        if (res.list && res.list.length > 0) {
+          $('.coupon-tips').show()
+          var max = res.list.sort(function(a,b){
+              return b.reduce - a.reduce;
+          })[0];
+          console.log(max.reduce) 
+          $('.coupon-num').html(max.reduce)
+        } else {
+          $('.coupon-tips').hide()
+        }
+      })
+      // 清除超级订阅购买、续费、升级页面相关的优惠券、商品规格缓存
+      sessionStorage.removeItem('vip-cur-select-coupon')
+      sessionStorage.removeItem('$select-coupon')
+      sessionStorage.removeItem('vip-cur-select-size')
+    </script>
+    {{include "/common/baiducc.html"}}
+</body>
+
+</html>

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно