소스 검색

Merge branch 'dev2.8.5' of http://192.168.3.207:10080/qmx/jy into dev2.8.5

wangshan 5 년 전
부모
커밋
cad37f071e
40개의 변경된 파일4321개의 추가작업 그리고 262개의 파일을 삭제
  1. 4 0
      src/jfw/front/shorturl.go
  2. 868 0
      src/jfw/modules/app/src/web/templates/vipsubscribe/choose_area_upgrade.html
  3. 443 0
      src/jfw/modules/app/src/web/templates/vipsubscribe/choose_industry_upgrade.html
  4. 222 0
      src/jfw/modules/app/src/web/templates/vipsubscribe/renew_notice.html
  5. 827 0
      src/jfw/modules/app/src/web/templates/vipsubscribe/renew_pay.html
  6. 18 5
      src/jfw/modules/app/src/web/templates/vipsubscribe/trial_info.html
  7. 1307 0
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_upgrade.html
  8. 1 1
      src/jfw/modules/pushent/src/followpush/push.go
  9. 1 1
      src/jfw/modules/pushproject/src/followpush/push.go
  10. 1 1
      src/jfw/modules/pushsubscribe/src/match/config.json
  11. 1 0
      src/jfw/modules/pushsubscribe/src/match/job/job.go
  12. 72 42
      src/jfw/modules/pushsubscribe/src/match/job/matchjob.go
  13. BIN
      src/jfw/modules/pushsubscribe/src/match/match
  14. 3 1
      src/jfw/modules/pushsubscribe/src/match/matcher/vipmatch.go
  15. 1 1
      src/jfw/modules/pushsubscribe/src/match/task.json
  16. 2 1
      src/jfw/modules/pushsubscribe/src/public/entity.go
  17. 2 1
      src/jfw/modules/pushsubscribe/src/public/util.go
  18. 1 0
      src/jfw/modules/pushsubscribe/src/push/config.json
  19. 1 0
      src/jfw/modules/pushsubscribe/src/push/config/config.go
  20. 38 23
      src/jfw/modules/pushsubscribe/src/push/job/movejob.go
  21. 110 60
      src/jfw/modules/pushsubscribe/src/push/job/projectjob.go
  22. 1 1
      src/jfw/modules/pushsubscribe/src/push/projecttask.json
  23. BIN
      src/jfw/modules/pushsubscribe/src/push/push
  24. 5 3
      src/jfw/modules/pushsubscribe/src/push/pusher/normalpush.go
  25. 1 1
      src/jfw/modules/pushsubscribe/src/push/pusher/specialpush.go
  26. 40 19
      src/jfw/modules/pushsubscribe/src/push/util/util.go
  27. 42 1
      src/jfw/modules/subscribepay/src/entity/subscribeVip.go
  28. 57 0
      src/jfw/modules/subscribepay/src/service/orderListDetails.go
  29. 10 7
      src/jfw/modules/subscribepay/src/service/vipRenewUpgrade.go
  30. 1 0
      src/jfw/modules/subscribepay/src/timetask/timetask.go
  31. 1 1
      src/web/templates/weixin/email/bind_email.html
  32. 1 1
      src/web/templates/weixin/email/unbind_email.html
  33. 5 25
      src/web/templates/weixin/vipsubscribe/choose_area_upgrade.html
  34. 1 1
      src/web/templates/weixin/vipsubscribe/edit_subscribe_success.html
  35. 24 16
      src/web/templates/weixin/vipsubscribe/renew_notice.html
  36. 91 23
      src/web/templates/weixin/vipsubscribe/renew_pay.html
  37. 13 3
      src/web/templates/weixin/vipsubscribe/trial_info.html
  38. 2 1
      src/web/templates/weixin/vipsubscribe/vip_order_detail.html
  39. 40 15
      src/web/templates/weixin/vipsubscribe/vip_purchase.html
  40. 63 7
      src/web/templates/weixin/vipsubscribe/vip_upgrade.html

+ 4 - 0
src/jfw/front/shorturl.go

@@ -6,6 +6,7 @@ import (
 	"jfw/jyutil"
 	"jfw/public"
 	"jfw/wx"
+	"log"
 	"math/rand"
 	"net/url"
 	"qfw/util"
@@ -34,6 +35,7 @@ var Map_stype = map[string]bool{
 }
 
 func (s *Short) Article(stype, id string) error {
+	log.Println("into Article..")
 	//先判断是否有session
 	source := s.GetString("source")
 	aboutUrl := "/swordfish/about"
@@ -90,6 +92,7 @@ func (s *Short) Article(stype, id string) error {
 		data1, _ := mongodb.FindOneByField("user", bson.M{"s_m_openid": ssOpenid}, `{"_id":1}`)
 		userId = util.BsonIdToSId((*data1)["_id"])
 	}
+	log.Println("bm---", bm)
 	if bm {
 		//判断有没有取关,取关的话,跳转到关于剑鱼标讯页面
 		if ssOpenid != nil && ssOpenid != "" {
@@ -135,6 +138,7 @@ func (s *Short) Article(stype, id string) error {
 		if util.IntAll((*res)["i_vip_status"]) == 1 || util.IntAll((*res)["i_vip_status"]) == 2 {
 			isVip = true
 		}
+		log.Println("isVip:----", isVip)
 		s.T["isVip"] = isVip
 		mynickname, _ := s.GetSession("s_nickname").(string)
 		myavatar, _ := s.GetSession("s_avatar").(string)

+ 868 - 0
src/jfw/modules/app/src/web/templates/vipsubscribe/choose_area_upgrade.html

@@ -0,0 +1,868 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>区域选择</title>
+    <meta name="viewport" content="initial-scale=1, maximum-scale=1">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <script src="/jyapp/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+    <link rel="stylesheet" href="/jyapp/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" href="/jyapp/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="/jyapp/vipsubscribe/css/choose_area.css?v={{Msg "seo" "version"}}4">
+	{{include "/common/weixin.html"}}
+</head>
+<style type="text/css">
+	body,html {
+		height: 100%;
+	}
+</style>
+<body>
+    <div id="choose_area" >
+        <div class="result">
+            <!-- 首次购买 显示"已选择" -----  升级订阅显示"已新增" -->
+            <p class="result_text line_two"> 已新增:<span class="result_name"></span>
+                <a href="javascript:;" class="detail">详情</a>
+            </p>
+            <a href="javascript:;" class="packup" style="display: none;">收起</a>
+        </div>
+        <div class="form">
+            <div class="select-area-box">
+                <ul class="area-list">
+                    <li>
+                        <div class="tab whole">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox other">全国
+                            </div>
+                        </div>
+                    </li>
+                    <li class="index" id="A">A</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">安徽
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab municipality">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">澳门
+                            </div>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="B">B</li>
+                    <li>
+                        <div class="tab municipality">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">北京
+                            </div>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="C">C</li>
+                    <li>
+                        <div class="tab municipality">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">重庆
+                            </div>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="F">F</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">福建
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="G">G</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">广东
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">广西
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">贵州
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">甘肃
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="H">H</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">河北
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">湖北
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">黑龙江
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">海南
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">河南
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">湖南
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <p class="index" id="J">J</p>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">吉林
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">江苏
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">江西
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="L">L</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">辽宁
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="N">N</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">内蒙古
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">宁夏
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="Q">Q</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">青海
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="S">S</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">山西
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">陕西
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab municipality">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">上海
+                            </div>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">山东
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">四川
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="T">T</li>
+                    <li>
+                        <div class="tab municipality">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">天津
+                            </div>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab municipality">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">台湾
+                            </div>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="X">X</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">西藏
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">新疆
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab municipality">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">香港
+                            </div>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="Y">Y</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">云南
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="Z">Z</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">浙江
+                            </div>
+                            <span class="down-icon"><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                </ul>
+                
+            </div>
+        </div>
+        <div class="tips_btn">
+            <div class="tips_discount">
+                <!--<div class="tips_d_money" style="display: block">&yen;38</div>-->
+                <div class="tips_d_text citys">已选择4个市,建议购买“全省”更划算哦~</div>
+                <div class="tips_d_text all">已选择10个省,建议购买“全国”更划算哦~</div>
+            </div>
+            <div class="btns">
+                <button class="reset-btn">重置</button>
+                <button class="save-btn">确认</button>
+            </div>
+        </div>
+        <div class="slide">
+            <a href="javascript:;">#</a>
+            <a href="javascript:;">A</a>
+            <a href="javascript:;">B</a>
+            <a href="javascript:;">C</a>
+            <a href="javascript:;">F</a>
+            <a href="javascript:;">G</a>
+            <a href="javascript:;">H</a>
+            <a href="javascript:;">J</a>
+            <a href="javascript:;">L</a>
+            <a href="javascript:;">N</a>
+            <a href="javascript:;">Q</a>
+            <a href="javascript:;">S</a>
+            <a href="javascript:;">T</a>
+            <a href="javascript:;">X</a>
+            <a href="javascript:;">Y</a>
+            <a href="javascript:;">Z</a>
+        </div>
+    </div>
+    <script src="/jyapp/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
+    <!--<script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>-->
+    <script src="/jyapp/vipsubscribe/js/mapJSON.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/jyapp/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
+    <script>
+    	//已购买
+    	var buystr = "";
+        $DoPost("/subscribepay/renewUpgrade/getBuyMsg", {}, function (data) {
+        	if(data){
+            	buystr = data.area;
+        	}
+        }, false);
+//      console.log(buystr)
+      var AreaChoose={
+        selectObj:{},//已选择,未购买城市;
+        buyObj:{},//已购买
+        selectedIndustryArr:["一个行业"],//计算价格临时变量
+        timeSelect:[1,2],//计算价格临时变量 timeSelect[0]时长  timeSelect[1] 1:年 2:月
+        vipSubisTrial:false,
+        inintData:function(){
+          //已选择
+          try{
+            let select =sessionStorage.getItem("vipSubSelectAreaUpgrade");
+            if(select){
+              this.selectObj=JSON.parse(select);
+            }
+            if(sessionStorage.getItem("vipSubSelectIndustryUpgrade")){
+              this.selectedIndustryArr=JSON.parse(sessionStorage.getItem("vipSubSelectIndustryUpgrade"));
+            }
+            if(sessionStorage.getItem("vipSubSelectTime")){
+              this.timeSelect=JSON.parse(sessionStorage.getItem("vipSubSelectTime"));
+            }
+            //
+            this.buyObj = buystr;
+            if(checkObj(buystr)){
+            	this.buyObj = {"全国":[]}
+            }
+//          console.log(this.buyObj)
+            //是否试用界面
+            if(sessionStorage.getItem("vipSubisTrial")) this.vipSubisTrial=true;
+          }catch(e){
+            console.log(e);
+            this.selectObj={};
+          }
+        },
+        inintPage:function(){//初始化省份城市选项   
+          $(".select-area-box ul li:not('.index')").each(function () {
+              var text = $(this).find(".province").text().trim()
+              var data = null
+              chinaMapJSON.some(function (v) {
+                  data = v
+                  return v.name.indexOf(text) !== -1
+              })
+              var box = $(this).find('div.tab_content')
+              var html = AreaChoose.createMoreCity(data.city)
+              box.html(html)
+          })
+        },
+        createMoreCity:function(arr){
+          var tempHtml = arr.map(function (v) {
+                return '<button class="city">' + v.name + '</button>'
+            }).join('')
+            return tempHtml
+        },
+        showSelected:function(canClick){ //回显已选择
+        	var ran = "";
+            if(canClick){
+            	ran = this.selectObj;
+            }else{
+            	ran = this.buyObj;
+            }    
+            for(var province in ran) {
+      			let citys=ran[province]
+	            if(citys.length>0){//地市
+	                this.selectCity(citys,canClick)
+	            }else{//省份
+	                this.selectProvince(province,canClick)
+	            }
+	        }
+        },
+        selectProvince:function(province,canClick){ //设置选中省份 province 省份
+          $($('.tab .province')).each(function (index, dom) {
+            if (province == $.trim($(dom).text())) {
+              $(".checkbox.other").attr("checked", false); //取消全国选中
+              $(dom).children('.checkbox').attr({"checked": true,"disabled":!canClick});//选中此省份
+              if(canClick){
+              	$(dom).parents().siblings('.tab_content').find(".city").addClass("active").attr({"disabled":!canClick});
+              }else{
+              	$(dom).parents().siblings('.tab_content').find(".city").attr({"disabled":!canClick});
+              }
+            }
+            if(!canClick){
+            	if(province === "全国"){
+	            	$('.tab .province').each(function(){
+	            		$(this).children('.checkbox').attr({"checked": true,"disabled":!canClick});//选中此省份
+	            	});
+	            	$('.tab_content .city').each(function(){
+	            		$(this).attr("disabled",!canClick);
+	            	});
+	            }
+            }
+          })
+        },
+        selectCity:function(citys,canClick){ //设置选中城市
+          citys.forEach(v => {
+            $($('.tab_content .city')).each(function (index, dom) {
+                if (v == $(dom).text()) {
+                    $(".checkbox.other").attr("checked", false); //取消全国选中
+                    if(canClick){
+                    	$(dom).addClass('active').attr('disabled', !canClick).parents().siblings('.tab')
+                        .addClass('selected').children('.province').children('.checkbox').attr({
+                            "checked": true
+                        })
+                    }else{
+                    	$(dom).attr('disabled', !canClick).parents().siblings('.tab')
+                        .addClass('selected').children('.province').children('.checkbox').attr({
+                            "checked": true,
+                            "disabled": "disabled"
+                        })
+                        $(dom).parents().slideDown(500);
+                    }
+                }
+            })
+          })
+        },
+        getResult:function(){   /* 选中结果 */
+          //如果选中所有,则转为全国
+          if($(".city").length==$(".city.active").length){
+            $(".checkbox.other").trigger("click");
+            return
+          }
+          this.selectObj = {};
+          $('.result_name').empty()
+          var data = []; //定义一个总数组
+          var cityArr =[]; //定义一个选中城市数组
+          var provincesArr = [];
+          var val = $('.other').parents('.province').text().trim();
+          if ($('.other').is(':checked')) {
+            // data.push(val)
+            data =[{name:val,children:[]}] //全国
+          }
+          $(".tab_content").find(".city.active:not('[disabled]')").each(function () {
+              var length = $(this).parent('.tab_content').find('.city').length; //省份下城市的length
+              var activeLeng = $(this).parent('.tab_content').find('.city.active').length; //省份下选中城市的length
+              let arr =[];
+              // 判断省份下的城市是否等于选中的城市长度,相等就是全部选中
+              if (length == activeLeng) {
+                  $('.tips_btn .tips_d_text.citys').hide()
+                  // data.push($(this).parent('.tab_content').siblings('.tab:not(.whole)').children('.province').text().trim())
+                  let province = $(this).parent('.tab_content').siblings('.tab:not(.whole)').children('.province').text().trim();
+                  data.push({
+                      name:province,
+                      children:[]
+                  });
+                  provincesArr.push(province);
+              } else { 
+                  let province = $(this).parent('.tab_content').siblings('.tab:not(.whole)').children('.province').text().trim();
+                  let city = $(this).html()
+                  arr.push({name:city,parent:province})
+                  for(let i =0;i<arr.length;i++){
+                      let obj ={};
+                      obj.name = arr[i].name;
+                      obj.parent = arr[i].parent;
+                      cityArr.push(obj)
+                  }
+                  data.push({
+                      name:province,
+                      children:cityArr
+                  })
+              }
+              if(activeLeng > 0){
+              	$(".tips_btn .btns .reset-btn").removeAttr("disabled");
+              	$(".tips_btn .btns .save-btn").removeAttr("disabled");
+              }
+          })
+          //数组对象去重
+          let obj = {};
+          data = data.reduce((cur,next) =>{
+              obj[next.name] ? "" : obj[next.name] = true && cur.push(next);
+              return cur
+          },[]);
+          
+          // 数组筛选
+          let result = data.map(v =>{
+              let filterArr = v.children.filter(s =>{
+                 return s.parent === v.name
+              })
+              return {
+                  name:v.name,
+                  children:filterArr
+              }
+          })
+          var html = '';
+          for (var i = 0; i < result.length; i++) {
+              let children = result[i].children;
+              if( children.length >0){
+                  // 判断每个省份下选中的城市长度,当大于等于4的时候 弹出"选择全省更划算的弹窗"
+                  let childrenArr=[];
+                  if (children.length >= 4 && !this.vipSubisTrial) {
+                      $('.tips_btn .tips_d_text.citys').text("已选择"+children.length+"个市,建议购买“全省”更划算哦~");
+                      $('.tips_btn .tips_d_text.citys').show();
+                  } 
+                  html += `${result[i].name}(`
+                  for(var j = 0;j < children.length;j++){
+                      childrenArr.push(children[j].name)
+                      if (j != children.length - 1) {
+                          html += `${children[j].name}、`
+                      } else {
+                          html += `${children[j].name}`
+                      }
+                  }
+                  if(i !=result.length -1){
+                      html += `)、`
+                  }else{
+                      html += `)`
+                  }
+                  this.selectObj[result[i].name]=childrenArr;//
+              }else{
+                  if(i !=result.length -1){
+                      html += `${result[i].name}、`
+                  }else{
+                      html += `${result[i].name}`
+                  }
+                  this.selectObj[result[i].name]=[];//
+              }
+          }
+          	for (var x = 0; x < provincesArr.length; x++) {
+	            for (var j =x+1; j <provincesArr.length; ) {
+	                if (provincesArr[x] === provincesArr[j]){
+	                    provincesArr.splice(j, 1);
+	                }
+	                else j++;
+	            }
+	        }
+          	if(provincesArr.length > 9){
+          		$('.tips_d_text.all').text("已选择"+provincesArr.length+"个省,建议购买“全国”更划算哦~");
+          		$('.tips_d_text.all').show();
+          		$('.tips_d_text.citys').hide();
+          	}else{
+          		$('.tips_d_text.all').hide();
+          	}
+//        console.log("this.selectObj:",this.selectObj)
+          $('.result_name').append(html)
+          AreaChoose.isOpen()
+        },
+        submitArea:function(){
+          let addCity = $('.result_name').text(); //新增的城市
+          sessionStorage.setItem("vipSubSelectAreaUpgrade",JSON.stringify(AreaChoose.selectObj));
+          history.go(-1);
+        },
+        isAllSelected:function(){
+          var _f = true
+          $($('.tab_content .city')).each(function (index, dom) {
+              if ($(dom).hasClass('active')) {
+                  _f = false
+                  $('.other').prop('checked', false);
+              }
+          })
+          // 如果循环结束仍为true说明 没有全部都被选中
+          if (_f) {
+//            $('.other').prop('checked', true);
+				$(".tips_btn .btns .reset-btn").attr("disabled","disabled");
+        		$(".tips_btn .btns .save-btn").attr("disabled","disabled");
+          }
+        },
+        isOpen:function(){
+          let pHeight = $('.result_text').height()
+          let minHeight = $('.result_text').css('min-height')
+          let rows = Math.round(Math.round(pHeight)/ parseFloat(minHeight));
+          $(".select-area-box .area-list").css("margin-top",$('.result_text').height()+20);
+//        console.log("高度:"+ pHeight,"最小高度"+ minHeight,"行数:" + rows)
+          if(rows == 1){
+              if(length >= 50){
+                  $('.detail').show()
+                  $('.packup').hide()
+              }else{
+                  $('.detail').hide()
+                  $('.packup').hide()
+              }
+          }else if(rows == 2){
+//            console.log($('.result_name').html().trim().length)
+              let length = $('.result_name').html().trim().length;
+              if(length >= 50){
+                  $('.detail').show()
+                  $('.packup').hide()
+              }else{
+                  $('.detail').hide()
+                  $('.packup').hide()
+              }
+              
+          } else{
+              $('.packup').show()
+              $('.detail').hide()
+          }
+        },
+        inintClick:function(){
+//      	$('.tab_content').each(function(){
+//        		AreaChoose.showSelected(false);
+//      	})
+          $('.detail').click(function () {  
+                $('.result_text').removeClass('line_two')
+                $(".result").css("padding-bottom","0.3rem")
+                $(this).hide();
+                $('.packup').show()
+                $(".select-area-box .area-list").css("margin-top",$('.result_text').height()+20);
+            })
+            $('.packup').click(function () { 
+                $(".result").css("padding-bottom","0.2rem")
+                $('.result_text').addClass('line_two')
+                $(this).hide();
+                $('.detail').show()
+                $(".select-area-box .area-list").css("margin-top",$('.result_text').height()+20);
+            })
+            $("body").on('click','.slide a',function(){
+                var s = $(this).html()
+                if(s == '#'){
+                    return;
+                }
+                document.querySelector('#' + s).scrollIntoView({block:'center'});
+            })
+          $(".select-area-box .tab:not(.municipality)").on('click', function (event) {
+                if($(this).next('.tab_content:not(:animated)').css("display") == "block"){
+                    $(this).children().children('i').css({
+                        "display":"inline-block",
+                        "transform":"rotate(0)"
+                    })
+                }else{
+                    $(this).children().children('i').css({
+                        "display":"inline-block",
+                        "transform":"rotate(-180deg)"
+                    })
+                }
+                $(this).toggleClass('selected').next('.tab_content:not(:animated)').stop(true, true).slideToggle()
+                $(this).parent().siblings().children('.tab').removeClass('selected');
+                
+            })
+            $('.checkbox').click(function (e) {  
+                e.stopPropagation();
+            })
+            $('.province .checkbox:not(.other)').on('change', function () {
+                var isCheckded = $(this).is(':checked')
+                if (isCheckded) {
+                    $(this).parents('.tab').siblings('.tab_content').find('.city').addClass('active')
+                    $(this).parents('.tab').siblings('.tab_content').find('.city[disabled]').removeClass('active')
+                    AreaChoose.isAllSelected()
+                    AreaChoose.getResult() 
+                    AreaChoose.showSelected(false);
+                } else {
+                    $(this).parents('.tab').siblings('.tab_content').find('.city').removeClass(
+                        'active')
+                    $(this).parents('.tab').siblings('.tab_content').find('.city').attr('disabled',false);    
+                    AreaChoose.isAllSelected()
+                    AreaChoose.getResult() 
+                    AreaChoose.showSelected(false);
+                }
+            })
+
+            //执行已购买城市函操作dom函数
+            $('.tab_content').on('click', '.city', function () {
+            	AreaChoose.showSelected(false);
+                $(this).toggleClass('active')
+                var isActive = $(this).parent().find('.city.active').length
+                if (isActive) {
+                    var input = $(this).parents('li').find('input.checkbox')
+                    window.input = input
+                    input.prop('checked', true)
+                    AreaChoose.isAllSelected()
+                    AreaChoose.getResult() 
+                } else {
+                    $(this).parent('div').siblings('.tab').children().children('.checkbox').prop(
+                        'checked', false)
+                    AreaChoose.isAllSelected()
+                    AreaChoose.getResult() 
+                }
+            })
+
+            $('.other').on('change', function () { //选择全国
+              	AreaChoose.reset();
+            })
+
+            $('.save-btn').click(function () {  // 提交
+                AreaChoose.submitArea();              
+            })
+            $('.reset-btn').click(function () {  //重置
+//            if(!$(".other").is(':checked')){
+//              $(".other").trigger("click");
+//            }
+				$('.tab:not(.whole):not(.tab[disabled])').removeClass('selected').children('.province').find(
+                    'input').prop({
+                    'checked': false,
+                    "disabled": false
+                });
+                $('.tab_content').find('.city:not(.city[disabled])').removeClass('active').attr({
+                    "disabled": false,
+                    "checked": false
+                })
+				AreaChoose.showSelected(false);
+				AreaChoose.getResult();
+				sessionStorage.removeItem("vipSubSelectAreaUpgrade");
+            })
+            //
+            if(sessionStorage.vipSubSelectAreaUpgrade!==undefined&&sessionStorage.vipSubSelectAreaUpgrade!==""){
+            	let areas = JSON.parse(sessionStorage.vipSubSelectAreaUpgrade);
+            	for(var province in areas){
+            		if(province === "全国"){
+            			console.log("23123")
+              			$(".other").trigger("click");
+            		}
+            	}
+            }
+        },
+        reset:function(){
+           var checked = $(".other").is(':checked');
+            if (checked) {
+                $('.tab_content').slideUp(500)
+                $('.tab span i').css({
+                    "display":"inline-block",
+                    "transform":"rotate(0)"
+                })
+                $('.tab:not(.whole):not(.tab[disabled])').removeClass('selected').children('.province').find(
+                    'input').prop({
+                    'checked': false,
+                    "disabled": false
+                });
+                $('.tab_content').find('.city:not(.city[disabled])').removeClass('active').attr({
+                    "disabled": false,
+                    "checked": false
+                })
+                AreaChoose.getResult();
+                $(".tips_btn .btns .reset-btn").removeAttr("disabled");
+            	$(".tips_btn .btns .save-btn").removeAttr("disabled");
+            }else{
+            	AreaChoose.showSelected(false);
+                AreaChoose.getResult();
+                $(".tips_btn .btns .reset-btn").attr("disabled","disabled");
+            	$(".tips_btn .btns .save-btn").attr("disabled","disabled");
+            }
+        }
+      }
+      
+      $(function () {
+            AreaChoose.isOpen()
+            AreaChoose.inintData(); //初始化 已选择和已购买数据
+            AreaChoose.inintPage(); //初始化城市数据
+            AreaChoose.showSelected(false);
+            AreaChoose.showSelected(true);//回显已选择
+            /* 判断已购买的城市 在不在 全部城市里面,在,将按钮置灰,不可点击 */
+
+            AreaChoose.getResult();
+            AreaChoose.inintClick();
+        })
+      //
+        //
+	    function checkObj(obj) {
+		    //检验数组
+		    if (Array.prototype.isPrototypeOf(obj) && obj.length === 0) {
+		        return true;
+		    }
+		    //检验对象
+		    if (Object.prototype.isPrototypeOf(obj) && Object.keys(obj).length === 0) {
+		        return true;
+		    }
+		    return false;
+		}
+	    //
+	    if($(".result_name").text()===""){
+	    	$(".tips_btn .btns .reset-btn").attr("disabled","disabled");
+        	$(".tips_btn .btns .save-btn").attr("disabled","disabled");
+	    }
+	    
+	    if(sessionStorage.vipSubSelectAreaUpgrade!==undefined && sessionStorage.vipSubSelectAreaUpgrade!==""){
+	    	$(".tips_btn .btns .reset-btn").removeAttr("disabled");
+            $(".tips_btn .btns .save-btn").removeAttr("disabled");
+	    }
+
+    </script>
+</body>
+
+</html>

+ 443 - 0
src/jfw/modules/app/src/web/templates/vipsubscribe/choose_industry_upgrade.html

@@ -0,0 +1,443 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>行业选择</title>
+        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+        <meta name="apple-mobile-web-app-capable" content="yes">
+        <meta name="apple-mobile-web-app-status-bar-style" content="black">
+        <script src="/jyapp/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+        <link rel="stylesheet" href="/jyapp/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
+        <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}" />
+        <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
+        <link rel="stylesheet" href="/jyapp/vipsubscribe/css/choose_industry.css?v={{Msg "seo" "version"}}3">
+        {{include "/common/weixin.html"}}
+        
+    </head>
+    <style type="text/css">
+    	body,html {
+			height: 100%;
+		}
+    </style>
+    <body>
+        <main class="choose_industry main">
+            <div class="result">
+                <span class="label">已新增:</span>
+                <span class="result_name">全部行业</span>
+            </div>
+            <div class="form">
+                <div class="select-area-box">
+                    <ul class="list">
+                        <li class="list_item" id="all">
+                            <div class="item_label"></div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">全部行业</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="A">
+                            <div class="item_label">A</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">安监</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="B">
+                            <div class="item_label">B</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">保监</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="C">
+                            <div class="item_label">C</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">财政</button>
+                                <button class="industry_item">传媒</button>
+                                <button class="industry_item">城管</button>
+                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">出版广电</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="D">
+                            <div class="item_label">D</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">档案</button>
+                                <button class="industry_item">地震</button>
+                                <button class="industry_item">党委办</button>
+                                <button class="industry_item">电信行业</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="F">
+                            <div class="item_label">F</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">法院</button>
+                                <button class="industry_item">发改</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="G">
+                            <div class="item_label">G</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">工商</button>
+                                <button class="industry_item">工信</button>
+                                <button class="industry_item">国土</button>
+                                <button class="industry_item">公安</button>
+                                <button class="industry_item">国资委</button>
+                                <button class="industry_item">公共资源交易</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="H">
+                            <div class="item_label">H</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">环保</button>
+                                <button class="industry_item">海关</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="J">
+                            <div class="item_label">J</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">教育</button>
+                                <button class="industry_item">军队</button>
+                                <button class="industry_item">交通</button>
+                                <button class="industry_item">纪委</button>
+                                <button class="industry_item">金融业</button>
+                                <button class="industry_item">建筑业</button>
+                                <button class="industry_item">检察院</button>
+                                <button class="industry_item">机关事务</button>
+                            </div>
+                        </li>
+                        <li class="list_item"  id="K">
+                            <div class="item_label">K</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">科技</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="L">
+                            <div class="item_label">L</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">林业</button>
+                                <button class="industry_item">旅游</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="M">
+                            <div class="item_label">M</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">民政</button>
+                                <button class="industry_item">民宗</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="N">
+                            <div class="item_label">N</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">农业</button>
+                                <button class="industry_item">能源化工</button>
+                                <button class="industry_item">农林牧渔</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="P">
+                            <div class="item_label">P</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">批发零售</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="Q">
+                            <div class="item_label">Q</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">气象</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="R">
+                            <div class="item_label">R</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">人行</button>
+                                <button class="industry_item">人社</button>
+                                <button class="industry_item">人大</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="S">
+                            <div class="item_label">S</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">食药</button>
+                                <button class="industry_item">税务</button>
+                                <button class="industry_item">水利</button>
+                                <button class="industry_item">市政</button>
+                                <button class="industry_item">审计</button>
+                                <button class="industry_item">商务</button>
+                                <button class="industry_item">司法</button>
+                                <button class="industry_item">社会团体</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="T">
+                            <div class="item_label">T</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">统计</button>
+                                <button class="industry_item">统战</button>
+                                <button class="industry_item">体育</button>
+                            </div>
+                        </li>                    
+                        <li class="list_item" id="W">
+                            <div class="item_label">W</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">文化</button>
+                                <button class="industry_item">卫生</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="X">
+                            <div class="item_label">X</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">学校</button>
+                                <button class="industry_item">宣传</button>
+                                <button class="industry_item">信息技术</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="Y">
+                            <div class="item_label">Y</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">医疗</button>
+                                <button class="industry_item">银监</button>
+                                <button class="industry_item">运输物流</button>
+                            </div>
+                        </li>
+                        <li class="list_item" id="Z">
+                            <div class="item_label">Z</div>
+                            <div class="item_industry_list">
+                                <button class="industry_item">质监</button>
+                                <button class="industry_item">组织</button>
+                                <button class="industry_item">政协</button>
+                                <button class="industry_item">住建</button>
+                                <button class="industry_item">证监</button>
+                                <button class="industry_item">政府办</button>
+                                <button class="industry_item">制造业</button>
+                                <button class="industry_item">政务中心</button>
+                                <button class="industry_item">住宿餐饮</button>
+                            </div>
+                        </li>
+                    </ul>
+                </div>
+            </div>
+            <div class="slide">
+                <a href="javascript:;">#</a>
+                <a href="javascript:;">A</a>
+                <a href="javascript:;">B</a>
+                <a href="javascript:;">C</a>
+                <a href="javascript:;">D</a>
+                <a href="javascript:;">F</a>
+                <a href="javascript:;">G</a>
+                <a href="javascript:;">H</a>
+                <a href="javascript:;">J</a>
+                <a href="javascript:;">K</a>
+                <a href="javascript:;">L</a>
+                <a href="javascript:;">M</a>
+                <a href="javascript:;">N</a>
+                <a href="javascript:;">P</a>
+                <a href="javascript:;">Q</a>
+                <a href="javascript:;">R</a>
+                <a href="javascript:;">S</a>
+                <a href="javascript:;">T</a>
+                <a href="javascript:;">W</a>
+                <a href="javascript:;">X</a>
+                <a href="javascript:;">Y</a>
+                <a href="javascript:;">Z</a>
+            </div>
+            <div class="tips_btn">
+                <div class="tips_discount">
+                    <!--<div class="tips_d_money" style="display: block">&yen;38</div>-->
+                    <div class="tips_d_text">已选择4个行业,建议购买“全部行业”更划算哦~</div>
+                </div>
+                <div class="btns">
+                    <button class="reset-btn">重置</button>
+                    <button class="save-btn">确认</button>
+                </div>
+            </div>
+        </main>
+        <script src="/jyapp/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
+        <!--<script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>-->
+        <script src="/jyapp/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+        <script src="/jyapp/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
+        <script>
+           //
+           // 点击导航跳转
+            $("body").on('click','.slide a',function(){
+                var s = $(this).html()
+                if(s == '#'){
+                    return;
+                }
+                document.querySelector('#' + s).scrollIntoView({block:'center'});
+            })
+            
+            function insertIndustryItem (letter, industryArr = []) {
+                if (!letter) return
+                var query = `#${letter[0].toUpperCase()} .item_industry_list`
+                var industryItemContainer = $(query)
+                var buttonArr = []
+
+                for (var i = 0; i < industryArr.length; i++) {
+                    buttonArr.push(`<button class="industry_item" ${industryArr[i].disabled ? 'disabled': ''}>${industryArr[i].name}</button>`)
+                }
+                industryItemContainer.html(buttonArr.join(''))
+            }
+            
+            function findSelectedIndustry () {
+                var buttons = $('.select-area-box .list button')
+                // 找到已选择的数组(有active类的数组)
+                var selectedArr = []
+                buttons.each(function(){
+                    if ($(this).hasClass('active')) {
+                        if($(this).attr("disabled")!="disabled"){
+                          selectedArr.push($(this).text())
+                        }
+                    }
+                })
+                
+                // 显示隐藏优惠tips
+                if (selectedArr.length >= 4 && !vipSubisTrial) {
+                	$('.tips_btn .tips_d_text').text("已选择"+selectedArr.length+"个行业,建议购买“全部行业”更划算哦~");
+                    $('.tips_btn .tips_d_text').slideDown();
+                } else {
+                    $('.tips_btn .tips_d_text').slideUp()
+                }
+          
+                selectedIndustryArr = selectedArr
+                
+                var selectedStr = selectedArr.join('、')
+                $('.result .result_name').text(selectedStr)
+
+                if (selectedArr.length === 0) {
+//                  var allButton = $('#all button')
+//                  allButton.trigger('click')
+//                  $('.result .result_name').text(allButton.text())
+					$(".tips_btn .btns .save-btn").attr("disabled","disabled");
+					$(".tips_btn .btns .reset-btn").attr("disabled","disabled");
+                }
+                if (selectedArr.length === buttons.length - 1) {
+                    // 除全部行业外所有按钮都被选中了
+                    $('#all button').trigger('click');
+                }
+                $(".select-area-box .list").css("margin-top",$(".result").height()+20);
+            }
+                      
+            function showSelect(arr,canclick){
+              if(!arr)return
+              arr.forEach(v => {
+                $($('.industry_item')).each(function (index, dom) {
+                	if(canclick){
+                		if (v!="全部行业"){
+	                      	$('#all').children().children('button').removeClass('active');
+	                      	$(".tips_btn .btns .save-btn").removeAttr("disabled","disabled");
+							$(".tips_btn .btns .reset-btn").removeAttr("disabled","disabled");
+	                    }
+                		if (v == $(dom).text()) {
+	                       $(dom).addClass("active").attr({"disabled":!canclick})
+	                    }
+                	}else{
+                		if (v == $(dom).text()) {
+	                       $(dom).attr({"disabled":!canclick});
+	                    }
+                		if(v == "全部行业"){
+                			$(".industry_item").each(function(){
+                				$(this).attr({"disabled":!canclick});
+                			});
+                			$(".tips_d_money").hide();
+                		}
+                	}
+                })
+              })
+            }
+            
+            function flushPrice(){
+              if(vipSubisTrial){
+                $('.tips_d_money').css("display","none");
+              }else{
+                var price=getsubVipOrderPrice(selectedAreaObj,selectedIndustryArr,timeSelect);
+                $('.tips_d_money').text('¥'+price);
+              }
+            }
+            
+            // 每个button的点击事件
+            $('.select-area-box .list').on('click', 'button', function (e) {
+                $('.tips_btn .btns button').removeAttr('disabled')
+
+                $(this).toggleClass('active')
+                // 如果点击全部行业,则其他所有按钮都取消active
+                if ($(this).parents('li')[0].id === 'all') {
+                    $('.select-area-box .list button').removeClass('active')
+                    $('#all button').addClass('active')
+                } else {
+                    $('#all button').removeClass('active')
+                }
+                
+                findSelectedIndustry()
+                flushPrice()
+            })
+
+            // 重置按钮事件
+            $('.reset-btn').on('click', function () {
+//            $("#all .industry_item").trigger("click");
+				$('.select-area-box .list button').removeClass('active');
+                showSelect(buyIndustry,false);
+                findSelectedIndustry();
+                sessionStorage.removeItem("vipSubSelectIndustryUpgrade");
+                $('.tips_btn .btns button').removeAttr('disabled');
+            })
+           
+            //=======================
+             
+
+             // 确认按钮事件
+            $('.save-btn').on('click', function () {
+                console.log(selectedIndustryArr)
+                sessionStorage.setItem("vipSubSelectIndustryUpgrade",JSON.stringify(selectedIndustryArr));
+                history.go(-1);
+            })
+                       
+            var selectedIndustryArr //已选择行业
+            var selectedAreaObj = {"一个省":["一个市"]} //计算价格临时变量
+            var timeSelect = [1,2]//计算价格临时变量 timeSelect[0]时长  timeSelect[1] 1:年 2:月
+            var vipSubisTrial = false;
+            var buyIndustry = "";//已购买
+            $(function(){
+              try{
+                if(sessionStorage.getItem("vipSubSelectIndustryUpgrade")){
+                  selectedIndustryArr=JSON.parse(sessionStorage.getItem("vipSubSelectIndustryUpgrade"));
+                }else{
+                  selectedIndustryArr=[];
+                }
+                if(sessionStorage.getItem("vipSubSelectAreaUpgrade")){
+                  selectedAreaObj=JSON.parse(sessionStorage.getItem("vipSubSelectAreaUpgrade"));
+                }
+                if(sessionStorage.getItem("vipSubSelectTime")){
+                  this.timeSelect=JSON.parse(sessionStorage.getItem("vipSubSelectTime"));
+                }
+                //已购买行业
+                $DoPost("/subscribepay/renewUpgrade/getBuyMsg", {}, function (data) {
+                	if(data){
+		            	buyIndustry = data.buyerclass;
+                	}
+                },false);
+                if(checkObj(buyIndustry)){
+                	buyIndustry = ["全部行业"]
+                }
+                //是否试用界面
+                if(sessionStorage.getItem("vipSubisTrial")) vipSubisTrial=true;
+              }catch(e){
+                console.log(e)
+              }
+              //已选择
+              showSelect(selectedIndustryArr,true);
+              showSelect(buyIndustry,false);
+              findSelectedIndustry();
+              flushPrice();
+            })
+            
+            //
+		    function checkObj(obj) {
+			    //检验数组
+			    if (Array.prototype.isPrototypeOf(obj) && obj.length === 0) {
+			        return true;
+			    }
+			    //检验对象
+			    if (Object.prototype.isPrototypeOf(obj) && Object.keys(obj).length === 0) {
+			        return true;
+			    }
+			    return false;
+			}
+        </script>
+    </body>
+</html>

+ 222 - 0
src/jfw/modules/app/src/web/templates/vipsubscribe/renew_notice.html

@@ -0,0 +1,222 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8">
+		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<title>VIP订阅</title>
+		<script src="/jyapp/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+		<link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}"/>
+		<link rel="stylesheet" href="/jyapp/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
+		<link rel="stylesheet" href="/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
+		<link rel="stylesheet" href="/jyapp/vipsubscribe/css/vip_service_expire.css?v={{Msg "seo" "version"}}1">
+		{{include "/common/weixin.html"}}
+	</head>
+	<style type="text/css">
+		body,html {
+			height: 100%;
+		}
+	</style>
+	<body>
+		<div class="vip_service_expire layout_top-bottom">
+			<div class="service_expire_tip layou_top">
+                <div class="tip_title_box">
+                    <img class="nothing" src="/jyapp/vipsubscribe/image/nothing.png?v={{Msg "seo" "version"}}" alt="">
+                    <div class="tip">
+                        <div id="exprie">您的VIP订阅服务,已到期!</div>
+                        <!-- <div>VIP订阅服务即将到期,请及时续费!</div> -->
+                        <div class="validity_date">
+                            <span>有效日期:</span>
+                            <span class="date-span"></span>
+                        </div>
+                    </div>
+                </div>
+                <div class="recommend_box">
+                    <div class="recommend_title">
+                        以下区域、行业的订阅推送已停止,为了不影响您的使用,请立即续费!
+                    </div>
+                    <div class="recommend_info">
+                        <div class="info_area">
+                            <span>区域:</span>
+                            <span class="text area-list"></span>
+                        </div>
+                        <div class="info_industry">
+                            <span>行业:</span>
+                            <span class="text industry-list"></span>
+                        </div>
+                    </div>
+                </div>
+            </div>
+			<div class="renew_box">
+                <button style="display: none;" class="renew_service" onclick="window.location.href='/jyapp/vipsubscribe/renewPayPage'">续费</button>
+                <button style="display: none;" class="free_service" onclick="window.location.href='/jyapp/swordfish/historypush'">使用免费订阅</button>
+            </div>
+		</div>
+		<script src="/jyapp/vipsubscribe/js/jquery-2.1.4.js"></script>
+    	<!--<script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>-->
+    	<script src="/jyapp/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+    	<script src="/jyapp/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
+		<script type="text/javascript">
+			//
+			var orderId = {{.T.orderId}};
+			var starts = {{.T.startTime}};
+			var ends = {{.T.endTime}};
+//			console.log("orderId",orderId)
+//			console.log("starts",starts)
+//			console.log("ends",ends)
+			var nowTime = new Date().getTime();
+			if(orderId !== "" && orderId !== undefined){
+				$DoPost("/subscribepay/renewUpgrade/getExprie", {"orderId":orderId}, function (r) {
+					if(r){
+						var area = r.area
+						var buyerclass = r.buyerclass
+						var exprie = {{.T.exprie}};
+						var vipStatus = Number(r.vipStatus);
+						var areaArr = [];
+					    var areaHtml = "";
+					    var buyerclassArr = [];
+					    var buyerclassHtml = "";
+					    var endstime = new Date(ends).getTime();
+						if (area !== "" && area !== undefined){
+					    	for(var province in area){
+					    		var citys = area[province]
+			//		    		console.log(citys);
+					    		if(citys.length===0){
+					    			areaArr.push(province);
+					    		}else{
+					    			for(var i in citys){
+					    				areaArr.push(citys[i]);
+					    			}
+					    		}
+					    	}
+					    	areaHtml = areaArr.toString().replace(/,/g, "、");
+					    	if(checkObj(area)){
+								areaHtml = "全国";
+							}
+					    	$('.area-list').text(areaHtml);
+					    }
+					    if(buyerclass !== "" && buyerclass !== undefined){
+					    	for(var i in buyerclass){
+					    		var industry = buyerclass[i];
+					    		buyerclassArr.push(industry);
+					    	}
+					    	buyerclassHtml = buyerclassArr.toString().replace(/,/g, "、");
+					    	if(checkObj(buyerclass)){
+					    		buyerclassHtml = "全行业";
+					    	}
+							$('.industry-list').text(buyerclassHtml);
+					    }
+					    if(starts !== "" && ends !== ""){
+					    	let start = starts.toString().replace(/-/g, ".");
+					    	let end = ends.toString().replace(/-/g, ".");
+					    	let dateHtml = start + " - " + end;
+					    	$(".date-span").text(dateHtml);
+					    }
+					    if(vipStatus === 2&&nowTime>endstime){
+							return   
+					    }
+					    if(exprie === "will"){
+					    	let a = (endstime/1000) - (86400 * 3);
+					    	let b = nowTime/1000;
+					    	let c = endstime/1000;
+					    	if(a < b&&b < c){
+					    		$(".renew_service").show();
+						    	$("#exprie").text("VIP订阅服务即将到期,请及时续费")
+						    	$(".recommend_title").text("以下区域、行业的订阅推送即将停止,为了不影响您的使用,请立即续费!")
+					    	}
+					    }else{
+					    	$(".renew_service").show();
+					    	$(".free_service").show();
+					    }
+					}
+				});
+			}else{
+				$DoPost("/subscribepay/renewUpgrade/getBuyMsg", {}, function (data) {
+					if(data){
+						var area = data.area;
+					    var buyerclass = data.buyerclass;
+					    var startTime = data.start;
+					    var endTime = data.end;
+					    var exprie = {{.T.exprie}};
+					    var vipStatus = Number(data.vipStatus);
+					    //
+					    var areaArr = [];
+					    var areaHtml = "";
+					    var buyerclassArr = [];
+					    var buyerclassHtml = "";
+				//	    var dateName = "";
+					    var dateHtml = "";
+					    if (area !== "" && area !== undefined){
+					    	for(var province in area){
+					    		var citys = area[province]
+			//		    		console.log(citys);
+					    		if(citys.length===0){
+					    			areaArr.push(province);
+					    		}else{
+					    			for(var i in citys){
+					    				areaArr.push(citys[i]);
+					    			}
+					    		}
+					    	}
+					    	areaHtml = areaArr.toString().replace(/,/g, "、");
+					    	if(checkObj(area)){
+								areaHtml = "全国";
+							}
+					    	$('.area-list').text(areaHtml);
+					    }
+					    if(buyerclass !== "" && buyerclass !== undefined){
+					    	for(var i in buyerclass){
+					    		var industry = buyerclass[i];
+					    		buyerclassArr.push(industry);
+					    	}
+					    	buyerclassHtml = buyerclassArr.toString().replace(/,/g, "、");
+					    	if(checkObj(buyerclass)){
+					    		buyerclassHtml = "全行业";
+					    	}
+							$('.industry-list').text(buyerclassHtml);
+					    }
+				//	    if(cycleunit !== "" && cycleunit !== undefined){
+				//	    	if(cycleunit === 1){
+				//	    		dateName = cyclecount + " 年";
+				//	    	}else if(cycleunit === 2){
+				//	    		dateName = cyclecount + " 个月";
+				//	    	}
+				//	    	$(".item_cycle .label_for").text(dateName);
+				//	    }
+					    if(startTime !== "" && endTime !== ""){
+					    	var start = startTime.toString().replace(/-/g, ".");
+					    	var end = endTime.toString().replace(/-/g, ".");
+					    	dateHtml = start + " - " + end;
+					    	$(".date-span").text(dateHtml);
+					    }
+					    if(exprie === "will"){
+					    	let a = (endstime/1000) - (86400 * 3)
+					    	let b = nowTime/1000
+					    	if(b > a){
+					    		$(".renew_service").show();
+						    	$("#exprie").text("VIP订阅服务即将到期,请及时续费")
+						    	$(".recommend_title").text("以下区域、行业的订阅推送即将停止,为了不影响您的使用,请立即续费!")
+					    	}
+					    }else{
+					    	$(".renew_service").show();
+					    	$(".free_service").show();
+					    }
+					}
+				});	
+			}
+			
+	        //
+		    function checkObj(obj) {
+			    //检验数组
+			    if (Array.prototype.isPrototypeOf(obj) && obj.length === 0) {
+			        return true;
+			    }
+			    //检验对象
+			    if (Object.prototype.isPrototypeOf(obj) && Object.keys(obj).length === 0) {
+			        return true;
+			    }
+			    return false;
+			}
+			
+		</script>
+	</body>
+</html>

+ 827 - 0
src/jfw/modules/app/src/web/templates/vipsubscribe/renew_pay.html

@@ -0,0 +1,827 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport"
+        content="width=device-width, initial-scale=1.0,minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>VIP订阅续费</title>
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <script src="/jyapp/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+    <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" href="/jyapp/vipsubscribe/css/vip_update.css?v={{Msg "seo" "version"}}5">
+	{{include "/common/weixin.html"}}
+</head>
+<style type="text/css">
+	body,html {
+		height: 100%;
+	}
+	::-webkit-input-placeholder { /* Chrome/Opera/Safari */
+	  	color: #686868;
+	}
+	.vip_update .fixed-bottom-box, .vip_renew .fixed-bottom-box {
+	    width: 100%;
+	    position: fixed;
+	    bottom: 0;
+	    left: 0;
+	}
+</style>
+<body class="no-touch">
+    <div class="vip_renew">
+        <div class="choose_condition">
+             <!-- 正常点击vip首页续费进入显示下列提示 -->
+            <p class="update_tip renew_upgrade">提示:订阅续费可在已购买的服务基础上,延长订阅服务周期</p>
+             <!-- 即将到期点击vip首页续费显示下列提示 -->
+            <p class="expire_tip renew_update">提示:您的VIP订阅服务即将到期,为不影响您的使用,请立即续费</p>
+            <ul class="chooseList">
+                <li class="detail_item">
+                        <div class="item_info item_area">
+                            <span class="label">已订阅区域:</span>
+                            <span class="label_for">河南省、郑州市、洛阳市、淮南市</span>
+                        </div>
+                        <div class="item_info item_industry">
+                            <span class="label">已订阅行业:</span>
+                            <span class="label_for">保监、城管保监</span>
+                        </div>
+                        <div class="item_info item_cycle">
+                            <span class="label">订阅周期:</span>
+                            <span class="label_for">10个月</span>
+                        </div>
+                        <div class="item_info item_validity">
+                            <span class="label">有效日期:</span>
+                            <span class="label_for">2020.01.31 - 2020.10.31</span>
+                            <p>
+                                <!-- 正常点击vip首页续费进入显示去升级,即将到期点击vip首页续费显示订阅修改 -->
+                                <a href="/jyapp/vipsubscribe/toUpgradePage" class="go_update renew_upgrade">去升级</a>
+                                <a href="/jyapp/vipsubscribe/vipsubscribe_willExpire" class="go_update renew_update">订阅修改</a>
+                            </p>
+                        </div>
+                </li>
+                <li class="choose_item select_cycle">
+                    <a href="javascript:;">
+                        <span class="label">延长订阅周期</span>
+                        <input type="text" value="" onfocus="this.blur();" placeholder="选择年、月" class="info choose_time">
+                        <!-- <span class="info choose_time">选择年、月</span> -->
+                        <i class="iconfont icon-arrow choose_time"></i>
+                    </a>
+                </li>
+            </ul>
+            <div class="pay_mode">
+                <div class="select_payment choose_item">
+                    <a href="javascript:;">
+                        <span class="label">支付方式</span>
+                        <span class="info choose_way weixin_pay">微信支付</span>
+                        <i class="iconfont icon-arrow choose_way"></i>
+                    </a>
+                </div>
+            </div>
+        </div>
+        <div class="fixed-bottom-box">
+            <div class="weui-cells weui-cells_checkbox radio-form">
+                <label class="weui-cell weui-check__label" for="buy">
+                    <div class="weui-cell__hd">
+                        <input type="checkbox" class="weui-check" name="buyService" id="buy" checked />
+                        <i class="weui-icon-checked"></i>
+                    </div>
+                    <div class="weui-cell__bd read">
+                        <p>
+                            我已阅读,理解并接受
+                            <a href="/jyapp/front/staticPage/wx-serviceterms.html">
+                                《剑鱼标讯线上购买与服务条款》
+                            </a>
+                        </p>
+                    </div>
+                </label>
+            </div>
+            <div class="price">
+                <label></label>
+                <p>
+                    <!--<span class="old_price">&yen;610.80</span>-->
+                    <strong class="finally_price">&yen;0.00</strong>
+                </p> 
+            </div>
+            <div class="form-btn">
+                <!-- 支付 -->
+                <button class="btn enter save_renew" disabled>立即续费</button>
+            </div>
+        </div>
+
+        <!-- 选择订阅周期 -->
+        <div class="js_dialog time_cycle" id="time_cycle" style="display: none;">
+            <div class="weui-mask"></div>
+            <div class="box">
+                <div class="box_hd">
+                    <h3>延长订阅周期</h3>
+                    <span class="cancel">取消</span>
+                </div>
+                <div class="box_bd">
+                    <div class="tips profit_tips" style="display: none">已选择10个月,建议“按年订阅”更划算哦~</div>
+                    <div class="computed_price">¥58.0</div>
+                    <div class="bd_select">
+                        <div class="weui-cells weui-cells_checkbox choose-form">
+                            <label class="weui-cell weui-check__label monthly_label" for="monthly">
+                                <div class="weui-cell__hd">
+                                    <input type="radio" class="weui-check monthly" name="time" value="month"
+                                        id="monthly" checked />
+                                    <i class="weui-icon-checked"></i>
+                                </div>
+                                <div class="weui-cell__bd">
+                                    <p>按月订阅</p>
+                                </div>
+                            </label>
+                            <div class="number_box active" id="number_box_month" data-numbox-step="1" data-numbox-min="1"
+                                data-numbox-max="12">
+                                <button class="weui-btn weui-btn_plain-default" type="button" disabled>
+                                    <div class="jy_icon decrease"></div>
+                                </button>
+                                <span class="month_number">1</span>
+                                <button class="weui-btn weui-btn_plain-default add" type="button">
+                                    <div class="jy_icon increase"></div>
+                                </button>
+                            </div>
+                        </div>
+                        <div class="weui-cells weui-cells_checkbox choose-form">
+                            <label class="weui-cell weui-check__label yearly_label" for="yearly">
+                                <div class="weui-cell__hd">
+                                    <input type="radio" class="weui-check yearly" name="time" value="year"
+                                        id="yearly"/>
+                                    <i class="weui-icon-checked"></i>
+                                </div>
+                                <div class="weui-cell__bd">
+                                    <p>按年订阅</p>
+                                </div>
+                            </label>
+                            <div class="number_box" id="number_box_year">
+                                <span class="year_number" data-id="1">1年</span>
+                                <span class="year_number" data-id="2">2年</span>
+                                <span class="year_number" data-id="3">3年</span>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="form-btn">
+                    <!-- <button class="btn enter" disabled id="enter_period">确认</button> -->
+                    <button class="btn enter" id="enter_period">确认</button>
+                </div>
+            </div>
+        </div>
+        <!-- 选择支付方式 -->
+        <div class="js_dialog pay_way" id="pay_way" style="display: none;">
+            <div class="weui-mask"></div>
+            <div class="box">
+                <div class="box_hd">
+                    <span></span>
+                    <h3>支付方式</h3>
+                    <span class="cancel">取消</span>
+                </div>
+                <div class="box_bd">
+                    <div class="weui-cells weui-cells_checkbox choose-form">
+                        <label class="weui-cell weui-check__label wx_label" for="wx">
+                            <div class="weui-cell__bd read">
+                                <p><img src="/jyapp/vipsubscribe/image/weixin.png">微信支付</p>
+                            </div>
+                            <div class="weui-cell__hd">
+                                <input type="radio" class="weui-check" name="way" value="微信支付" id="wx" checked />
+                                <i class="weui-icon-checked"></i>
+                            </div>
+                        </label>
+                        <label class="weui-cell weui-check__label zfb_label" for="zfb">
+                            <div class="weui-cell__bd read">
+                                <p><img src="/jyapp/vipsubscribe/image/zhifubao.png">支付宝支付</p>
+                            </div>
+                            <div class="weui-cell__hd">
+                                <input type="radio" class="weui-check" name="way" value="支付宝支付" id="zfb" />
+                                <i class="weui-icon-checked"></i>
+                            </div>
+                        </label>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <script src="/vipsubscribe/js/jquery-2.1.4.js"></script>
+    <script src="/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}4"></script>
+    <!--<script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>-->
+    <script src="https://res.wx.qq.com/open/libs/weuijs/1.1.4/weui.min.js?v={{Msg "seo" "version"}}"></script>
+    <script type="text/javascript">
+    	//
+    	try{
+			var signature = {{.T.signature}};
+			var isConfigSuccess = true;
+			var id = {{.T._id}}
+			if(signature && signature.length == 4){
+			  	wx.config({
+			  	    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+			  	    appId: signature[0], // 必填,公众号的唯一标识
+			  	    timestamp:signature[1], // 必填,生成签名的时间戳
+			  	    nonceStr: signature[2], // 必填,生成签名的随机串
+			  	    signature: signature[3],// 必填,签名,见附录1
+			  	    jsApiList: ['chooseWXPay','hideAllNonBaseMenuItem'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
+			  	});
+			  	wx.ready(function(){
+			  		if(!isConfigSuccess){
+			  			return;
+			  		}
+			  		wx.hideAllNonBaseMenuItem();
+			    });
+			  	wx.error(function(res){
+			  	    //config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
+			  		//alert(res);
+			  		isConfigSuccess = false;
+			  	});
+			}
+			//调用微信支付接口
+  			function onBridgeReady(res,ordercode){
+  			   	WeixinJSBridge.invoke('getBrandWCPayRequest',{
+		    		"appId": res["appId"],
+		          	"timeStamp": res["timestamp"],
+		          	"nonceStr": res["nonceStr"],
+		          	"package": res["prepayId"],
+		          	"signType": res["signType"],
+		         	"paySign": res["sign"]
+  				},
+  				function(r){
+				    if(r.err_msg == "get_brand_wcpay_request:ok"){
+						setTimeout(function(){
+							window.location.replace("/jyapp/front/vipsubscribe/toPaySuccessPage?orderCode="+ordercode);
+						},500)
+					}	
+//					}else if(r.err_msg == "get_brand_wcpay_request:cancel"){               
+////	                	alert("开发环境【支付跳转完成】")
+//		                try{
+////		  					window.location.replace("/front/vipsubscribe/toPaySuccessPage?orderCode="+ordercode);
+////		                    window.location.reload();
+//		                }catch(e){
+//		                  alert(e)
+//		                }
+//	  				}else{
+//	                	weui.toast("系统异常,请稍微再试",{
+//	                  		duration: 2000,
+//	                  		className: 'custom-toast',
+//	                	});
+//	  				}
+  				});
+  			}   
+		}catch(e){
+		  console.log(e)
+		}
+    </script>
+    <script>
+    	$(function () {    
+			var isPageHide = false;   
+			window.addEventListener('pageshow', function () {      
+			    if (isPageHide) {
+	                location.reload();
+			    }    
+			});    
+			window.addEventListener('pagehide', function () {
+			    isPageHide = true;
+			});  
+		});
+        // 隐藏dialog选择框
+        function hideDialog() {
+            $('#pay_way').hide(200);
+            $('#time_cycle').hide(200);
+        }
+        $('.weui-mask').click(hideDialog);
+        $('.cancel').click(hideDialog);
+
+        // 选择订阅周期
+        $('.select_cycle > a').click(function () {
+            $('#time_cycle').show(200);
+        })
+        // 选择支付方式
+        $('.select_payment .choose_way').click(function () {
+            $('#pay_way').show(200);
+        })
+        // 对支付方式选择的input绑定点击事件
+        $('#pay_way input:radio[name="way"]').click(function () {
+            var checkValue = $('input:radio[name="way"]:checked').val();
+//          console.log(checkValue);
+			var payHtml = "";
+	    	if(checkValue === "微信支付"){
+	    		payHtml = "wx";
+	    	}else if(checkValue === "支付宝支付"){
+	    		payHtml = "alipy";
+	    	}
+	    	sessionStorage.payTypes = payHtml;
+            $('.pay_way').hide(200);
+            $('.pay_mode .select_payment .choose_way.info').html(checkValue);
+        });
+        
+        // 对订阅周期弹框的input绑定点击事件
+        $('#time_cycle input:radio[name="time"]').on('click', function (e) {
+            // 解除确认按钮的锁定
+            $('#time_cycle .form-btn button').removeAttr('disabled')
+
+            if ($(e.target).hasClass('monthly')) {
+                // 按月订阅
+                $('#number_box_month').addClass('active');
+                $('#number_box_year span').removeClass('active');
+            } else if ($(e.target).hasClass('yearly')) {
+                // 按年订阅
+                $('#number_box_month').removeClass('active');
+            } else if ($(e.target).hasClass('prolong')) {
+                $('#number_box_month').removeClass('active');
+                $('#number_box_year span').removeClass('active');
+            }
+        })
+
+
+        // 控制月份number_box的事件
+        $('#number_box_month').on('click', 'button', function (e) {
+            // 点击加减号让input radio选中
+            $("#monthly").prop('checked', true);
+            $('.number_box span').removeClass('active')
+            $('#number_box_month').addClass('active')
+            
+
+            var $number = $('#number_box_month span.month_number');
+            var $monthlyInput = $('#monthly');
+            // 未整理的data数组,里面的值都是字符串
+            var preData = e.delegateTarget.dataset
+            var currentNum = parseInt($number.text());
+            var data = {};
+            // 把字符串转换成数字
+            for (var i in preData) {
+                data[i] = preData[i] - 0
+            }
+
+            if (!$monthlyInput.prop('checked')) {
+                return
+            }
+            // 判断是点击的是+ 还是-
+            if ($(e.target).hasClass('add')) {
+                // 点的+
+                // currentNum = currentNum >= 12 ? 12 : currentNum + 1;
+                currentNum = currentNum >= data.numboxMax ? data.numboxMax : currentNum + data
+                    .numboxStep;
+            } else {
+                // 点的-
+                // currentNum = currentNum <= 1 ? 1 : currentNum - 1;
+                currentNum = currentNum <= data.numboxMin ? data.numboxMin : currentNum - data
+                    .numboxStep;
+            }
+            if (currentNum >= 10) {
+            	$('.profit_tips').text("已选择"+currentNum+"个月,建议“按年订阅”更划算哦~");
+                $('.profit_tips').show();
+                if(currentNum==12){ //12个月自动跳转1年
+                    $("#number_box_year .year_number:eq(0)").trigger("click");
+                    return
+                }
+            } else {
+                $('.profit_tips').hide()
+            }
+            $number.text(currentNum)
+            if(currentNum >= 10){
+            	currentNum = 10;
+            }
+            var price = (monthPrice * currentNum).toFixed(1);
+            $('.computed_price').html('¥' + price)
+            var firstButton = $('#number_box_month button:first')
+            var lastButton = $('#number_box_month button:last')
+//          if (currentNum >= 10) {
+//          	$('.profit_tips').text("已选择"+currentNum+"个月,建议“按年订阅”更划算哦~");
+//              $('.profit_tips').show();
+//          } else {
+//              $('.profit_tips').hide()
+//          }
+            // 如果为操作后的结果为1,则锁定减号按钮
+            if (currentNum === data.numboxMin) {
+                firstButton.attr('disabled', true)
+            } else {
+                firstButton.removeAttr('disabled')
+            }
+            // 如果为操作后的结果为12,则锁定加号按钮
+            if (currentNum === data.numboxMax) {
+                lastButton.attr('disabled', true)
+            } else {
+                lastButton.removeAttr('disabled')
+            }
+        })
+
+       /* -------- 控制年份number_box的事件  点击1年 2年 3年触发的事件------- */
+        $('#number_box_year').on('click', 'span', function (e) {
+            console.log(e.target.dataset.id)
+            let id = e.target.dataset.id;
+            $('.profit_tips').hide()
+            $('#number_box_month').removeClass('active');
+            $(this).addClass('active').siblings().removeClass('active')
+            $('#yearly').prop('checked', true);
+            $("#monthly").prop('checked', false);
+            // 渲染结果 保留一位小数
+            let result = (Number(id) * yearPrice).toFixed(1);
+            $('.computed_price').html('¥' + result)
+        })
+
+        /* -------- 选择按月订阅  radio触发的事件------- */
+        $('#monthly').on('change', function (e) {
+            let isChecked = $(this).is(':checked')
+            let val = $('.month_number').text();
+            if (val >= 10) {
+            	$('.profit_tips').text("已选择"+val+"个月,建议“按年订阅”更划算哦~");
+                $('.profit_tips').show();
+                val = 10;
+            }
+//          console.log(val)
+            if (!isChecked) {
+                $('#number_box_month button').attr('disabled', true)
+            } else {
+                $('#number_box_month button').removeAttr('disabled')
+            }
+            let result = (Number(val) * monthPrice).toFixed(1);
+            $('.computed_price').html('¥' + result)
+
+        })
+        /* -------- 选择按年订阅  radio触发的事件------- */
+        $('#yearly').on('change', function (e) {
+            $('.profit_tips').hide()
+            // console.log($(this).is(':checked'))
+            let isChecked = $(this).is(':checked')
+            // 按年订阅默认选择1年 
+            let val = 1;
+            $('.computed_price').html('¥' + Number(val) * yearPrice)
+            if (isChecked) {
+                $('#number_box_year span:eq(0)').addClass('active').siblings().removeClass('active')
+
+            }
+
+        })
+        
+        // 确认订阅周期
+        $('#enter_period').on('click',function(){
+            var checked = $('#time_cycle input[name="time"]:checked')
+            // 获取其label的for属性,通过for属性来怕短板
+            // monthly 按月
+            // yearly 按年
+            var flag = checked.parents('label').attr('for')
+            var val = '请选择年、月';
+            var flagVal = 0; //1-年,2-月
+            var flagValLen = 0;
+            if (flag === 'monthly') {
+                val = $('#number_box_month .month_number').text() + '个月'
+                flagVal = 2;
+                flagValLen = Number($('#number_box_month .month_number').text());
+            } else if (flag === 'yearly') {
+                val = $('#number_box_year .year_number.active').text()
+                flagVal = 1;
+                flagValLen = Number($('#number_box_year .year_number.active').text().replace("年",""));
+            }
+            sessionStorage.renew_cycleunit = flagVal;
+            sessionStorage.renew_cyclecount = flagValLen;
+            sessionStorage.renew_price = $(".computed_price").html();
+            $('#time_cycle').hide(function () { 
+//              $('.choose_item.select_cycle .info').attr('placeholder', val);
+                $('.choose_item.select_cycle .info').val(val);
+            })
+            $(".finally_price").html($(".computed_price").html());
+            sessionStorage.renew_finally_price = $(".finally_price").html();
+            var buyCheck = true;
+			if(sessionStorage.buyChecks!==undefined&&sessionStorage.buyChecks!==""){
+				let bcheck = sessionStorage.buyChecks;
+				if(bcheck === "true"){
+					buyCheck = true;
+				}else{
+					buyCheck = false;
+				}
+			}
+			if(buyCheck){
+				$(".save_renew").removeAttr("disabled");
+			}
+        });
+        //
+        $("#buy").on("click", function(){
+        	if(!$("#buy").prop("checked")){
+        		$("#buy").attr("checked", false);
+        		sessionStorage.buyChecks = false;
+        		if($(".save_renew").attr("disabled")!=="undefined"){
+        			$(".save_renew").attr("disabled",true);
+        		}
+        	}else{
+        		$("#buy").attr("checked", true);
+        		sessionStorage.buyChecks = true;
+        		if(sessionStorage.renew_cycleunit!==undefined&&sessionStorage.renew_cycleunit!==""){
+        			$(".save_renew").removeAttr("disabled");
+        		}
+        	}
+        });
+        //
+        if(sessionStorage.buyChecks!==undefined&&sessionStorage.buyChecks!==""){
+        	let buyCheck = sessionStorage.buyChecks;
+        	let bCheck = "";
+        	if(buyCheck === "true"){
+        		bCheck = true;
+        	}else{
+        		bCheck = false;
+        	}
+        	$("#buy").prop("checked", bCheck);
+        }
+        //
+        //支付方式
+	    if(sessionStorage.payTypes!==""&&sessionStorage.payTypes!==undefined){
+	    	var payType = sessionStorage.payTypes;
+	    	var payHtml = "";
+	    	if(payType === "wx"){
+	    		payHtml = "微信支付";
+	    	}else if(payType === "alipy"){
+	    		payHtml = "支付宝支付";
+	    	}
+	    	$('input:radio[name="way"]').val(payHtml);
+	    	$('input:radio[name="way"]').prop("checked", true);
+	    	$("#payType").text(payHtml);
+	    }
+        
+        //
+        var area = "";
+	    var buyerclass = "";
+	    var cycleunit = "";
+	    var cyclecount = "";
+	    var startTime = "";
+	    var starts = "";
+	    var endTime = "";
+	    var ends = "";
+	    var monthPrice = "";
+	    var yearPrice = "";
+	    //
+	    $DoPost("/subscribepay/renewUpgrade/getBuyMsg", {}, function (data) {
+            if (data) {
+                area = data.area;
+			    buyerclass = data.buyerclass;
+			    cyclecount = data.cyclecount;
+			    startTime = data.start;
+			    starts = data.starttime;
+			    endTime = data.end;
+			    ends = data.endtime;
+			    monthPrice = getsubVipOrderPrice(area, buyerclass, [1, 2]);
+			    yearPrice = getsubVipOrderPrice(area, buyerclass, [1, 1]);
+			    //
+			    var areaArr = [];
+			    var areaHtml = "";
+			    var provinceArr = [];
+			    var cityArr = [];
+			    var buyerclassArr = [];
+			    var buyerclassHtml = "";
+			    var dateName = "";
+			    var dateHtml = "";
+			    if (area !== "" && area !== undefined){
+			    	for(var province in area){
+			    		var citys = area[province]
+		//	    		console.log(citys);
+			    		if(citys.length===0){
+			    			areaArr.push(province);
+			    			provinceArr.push(province);
+			    		}else{
+			    			for(var i in citys){
+			    				var city = citys[i];
+			    				areaArr.push(city);
+			    				cityArr.push(city);
+			    			}
+			    		}
+			    	}
+			    	areaHtml = areaArr.toString().replace(/,/g, "、");
+			    	
+					if(checkObj(area)){
+						areaHtml = "全国";
+					}
+			    	$(".item_area .label_for").text(areaHtml);
+			    }
+			    if(buyerclass !== "" && buyerclass !== undefined){
+			    	for(var i in buyerclass){
+			    		var industry = buyerclass[i];
+			    		buyerclassArr.push(industry);
+			    		buyerclassHtml = buyerclassArr.toString().replace(/,/g, "、");
+			    	}
+			    	if(checkObj(buyerclass)){
+			    		buyerclassHtml = "全行业";
+			    	}
+			    	$(".item_industry .label_for").text(buyerclassHtml);
+			    }
+//			    if(cycleunit !== "" && cycleunit !== undefined){
+//			    	if(cycleunit === 1){
+//			    		dateName = cyclecount + " 年";
+//			    	}else if(cycleunit === 2){
+//			    		dateName = cyclecount + " 个月";
+//			    	}
+//			    	$(".item_cycle .label_for").text(dateName);
+//			    }
+			    if(startTime !== "" && endTime !== "" && startTime !== undefined && endTime !== undefined){
+			    	console.log(startTime)
+			    	var start = startTime.replace(/-/g, ".");
+			    	var end = endTime.replace(/-/g, ".");
+			    	dateHtml = start + " - " + end;
+			    	$(".item_validity .label_for").text(dateHtml);
+			    }
+			    if(starts !== "" && ends !== ""){
+			    	let end = new Date(ends*1000).toLocaleDateString();
+			    	let endtime = end.split("/");
+			    	let endYear = Number(endtime[0]);
+			    	let endMonth = Number(endtime[1]);
+			    	let start = new Date(starts*1000).toLocaleDateString();
+			    	let starttime = start.split("/");
+			    	let startYear = Number(starttime[0]);
+			    	let startMonth = Number(starttime[1]);
+			    	let year = "";
+			    	let month = "";
+			    	if(endYear > startYear){
+			    		if(endMonth > startMonth){
+		    				year = endYear - startYear;
+		    				month = endMonth - startMonth;
+			    		}else{
+		    				year = endYear - startYear-1;
+		    				month = 12+Number(endMonth)-startMonth;
+			    			if(year === 0){
+			    				year = "";
+			    			}
+			    			if (month==12){
+		    					year=Number(year)+1;
+		    					month="";
+		    				}
+			    		}
+			    	}else if(endYear === startYear){
+		    			month = endMonth - startMonth;
+			    	}
+			    	//
+			    	if(year !== "" && month !==""){
+			    		$(".item_cycle .label_for").text(year+"年"+month+"个月");
+			    	}else if(year !== ""&& month ===""){
+			    		$(".item_cycle .label_for").text(year+"年");
+			    	}else if(year === ""&& month !==""){
+			    		$(".item_cycle .label_for").text(month+"个月");
+			    	}
+			    }
+			    var val = monthPrice * 1
+			    $(".computed_price").html("¥"+val.toFixed(1))
+			 	//
+			 	var threeDay = ends - 86400 * 3;
+			 	var nowDay = new Date().getTime()/1000;
+			 	if(nowDay >= threeDay){
+			 		$(".renew_upgrade").hide();
+			 		$(".renew_update").show();
+			 	}else{
+			 		$(".renew_update").hide();
+			 		$(".renew_upgrade").show();
+			 	}
+			 	//
+			 	var provinceLen = provinceArr.length;
+			 	var cityLen = cityArr.length;
+		    }
+        }, false);
+        //
+        var nowDate = new Date(startTime).toLocaleDateString();
+		nowDate = nowDate.split("/");
+		var nowMonth = Number(nowDate[1]);
+		var nowYear = Number(nowDate[0]);
+		var nowDay = Number(nowDate[2]);
+		//
+		var endDate = new Date(endTime).toLocaleDateString();
+		endDate = endDate.split("/");
+		var endMonth = Number(endDate[1]);
+		var endYear = Number(endDate[0]);
+		var endDay = Number(endDate[2]);
+		var nowUpgrade = 0;
+		if(endYear === nowYear){
+			if(endMonth === nowMonth){
+				nowUpgrade = 1;
+			}else{
+				if(endDay > nowDay){
+					nowUpgrade = endMonth - nowMonth +1;
+				}else{
+					nowUpgrade = endMonth - nowMonth;
+				}
+			}
+		}else{
+			if(endMonth === nowMonth){
+				if(endDay <= nowDay){
+					nowUpgrade = ((endYear - nowYear) * 12);
+				}else{
+					nowUpgrade = ((endYear - nowYear) * 12 +1);
+				}
+			}else if(endMonth > nowMonth){
+				if(endDay <= nowDay){
+					nowUpgrade = (endYear - nowYear) * 12 + (endMonth - nowMonth);
+				}else{
+					nowUpgrade = (endYear - nowYear) * 12 + (endMonth - nowMonth)+1;
+				}
+			}else{
+				if(endDay <= nowDay){
+					nowUpgrade = (endYear - nowYear-1) * 12 + (12-nowMonth+endMonth);
+				}else{
+					nowUpgrade = (endYear - nowYear-1) * 12 + (12-nowMonth+endMonth)+1;
+				}
+			}
+		}
+	    //
+	    if(sessionStorage.renew_cyclecount!==""&&sessionStorage.renew_cycleunit!==""){
+	 		var cycleunit = sessionStorage.renew_cycleunit;
+	 		var cyclecount = sessionStorage.renew_cyclecount;
+	 		var dateName = "";
+	 		if(cycleunit === "1"){
+	 			$("#yearly").prop("checked", true);
+	 			$('#number_box_month').removeClass('active');
+	 			$("#number_box_year span").each(function(){
+	 				if($(this).attr("data-id") ===  cyclecount){
+	 					$(this).addClass("active");
+	 				}
+	 			})
+	 			dateName = cyclecount + "年";
+//	 			$('.choose_item.select_cycle .info').attr('placeholder', dateName);
+	 			$('.choose_item.select_cycle .info').val(dateName);
+	 		}else if(cycleunit === "2"){
+	 			$("#monthly").prop("checked", true);
+	 			$('#number_box_month').addClass('active');
+                $('#number_box_year span').removeClass('active');
+                $(".month_number").text(cyclecount);
+                dateName = cyclecount + "个月";
+//              $('.choose_item.select_cycle .info').attr('placeholder', dateName);
+                $('.choose_item.select_cycle .info').val(dateName);
+	 		}
+	 	}
+	 	if(sessionStorage.renew_price!==""&&sessionStorage.renew_price!==undefined){
+	 		$(".computed_price").html(sessionStorage.renew_price);
+	 	}
+	    if(sessionStorage.renew_finally_price!==""&&sessionStorage.renew_finally_price!==undefined){
+	    	$(".finally_price").html(sessionStorage.renew_finally_price);
+	    	var buyCheck = true;
+			if(sessionStorage.buyChecks!==undefined&&sessionStorage.buyChecks!==""){
+				let bcheck = sessionStorage.buyChecks;
+				if(bcheck === "true"){
+					buyCheck = true;
+				}else{
+					buyCheck = false;
+				}
+			}
+			if(buyCheck){
+				$(".save_renew").removeAttr("disabled");
+			}
+	    }
+	    //
+	    $(".save_renew").on("click", function(){
+	    	console.log(nowUpgrade)
+//	    	let times = $('.choose_item.select_cycle .info').attr('placeholder');
+	    	let times = $('.choose_item.select_cycle .info').val();
+	        if (times.match("月") !== null){
+	        	times = Number(times.replace("个月",""));
+	        }else if (times.match("年") !== null){
+	        	times = 12 * Number(times.replace("年",""));
+	        }
+	    	// 当续费时间 + 当前已经买的时间超过36个月,给出提醒
+	    	if(times > 36-nowUpgrade){
+	    		var overtimeWarning = `最长订阅周期不可超过3年<br />当前订阅周期:${nowUpgrade}个月`
+		        weui.toast(overtimeWarning, {
+		            duration: 3000,
+		            className: 'custom-toast',
+		            callback: function() {
+		   
+		            }
+		        })
+		        return
+	    	}
+	        $(".save_renew").attr("disabled","disabled");
+	    	var param = {
+	    		"area": JSON.stringify(area),
+	    		"industry": buyerclass.toString(),
+	    		"time": $('.choose_item.select_cycle .info').val(),
+	    		"payWay":"wx_js",
+	    		"pay_source": "Renew",
+	    		"endtime": ends,
+	    	}
+	    	console.log(param)
+	    	$DoPost("/subscribepay/renewUpgrade/renewUpgradeCreateOrder",param,function(r){
+                if(r.success){
+                    clearSessionStorage();
+                    onBridgeReady(JSON.parse(r.data.res),r.data.code);
+                }
+                $(".save_renew").removeAttr("disabled");
+            })
+	    });
+	    
+	    //
+	    function clearSessionStorage(){
+	    	sessionStorage.removeItem("renew_cyclecount");
+	    	sessionStorage.removeItem("renew_cycleunit");
+	    	sessionStorage.removeItem("renew_price");
+	    	sessionStorage.removeItem("renew_finally_price");
+	    	sessionStorage.removeItem("buyChecks");
+	    }
+	    
+	    //
+	    function checkObj(obj) {
+		    //检验数组
+		    if (Array.prototype.isPrototypeOf(obj) && obj.length === 0) {
+		        return true;
+		    }
+		    //检验对象
+		    if (Object.prototype.isPrototypeOf(obj) && Object.keys(obj).length === 0) {
+		        return true;
+		    }
+		    return false;
+		}
+	    
+    </script>
+</body>
+
+</html>

+ 18 - 5
src/jfw/modules/app/src/web/templates/vipsubscribe/trial_info.html

@@ -49,12 +49,14 @@
                                        onchange="check_tel($(this),$('.code_btn'),true)">
                             </div>
                             <div class="form_item form_item_line">
-                                <input type="number" placeholder="图形验证码" value="" class="code imgcode input" maxlength="4"
+                                <input type="number" placeholder="图形验证码" value="" class="code imgcode input"
+                                       maxlength="4"
                                        onchange="check_imgcode($(this),$('.code_btn'),true)">
                                 <img src="/subscribepay/trial/captcha" class="checkCode">
                             </div>
                             <div class="form_item">
-                                <input type="number" placeholder="手机验证码" value="" class="code phonecode input" maxlength="6"
+                                <input type="number" placeholder="手机验证码" value="" class="code phonecode input"
+                                       maxlength="6"
                                        onchange="check_phonecode($(this),true)">
                                 <button class="code_btn" type="button">获取验证码</button>
                             </div>
@@ -181,21 +183,32 @@
     });
 
     function scrollView(obj) {
-        var view_height = $(document.body).height();
+        var view_height = $(document.body).height()
 
         function change() {
             $(document.body).height(view_height)
         }
+
         change();
         window.addEventListener('resize', change);
-        $('.' + obj).on('blur', function () {
+        $('.' + obj).on('blur', function (e) {
             setTimeout(() => {
-                if (!document.activeElement.className.includes(obj)) {
+                let dom = document.activeElement;
+                // console.dir(dom);
+                if (dom.className.includes(obj)) {
+                    let u = navigator.userAgent, app = navigator.appVersion;
+                    let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1;
+                    if (isAndroid) {
+                        dom.scrollIntoView({"block": "center"})
+                    }
+
+                } else {
                     window.scroll(0, 0)
                 }
             }, 50)
         })
     }
+    
     {{else}}
     $('#formInfo').submit(function (e) {
         window.location.replace("/jyapp/vipsubscribe/vipsubscribe_trial");

+ 1307 - 0
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_upgrade.html

@@ -0,0 +1,1307 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport"
+        content="width=device-width, initial-scale=1.0,minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>VIP订阅升级</title>
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <script src="/jyapp/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+    <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" href="/jyapp/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="/jyapp/vipsubscribe/css/vip_update.css?v={{Msg "seo" "version"}}4">
+	{{include "/common/weixin.html"}}
+</head>
+<style type="text/css">
+	body,html {
+		height: 100%;
+	}
+	::-webkit-input-placeholder { /* Chrome/Opera/Safari */
+	  	color: #686868;
+	}
+	.vip_update .fixed-bottom-box, .vip_renew .fixed-bottom-box {
+	    width: 100%;
+	    position: fixed;
+	    bottom: 0;
+	    left: 0;
+	}
+</style>
+<body class="no-touch">
+    <div class="vip_update">
+        <div class="choose_condition">
+            <p class="update_tip">提示:订阅升级可在已购买的服务基础上,增加区域、行业、以及延长订阅周期!</p>
+            <ul class="chooseList">
+                <li class="choose_item">
+                    <a href="/jyapp/front/vipsubscribe/toChooseAreaUpgrade">
+                        <span class="label">区域</span>
+                        <input type="text" id="area" value="" onfocus="this.blur();" placeholder="选择全国、省份、地市" class="info">
+                        <i class="iconfont icon-arrow"></i>
+                    </a>
+                    <p class="add_tips area-list" style="display: none;">已新增 1 个省级区域、4 个地市</p>
+                </li>
+                <li class="choose_item">
+                    <a href="/jyapp/front/vipsubscribe/toChooseIndustryUpgrade">
+                        <span class="label">行业</span>
+                        <input type="text" id="buyerclass" onfocus="this.blur();" value="" placeholder="选择采购单位行业" class="info">
+                        <i class="iconfont icon-arrow"></i>
+                    </a>
+                    <p class="add_tips industry-list" style="display: none;">已新增 2 个行业</p>
+                </li>
+                <!-- <li class="choose_item select_cycle">
+                    <a href="javascript:;">
+                        <span class="label">订阅周期</span>
+                        <input type="text" disabled value="" placeholder="选择年、月" class="info choose_time">
+                        <i class="iconfont icon-arrow choose_time"></i>
+                    </a>
+                </li> -->
+                <li class="choose_item choose_effect_date">
+                    <a href="javascript:;">
+                        <span class="label">生效日期</span>
+                        <span class="info" id="effect_date_name">立即生效,需支付当月费用差价</span>
+                        <i class="iconfont icon-arrow choose_time"></i>
+                    </a>
+                </li>
+            </ul>
+            <ul class="chooseList">
+                <li class="choose_item lengthen">
+                    <a href="javascript:;">
+                        <span class="label">延长订阅周期</span>
+                        <span class="info">不延长</span>
+                        <i class="iconfont icon-arrow choose_time"></i>
+                    </a>
+                </li>
+            </ul>
+            <div class="pay_mode">
+                <div class="select_payment choose_item">
+                    <a href="javascript:;">
+                        <span class="label">支付方式</span>
+                        <span class="info choose_way weixin_pay">微信支付</span>
+                        <i class="iconfont icon-arrow choose_way"></i>
+                    </a>
+                </div>
+                <div class="vip_rules">
+                    <div class="vip_prise_table">
+                        <table class="monthly">
+                            <caption class="table_title">- VIP订阅价格 -</caption>
+                            <tr>
+                                <td colspan="2">按月购买</td>
+                            </tr>
+                            <tr>
+                                <td><span>5.8</span>元 月/市/行业</td>
+                                <td><span>18</span>元 月/市/全行业</td>
+                            </tr>
+                            <tr>
+                                <td><span>11.8</span>元 月/省/行业</td>
+                                <td><span>38</span>元 月/省/全行业</td>
+                            </tr>
+                            <tr>
+                                <td><span>118</span>元 月/全国/行业</td>
+                                <td><span>388</span>元 月/全国/全行业</td>
+                            </tr>
+                        </table>
+                        <table class="yearly">
+                            <tr>
+                                <td colspan="2">按年购买</td>
+                            </tr>
+                            <tr>
+                                <td><span>58</span>元 年/市/行业</td>
+                                <td><span>180</span>元 年/市/全行业</td>
+                            </tr>
+                            <tr>
+                                <td><span>118</span>元 年/省/行业</td>
+                                <td><span>380</span>元 年/省/全行业</td>
+                            </tr>
+                            <tr>
+                                <td><span>1180</span>元 年/全国/行业</td>
+                                <td><span>3880</span>元 年/全国/全行业</td>
+                            </tr>
+                        </table>
+                        <dl class="tips">
+                            <dt>购买须知:</dt>
+                            <dd>套餐周期内,不支持套餐降级,续费可降级;</dd>
+                            <dd>用户最多购买/续费3年套餐;</dd>
+                            <dd>支持套餐升级,补差价(按月进行补差价,不足一个月按一个月计算)。</dd>
+                        </dl>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="fixed-bottom-box">
+            <div class="weui-cells weui-cells_checkbox radio-form">
+                <label class="weui-cell weui-check__label" for="buy">
+                    <div class="weui-cell__hd">
+                        <input type="checkbox" class="weui-check" checked="checked" name="buyService" id="buy"/>
+                        <i class="weui-icon-checked"></i>
+                    </div>
+                    <div class="weui-cell__bd read">
+                        <p>
+                            我已阅读,理解并接受
+                            <a href="/jyapp/front/staticPage/wx-serviceterms.html">
+                                《剑鱼标讯线上购买与服务条款》
+                            </a>
+                        </p>
+                    </div>
+                </label>
+            </div>
+            <div class="price">
+                <label>需补差价:</label>
+                <p>
+                    <!--<span class="old_price">&yen;610.80</span>-->
+                    <strong class="finally_price">&yen;0.00</strong>
+                </p> 
+            </div>
+            <div class="form-btn">
+                <button class="btn enter save_upgrade" disabled>立即升级</button>
+            </div>
+        </div>
+
+        <!-- 选择周期 -->
+        <div class="js_dialog time_cycle" id="time_cycle" style="display: none;">
+            <div class="weui-mask"></div>
+            <div class="box">
+                <div class="box_hd">
+                    <h3>延长订阅周期</h3>
+                    <span class="cancel">取消</span>
+                </div>
+                <div class="box_bd">
+                    <div class="tips profit_tips" style="display: none">已选择10个月,建议“按年订阅”更换算哦~</div>
+                    <div class="computed_price" style="display: none;">¥58.0</div>
+                    <div class="bd_select">
+                        <div class="weui-cells weui-cells_checkbox">
+                            <label class="weui-cell weui-check__label prolong_label" style="padding-left: 0.26rem" for="prolong">
+                                <div class="weui-cell__hd">
+                                    <input type="radio" class="weui-check prolong" name="time" value="prolong"
+                                        id="prolong" checked />
+                                    <i class="weui-icon-checked"></i>
+                                </div>
+                                <div class="weui-cell__bd">
+                                    <p>不延长</p>
+                                </div>
+                            </label>
+                        </div>
+                        <div class="weui-cells weui-cells_checkbox choose-form">
+                            <label class="weui-cell weui-check__label monthly_label" for="monthly">
+                                <div class="weui-cell__hd">
+                                    <input type="radio" class="weui-check monthly" name="time" value="month"
+                                        id="monthly" />
+                                    <i class="weui-icon-checked"></i>
+                                </div>
+                                <div class="weui-cell__bd">
+                                    <p>按月订阅</p>
+                                </div>
+                            </label>
+                            <div class="number_box" id="number_box_month" data-numbox-step="1" data-numbox-min="1"
+                                data-numbox-max="12">
+                                <button class="weui-btn weui-btn_plain-default" type="button">
+                                    <div class="jy_icon decrease"></div>
+                                </button>
+                                <span class="month_number">1</span>
+                                <button class="weui-btn weui-btn_plain-default add" type="button">
+                                    <div class="jy_icon increase"></div>
+                                </button>
+                            </div>
+                        </div>
+                        <div class="weui-cells weui-cells_checkbox choose-form">
+                            <label class="weui-cell weui-check__label yearly_label" for="yearly">
+                                <div class="weui-cell__hd">
+                                    <input type="radio" class="weui-check yearly" name="time" value="year"
+                                        id="yearly" />
+                                    <i class="weui-icon-checked"></i>
+                                </div>
+                                <div class="weui-cell__bd">
+                                    <p>按年订阅</p>
+                                </div>
+                            </label>
+                            <div class="number_box" id="number_box_year">
+                                <span class="year_number" data-id="1">1年</span>
+                                <span class="year_number" data-id="2">2年</span>
+                                <span class="year_number" data-id="3">3年</span>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="form-btn">
+                    <!-- <button class="btn enter" disabled id="enter_period">确认</button> -->
+                    <button class="btn enter" id="enter_period">确认</button>
+                </div>
+            </div>
+        </div>
+        <!-- 选择生效日期 -->
+        <div class="js_dialog effective_date" id="effective_date" style="display: none;">
+            <div class="weui-mask"></div>
+            <div class="box">
+                <div class="box_hd">
+                    <span style="font-size:0.32rem;">生效日期</span>
+                    <h3></h3>
+                    <span class="cancel">取消</span>
+                </div>
+                <div class="box_bd">
+                    <div class="weui-cells weui-cells_checkbox choose-form">
+                        <label class="weui-cell weui-check__label now_label" for="nowTime">
+                            <div class="weui-cell__bd read">
+                                <p class="effective_name now">立即生效,需支付当月费用差价</p>
+                                <p class="effective_time nownow">2019.08.23 - 2020.06.06</p>
+                            </div>
+                            <div class="weui-cell__hd">
+                                <input type="radio" class="weui-check" name="date" value="立即生效,需支付当月费用差价" id="nowTime" checked />
+                                <i class="weui-icon-checked"></i>
+                            </div>
+                        </label>
+                        <label class="weui-cell weui-check__label next_label effect_next" for="nextMonth">
+                            <div class="weui-cell__bd read">
+                                <p class="effective_name notnow"></p>
+                                <p class="effective_time notnownow">2019.09.01 - 2020.06.06</p>
+                            </div>
+                            <div class="weui-cell__hd">
+                                <input type="radio" class="weui-check" name="date" value="" id="nextMonth" />
+                                <i class="weui-icon-checked"></i>
+                            </div>
+                        </label>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <!-- 选择支付方式 -->
+        <div class="js_dialog pay_way" id="pay_way" style="display: none;">
+            <div class="weui-mask"></div>
+            <div class="box">
+                <div class="box_hd">
+                    <span></span>
+                    <h3>支付方式</h3>
+                    <span class="cancel">取消</span>
+                </div>
+                <div class="box_bd">
+                    <div class="weui-cells weui-cells_checkbox choose-form">
+                        <label class="weui-cell weui-check__label wx_label" for="wx">
+                            <div class="weui-cell__bd read">
+                                <p><img src="/jyapp/vipsubscribe/image/weixin.png">微信支付</p>
+                            </div>
+                            <div class="weui-cell__hd">
+                                <input type="radio" class="weui-check" name="way" value="微信支付" id="wx" checked />
+                                <i class="weui-icon-checked"></i>
+                            </div>
+                        </label>
+                        <label class="weui-cell weui-check__label zfb_label" for="zfb">
+                            <div class="weui-cell__bd read">
+                                <p><img src="/jyapp/vipsubscribe/image/zhifubao.png">支付宝支付</p>
+                            </div>
+                            <div class="weui-cell__hd">
+                                <input type="radio" class="weui-check" name="way" value="支付宝支付" id="zfb" />
+                                <i class="weui-icon-checked"></i>
+                            </div>
+                        </label>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <script src="/jyapp/vipsubscribe/js/jquery-2.1.4.js"></script>
+    <!--<script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>-->
+    <script src="/jyapp/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/jyapp/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}3"></script>
+    <script type="text/javascript">
+    	//
+    	try{
+			var signature = {{.T.signature}};
+			var isConfigSuccess = true;
+			var id = {{.T._id}}
+			if(signature && signature.length == 4){
+			  	wx.config({
+			  	    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+			  	    appId: signature[0], // 必填,公众号的唯一标识
+			  	    timestamp:signature[1], // 必填,生成签名的时间戳
+			  	    nonceStr: signature[2], // 必填,生成签名的随机串
+			  	    signature: signature[3],// 必填,签名,见附录1
+			  	    jsApiList: ['chooseWXPay','hideAllNonBaseMenuItem'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
+			  	});
+			  	wx.ready(function(){
+			  		if(!isConfigSuccess){
+			  			return;
+			  		}
+			  		wx.hideAllNonBaseMenuItem();
+			    });
+			  	wx.error(function(res){
+			  	    //config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
+			  		//alert(res);
+			  		isConfigSuccess = false;
+			  	});
+			}
+			//调用微信支付接口
+  			function onBridgeReady(res,ordercode){
+  			   	WeixinJSBridge.invoke('getBrandWCPayRequest',{
+		    		"appId": res["appId"],
+		          	"timeStamp": res["timestamp"],
+		          	"nonceStr": res["nonceStr"],
+		          	"package": res["prepayId"],
+		          	"signType": res["signType"],
+		         	"paySign": res["sign"]
+  				},
+  				function(r){
+				    if(r.err_msg == "get_brand_wcpay_request:ok"){
+				    	//
+                    	clearSessionStorage();
+						setTimeout(function(){
+							window.location.replace("/jyapp/front/vipsubscribe/toPaySuccessPage?orderCode="+ordercode);
+						},500)
+					}
+//					}else if(r.err_msg == "get_brand_wcpay_request:cancel"){               
+////	                	alert("开发环境【支付跳转完成】")
+//		                try{
+////		  					window.location.replace("/front/vipsubscribe/toPaySuccessPage?orderCode="+ordercode);
+////		                	window.location.reload();
+//		                }catch(e){
+//		                  alert(e)
+//		                }
+//	  				}else{
+//	                	weui.toast("系统异常,请稍微再试",{
+//	                  		duration: 2000,
+//	                  		className: 'custom-toast',
+//	                	});
+//	  				}
+  				});
+  			}   
+		}catch(e){
+		  console.log(e)
+		}
+    </script>
+    <script>
+        $(function () {    
+			var isPageHide = false;   
+			window.addEventListener('pageshow', function () {      
+			    if (isPageHide) {
+	                location.reload();
+			    }    
+			});    
+			window.addEventListener('pagehide', function () {
+			    isPageHide = true;
+			});  
+		});
+		//加载价格
+        $DoPost("/subscribepay/vipsubscribe/getPrice",{},function(r){
+          	if(r){
+            	$('.monthly span:eq(0)').text(r.month.oneCity_oneBuyerClass/100);
+		        $('.monthly span:eq(1)').text(r.month.oneCity_allBuyerClass/100);
+		        $('.monthly span:eq(2)').text(r.month.oneProvince_oneBuyerClass/100);
+		        $('.monthly span:eq(3)').text(r.month.oneProvince_allBuyerClass/100);
+		        $('.monthly span:eq(4)').text(r.month.allProvince_oneBuyerClass/100);
+		        $('.monthly span:eq(5)').text(r.month.allProvince_allBuyerClass/100);
+		          
+		        $('.yearly span:eq(0)').text(r.year.oneCity_oneBuyerClass/100);
+		        $('.yearly span:eq(1)').text(r.year.oneCity_allBuyerClass/100);
+		        $('.yearly span:eq(2)').text(r.year.oneProvince_oneBuyerClass/100);
+		        $('.yearly span:eq(3)').text(r.year.oneProvince_allBuyerClass/100);
+		        $('.yearly span:eq(4)').text(r.year.allProvince_oneBuyerClass/100);
+		        $('.yearly span:eq(5)').text(r.year.allProvince_allBuyerClass/100);
+          	}
+        },false)
+        //
+        if(sessionStorage.vipSubSelectAreaUpgrade!==undefined&&sessionStorage.vipSubSelectAreaUpgrade!==""){
+        	if(checkObj(JSON.parse(sessionStorage.vipSubSelectAreaUpgrade))){
+	        	sessionStorage.removeItem("vipSubSelectAreaUpgrade");
+	        }
+        }
+        if(sessionStorage.vipSubSelectIndustryUpgrade!==undefined&&sessionStorage.vipSubSelectIndustryUpgrade!==""){
+        	if(checkObj(JSON.parse(sessionStorage.vipSubSelectIndustryUpgrade))){
+	        	sessionStorage.removeItem("vipSubSelectIndustryUpgrade");
+	        }
+        }
+        //
+		var monthPrice = "";
+        var yearPrice = "";
+
+        // 隐藏dialog选择框事件
+        function hideDialog() {
+            $('#pay_way').hide(200);
+            $('#time_cycle').hide(200);
+            $('#effective_date').hide(200);
+        }
+        $('.weui-mask').click(hideDialog);
+        $('.cancel').click(hideDialog);
+       
+        // 选择支付方式
+        $('.select_payment .choose_way').click(function () {
+            $('#pay_way').show(200);
+        })
+//      // 对支付方式选择的input绑定点击事件
+        $('#pay_way input:radio[name="way"]').click(function () {
+            var checkValue = $('input:radio[name="way"]:checked').val();
+            var payHtml = "";
+	    	if(checkValue === "微信支付"){
+	    		payHtml = "wx";
+	    	}else if(checkValue === "支付宝支付"){
+	    		payHtml = "alipy";
+	    	}
+	    	sessionStorage.payType = payHtml;
+//          console.log(checkValue);
+            $('.pay_way').hide(200);
+            $('.pay_mode .select_payment .choose_way.info').html(checkValue);
+        });
+         // 选择生效日期
+        $('.choose_effect_date > a').click(function () {
+            $('#effective_date').show(200);
+            var nowDates = new Date().toLocaleDateString();
+			nowDates = nowDates.split("/");
+			var nowMonths = Number(nowDates[1]);
+			var nowYears = Number(nowDates[0]);
+			var as = nowMonths +1
+			if(as > 12){
+				as = nowMonths-12;
+				nowYears = nowYears +1;
+			}
+			var bs = nowYears+"/"+as+"/1";
+			var effects = new Date(bs).getTime() /1000;
+			var a = nowYears+"."+as+".01";
+			$(".notnownow").text(a + " - " + endTime.replace(/-/g, "."))
+			if(ends < effects){
+				$(".effect_next").hide();
+//				$(".box").css("height", "2.7rem");
+			}
+        })
+        //
+		var effectiveName = new Date().getMonth()+2;
+		if(effectiveName > 12){
+	    	effectiveName = effectiveName - 12
+	   	}
+		var effectiveNames = effectiveName+"月1日生效"
+		$(".effective_name.notnow").text(effectiveNames);
+		$('#nextMonth').val(effectiveNames);
+		
+        // 对生效日期方式选择的input绑定点击事件
+        $('#effective_date input:radio[name="date"]').click(function () {
+            var checkValue = $('input:radio[name="date"]:checked').val();
+//          console.log(checkValue);
+            $('#effective_date').hide(200);
+            var effective = "";
+            var effectiveName = new Date().getMonth()+2;
+            if(effectiveName > 12){
+	    		effectiveName = effectiveName - 12
+	    	}
+            var effectiveNames = effectiveName+"月1日生效"
+            if(checkValue === "立即生效,需支付当月费用差价"){
+            	effective = "now";
+            }else if(checkValue === effectiveNames){
+            	effective = "notnow";
+            }
+            sessionStorage.effectiveDate = effective;
+            $('#effect_date_name').html(checkValue);
+            FinallyPrice();
+        });
+        
+        
+        // 选择周期
+        $('.lengthen > a').click(function () {
+        	if((nowRenew)>=36){
+            	var overtimeWarning = `最长订阅周期不可超过3年<br />当前订阅周期:${nowRenew}个月`
+		        weui.toast(overtimeWarning, {
+		            duration: 3000,
+		            className: 'custom-toast',
+		            callback: function() {
+		            }
+		        })
+		        return
+            }
+            $('#time_cycle').show(200);
+        })
+        // 对订阅时间选择的 input绑定点击事件
+        $('#time_cycle input:radio[name="time"]').on('click', function (e) {
+            // 解除确认按钮的锁定
+            $('#time_cycle .form-btn button').removeAttr('disabled')
+
+            if ($(e.target).hasClass('monthly')) {
+                // 按月订阅
+                $('.computed_price').show()
+                // 显示隐藏tips提示
+                // $('#time_cycle .tips.monthly_tips').show();
+                // $('#time_cycle .tips.yearly_tips').hide();
+
+                $('#number_box_month').addClass('active');
+                $('#number_box_year span').removeClass('active');
+            } else if($(e.target).hasClass('yearly')){
+                $('.computed_price').show()
+                // 按年订阅
+                // $('#time_cycle .tips.yearly_tips').show();
+                // $('#time_cycle .tips.monthly_tips').hide();
+
+                $('#number_box_month').removeClass('active');
+                $('#number_box_year span:eq(0)').addClass('active');
+            }else{
+                $('.computed_price').hide()
+                $('#number_box_month').removeClass('active');
+                $('#number_box_year span').removeClass('active');
+            }
+        })
+        // 控制月份number_box的事件
+        /* --------控制月份number_box的事件  点击加减号触发的事件------- */
+        $('#number_box_month').on('click', 'button', function (e) {
+            // 点击加减号让input radio选中
+            $("#monthly").prop('checked', true);
+            $('#number_box_month').addClass('active')
+            $('.number_box span').removeClass('active')
+            var $number = $('#number_box_month .month_number');
+            var $monthlyInput = $('#monthly');
+            // 未整理的data数组,里面的值都是字符串
+            var preData = e.delegateTarget.dataset
+            var currentNum = parseInt($number.text());
+            var data = {};
+            // 把字符串转换成数字
+            for (var i in preData) {
+                data[i] = preData[i] - 0
+            }
+
+            if (!$monthlyInput.prop('checked')) {
+                return
+            }
+            // 判断是点击的是+ 还是-
+            if ($(e.target).hasClass('add')) {
+                // 点的+
+                // currentNum = currentNum >= 12 ? 12 : currentNum + 1;
+                currentNum = currentNum >= data.numboxMax ? data.numboxMax : currentNum + data
+                    .numboxStep;
+            } else {
+                // 点的-
+                // currentNum = currentNum <= 1 ? 1 : currentNum - 1;
+                currentNum = currentNum <= data.numboxMin ? data.numboxMin : currentNum - data
+                    .numboxStep;
+            }
+            // 当续费时间 + 当前已经买的时间超过36个月,给出提醒
+            if((currentNum+nowRenew)>36){
+            	var overtimeWarning = `最长订阅周期不可超过3年<br />当前订阅周期:${nowRenew}个月`
+		        weui.toast(overtimeWarning, {
+		            duration: 3000,
+		            className: 'custom-toast',
+		            callback: function() {
+		            }
+		        })
+		        return
+            }
+            $(".computed_price").show();
+            if (currentNum >= 10) {
+            	$('.profit_tips').text("已选择"+currentNum+"个月,建议“按年订阅”更划算哦~");
+                $('.profit_tips').show();
+                if(currentNum==12){ //12个月自动跳转1年
+                    $("#number_box_year .year_number:eq(0)").trigger("click");
+                    return
+                }
+            } else {
+                $('.profit_tips').hide()
+            }
+            $number.text(currentNum)
+            if(currentNum >= 10 && currentNum<= 11){
+            	currentNum = 10;
+            }
+            var price = (completeMonth * currentNum).toFixed(1);
+            $('.computed_price').html('¥' + price)
+            var firstButton = $('#number_box_month button:first')
+            var lastButton = $('#number_box_month button:last')
+//          if (currentNum >= 10) {
+//              $('.profit_tips').show()
+//          } else {
+//              $('.profit_tips').hide()
+//          }
+            // 如果为操作后的结果为1,则锁定减号按钮
+            if (currentNum === data.numboxMin) {
+                firstButton.attr('disabled', true)
+            } else {
+                firstButton.removeAttr('disabled')
+            }
+            // 如果为操作后的结果为12,则锁定加号按钮
+            if (currentNum === data.numboxMax) {
+                lastButton.attr('disabled', true)
+            } else {
+                lastButton.removeAttr('disabled')
+            }
+        })
+
+        /* -------- 控制年份number_box的事件  点击1年 2年 3年触发的事件------- */
+        $('#number_box_year').on('click', 'span', function (e) {
+            console.log(e.target.dataset.id)
+            let id = e.target.dataset.id;
+            // 当续费时间 + 当前已经买的时间超过36个月,给出提醒
+            if((id*12+nowRenew)>36){
+            	var overtimeWarning = `最长订阅周期不可超过3年<br />当前订阅周期:${nowRenew}个月`
+		        weui.toast(overtimeWarning, {
+		            duration: 3000,
+		            className: 'custom-toast',
+		            callback: function() {
+		            }
+		        })
+		        return
+            }
+            $(".computed_price").show();
+            $('.profit_tips').hide()
+            $('#number_box_month').removeClass('active');
+            $(this).addClass('active').siblings().removeClass('active')
+            $('#yearly').prop('checked', true);
+            $("#monthly").prop('checked', false);
+            // 渲染结果 保留一位小数
+            let result = (Number(id) * completeYear).toFixed(1);
+            $('.computed_price').html('¥' + result)
+        })
+
+        /* -------- 选择按月订阅  radio触发的事件------- */
+        $('#monthly').on('change', function (e) {
+            let isChecked = $(this).is(':checked')
+            let val = $('.month_number').text();
+            if (val >= 10) {
+                $('.profit_tips').text("已选择"+val+"个月,建议“按年订阅”更划算哦~");
+                $('.profit_tips').show();
+            }
+            
+            if (!isChecked) {
+                $('#number_box_month button').attr('disabled', true)
+            } else {
+                $('#number_box_month button').removeAttr('disabled')
+            }
+            if(val==="1"){
+				$('#number_box_month button:first').attr('disabled', true);
+			}
+            if(Number(val)>=10){
+            	val = 10
+            }
+            let result = (Number(val) * completeMonth).toFixed(1);
+            $('.computed_price').html('¥' + result)
+
+        })
+        /* -------- 选择按年订阅  radio触发的事件------- */
+        $('#yearly').on('change', function (e) {
+            $('.profit_tips').hide()
+            // console.log($(this).is(':checked'))
+            let isChecked = $(this).is(':checked')
+            // 按年订阅默认选择1年 
+            let val = 1;
+            $('.computed_price').html('¥' + Number(val) * completeYear)
+            if (isChecked) {
+                $('#number_box_year span:eq(0)').addClass('active').siblings().removeClass('active')
+            }
+
+        })
+
+        // 确认订阅周期
+        $('#enter_period').on('click', function () {
+            var checked = $('#time_cycle input[name="time"]:checked')
+            // 获取其label的for属性,通过for属性来怕短板
+            // prolong 不延长
+            // monthly 按月
+            // yearly 按年
+            var flag = checked.parents('label').attr('for')
+            var val = '不延长';
+            var flagVal = ""; //1-年,2-月
+            var flagValLen = "";
+            if (flag === 'prolong') {
+                val = '不延长'
+            } else if (flag === 'monthly') {
+                val = $('#number_box_month .month_number').text() + '个月'
+                flagVal = 2;
+                flagValLen = Number($('#number_box_month .month_number').text());
+            } else if (flag === 'yearly') {
+                val = $('#number_box_year .year_number.active').text();
+                flagVal = 1;
+                flagValLen = Number($('#number_box_year .year_number.active').text().replace("年",""));
+            }
+            sessionStorage.upgrade_cycleunit = flagVal;
+            sessionStorage.upgrade_cyclecount = flagValLen;
+            sessionStorage.upgrade_price = $(".computed_price").html();
+            $('#time_cycle').hide(function () { 
+                $('.choose_item.lengthen .info').text(val)
+            })
+            var proPrice = $(".computed_price").html().replace("¥","")
+            if(val === "不延长"){
+            	proPrice = 0;
+            }
+            sessionStorage.proPrice = proPrice;
+            FinallyPrice();
+        })
+        //
+        $("#buy").on("click", function(){
+        	if(!$("#buy").prop("checked")){
+        		$("#buy").attr("checked", false);
+        		sessionStorage.buyCheck = false;
+        		if($(".save_upgrade").attr("disabled")!=="undefined"){
+        			$(".save_upgrade").attr("disabled",true);
+        		}
+        	}else{
+        		$("#buy").attr("checked", true);
+        		sessionStorage.buyCheck = true;
+        		if(sessionStorage.vipSubSelectAreaUpgrade!==undefined || sessionStorage.vipSubSelectIndustryUpgrade!==undefined || (sessionStorage.upgrade_cycleunit!==undefined&&sessionStorage.upgrade_cycleunit!=="")){
+        			$(".save_upgrade").removeAttr("disabled");
+        		}
+        	}
+        });
+        //
+        if(sessionStorage.buyCheck!==undefined&&sessionStorage.buyCheck!==""){
+        	let buyCheck = sessionStorage.buyCheck;
+        	let bCheck = "";
+        	if(buyCheck === "true"){
+        		bCheck = true;
+        	}else{
+        		bCheck = false;
+        	}
+        	$("#buy").prop("checked", bCheck);
+        }
+        //新增区域
+	    if(sessionStorage.vipSubSelectAreaUpgrade!==""&&sessionStorage.vipSubSelectAreaUpgrade!==undefined){
+			var vipSubSelectArea = JSON.parse(sessionStorage.vipSubSelectAreaUpgrade);
+			var provinceArr = [];
+			var cityArr = [];
+			var isAll = "";
+			$(".area-list").show();
+			for (var province in vipSubSelectArea){
+				if(vipSubSelectArea[province].length > 0){
+					var citys = vipSubSelectArea[province];
+					for (var i in citys){
+						var city = citys[i];
+						cityArr.push(city);
+					}
+				}else{
+					provinceArr.push(province);
+				}
+				if(province === "全国"){
+					isAll = "all";
+				}
+			}
+			var provinceLen = provinceArr.length;
+			var cityLen = cityArr.length;
+			if(isAll === ""){
+				$(".area-list").text("已新增 "+ provinceLen +" 个省级区域、"+ cityLen +" 个地市");
+			}else{
+				$(".area-list").text("已新增为 : 全国");
+			}
+			if(provinceLen === 0 && cityLen === 0){
+				$(".area-list").hide();
+			}
+	    }
+	    //新增行业
+	    if(sessionStorage.vipSubSelectIndustryUpgrade!==""&&sessionStorage.vipSubSelectIndustryUpgrade!==undefined){
+	    	var vipSubSelectIndustry = JSON.parse(sessionStorage.vipSubSelectIndustryUpgrade);
+	    	var industryArr = [];
+	    	var isAll = "";
+	    	$(".industry-list").show();
+	    	for(var i in vipSubSelectIndustry){
+	    		var industry = vipSubSelectIndustry[i];
+	    		industryArr.push(industry);
+	    		if(industry === "全部行业"){
+	    			isAll = "all";
+	    		}
+	    	}
+	    	var industryLen = industryArr.length
+	    	if(isAll === ""){
+				$(".industry-list").text("已新增 "+ industryLen +" 个行业");
+			}else{
+				$(".industry-list").text("已新增为 : 全部行业");
+			}
+			if(industryLen === 0){
+				$(".industry-list").hide();
+			}
+	    }
+	    //生效时间
+	    if(sessionStorage.effectiveDate !== ""&&sessionStorage.effectiveDate!==undefined){
+	    	var effective = sessionStorage.effectiveDate;
+	    	var effectiveHtml = "";
+	    	if(effective === "now"){
+	    		effectiveHtml = "立即生效,需支付当月费用差价";
+	    	}else if(effective === "notnow"){
+	    		var effectiveName = new Date().getMonth()+2;
+	    		if(effectiveName > 12){
+	    			effectiveName = effectiveName - 12
+	    		}
+	    		effectiveHtml = effectiveName+"月1日生效";
+	    	}
+	    	$(".effective_name").each(function(){
+	    		if($(this).text() === effectiveHtml){
+	    			$(this).parent().next().find("input").prop("checked", true);
+	    		}
+	    	})
+	    	$('#effect_date_name').html(effectiveHtml);
+	    }
+        //支付方式
+	    if(sessionStorage.payType!==""&&sessionStorage.payType!==undefined){
+	    	var payType = sessionStorage.payType;
+	    	var payHtml = "";
+	    	if(payType === "wx"){
+	    		payHtml = "微信支付";
+	    	}else if(payType === "alipy"){
+	    		payHtml = "支付宝支付";
+	    	}
+	    	$('input:radio[name="way"]').val(payHtml);
+	    	$('input:radio[name="way"]').prop("checked", true);
+	    	$("#payType").text(payHtml);
+	    }
+
+		if(sessionStorage.upgrade_cyclecount!==undefined&&sessionStorage.upgrade_cycleunit!==undefined){
+	 		var cycleunit = sessionStorage.upgrade_cycleunit;
+	 		var cyclecount = sessionStorage.upgrade_cyclecount;
+	 		var dateName = "";
+	 		if(cycleunit === "1"){
+	 			$("#yearly").prop("checked", true);
+	 			$('#number_box_month').removeClass('active');
+	 			$("#number_box_year span").each(function(){
+	 				if($(this).attr("data-id") ===  cyclecount){
+	 					$(this).addClass("active");
+	 				}
+	 			})
+	 			dateName = cyclecount + "年";
+	 			$(".computed_price").show();
+	 			$('.choose_item.lengthen .info').text(dateName);
+	 		}else if(cycleunit === "2"){
+	 			$("#monthly").prop("checked", true);
+	 			$('#number_box_month').addClass('active');
+                $('#number_box_year span').removeClass('active');
+                $(".month_number").text(cyclecount);
+                dateName = cyclecount + "个月";
+                $(".computed_price").show();
+                $('.choose_item.lengthen .info').text(dateName);
+	 		}
+	 	}else{
+	 		$("#prolong").prop("checked", true);
+	 		$('.choose_item.lengthen .info').text("不延长");
+	 		$(".computed_price").hide();
+	 	}
+	 	
+//	 	if(sessionStorage.vipSubSelectArea!==""&&sessionStorage.vipSubSelectArea!==undefined&&)
+	 	
+	 	//
+	 	var area = "";
+	    var buyerclass = "";
+	    var cycleunit = "";
+	    var cyclecount = "";
+	 	var startTime = "";
+	    var starts = "";
+	    var endTime = "";
+	    var ends = "";
+	 	$DoPost("/subscribepay/renewUpgrade/getBuyMsg", {}, function (data) {
+            if (data) {
+                area = data.area;
+			    buyerclass = data.buyerclass;
+			    cycleunit = data.cycleunit;
+			    cyclecount = data.cyclecount;
+			    startTime = data.start;
+			    starts = data.starttime;
+			    endTime = data.end;
+			    ends = data.endtime;
+			    //
+			    var areaArr = [];
+			    var areaHtml = "";
+			    var buyerclassArr = [];
+			    var buyerclassHtml = "";
+		//	    var dateName = "";
+		//	    var dateHtml = "";
+			    if (area !== "" && area !== undefined){
+			    	for(var province in area){
+			    		var citys = area[province]
+		//	    		console.log(citys);
+			    		if(citys.length===0){
+			    			areaArr.push(province);
+			    		}else{
+			    			for(var i in citys){
+			    				areaArr.push(citys[i]);
+			    			}
+			    		}
+			    	}
+			    	areaHtml = areaArr.toString().replace(/,/g, " ");
+		//	    	$(".item_area .label_for").text(areaHtml);
+					if(checkObj(area)){
+						areaHtml = "全国";
+					}
+			    	$('#area').val(areaHtml);
+			    }
+			    if(buyerclass !== "" && buyerclass !== undefined){
+			    	for(var i in buyerclass){
+			    		var industry = buyerclass[i];
+			    		buyerclassArr.push(industry);
+			    		buyerclassHtml = buyerclassArr.toString().replace(/,/g, " ");
+			    	}
+		//	    	$(".item_industry .label_for").text(buyerclassHtml);
+					if(checkObj(buyerclass)){
+						buyerclassHtml = "全行业";
+					}
+					$('#buyerclass').val(buyerclassHtml);
+			    }
+			    //
+			    var nowDate = data.now.replace(/-/g, ".");
+			    var a = nowDate+ " - " +endTime;
+			    $(".nownow").text(nowDate+ " - " +endTime.replace(/-/g, "."))
+			    
+			}
+        },false);
+        //
+        var completeMonth = 0;
+        var completeYear = 0;
+        var oldYearPrice = 0;
+        var oldMonthPrice = 0;
+        var areasArr = {};
+	    var industrysArr = [];
+	    var nowRenew = "";
+        function FinallyPrice(){
+        	$(".save_upgrade").attr('disabled','disabled');
+	    	var nowUpgrade = "";
+			//
+			var nowDate = new Date(startTime).toLocaleDateString();
+			nowDate = nowDate.split("/");
+			var nowMonth = Number(nowDate[1]);
+			var nowYear = Number(nowDate[0]);
+			var nowDay = Number(nowDate[2]);
+			//
+			var endDate = new Date(endTime).toLocaleDateString();
+			endDate = endDate.split("/");
+			var endMonth = Number(endDate[1]);
+			var endYear = Number(endDate[0]);
+			var endDay = Number(endDate[2]);
+			var oldPrice = "";
+			var price = "";
+			var effect = "";
+			var buyCheck = true;
+			if(sessionStorage.buyCheck!==undefined&&sessionStorage.buyCheck!==""){
+				let bcheck = sessionStorage.buyCheck;
+				if(bcheck === "true"){
+					buyCheck = true;
+				}else{
+					buyCheck = false;
+				}
+			}
+			if(sessionStorage.vipSubSelectAreaUpgrade!==""&&sessionStorage.vipSubSelectAreaUpgrade!==undefined){
+				var vipArea = JSON.parse(sessionStorage.vipSubSelectAreaUpgrade);
+				if(area !== ""&&area !== undefined){
+					for(let province in area){
+			    		let citys = area[province];
+			    		if(citys.length===0){
+							areasArr[province] = [];
+			    		}else{
+			    			areasArr[province] = citys;
+			    		}
+			    	}
+					for(let province in vipArea){
+						let citys = vipArea[province];
+						if(areasArr[province] === undefined){
+							areasArr[province] = citys
+						}else{
+							let cityArr = [];
+							for(let i in citys){
+								cityArr.push(citys[i]);
+							}
+							for(let i in areasArr[province]){
+								cityArr.push(areasArr[province][i]);
+							}
+							//
+							for (var x = 0; x < cityArr.length; x++) {
+					            for (var j =x+1; j <cityArr.length; ) {
+					                if (cityArr[x] === cityArr[j]){
+					                    cityArr.splice(j, 1);
+					                }
+					                else j++;
+					            }
+					       	}
+							//
+							areasArr[province] = cityArr;
+						}
+						if(province === "全国"){
+							areasArr = {"全国":[]};
+						}
+					}
+				}
+				console.log($(".save_upgrade").attr("disabled"))
+				if(buyCheck){
+					$(".save_upgrade").removeAttr("disabled");
+				}
+			}else{
+				if(area !== ""&&area !== undefined){
+					for(let province in area){
+			    		let citys = area[province];
+			    		if(citys.length===0){
+							areasArr[province] = [];
+			    		}else{
+			    			areasArr[province] = citys;
+			    		}
+			    	}
+				}
+			}
+			console.log("areasArr",areasArr)
+			if(sessionStorage.vipSubSelectIndustryUpgrade!==""&&sessionStorage.vipSubSelectIndustryUpgrade!==undefined){
+				var vipIndustry = JSON.parse(sessionStorage.vipSubSelectIndustryUpgrade);
+				if(buyerclass!==""&&buyerclass!==undefined){
+					for(let i in buyerclass){
+			    		let industry = buyerclass[i];
+			    		industrysArr.push(industry);
+			        }
+					for(let i in vipIndustry){
+						let industry = vipIndustry[i];
+						industrysArr.push(industry);
+						if(industry === "全部行业"){
+							industrysArr = ["全部行业"];
+						}
+					}
+				}
+				if(buyCheck){
+					$(".save_upgrade").removeAttr("disabled");
+				}
+			}else{
+				if(buyerclass!==""&&buyerclass!==undefined){
+					for(let i in buyerclass){
+			    		let industry = buyerclass[i];
+			    		industrysArr.push(industry);
+			    	}
+			    }
+			}
+			
+			for (var x = 0; x < industrysArr.length; x++) {
+	            for (var j =x+1; j <industrysArr.length; ) {
+	                if (industrysArr[x] === industrysArr[j]){
+	                    industrysArr.splice(j, 1);
+	                }
+	                else j++;
+	            }
+	       	}
+			
+			console.log("industrysArr",industrysArr);
+			if(sessionStorage.effectiveDate !== ""&&sessionStorage.effectiveDate!==undefined){
+				let eff = sessionStorage.effectiveDate;
+				if(eff === "now"){
+					effect = "now";
+				}else{
+					effect = "notnow";
+				}
+			}else{
+				effect = "now";
+			}
+			//
+			if(endYear === nowYear){
+				if(endMonth === nowMonth){
+					nowUpgrade = 1;
+				}else{
+					if(endDay > nowDay){
+						nowUpgrade = endMonth - nowMonth +1;
+					}else{
+						nowUpgrade = endMonth - nowMonth;
+					}
+				}
+			}else{
+				if(endMonth === nowMonth){
+					if(endDay <= nowDay){
+						nowUpgrade = (endYear - nowYear) * 12;
+					}else{
+						nowUpgrade = (endYear - nowYear) * 12 +1;
+					}
+				}else if(endMonth > nowMonth){
+					if(endDay <= nowDay){
+						nowUpgrade = (endYear - nowYear) * 12 + (endMonth - nowMonth);
+					}else{
+						nowUpgrade = (endYear - nowYear) * 12 + (endMonth - nowMonth)+1;
+					}
+				}else{
+					if(endDay <= nowDay){
+						nowUpgrade = (endYear - nowYear-1) * 12 + (12-nowMonth+endMonth);
+					}else{
+						nowUpgrade = (endYear - nowYear-1) * 12 + (12-nowMonth+endMonth)+1;
+					}
+				}
+			}
+			nowRenew = nowUpgrade;
+			console.log("monthold",nowUpgrade)
+			//
+			if(effect === "notnow"){
+				nowUpgrade = nowUpgrade -1;
+			}
+			if(nowUpgrade == 0){
+				nowUpgrade = 1;
+			}
+			
+			//
+			var nowUpgradeYear = 0;
+			if(nowUpgrade >= 12 && nowUpgrade < 24){
+				nowUpgradeYear = Math.floor(nowUpgrade / 12);
+				nowUpgrade = nowUpgrade - 12;
+			}else if(nowUpgrade >= 24){
+				nowUpgradeYear = Math.floor(nowUpgrade / 12);
+				nowUpgrade = nowUpgrade - 24;
+			}
+			if(nowUpgrade >= 10){
+				nowUpgradeYear = nowUpgradeYear + 1;
+				nowUpgrade = 0;
+			}
+			console.log("year",nowUpgradeYear)
+			console.log("month",nowUpgrade)
+			//
+			if (nowUpgradeYear >= 1) {
+				let monthprice = getsubVipOrderPrice(area, buyerclass, [nowUpgrade, 2])
+				let yearprice = getsubVipOrderPrice(area, buyerclass, [nowUpgradeYear, 1])
+				oldPrice = yearprice + monthprice
+				if (monthprice == 0) {
+					oldMonthPrice = ((yearprice / nowUpgradeYear) / 10).toFixed(1);
+					oldYearPrice = (yearprice / nowUpgradeYear).toFixed(1);
+				} else {
+					oldMonthPrice = (monthprice / nowUpgrade).toFixed(1);
+					oldYearPrice = ((monthprice / nowUpgrade) * 10).toFixed(1);
+				}
+			} else {
+				oldPrice = getsubVipOrderPrice(area, buyerclass, [nowUpgrade, 2])
+				oldMonthPrice = (oldPrice / nowUpgrade)
+				oldYearPrice = ((oldPrice / nowUpgrade) * 10).toFixed(1);
+			}
+			console.log("oldYearPrice",oldYearPrice)
+			console.log("oldMonthPrice",oldMonthPrice)
+			
+			//
+			if(nowUpgradeYear >= 1){
+				let yearprice = getsubVipOrderPrice(areasArr,industrysArr,[nowUpgradeYear,1]);
+				let monthprice = getsubVipOrderPrice(areasArr,industrysArr,[nowUpgrade,2]);
+				price = yearprice + monthprice;
+				if(monthprice === 0){
+					completeMonth = ((yearprice / nowUpgradeYear) / 10).toFixed(1);
+					completeYear = (yearprice / nowUpgradeYear).toFixed(1);
+				}else{
+					completeMonth = (monthprice / nowUpgrade).toFixed(1);
+					completeYear = ((monthprice / nowUpgrade)*10).toFixed(1);
+				}
+				console.log("yearprice",yearprice);
+				console.log("monthprice",monthprice);
+				console.log(">=1",price);
+			}else{
+				price = getsubVipOrderPrice(areasArr,industrysArr,[nowUpgrade,2]);
+				completeMonth = (price / nowUpgrade).toFixed(1);
+				completeYear = ((price / nowUpgrade)*10).toFixed(1);
+				console.log("<1",price)
+			}
+			
+			console.log("oldPrice", oldPrice);
+			if(sessionStorage.vipSubSelectAreaUpgrade===undefined&&sessionStorage.vipSubSelectIndustryUpgrade===undefined){
+				completeMonth = oldMonthPrice
+				completeYear = oldYearPrice
+			}
+			console.log("completeMonth",completeMonth)
+			console.log("completeYear",completeYear)
+			if(sessionStorage.upgrade_cyclecount !== undefined && sessionStorage.upgrade_cycleunit !== undefined){
+				if(sessionStorage.upgrade_cycleunit === "1"){
+					let price = (Number(sessionStorage.upgrade_cyclecount)*completeYear).toFixed(1);
+					sessionStorage.upgrade_price = "¥"+price;
+					sessionStorage.proPrice = price;
+				}else if(sessionStorage.upgrade_cycleunit === "2"){
+					let price = (Number(sessionStorage.upgrade_cyclecount)*completeMonth).toFixed(1);
+					sessionStorage.upgrade_price = "¥"+price;
+					sessionStorage.proPrice = price;
+				}
+			}
+			var cPrice = 0;
+  			if(price>0){
+  				var cPrice = (price - oldPrice).toFixed(1);
+  			}
+			console.log(cPrice);
+			if(sessionStorage.proPrice!==""&&sessionStorage.proPrice!==undefined){
+				let proPrice = sessionStorage.proPrice;
+				console.log("proprice",proPrice);
+				cPrice = (Number(cPrice) + Number(proPrice)).toFixed(1);
+			}
+//			if(effect === "notnow"){
+//				cPrice = cPrice -(completeMonth - oldMonthPrice);
+//			}
+			if(cPrice < 0){
+				cPrice = 0;
+			}
+			$(".finally_price").html("¥"+cPrice);
+			//
+			if (cPrice>0){
+				if(buyCheck){
+					$(".save_upgrade").removeAttr("disabled");
+				}
+			}
+        }
+        FinallyPrice();
+        //
+        if(sessionStorage.upgrade_price!==""&&sessionStorage.upgrade_price!==undefined){
+	 		$(".computed_price").html(sessionStorage.upgrade_price);
+	 	}
+	 	if(sessionStorage.upgrade_finally_price!==""&&sessionStorage.upgrade_finally_price!==undefined){
+	    	$(".finally_price").html(sessionStorage.renew_finally_price);
+	 	}
+        
+        //
+        $(".save_upgrade").on("click", function(){
+        	$(".save_upgrade").attr("disabled","disabled")
+        	let effective = $("#effect_date_name").text();
+        	var effect = "now";
+        	if(effective !== "立即生效,需支付当月费用差价"){
+        		let nowDate = new Date().toLocaleDateString();
+				nowDate = nowDate.split("/");
+				let nowMonth = Number(nowDate[1]);
+				let nowYear = Number(nowDate[0]);
+				let a = nowMonth +1
+        		if(a > 12){
+        			a = nowMonth-12;
+        			nowYear = nowYear +1;
+        		}
+        		let b = nowYear+"/"+a+"/1";
+        		effect = new Date(b).getTime() /1000;
+        	}
+        	//
+        	let areas = areasArr;
+        	let industrys = industrysArr;
+        	if(areas["全国"]){
+                areas={};
+            }
+            if(industrys.length==1&&industrys[0]=="全部行业"){
+                industrys=[];
+            }
+            //
+            let areaarr = area;
+        	let industryarr = buyerclass;
+        	
+            //
+            let renew_time = $('.choose_item.lengthen .info').text();
+            let times = "";
+            if(renew_time !== "不延长"){
+            	times = $('.choose_item.lengthen .info').text();
+            }
+            //
+	    	var param = {
+	    		"area": JSON.stringify(areas),
+	    		"industry": industrys.join(","),
+	    		"areas": JSON.stringify(areaarr),
+	    		"industryarr": industryarr.join(","),
+	    		"payWay": "wx_js",
+	    		"effect": effect,
+	    		"pay_source" : "Upgrade",
+	    		"time": times,
+	    		"nowUp": Number(nowRenew),
+	    	}
+	    	console.log(param)
+	    	$DoPost("/subscribepay/renewUpgrade/renewUpgradeCreateOrder",param,function(r){
+                if(r.success){
+                    onBridgeReady(JSON.parse(r.data.res),r.data.code);
+                }
+                $(".save_upgrade").removeAttr("disabled");
+            })
+	    });
+	    
+	    //
+	    function clearSessionStorage(){
+	    	sessionStorage.removeItem("upgrade_cyclecount");
+	    	sessionStorage.removeItem("upgrade_cycleunit");
+	    	sessionStorage.removeItem("upgrade_price");
+	    	sessionStorage.removeItem("proPrice");
+	    	sessionStorage.removeItem("vipSubSelectAreaUpgrade");
+	    	sessionStorage.removeItem("vipSubSelectIndustryUpgrade");
+	    	sessionStorage.removeItem("effectiveDate");
+	    	sessionStorage.removeItem("buyCheck");
+	    }
+	    
+	    //
+	    //
+	    function checkObj(obj) {
+		    //检验数组
+		    if (Array.prototype.isPrototypeOf(obj) && obj.length === 0) {
+		        return true;
+		    }
+		    //检验对象
+		    if (Object.prototype.isPrototypeOf(obj) && Object.keys(obj).length === 0) {
+		        return true;
+		    }
+		    return false;
+		}
+	    
+    </script>
+</body>
+
+</html>

+ 1 - 1
src/jfw/modules/pushent/src/followpush/push.go

@@ -296,7 +296,7 @@ func push(fid, sname, userId string, res *[]map[string]interface{}) {
 				}
 				setMap["a_relationinfo"] = relationinfoTemp
 			} else { //追加
-				(*updateMap)["$pushAll"] = bson.M{"a_relationinfo": pushArray}
+				(*updateMap)["$push"] = bson.M{"a_relationinfo": bson.M{"$each": pushArray}}
 			}
 			updateFlag = tools.MQFW.UpdateById(FOLLOW_COLLECTION, fid, updateMap)
 		}

+ 1 - 1
src/jfw/modules/pushproject/src/followpush/push.go

@@ -394,7 +394,7 @@ func push(fid interface{}, sname, scode, title, userId string, res *[]map[string
 						}
 						setMap["a_relationinfo"] = relationinfoTemp
 					} else { //追加
-						(*updateMap)["$pushAll"] = bson.M{"a_relationinfo": pushArray}
+						(*updateMap)["$push"] = bson.M{"a_relationinfo": bson.M{"$each": pushArray}}
 					}
 					updateFlag = tools.MQFW.Update(FOLLOW_COLLECTION, &bson.M{"_id": fid}, updateMap, false, false)
 				}

+ 1 - 1
src/jfw/modules/pushsubscribe/src/match/config.json

@@ -6,7 +6,7 @@
 	"vipMaxPushSize":2000,
 	"mgoAddr":"192.168.3.128:27080",
 	"mgoSize":10,
-	"testids":["5d81c5a525ef8723ac0036f9"],
+	"testids":["5dce0129e1382317285a570a"],
 	"filterWords":["项目","中标","公告"],
 	"matchPoolSize":60,
 	"savePoolSize":5,

+ 1 - 0
src/jfw/modules/pushsubscribe/src/match/job/job.go

@@ -25,5 +25,6 @@ var Jobs = &jobs{
 		savePool:             make(chan bool, Config.SavePoolSize),
 		saveWaitGroup:        &sync.WaitGroup{},
 		userMapLock:          &sync.Mutex{},
+		allProject:           &sync.Map{},
 	},
 }

+ 72 - 42
src/jfw/modules/pushsubscribe/src/match/job/matchjob.go

@@ -32,6 +32,11 @@ const (
 	ProjectQuery = `{"query":{"filtered":{"filter":{"term":{"list.infoid":"%s"}}}},"_source":["_id","list.infoid"],"sort":{"id":"desc"},"from":0,"size":1}`
 )
 
+type Project struct {
+	Id               string
+	List_last_infoid string
+}
+
 type MatchJob struct {
 	matchPool            chan bool
 	matchWaitGroup       *sync.WaitGroup
@@ -43,6 +48,7 @@ type MatchJob struct {
 	savePool             chan bool
 	saveWaitGroup        *sync.WaitGroup
 	userMapLock          *sync.Mutex
+	allProject           *sync.Map
 }
 
 //定时任务,匹配数据,存库
@@ -90,6 +96,7 @@ func (m *MatchJob) Execute() {
 			break
 		}
 	}
+	m.allProject = &sync.Map{}
 	if endTime == nil {
 		endTime = time.Now().Unix()
 	}
@@ -103,9 +110,10 @@ func (m *MatchJob) ToMatch(batchIndex int, matcher Matcher, datas *[]map[string]
 	logger.Info("开始匹配第", batchIndex, "批用户。。。")
 	userMap, projectUserMap := m.EachAllBidInfo(matcher, datas)
 	logger.Info("第", batchIndex, "批用户匹配结束。。。")
-	logger.Info("开始保存到", Pushspace_temp, "表。。。")
+	logger.Info("第", batchIndex, "批开始保存到", Pushspace_temp, "表。。。")
 	index := 0
 	var saveBatch []map[string]interface{}
+	lock := &sync.Mutex{}
 	for u, i := range *userMap {
 		m.savePool <- true
 		m.saveWaitGroup.Add(1)
@@ -123,17 +131,19 @@ func (m *MatchJob) ToMatch(batchIndex int, matcher Matcher, datas *[]map[string]
 			sort.Sort(pushArray)
 			var array []*MatchInfo
 			titleMap := map[string]bool{}
+			infoIdMap := map[string]bool{}
 			size := 0
 			for _, v2 := range pushArray {
 				title := util.ObjToString((*v2.Info)["title"])
-				pushInfoKey := PushInfoKey(user.Id, util.ObjToString((*v2.Info)["_id"]))
+				_id := util.ObjToString((*v2.Info)["_id"])
+				pushInfoKey := PushInfoKey(user.Id, _id)
 				if titleMap[title] {
 					continue
 				}
 				titleMap[title] = true
 				isExists, err := redis.Exists(Pushcache_2_a, pushInfoKey)
 				if err != nil {
-					logger.Error("推送信息redis判重出错", err)
+					logger.Error(pushInfoKey, "推送信息redis判重出错", err)
 				}
 				if isExists {
 					continue
@@ -146,6 +156,7 @@ func (m *MatchJob) ToMatch(batchIndex int, matcher Matcher, datas *[]map[string]
 					}
 					info[field] = (*v2.Info)[field]
 				}
+				infoIdMap[_id] = true
 				array = append(array, &MatchInfo{
 					Info: &info,
 					Keys: v2.Keys,
@@ -162,6 +173,8 @@ func (m *MatchJob) ToMatch(batchIndex int, matcher Matcher, datas *[]map[string]
 			if size == 0 {
 				return
 			}
+			lock.Lock()
+			defer lock.Unlock()
 			saveBatch = append(saveBatch, map[string]interface{}{
 				"s_m_openid":    user.S_m_openid,
 				"a_m_openid":    user.A_m_openid,
@@ -204,7 +217,7 @@ func (m *MatchJob) ToMatch(batchIndex int, matcher Matcher, datas *[]map[string]
 		mongodb.SaveBulk(Pushspace_temp, saveBatch...)
 		saveBatch = []map[string]interface{}{}
 	}
-	logger.Info("保存到", Pushspace_temp, "表结束。。", index)
+	logger.Info("第", batchIndex, "批保存到", Pushspace_temp, "表结束。。", index)
 	m.ToRelationProject(projectUserMap)
 }
 
@@ -212,54 +225,67 @@ func (m *MatchJob) ToMatch(batchIndex int, matcher Matcher, datas *[]map[string]
 func (m *MatchJob) ToRelationProject(projectUser *sync.Map) {
 	logger.Info("开始关联项目。。。")
 	index := 0
-	var setBatch []map[string]interface{}
-	var queryBatch []map[string]interface{}
+	var updateproject [][]map[string]interface{}
 	lock := &sync.Mutex{}
 	projectUser.Range(func(key interface{}, value interface{}) bool {
-		m.savePool <- true
-		m.saveWaitGroup.Add(1)
 		k, _ := key.(string)
 		v, _ := value.(*[]*UserInfo)
+		m.savePool <- true
+		m.saveWaitGroup.Add(1)
 		go func(_id string, users *[]*UserInfo) {
 			defer func() {
 				<-m.savePool
 				m.saveWaitGroup.Done()
 			}()
-			projects := elastic.Get(Projectset, Projectset, fmt.Sprintf(ProjectQuery, _id))
-			if projects == nil || len(*projects) == 0 {
-				return
-			}
-			list := (*projects)[0]["list"].([]interface{})
-			if len(list) == 0 {
-				return
+			list_last_infoid := ""
+			projectId := ""
+			if value, ok := m.allProject.Load(_id); ok {
+				project, _ := value.(*Project)
+				projectId = project.Id
+				list_last_infoid = project.List_last_infoid
+			} else {
+				projects := elastic.Get(Projectset, Projectset, fmt.Sprintf(ProjectQuery, _id))
+				if projects == nil || len(*projects) == 0 {
+					return
+				}
+				list := (*projects)[0]["list"].([]interface{})
+				if len(list) == 0 {
+					return
+				}
+				list_last, _ := list[len(list)-1].(map[string]interface{})
+				list_last_infoid = util.ObjToString(list_last["infoid"])
+				projectId, _ := (*projects)[0]["_id"].(string)
+				m.allProject.Store(_id, &Project{
+					Id:               projectId,
+					List_last_infoid: list_last_infoid,
+				})
 			}
-			list_last, _ := list[len(list)-1].(map[string]interface{})
-			list_last_infoid := util.ObjToString(list_last["infoid"])
-			if list_last_infoid == "" {
+			if projectId == "" || list_last_infoid == "" {
 				return
 			}
 			lock.Lock()
 			defer lock.Unlock()
 			for _, user := range *users {
-				queryBatch = append(queryBatch, map[string]interface{}{
-					"projectid": (*projects)[0]["_id"],
-					"userid":    user.Id,
-				})
-				setBatch = append(setBatch, map[string]interface{}{
-					"$set": map[string]interface{}{
-						"projectid":  (*projects)[0]["_id"],
-						"infoid":     _id,
-						"userid":     user.Id,
-						"maxid":      list_last_infoid,
-						"toptypes":   user.O_vipjy.TopTypes,
-						"createtime": time.Now().Unix(),
+				updateproject = append(updateproject, []map[string]interface{}{
+					map[string]interface{}{
+						"projectid": projectId,
+						"userid":    user.Id,
+					},
+					map[string]interface{}{
+						"$set": map[string]interface{}{
+							"projectid":  projectId,
+							"infoid":     _id,
+							"userid":     user.Id,
+							"maxid":      list_last_infoid,
+							"toptypes":   user.O_vipjy.TopTypes,
+							"createtime": time.Now().Unix(),
+						},
 					},
 				})
 			}
-			if len(setBatch) == BulkSize {
-				mongodb.NewUpdateBulk(Pushspace_project, queryBatch, setBatch)
-				setBatch = []map[string]interface{}{}
-				queryBatch = []map[string]interface{}{}
+			if len(updateproject) == BigBulkSize {
+				mongodb.NewUpdateBulk(Pushspace_project, updateproject...)
+				updateproject = [][]map[string]interface{}{}
 			}
 		}(k, v)
 		index++
@@ -269,10 +295,9 @@ func (m *MatchJob) ToRelationProject(projectUser *sync.Map) {
 		return true
 	})
 	m.saveWaitGroup.Wait()
-	if len(setBatch) > 0 {
-		mongodb.NewUpdateBulk(Pushspace_project, queryBatch, setBatch)
-		setBatch = []map[string]interface{}{}
-		queryBatch = []map[string]interface{}{}
+	if len(updateproject) > 0 {
+		mongodb.NewUpdateBulk(Pushspace_project, updateproject...)
+		updateproject = [][]map[string]interface{}{}
 	}
 	logger.Info("关联项目结束。。。", index)
 }
@@ -297,7 +322,7 @@ func (m *MatchJob) LoadBidding(lastId, newId string, lastTime int64) *[]map[stri
 		c_query["_id"] = idQuery
 	}
 	//c_query = map[string]interface{}{
-	//"_id": bson.ObjectIdHex("5da71f96a5cb26b9b79b8e6c"),
+	//"_id": bson.ObjectIdHex("5da4c4dfa5cb26b9b7ffdc5d"),
 	//}
 	logger.Info("开始加载", Bidding, "数据", c_query)
 	var res []map[string]interface{}
@@ -394,6 +419,9 @@ func (m *MatchJob) OnceUserBatch(batchIndex int, lastUserId *string) (int, *VipU
 				m.loadUserWaitGroup.Done()
 			}()
 			user, o_msgset := public.NewUserInfoByUserColl(temp)
+			if user == nil {
+				return
+			}
 			isVipUser := IsVipUser(user.VipStatus)
 			var allKeySet []*KeySet
 			var err error
@@ -485,7 +513,7 @@ func (m *MatchJob) OnceUserBatch(batchIndex int, lastUserId *string) (int, *VipU
 				}
 			}
 			if !isVipUser && len(originalKeys) == 0 {
-				logger.Info("过滤掉,没有关键词", user.Id)
+				logger.Info(user.Id, "过滤掉,没有关键词")
 				return
 			}
 			user.Keys = originalKeys
@@ -494,7 +522,9 @@ func (m *MatchJob) OnceUserBatch(batchIndex int, lastUserId *string) (int, *VipU
 			m.loadUserLock.Lock()
 			defer m.loadUserLock.Unlock()
 			if isVipUser {
-				user.O_vipjy = &O_vipjy{}
+				user.O_vipjy = &O_vipjy{
+					ProjectMatch: util.IntAll(o_msgset["i_projectmatch"]),
+				}
 				//vip付费-采购单位行业
 				vip_buyerclass, _ := o_msgset["a_buyerclass"].([]interface{})
 				if len(vip_buyerclass) == 0 {
@@ -505,7 +535,6 @@ func (m *MatchJob) OnceUserBatch(batchIndex int, lastUserId *string) (int, *VipU
 						if s_v == "" {
 							continue
 						}
-						user.O_vipjy.TopTypes = append(user.O_vipjy.TopTypes, s_v)
 						vipUser.Add(s_v, user, &vipUser.BuyerclassUsers)
 					}
 				}
@@ -542,6 +571,7 @@ func (m *MatchJob) OnceUserBatch(batchIndex int, lastUserId *string) (int, *VipU
 						if s_v == "" {
 							continue
 						}
+						user.O_vipjy.TopTypes = append(user.O_vipjy.TopTypes, s_v)
 						vipUser.Add(s_v, user, &vipUser.InfoTypeUsers)
 					}
 				}

BIN
src/jfw/modules/pushsubscribe/src/match/match


+ 3 - 1
src/jfw/modules/pushsubscribe/src/match/matcher/vipmatch.go

@@ -89,7 +89,9 @@ func (v *VipUser) Match(info *map[string]interface{}) (*map[*UserInfo]*MatchUser
 			continue
 		}
 		//关联项目不需要匹配信息类型
-		projectUsers = append(projectUsers, k)
+		if k.O_vipjy.ProjectMatch == 1 {
+			projectUsers = append(projectUsers, k)
+		}
 		if !v.InfoTypeUsers[""][k] && !v.InfoTypeUsers[toptype][k] {
 			continue
 		}

+ 1 - 1
src/jfw/modules/pushsubscribe/src/match/task.json

@@ -1 +1 @@
-{"startTime":0,"lastId":"5da69c3fa5cb26b9b77bec0d"}
+{"startTime":"","lastId":"5da69c3fa5cb26b9b77bec0d"}

+ 2 - 1
src/jfw/modules/pushsubscribe/src/public/entity.go

@@ -40,7 +40,8 @@ type O_jy struct {
 	Infotype map[string]map[string]bool //关键词-信息类型
 }
 type O_vipjy struct {
-	TopTypes []string
+	TopTypes     []string
+	ProjectMatch int
 }
 
 //关键词

+ 2 - 1
src/jfw/modules/pushsubscribe/src/public/util.go

@@ -11,7 +11,8 @@ import (
 )
 
 const (
-	BulkSize          = 200
+	BulkSize          = 20
+	BigBulkSize       = 100
 	OneDaySecond      = 86400
 	User              = "user"
 	Bidding           = "bidding"

+ 1 - 0
src/jfw/modules/pushsubscribe/src/push/config.json

@@ -83,5 +83,6 @@
 	"pushBatch":2,
 	"moveBatch":1000,
 	"moveDuration":30,
+	"projectPublishTimeLimit":99999999,
 	"timeoutWarn":"http://10.171.112.160:19281/_send/_mail?program=testgo2&to=wangchuanjin@topnet.net.cn,wangkaiyue@topnet.net.cn&title=剑鱼平台报警_pushsubscribe_push&body=订阅推送放入通道超时"
 }

+ 1 - 0
src/jfw/modules/pushsubscribe/src/push/config/config.go

@@ -57,6 +57,7 @@ type config struct {
 	RpcPort                 string         `json:"rpcPort"`
 	MoveBatch               int            `json:"moveBatch"`
 	MoveDuration            int            `json:"moveDuration"`
+	ProjectPublishTimeLimit int64          `json:"projectPublishTimeLimit"`
 	TimeoutWarn             string         `json:"timeoutWarn"`
 	Mysql                   struct {
 		DbName   string

+ 38 - 23
src/jfw/modules/pushsubscribe/src/push/job/movejob.go

@@ -64,10 +64,10 @@ func (m *MoveJob) Execute() {
 			m.moveLock.Lock()
 			moveUser := moveUsers[userId]
 			if moveUser != nil {
-				list, _ := moveUser.info["list"].(SortList)
+				list, _ := moveUser.info["list"].(*SortList)
 				idMap := map[string]bool{}
 				titleMap := map[string]bool{}
-				for _, v := range list {
+				for _, v := range *list {
 					idMap[util.ObjToString((*v.Info)["_id"])] = true
 					titleMap[util.ObjToString((*v.Info)["title"])] = true
 				}
@@ -78,11 +78,11 @@ func (m *MoveJob) Execute() {
 					} else if titleMap[util.ObjToString((*v.Info)["title"])] {
 						continue
 					}
-					list = append(list, v)
+					*list = append(*list, v)
 				}
 				sort.Sort(list)
-				if len(list) > maxPushSize {
-					list = list[:maxPushSize]
+				if len(*list) > maxPushSize {
+					*list = (*list)[:maxPushSize]
 				}
 				temp["list"] = list
 				moveUser.info = temp
@@ -126,6 +126,7 @@ func (m *MoveJob) merge(number *int, nowUnix int64, moveUsers map[string]*MoveUs
 	updateArray_query := []map[string]interface{}{}
 	updateArray_set := []map[string]interface{}{}
 	updateArray_delete := []interface{}{}
+	invalidArray_delete := []interface{}{}
 	for k, v := range moveUsers {
 		m.mergePool <- true
 		m.mergeWait.Add(1)
@@ -143,7 +144,7 @@ func (m *MoveJob) merge(number *int, nowUnix int64, moveUsers map[string]*MoveUs
 				saveArray = append(saveArray, moveUser.info)
 				saveArray_delete = append(saveArray_delete, moveUser.ids...)
 				if len(saveArray) == BulkSize {
-					m.saveBulk(&saveArray, &saveArray_delete)
+					m.saveBulk(sess, &saveArray, &saveArray_delete)
 				}
 				m.mergeLock.Unlock()
 			} else { //批量更新
@@ -155,18 +156,15 @@ func (m *MoveJob) merge(number *int, nowUnix int64, moveUsers map[string]*MoveUs
 					setMap[field] = moveUser.info[field]
 				}
 				//
-				newListOrig, _ := moveUser.info["list"].(SortList)
-				if newListOrig == nil || len(newListOrig) == 0 {
-					return
-				}
 				oldList := putil.ToSortList(data["list"])
 				idMap := map[string]bool{}
 				for _, vv := range *oldList {
 					idMap[util.ObjToString((*vv.Info)["_id"])] = true
 				}
 				newList := make(SortList, 0)
+				newListOrig, _ := moveUser.info["list"].(*SortList)
 				//去重
-				for _, vv := range newListOrig {
+				for _, vv := range *newListOrig {
 					if idMap[util.ObjToString((*vv.Info)["_id"])] {
 						continue
 					}
@@ -174,6 +172,10 @@ func (m *MoveJob) merge(number *int, nowUnix int64, moveUsers map[string]*MoveUs
 				}
 				pLength := len(newList)
 				if pLength == 0 {
+					invalidArray_delete = append(invalidArray_delete, moveUser.ids...)
+					if len(invalidArray_delete) == BigBulkSize {
+						m.delBulk(sess, &invalidArray_delete)
+					}
 					return
 				}
 				rLength := len(*oldList)
@@ -189,8 +191,10 @@ func (m *MoveJob) merge(number *int, nowUnix int64, moveUsers map[string]*MoveUs
 					setMap["size"] = maxPushSize
 				} else { //追加
 					setMap["size"] = rLength + pLength
-					upSet["$pushAll"] = map[string]interface{}{
-						"list": newList,
+					upSet["$push"] = map[string]interface{}{
+						"list": map[string]interface{}{
+							"$each": newList,
+						},
 					}
 				}
 				upSet["$set"] = setMap
@@ -199,7 +203,7 @@ func (m *MoveJob) merge(number *int, nowUnix int64, moveUsers map[string]*MoveUs
 				updateArray_query = append(updateArray_query, map[string]interface{}{"_id": data["_id"]})
 				updateArray_set = append(updateArray_set, upSet)
 				if len(updateArray_query) == BulkSize {
-					m.updateBulk(&updateArray_query, &updateArray_set, &updateArray_delete)
+					m.updateBulk(sess, &updateArray_query, &updateArray_set, &updateArray_delete)
 				}
 				m.mergeLock.Unlock()
 			}
@@ -211,16 +215,21 @@ func (m *MoveJob) merge(number *int, nowUnix int64, moveUsers map[string]*MoveUs
 	}
 	m.mergeWait.Wait()
 	if len(saveArray) > 0 {
-		m.saveBulk(&saveArray, &saveArray_delete)
+		m.saveBulk(nil, &saveArray, &saveArray_delete)
 	}
 	if len(updateArray_query) > 0 {
-		m.updateBulk(&updateArray_query, &updateArray_set, &updateArray_delete)
+		m.updateBulk(nil, &updateArray_query, &updateArray_set, &updateArray_delete)
+	}
+	if len(invalidArray_delete) > 0 {
+		m.delBulk(nil, &invalidArray_delete)
 	}
 	logger.Info("第", *number, "次合并数据结束。。。", index)
 }
-func (m *MoveJob) saveBulk(saves *[]map[string]interface{}, deletes *[]interface{}) {
-	sess := mongodb.GetMgoConn()
-	defer mongodb.DestoryMongoConn(sess)
+func (m *MoveJob) saveBulk(sess *mgo.Session, saves *[]map[string]interface{}, deletes *[]interface{}) {
+	if sess == nil {
+		sess = mongodb.GetMgoConn()
+		defer mongodb.DestoryMongoConn(sess)
+	}
 	coll := sess.DB(DbName).C(Pushspace)
 	bulk := coll.Bulk()
 	for _, v := range *saves {
@@ -234,9 +243,11 @@ func (m *MoveJob) saveBulk(saves *[]map[string]interface{}, deletes *[]interface
 	}
 	*saves = []map[string]interface{}{}
 }
-func (m *MoveJob) updateBulk(array_q, array_s *[]map[string]interface{}, array_d *[]interface{}) {
-	sess := mongodb.GetMgoConn()
-	defer mongodb.DestoryMongoConn(sess)
+func (m *MoveJob) updateBulk(sess *mgo.Session, array_q, array_s *[]map[string]interface{}, array_d *[]interface{}) {
+	if sess == nil {
+		sess = mongodb.GetMgoConn()
+		defer mongodb.DestoryMongoConn(sess)
+	}
 	coll := sess.DB(DbName).C(Pushspace)
 	bulk := coll.Bulk()
 	for k, v := range *array_q {
@@ -252,13 +263,17 @@ func (m *MoveJob) updateBulk(array_q, array_s *[]map[string]interface{}, array_d
 	*array_s = []map[string]interface{}{}
 }
 func (m *MoveJob) delBulk(sess *mgo.Session, array *[]interface{}) {
+	if sess == nil {
+		sess = mongodb.GetMgoConn()
+		defer mongodb.DestoryMongoConn(sess)
+	}
 	coll := sess.DB(DbName).C(Pushspace_temp)
 	count := 0
 	bulk := coll.Bulk()
 	for _, v := range *array {
 		count++
 		bulk.Remove(map[string]interface{}{"_id": v})
-		if count == BulkSize {
+		if count == BigBulkSize {
 			_, err := bulk.Run()
 			if nil != err {
 				logger.Info("DelBulkError", err)

+ 110 - 60
src/jfw/modules/pushsubscribe/src/push/job/projectpush.go → src/jfw/modules/pushsubscribe/src/push/job/projectjob.go

@@ -44,6 +44,21 @@ func (p *ProjectPushJob) Execute() {
 					<-p.pushPool
 					p.pushWait.Done()
 				}()
+				sess := mongodb.GetMgoConn()
+				defer mongodb.DestoryMongoConn(sess)
+				var u map[string]interface{}
+				sess.DB(DbName).C(User).FindId(bson.ObjectIdHex(userId)).Select(map[string]interface{}{
+					"o_vipjy.i_projectmatch": 1,
+				}).One(&u)
+				if u == nil || len(u) == 0 {
+					logger.Error(userId, "没有找到该用户信息")
+					return
+				}
+				o_vipjy, _ := u["o_vipjy"].(map[string]interface{})
+				if util.IntAll(o_vipjy["i_projectmatch"]) == 0 {
+					logger.Info(userId, "关联项目推送没有打开")
+					return
+				}
 				dayCountKey := DayCountKey(userId)
 				dayCount, err := redis.GetNewInt(Pushcache_2_a, dayCountKey)
 				if err != nil {
@@ -55,53 +70,80 @@ func (p *ProjectPushJob) Execute() {
 				needCount := Config.VipMaxPushSize - dayCount
 				sortList := &SortList{}
 				length := 0
-				for _, l := range list {
-					projectId, _ := l["projectid"].(string)
-					pi, ok := projects.Load(projectId)
-					if !ok {
-						return
-					}
-					topTypes, _ := l["toptypes"].([]interface{})
-					maxId, _ := l["maxid"].(string)
-					userTopType := map[string]bool{}
-					for _, t := range topTypes {
-						userTopType[util.ObjToString(t)] = true
-					}
-					//
-					project, _ := pi.(map[string]interface{})
-					project_list, _ := project["list"].([]interface{})
-					for _, pl := range project_list {
-						plm, _ := pl.(map[string]interface{})
-						infoid, _ := plm["infoid"].(string)
-						if bson.ObjectIdHex(infoid) <= bson.ObjectIdHex(maxId) {
-							continue
-						}
-						publishtime := util.Int64All(plm["publishtime"])
-						if unix-publishtime < 604800 { //发布时间7天之内
-							continue
+				i := len(list)
+				for {
+					var updateProject [][]map[string]interface{}
+					for i > 0 {
+						i--
+						projectId, _ := list[i]["projectid"].(string)
+						pi, ok := projects.Load(projectId)
+						if !ok {
+							return
 						}
-						topType, _ := plm["toptype"].(string)
-						if len(userTopType) > 0 && !userTopType[topType] {
-							continue
+						topTypes, _ := list[i]["toptypes"].([]interface{})
+						maxId, _ := list[i]["maxid"].(string)
+						userTopType := map[string]bool{}
+						for _, t := range topTypes {
+							userTopType[util.ObjToString(t)] = true
 						}
-						isExists, err := redis.Exists(Pushcache_2_a, PushInfoKey(userId, infoid))
-						if err != nil {
-							logger.Error("推送信息判重出错", err)
-							continue
+						//
+						project, _ := pi.(map[string]interface{})
+						project_list, _ := project["list"].([]interface{})
+						infoId := ""
+						for _, pl := range project_list {
+							plm, _ := pl.(map[string]interface{})
+							infoId, _ = plm["infoid"].(string)
+							if bson.ObjectIdHex(infoId) <= bson.ObjectIdHex(maxId) {
+								continue
+							}
+							publishtime := util.Int64All(plm["publishtime"])
+							if unix-publishtime > Config.ProjectPublishTimeLimit { //发布时间7天之内
+								continue
+							}
+							topType, _ := plm["toptype"].(string)
+							if len(userTopType) > 0 && !userTopType[topType] {
+								continue
+							}
+							isExists, err := redis.Exists(Pushcache_2_a, PushInfoKey(userId, infoId))
+							if err != nil {
+								logger.Error("推送信息判重出错", err)
+								continue
+							}
+							if isExists {
+								continue
+							}
+							length++
+							//满足条件,可以推送
+							*sortList = append(*sortList, &MatchInfo{
+								Info: &map[string]interface{}{
+									"area":       util.ObjToString(plm["area"]),
+									"city":       util.ObjToString(plm["city"]),
+									"_id":        infoId,
+									"buyerclass": util.ObjToString(plm["buyerclass"]),
+								},
+							})
 						}
-						if isExists {
-							continue
+						if infoId != maxId {
+							updateProject = append(updateProject, []map[string]interface{}{
+								map[string]interface{}{
+									"_id": list[i]["_id"],
+								},
+								map[string]interface{}{
+									"$set": map[string]interface{}{
+										"maxid": infoId,
+									},
+								},
+							})
+							if len(updateProject) == BigBulkSize {
+								break
+							}
 						}
-						length++
-						//满足条件,可以推送
-						*sortList = append(*sortList, &MatchInfo{
-							Info: &map[string]interface{}{
-								"area":       util.ObjToString(plm["area"]),
-								"city":       util.ObjToString(plm["city"]),
-								"_id":        infoid,
-								"buyerclass": util.ObjToString(plm["buyerclass"]),
-							},
-						})
+					}
+					if len(updateProject) > 0 {
+						mongodb.NewUpdateBulk(Pushspace_project, updateProject...)
+					}
+					if len(updateProject) < BigBulkSize {
+						break
 					}
 				}
 				if length == 0 {
@@ -118,7 +160,7 @@ func (p *ProjectPushJob) Execute() {
 						break
 					}
 				}
-				if pushDate := putil.SaveToPushsubscribe(true, userId, &saveArray); pushDate > 0 {
+				if pushDate := putil.SaveToPushsubscribe(true, true, userId, &saveArray); pushDate > 0 {
 					logger.Info(userId, "关联项目推送保存成功", pushDate, length)
 					redis.Put(Pushcache_2_a, dayCountKey, dayCount+length, OneDaySecond)
 					for _, v := range saveArray {
@@ -130,11 +172,11 @@ func (p *ProjectPushJob) Execute() {
 			}(k, v)
 			index++
 			if index%500 == 0 {
-				logger.Info(batchCount, "关联项目匹配", index)
+				logger.Info("第", batchIndex, "次关联项目匹配", index)
 			}
 		}
 		p.pushWait.Wait()
-		logger.Info(batchCount, "关联项目匹配", index)
+		logger.Info("第", batchIndex, "次关联项目匹配", index)
 		if batchCount < Config.PushBatch {
 			break
 		}
@@ -156,11 +198,6 @@ func (p *ProjectPushJob) Execute() {
 
 //分批次加载pushspace_project表数据
 func (p *ProjectPushJob) loadPushspace_project(batchIndex int, startId *string) (int, *map[string][]map[string]interface{}) {
-	sess := mongodb.GetMgoConn()
-	defer mongodb.DestoryMongoConn(sess)
-	//一个用户最多加载最新的一万个关联项目
-	project_count := map[string]int{}
-	datas := map[string][]map[string]interface{}{}
 	var query map[string]interface{}
 	if *startId != "" {
 		query = map[string]interface{}{
@@ -169,16 +206,24 @@ func (p *ProjectPushJob) loadPushspace_project(batchIndex int, startId *string)
 			},
 		}
 	}
+	//query = map[string]interface{}{
+	//"_id": bson.ObjectIdHex("5dce558cc9122cb37872aa61"),
+	//}
 	logger.Info("开始加载第", batchIndex, "批关联项目", query)
-	i := 0
+	index := 0
+	//一个用户最多加载最新的一万个关联项目
+	project_count := map[string]int{}
+	datas := map[string][]map[string]interface{}{}
+	prevUserId := ""
+	sess := mongodb.GetMgoConn()
+	defer mongodb.DestoryMongoConn(sess)
 	it := sess.DB(DbName).C(Pushspace_project).Find(query).Select(map[string]interface{}{
 		"_id":       1,
 		"maxid":     1,
-		"topTypes":  1,
+		"toptypes":  1,
 		"userid":    1,
 		"projectid": 1,
 	}).Sort("-_id", "userid").Iter()
-	prevUserId := ""
 	for temp := make(map[string]interface{}); it.Next(&temp); {
 		*startId = util.BsonIdToSId(temp["_id"])
 		userId, _ := temp["userid"].(string)
@@ -188,14 +233,15 @@ func (p *ProjectPushJob) loadPushspace_project(batchIndex int, startId *string)
 		project_count[userId] = project_count[userId] + 1
 		datas[userId] = append(datas[userId], temp)
 		temp = make(map[string]interface{})
-		i++
-		if i >= Config.PushBatch && userId != prevUserId {
+		index++
+		if index >= Config.PushBatch && userId != prevUserId {
 			break
 		}
 		prevUserId = userId
 	}
-	logger.Info("第", batchIndex, "批关联项目加载结束", *startId)
-	return i, &datas
+	p.loadWait.Wait()
+	logger.Info("第", batchIndex, "批关联项目加载结束", index, *startId)
+	return index, &datas
 }
 
 //加载项目数据
@@ -203,11 +249,15 @@ func (p *ProjectPushJob) loadProject() *sync.Map {
 	logger.Info("开始加载项目。。。")
 	sess := mongoutil.GetMgoConn(Config.ProjectMongodb.Alias)
 	defer mongoutil.DestoryMongoConn(Config.ProjectMongodb.Alias, sess)
-	it := sess.DB(DbName).C(Projectset).Find(map[string]interface{}{
+	query := map[string]interface{}{
 		"pici": map[string]interface{}{
 			"$gte": ProjectTask.Pici,
 		},
-	}).Select(map[string]interface{}{
+	}
+	//query = map[string]interface{}{
+	//"_id": bson.ObjectIdHex("5da828a6e138234108b4c02e"),
+	//}
+	it := sess.DB(DbName).C(Projectset).Find(query).Select(map[string]interface{}{
 		"_id":  1,
 		"list": 1,
 	}).Sort("_id").Iter()

+ 1 - 1
src/jfw/modules/pushsubscribe/src/push/projecttask.json

@@ -1 +1 @@
-{"pici":0}
+{"pici":1573806347}

BIN
src/jfw/modules/pushsubscribe/src/push/push


+ 5 - 3
src/jfw/modules/pushsubscribe/src/push/pusher/normalpush.go

@@ -109,7 +109,7 @@ func (n *NormalPush) GetPushParam(mailPush bool, u *UserInfo, sl *SortList) *put
 		return pushParam
 	}
 	//推送记录id
-	pushParam.PushDate = putil.SaveToPushsubscribe(isVipUser, u.Id, &pushParam.Infos)
+	pushParam.PushDate = putil.SaveToPushsubscribe(isVipUser, false, u.Id, &pushParam.Infos)
 	if pushParam.PushDate > 0 {
 		redis.Put(Pushcache_2_a, dayCountKey, dayCount+pushParam.InfosLength, OneDaySecond)
 		redis.Put(Pushcache_2_a, onceCountKey, pushParam.InfosLength, OneDaySecond)
@@ -182,8 +182,10 @@ func (n *NormalPush) vipTempSave(u *UserInfo, pushParam *putil.PushParam) {
 				}
 				set["list"] = oldList
 			} else { //追加
-				upSet["$pushAll"] = map[string]interface{}{
-					"list": pushParam.Infos,
+				upSet["$push"] = map[string]interface{}{
+					"list": map[string]interface{}{
+						"$each": pushParam.Infos,
+					},
 				}
 			}
 		}

+ 1 - 1
src/jfw/modules/pushsubscribe/src/push/pusher/specialpush.go

@@ -51,7 +51,7 @@ func (s *SpecialPush) GetUserInfo(user map[string]interface{}) (*UserInfo, *puti
 	sess := mongodb.GetMgoConn()
 	defer mongodb.DestoryMongoConn(sess)
 	var u map[string]interface{}
-	sess.DB(DbName).C(User).FindId(bson.ObjectIdHex(userId)).One(&u)
+	sess.DB(DbName).C(User).FindId(bson.ObjectIdHex(userId)).Select(UserCollFields).One(&u)
 	if u == nil || len(u) == 0 {
 		logger.Error(userId, "没有找到该用户信息")
 		s.deletePushspaceVip(user)

+ 40 - 19
src/jfw/modules/pushsubscribe/src/push/util/util.go

@@ -27,17 +27,17 @@ func ToObjectIds(ids []string) []bson.ObjectId {
 	return _ids
 }
 func ToSortList(list interface{}) *SortList {
+	sl := make(SortList, 0)
 	if list == nil {
-		return nil
+		return &sl
 	}
 	b, err := json.Marshal(list)
 	if err != nil {
-		return nil
+		return &sl
 	}
-	sl := make(SortList, 0)
 	err = json.Unmarshal(b, &sl)
 	if err != nil {
-		return nil
+		return &sl
 	}
 	sort.Sort(sl)
 	return &sl
@@ -94,10 +94,10 @@ func NewUserInfoByPushSpaceColl(user map[string]interface{}) *UserInfo {
  */
 func GetPushDatas(taskType, batchIndex int, collection string, startId *string, query map[string]interface{}) (bool, *[]map[string]interface{}) {
 	logger.Info(taskType, collection, "开始加载第", batchIndex, "批用户", query)
-	sess := mongodb.GetMgoConn()
-	defer mongodb.DestoryMongoConn(sess)
 	users := []map[string]interface{}{}
 	i := 0
+	sess := mongodb.GetMgoConn()
+	defer mongodb.DestoryMongoConn(sess)
 	it := sess.DB(DbName).C(collection).Find(query).Sort("_id").Iter()
 	for temp := make(map[string]interface{}); it.Next(&temp); {
 		i++
@@ -144,7 +144,7 @@ func GetSubScopeClass(subscopeclass interface{}) string {
 }
 
 //推送记录保存到mysql
-func SaveToPushsubscribe(isVipUser bool, userId string, matchInfos *[]*MatchInfo) int64 {
+func SaveToPushsubscribe(isVipUser, isProjectInfo bool, userId string, matchInfos *[]*MatchInfo) int64 {
 	SavePool <- true
 	defer func() {
 		<-SavePool
@@ -153,24 +153,45 @@ func SaveToPushsubscribe(isVipUser bool, userId string, matchInfos *[]*MatchInfo
 		time.Sleep(time.Duration(Config.SaveSleep) * time.Millisecond)
 	}
 	unix := time.Now().Unix()
-	values := []interface{}{}
 	length := len(*matchInfos)
-	for i := length - 1; i >= 0; i-- {
-		matchInfo := (*matchInfos)[i]
-		values = append(values, userId, util.ObjToString((*matchInfo.Info)["_id"]), unix, strings.Join(matchInfo.Keys, " "), util.ObjToString((*matchInfo.Info)["area"]), util.ObjToString((*matchInfo.Info)["city"]))
-		if isVipUser {
-			values = append(values, util.ObjToString((*matchInfo.Info)["buyerclass"]), 1)
-		} else {
-			values = append(values, GetSubScopeClass((*matchInfo.Info)["s_subscopeclass"]))
-		}
-	}
 	fields := []string{"userid", "infoid", "date", "matchkeys", "area", "city"}
 	if isVipUser {
-		fields = append(fields, "buyerclass", "type")
+		fields = append(fields, "buyerclass")
+		if isProjectInfo {
+			fields = append(fields, "type")
+		}
 	} else {
 		fields = append(fields, "subscopeclass")
 	}
-	savecount := Mysql.InsertBatch("pushsubscribe", fields, values)
+	var savecount int64
+	i := length
+	for {
+		batchSize := 0
+		values := []interface{}{}
+		for i > 0 {
+			i--
+			matchInfo := (*matchInfos)[i]
+			values = append(values, userId, util.ObjToString((*matchInfo.Info)["_id"]), unix, strings.Join(matchInfo.Keys, " "), util.ObjToString((*matchInfo.Info)["area"]), util.ObjToString((*matchInfo.Info)["city"]))
+			if isVipUser {
+				values = append(values, util.ObjToString((*matchInfo.Info)["buyerclass"]))
+				if isProjectInfo {
+					values = append(values, 1)
+				}
+			} else {
+				values = append(values, GetSubScopeClass((*matchInfo.Info)["s_subscopeclass"]))
+			}
+			batchSize++
+			if batchSize == BigBulkSize {
+				break
+			}
+		}
+		if batchSize > 0 {
+			savecount += Mysql.InsertBatch("pushsubscribe", fields, values)
+		}
+		if batchSize < BigBulkSize {
+			break
+		}
+	}
 	if int(savecount) != length {
 		logger.Error(userId, "批量保存有问题", length, savecount)
 	}

+ 42 - 1
src/jfw/modules/subscribepay/src/entity/subscribeVip.go

@@ -58,7 +58,7 @@ type VipSimpleMsg struct {
 	Industry   []string                `json:"industry"`   //行业
 	Cyclecount int                     `json:"cyclecount"` //日期数量
 	Cycleunit  int                     `json:"cycleunit"`  //日期单位
-	OrderType  int                     `json:"ordertype"`  //类型 1:订单 2:续费 3:立即升级 4:下月升级 5:即将到期(升降级)
+	OrderType  int                     `json:"ordertype"`  //类型 1:订单 2:续费 3:立即升级 4:下月升级 5:即将到期(升降级)6:升级订单未生效再次升级
 }
 
 //购买内容
@@ -135,6 +135,8 @@ func (this *vipSubscribeStruct) PayCallBack(param *CallBackParam) bool {
 		flag = JyVipSubStruct.UpgradeSubVip(userid, vmsg, qutil.ObjToString((*orderdata)["vip_endtime"]), true)
 	} else if vmsg.OrderType == 4 || vmsg.OrderType == 5 { //下月升级
 		flag = JyVipSubStruct.UpgradeSubVip(userid, vmsg, qutil.ObjToString((*orderdata)["vip_endtime"]), false)
+	} else if vmsg.OrderType == 6 { //下月升级未生效再次升级
+		flag = JyVipSubStruct.UpgradeSubVipTwo(userid, vmsg, qutil.ObjToString((*orderdata)["vip_endtime"]), false)
 	}
 	//支付成功后 其他未支付vip订阅订单 变为已取消
 	if flag {
@@ -226,6 +228,45 @@ func (this *vipSubscribeStruct) UpgradeSubVip(userId string, vmsg VipSimpleMsg,
 	return false
 }
 
+//升级未生效再次升级
+func (this *vipSubscribeStruct) UpgradeSubVipTwo(userId string, vmsg VipSimpleMsg, end string, isNow bool) bool {
+	endTime, err := time.ParseInLocation(qutil.Date_Full_Layout, end, time.Local)
+	if err != nil {
+		log.Println("%s格式化日期出错%s\n", userId, endTime)
+		return false
+	}
+	buyset := JyVipSubStruct.NewBuySet(vmsg.Area, vmsg.Industry)
+
+	if !util.MQFW.UpdateById("user", userId,
+		bson.M{"$set": bson.M{
+			"l_vip_endtime":    endTime.Unix(),
+			"i_vip_expire_tip": 0,
+		}}) {
+		log.Printf("%s更新结束%d日期出错\n", userId, endTime.Unix())
+		return false
+	}
+
+	if util.MQFW.Update("vip_upgrade", bson.M{"s_userid": userId, "i_isvalid": 0},
+		bson.M{"$set": bson.M{
+			"i_isvalid": 1,
+		}}, false, false,
+	) {
+		effectTime := time.Date(time.Now().Year(), time.Now().Month()+1, 1, 0, 0, 0, 0, time.Local)
+		return util.MQFW.Save("vip_upgrade",
+			bson.M{
+				"s_userid":     userId,            //试用设置地区
+				"a_buyerclass": vmsg.Industry,     //试用设置行业
+				"o_area":       vmsg.Area,         //购买内容 城市、省份、行业数量
+				"l_validtime":  effectTime.Unix(), //生效时间
+				"l_createtime": time.Now().Unix(), //入库时间
+				"o_buyset":     buyset,            //购买内容数量
+				"i_isvalid":    0,                 //是否已经生效 0-未生效
+			}) != ""
+	} else {
+		return false
+	}
+}
+
 //根据行业和地区 返回*SubvipBuySet
 func (this *vipSubscribeStruct) NewBuySet(area *map[string]interface{}, industry []string) *SubvipBuySet {
 	buyset := SubvipBuySet{}

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

@@ -30,6 +30,7 @@ type OrderListDetails struct {
 	checkMailCodeVerify xweb.Mapper `xweb:"/orderListDetails/checkMailCodeVerify"` //验证码
 	emailOperation      xweb.Mapper `xweb:"/orderListDetails/emailOperation"`      //查看邮箱
 	isVip               xweb.Mapper `xweb:"/orderListDetails/isVip"`
+	getVipOrderInfo     xweb.Mapper `xweb:"/orderListDetails/getVipOrderInfo"` //再次购买 回显
 }
 
 var (
@@ -360,6 +361,62 @@ func (o *OrderListDetails) IsVip() {
 	})
 }
 
+//获取购买订阅相关信息
+func (o *OrderListDetails) GetVipOrderInfo() {
+	userId := qutil.ObjToString(o.GetSession("userId"))
+	order_code := o.GetString("orderCode")
+	queryMap := map[string]interface{}{
+		"user_id":    userId,
+		"order_code": order_code,
+	}
+	inf := map[string]interface{}{}
+	company, timeSelect, year, month := 0, 0, 0, 0
+	filter := util.Mysql.FindOne(tableName_order, queryMap, "filter,vip_starttime,vip_endtime", "")
+	if filter != nil {
+		info := qutil.ObjToMap(filter)
+		inf = *qutil.ObjToMap((*info)["filter"])
+		vip_starttime := qutil.ObjToString((*info)["vip_starttime"])
+		vip_endtime := qutil.ObjToString((*info)["vip_endtime"])
+		if vip_starttime != "" && vip_endtime != "" {
+			//计算周期时间
+			vip_starttime_stamp, _ := time.ParseInLocation(qutil.Date_Full_Layout, vip_starttime, time.Local)
+			vip_endtime_stamp, _ := time.ParseInLocation(qutil.Date_Full_Layout, vip_endtime, time.Local)
+			start_year := time.Unix(qutil.Int64All(vip_starttime_stamp.Unix()), 0).Year()
+			end_year := time.Unix(qutil.Int64All(vip_endtime_stamp.Unix()), 0).Year()
+			start_month := int(time.Unix(qutil.Int64All(vip_starttime_stamp.Unix()), 0).Month())
+			end_month := int(time.Unix(qutil.Int64All(vip_endtime_stamp.Unix()), 0).Month())
+			if end_year > start_year {
+				if end_month > start_month {
+					year = end_year - start_year
+					month = end_month - start_month
+				} else {
+					year = end_year - start_year - 1
+					month = 12 + end_month - start_month
+					if month == 12 {
+						year++
+						month = 0
+					}
+				}
+			} else if end_year == start_year {
+				month = end_month - start_month
+			}
+			//company 1:年 2:月
+			if year == 0 && month > 0 {
+				company, timeSelect = 2, month
+			} else if year > 0 && month > 0 {
+				company, timeSelect = 2, (12*year + month)
+			} else if year > 0 && month == 0 {
+				company, timeSelect = 1, year
+			}
+		}
+	}
+	o.ServeJson(map[string]interface{}{
+		"data":       inf,
+		"company":    company,
+		"timeSelect": timeSelect,
+	})
+}
+
 func (o *OrderListDetails) SetRes(res []map[string]interface{}, queryM map[string]interface{}) {
 	//获取最后一次购买的vip订单
 	queryM["product_type"] = "VIP订阅"

+ 10 - 7
src/jfw/modules/subscribepay/src/service/vipRenewUpgrade.go

@@ -43,14 +43,13 @@ func (this *RenewUpgrade) GetBuyMsg() {
 		end := time.Unix(endtime, 0).Format("2006-01-02")
 		now := time.Unix(time.Now().Unix(), 0).Format("2006-01-02")
 		vipStatus := (*data)["i_vip_status"]
+		isvalidOk := true
 
-		str, oks := util.MQFW.FindOne("vip_upgrade", bson.M{"s_userid": userId})
+		str, oks := util.MQFW.FindOne("vip_upgrade", bson.M{"s_userid": userId, "i_isvalid": 0})
 		if oks && len(*str) > 0 && *str != nil {
-			isvalid := qutil.IntAll((*str)["i_isvalid"])
-			if isvalid == 0 {
-				area = (*str)["o_area"]
-				buyerclass = (*str)["a_buyerclass"]
-			}
+			area = (*str)["o_area"]
+			buyerclass = (*str)["a_buyerclass"]
+			isvalidOk = false
 		}
 
 		dataArr := map[string]interface{}{
@@ -64,6 +63,7 @@ func (this *RenewUpgrade) GetBuyMsg() {
 			"end":        end,
 			"now":        now,
 			"vipStatus":  vipStatus,
+			"isvalidOk":  isvalidOk,
 		}
 		this.ServeJson(dataArr)
 	}
@@ -82,6 +82,7 @@ func (this *RenewUpgrade) RenewUpgradeCreateOrder() {
 	pay_source := this.GetString("pay_source")                     //类型  续费-Renew or 升级-Upgrade
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	openId := qutil.ObjToString(this.GetSession("s_m_openid"))
+	isvalidOk, _ := this.GetBool("isvalidOk")
 	r := func() *entity.FuncResult {
 		now := time.Now()
 		//数据校验
@@ -128,7 +129,9 @@ func (this *RenewUpgrade) RenewUpgradeCreateOrder() {
 				orderType = 4
 				//				startTime = time.Date(time.Now().Year(), time.Now().Month()+1, 1, 0, 0, 0, 0, time.Local)
 			}
-
+			if !isvalidOk {
+				orderType = 6
+			}
 		} else { //续费时间
 			orderType = 2 //续费操作
 			startTime = endTime

+ 1 - 0
src/jfw/modules/subscribepay/src/timetask/timetask.go

@@ -97,6 +97,7 @@ func checkIsExpire() {
 					"$set": map[string]interface{}{
 						"i_vip_status":     -i_vip_status,
 						"i_vip_expire_tip": 2,
+						"i_vip_subtips":    0,
 					},
 				})
 				delSess := util.MQFW.GetMgoConn()

+ 1 - 1
src/web/templates/weixin/email/bind_email.html

@@ -121,7 +121,7 @@
 								if(data.success){
 									if ($("#bindBtn").text()=="确定"){	//更改绑定
 										sessionStorage.removeItem("send_myemail_"+{{.T.userId}});
-										window.location.replace("/jyapp/front/myorder/setSuccess?name=changeEmail"); 
+										window.location.replace("/front/wxMyOrder/setSuccess?name=changeEmail"); 
 									}else{
 										sessionStorage.removeItem("send_myemail_"+{{.T.userId}});
 										if((param="invoice")&&(orderCode!=null)){

+ 1 - 1
src/web/templates/weixin/email/unbind_email.html

@@ -9,7 +9,7 @@
 		<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>   
 	</head>
 	<body>
-		<div class="unbind_email">
			<div class="input_box mgT26">
				<label>邮箱</label>
				<input type="email" name="email" id="" value="{{.T.text_email}}" readonly="readonly"/>
			</div>
			<button type="button" class="common_btn choose_email">更换邮箱</button>
			<p class="text-algin">
				<a href="javascript:;" class="unbind">解绑</a>
			</p>
			
			<!-- 更换邮箱弹框 -->
			<div class="dialog_confirm" id="choose_email_dialog" style="display: none;">
				<div class="mask"></div>
				<div class="dialog">
					<div class="dialog_hd"><strong>确定更换邮箱</strong></div>
					<div class="dialog_bd">{{.T.text_email}}</div>
					<div class="dialog_ft">
						<a href="javascript:;" class="btn_dialog default" id="cancel_choose">取消</a>
						<a href="javascript:;" class="btn_dialog primary" id="sure_choose">确定</a>
					</div>
				</div>
			</div>
			<!-- 解绑邮箱弹框 -->
			<div class="dialog_confirm" id="unbind_email_dialog" style="display: none;">
				<div class="mask"></div>
				<div class="dialog">
					<div class="dialog_hd"><strong>确定解绑邮箱</strong></div>
					<div class="dialog_bd" style="color: #888;">{{.T.text_email}}</div>
					<div class="dialog_ft">
						<a href="javascript:;" class="btn_dialog default" id="cancel_unbind">取消</a>
						<a href="javascript:;" class="btn_dialog primary" id="sure_unbind">确定</a>
					</div>
				</div>
			</div>
		</div>
		<script src="{{Msg "seo" "cdn"}}/wxmyemail/js/zepto.js"></script>
		<script>
+		<div class="unbind_email">
			<div class="input_box mgT26">
				<label>邮箱</label>
				<input type="email" name="email" id="" value="{{.T.text_email}}" readonly="readonly" unselectable="on" onfocus="this.blur()" style="-webkit-user-select :none"/>
			</div>
			<button type="button" class="common_btn choose_email">更换邮箱</button>
			<p class="text-algin">
				<a href="javascript:;" class="unbind">解绑</a>
			</p>
			
			<!-- 更换邮箱弹框 -->
			<div class="dialog_confirm" id="choose_email_dialog" style="display: none;">
				<div class="mask"></div>
				<div class="dialog">
					<div class="dialog_hd"><strong>确定更换邮箱</strong></div>
					<div class="dialog_bd">{{.T.text_email}}</div>
					<div class="dialog_ft">
						<a href="javascript:;" class="btn_dialog default" id="cancel_choose">取消</a>
						<a href="javascript:;" class="btn_dialog primary" id="sure_choose">确定</a>
					</div>
				</div>
			</div>
			<!-- 解绑邮箱弹框 -->
			<div class="dialog_confirm" id="unbind_email_dialog" style="display: none;">
				<div class="mask"></div>
				<div class="dialog">
					<div class="dialog_hd"><strong>确定解绑邮箱</strong></div>
					<div class="dialog_bd" style="color: #888;">{{.T.text_email}}</div>
					<div class="dialog_ft">
						<a href="javascript:;" class="btn_dialog default" id="cancel_unbind">取消</a>
						<a href="javascript:;" class="btn_dialog primary" id="sure_unbind">确定</a>
					</div>
				</div>
			</div>
		</div>
		<script src="{{Msg "seo" "cdn"}}/wxmyemail/js/zepto.js"></script>
		<script>
 			initShare({{.T.signature}},{{.T.openid}},2,"jy_wxmyorder",{{.T.nickname}},{{.T.avatar}});
			$(function(){
				/* 更换邮箱 */
				$('.choose_email').on('click',() =>{
 					$('#choose_email_dialog').show(400);
 					$("#cancel_choose").on('click',() =>{

+ 5 - 25
src/web/templates/weixin/vipsubscribe/choose_area_upgrade.html

@@ -475,7 +475,6 @@
             if (province == $.trim($(dom).text())) {
               $(".checkbox.other").attr("checked", false); //取消全国选中
               $(dom).children('.checkbox').attr({"checked": true,"disabled":!canClick});//选中此省份
-              $(this).parent(".tab:not(.municipality)").next().slideDown(500);
               if(canClick){
               	$(dom).parents().siblings('.tab_content').find(".city").addClass("active").attr({"disabled":!canClick});
               }else{
@@ -490,7 +489,6 @@
 	            	$('.tab_content .city').each(function(){
 	            		$(this).attr("disabled",!canClick);
 	            	});
-	            	$(".tips_d_money").hide();
 	            }
             }
           })
@@ -511,6 +509,7 @@
                             "checked": true,
                             "disabled": "disabled"
                         })
+                        $(dom).parents().slideDown(500);
                     }
                 }
             })
@@ -635,8 +634,6 @@
 //        console.log("this.selectObj:",this.selectObj)
           $('.result_name').append(html)
           AreaChoose.isOpen()
-          //刷新价格
-          AreaChoose.flushPrice();
         },
         submitArea:function(){
           let addCity = $('.result_name').text(); //新增的城市
@@ -658,14 +655,6 @@
         		$(".tips_btn .btns .save-btn").attr("disabled","disabled");
           }
         },
-        getNationwide:function(){/*默认选中全国 */
-//        $('.other').prop('checked', true);
-//        $('.tab_content').slideUp(500)
-//        $('.tab span i').css({
-//            "display":"inline-block",
-//            "transform":"rotate(0)"
-//        });
-        },
         isOpen:function(){
           let pHeight = $('.result_text').height()
           let minHeight = $('.result_text').css('min-height')
@@ -697,9 +686,9 @@
           }
         },
         inintClick:function(){
-        	$('.tab_content').each(function(){
-          		AreaChoose.showSelected(false);
-        	})
+//      	$('.tab_content').each(function(){
+//        		AreaChoose.showSelected(false);
+//      	})
           $('.detail').click(function () {  
                 $('.result_text').removeClass('line_two')
                 $(".result").css("padding-bottom","0.3rem")
@@ -838,14 +827,6 @@
                 $(".tips_btn .btns .reset-btn").attr("disabled","disabled");
             	$(".tips_btn .btns .save-btn").attr("disabled","disabled");
             }
-        },
-        flushPrice:function(){
-          if(this.vipSubisTrial){
-            $('.tips_d_money').css("display","none");
-          }else{
-            var price=getsubVipOrderPrice(this.selectObj,this.selectedIndustryArr,this.timeSelect);
-            $('.tips_d_money').text('¥'+price);
-          }
         }
       }
       
@@ -853,8 +834,7 @@
             AreaChoose.isOpen()
             AreaChoose.inintData(); //初始化 已选择和已购买数据
             AreaChoose.inintPage(); //初始化城市数据
-
-            AreaChoose.getNationwide();//默认选中全国 
+            AreaChoose.showSelected(false);
             AreaChoose.showSelected(true);//回显已选择
             /* 判断已购买的城市 在不在 全部城市里面,在,将按钮置灰,不可点击 */
 

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

@@ -21,7 +21,7 @@
         <script src="/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
         <script>
             function timer(obj,callback) { 
-                let t = 5; 
+                let t = 3; 
                 let timer = setInterval(() => {
                     t--;
                     obj.html(t)

+ 24 - 16
src/web/templates/weixin/vipsubscribe/renew_notice.html

@@ -50,8 +50,8 @@
                 </div>
             </div>
 			<div class="renew_box">
-                <button class="renew_service" onclick="window.location.href='/weixin/pay/renewPayPage'">续费</button>
-                <button class="free_service" onclick="window.location.href='/swordfish/historypush'">使用免费订阅</button>
+                <button style="display: none;" class="renew_service" onclick="window.location.href='/weixin/pay/renewPayPage'">续费</button>
+                <button style="display: none;" class="free_service" onclick="window.location.href='/swordfish/historypush'">使用免费订阅</button>
             </div>
 		</div>
 		<script src="/vipsubscribe/js/jquery-2.1.4.js"></script>
@@ -66,6 +66,7 @@
 //			console.log("orderId",orderId)
 //			console.log("starts",starts)
 //			console.log("ends",ends)
+			var nowTime = new Date().getTime();
 			if(orderId !== "" && orderId !== undefined){
 				$DoPost("/subscribepay/renewUpgrade/getExprie", {"orderId":orderId}, function (r) {
 					if(r){
@@ -77,6 +78,7 @@
 					    var areaHtml = "";
 					    var buyerclassArr = [];
 					    var buyerclassHtml = "";
+					    var endstime = new Date(ends).getTime();
 						if (area !== "" && area !== undefined){
 					    	for(var province in area){
 					    		var citys = area[province]
@@ -112,17 +114,22 @@
 					    	let dateHtml = start + " - " + end;
 					    	$(".date-span").text(dateHtml);
 					    }
+					    if(vipStatus === 2&&nowTime>endstime){
+							return   
+					    }
 					    if(exprie === "will"){
-					    	$(".free_service").hide();
-					    	$("#exprie").text("VIP订阅服务即将到期,请及时续费")
-					    	$(".recommend_title").text("以下区域、行业的订阅推送即将停止,为了不影响您的使用,请立即续费!")
+					    	let a = (endstime/1000) - (86400 * 3);
+					    	let b = nowTime/1000;
+					    	let c = endstime/1000;
+					    	if(a < b&&b < c){
+					    		$(".renew_service").show();
+						    	$("#exprie").text("VIP订阅服务即将到期,请及时续费")
+						    	$(".recommend_title").text("以下区域、行业的订阅推送即将停止,为了不影响您的使用,请立即续费!")
+					    	}
 					    }else{
+					    	$(".renew_service").show();
 					    	$(".free_service").show();
 					    }
-					    if(vipStatus === 2){
-					    	$(".free_service").hide();
-					    	$(".renew_service").hide();
-					    }
 					}
 				});
 			}else{
@@ -185,16 +192,17 @@
 					    	$(".date-span").text(dateHtml);
 					    }
 					    if(exprie === "will"){
-					    	$(".free_service").hide();
-					    	$("#exprie").text("VIP订阅服务即将到期,请及时续费")
-					    	$(".recommend_title").text("以下区域、行业的订阅推送即将停止,为了不影响您的使用,请立即续费!")
+					    	let a = (endstime/1000) - (86400 * 3)
+					    	let b = nowTime/1000
+					    	if(b > a){
+					    		$(".renew_service").show();
+						    	$("#exprie").text("VIP订阅服务即将到期,请及时续费")
+						    	$(".recommend_title").text("以下区域、行业的订阅推送即将停止,为了不影响您的使用,请立即续费!")
+					    	}
 					    }else{
+					    	$(".renew_service").show();
 					    	$(".free_service").show();
 					    }
-					    if(vipStatus === 2){
-					    	$(".free_service").hide();
-					    	$(".renew_service").hide();
-					    }
 					}
 				});	
 			}

+ 91 - 23
src/web/templates/weixin/vipsubscribe/renew_pay.html

@@ -28,10 +28,15 @@
 	}
 	.vip_update .fixed-bottom-box, .vip_renew .fixed-bottom-box {
 	    width: 100%;
-	    position: fixed;
+	    position: static;
 	    bottom: 0;
 	    left: 0;
 	}
+	.vip_update .choose_condition, .vip_renew .choose_condition {
+	    -webkit-overflow-scrolling: touch;
+	    height: 100%;
+	}
+	
 </style>
 <body class="no-touch">
 	<script type="text/javascript">
@@ -298,6 +303,18 @@
 
         // 选择订阅周期
         $('.select_cycle > a').click(function () {
+        	// 当续费时间 + 当前已经买的时间超过36个月,给出提醒
+	    	if(nowUpgrade>=36){
+	    		var overtimeWarning = `最长订阅周期不可超过3年<br />当前订阅周期:${nowUpgrade}个月`
+		        weui.toast(overtimeWarning, {
+		            duration: 3000,
+		            className: 'custom-toast',
+		            callback: function() {
+		   
+		            }
+		        })
+		        return
+	    	}
             $('#time_cycle').show(200);
         })
         // 选择支付方式
@@ -365,6 +382,17 @@
                 currentNum = currentNum <= data.numboxMin ? data.numboxMin : currentNum - data
                     .numboxStep;
             }
+            // 当续费时间 + 当前已经买的时间超过36个月,给出提醒
+            if((currentNum+nowUpgrade)>36){
+            	var overtimeWarning = `最长订阅周期不可超过3年<br />当前订阅周期:${nowUpgrade}个月`
+		        weui.toast(overtimeWarning, {
+		            duration: 3000,
+		            className: 'custom-toast',
+		            callback: function() {
+		            }
+		        })
+		        return
+            }
             if (currentNum >= 10) {
             	$('.profit_tips').text("已选择"+currentNum+"个月,建议“按年订阅”更划算哦~");
                 $('.profit_tips').show();
@@ -407,6 +435,16 @@
         $('#number_box_year').on('click', 'span', function (e) {
             console.log(e.target.dataset.id)
             let id = e.target.dataset.id;
+            if((id*12+nowUpgrade)>36){
+            	var overtimeWarning = `最长订阅周期不可超过3年<br />当前订阅周期:${nowUpgrade}个月`
+		        weui.toast(overtimeWarning, {
+		            duration: 3000,
+		            className: 'custom-toast',
+		            callback: function() {
+		            }
+		        })
+		        return
+            }
             $('.profit_tips').hide()
             $('#number_box_month').removeClass('active');
             $(this).addClass('active').siblings().removeClass('active')
@@ -479,8 +517,46 @@
             })
             $(".finally_price").html($(".computed_price").html());
             sessionStorage.renew_finally_price = $(".finally_price").html();
-            $(".save_renew").removeAttr("disabled");
+            var buyCheck = true;
+			if(sessionStorage.buyChecks!==undefined&&sessionStorage.buyChecks!==""){
+				let bcheck = sessionStorage.buyChecks;
+				if(bcheck === "true"){
+					buyCheck = true;
+				}else{
+					buyCheck = false;
+				}
+			}
+			if(buyCheck){
+				$(".save_renew").removeAttr("disabled");
+			}
         });
+        //
+        $("#buy").on("click", function(){
+        	if(!$("#buy").prop("checked")){
+        		$("#buy").attr("checked", false);
+        		sessionStorage.buyChecks = false;
+        		if($(".save_renew").attr("disabled")!=="undefined"){
+        			$(".save_renew").attr("disabled",true);
+        		}
+        	}else{
+        		$("#buy").attr("checked", true);
+        		sessionStorage.buyChecks = true;
+        		if(sessionStorage.renew_cycleunit!==undefined&&sessionStorage.renew_cycleunit!==""){
+        			$(".save_renew").removeAttr("disabled");
+        		}
+        	}
+        });
+        //
+        if(sessionStorage.buyChecks!==undefined&&sessionStorage.buyChecks!==""){
+        	let buyCheck = sessionStorage.buyChecks;
+        	let bCheck = "";
+        	if(buyCheck === "true"){
+        		bCheck = true;
+        	}else{
+        		bCheck = false;
+        	}
+        	$("#buy").prop("checked", bCheck);
+        }
         
         //
         var area = "";
@@ -692,30 +768,21 @@
 	 	}
 	    if(sessionStorage.renew_finally_price!==""&&sessionStorage.renew_finally_price!==undefined){
 	    	$(".finally_price").html(sessionStorage.renew_finally_price);
-	    	$(".save_renew").removeAttr("disabled");
+	    	var buyCheck = true;
+			if(sessionStorage.buyChecks!==undefined&&sessionStorage.buyChecks!==""){
+				let bcheck = sessionStorage.buyChecks;
+				if(bcheck === "true"){
+					buyCheck = true;
+				}else{
+					buyCheck = false;
+				}
+			}
+			if(buyCheck){
+				$(".save_renew").removeAttr("disabled");
+			}
 	    }
 	    //
 	    $(".save_renew").on("click", function(){
-	    	console.log(nowUpgrade)
-//	    	let times = $('.choose_item.select_cycle .info').attr('placeholder');
-	    	let times = $('.choose_item.select_cycle .info').val();
-	        if (times.match("月") !== null){
-	        	times = Number(times.replace("个月",""));
-	        }else if (times.match("年") !== null){
-	        	times = 12 * Number(times.replace("年",""));
-	        }
-	    	// 当续费时间 + 当前已经买的时间超过36个月,给出提醒
-	    	if(times > 36-nowUpgrade){
-	    		var overtimeWarning = `最长订阅周期不可超过3年<br />当前订阅周期:${nowUpgrade}个月`
-		        weui.toast(overtimeWarning, {
-		            duration: 3000,
-		            className: 'custom-toast',
-		            callback: function() {
-		   
-		            }
-		        })
-		        return
-	    	}
 	        $(".save_renew").attr("disabled","disabled");
 	    	var param = {
 	    		"area": JSON.stringify(area),
@@ -741,6 +808,7 @@
 	    	sessionStorage.removeItem("renew_cycleunit");
 	    	sessionStorage.removeItem("renew_price");
 	    	sessionStorage.removeItem("renew_finally_price");
+	    	sessionStorage.removeItem("buyChecks");
 	    }
 	    
 	    //

+ 13 - 3
src/web/templates/weixin/vipsubscribe/trial_info.html

@@ -187,16 +187,26 @@
 
     // 解决移动端软键盘弹起遮挡输入框及ios下软键盘关闭后底部留白问题
     function scrollView(obj) {
-        var view_height = $(document.body).height();
+        var view_height = $(document.body).height()
 
         function change() {
             $(document.body).height(view_height)
         }
+
         change();
         window.addEventListener('resize', change);
-        $('.' + obj).on('blur', function () {
+        $('.' + obj).on('blur', function (e) {
             setTimeout(() => {
-                if (!document.activeElement.className.includes(obj)) {
+                let dom = document.activeElement;
+                // console.dir(dom);
+                if (dom.className.includes(obj)) {
+                    let u = navigator.userAgent, app = navigator.appVersion;
+                    let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1;
+                    if (isAndroid) {
+                        dom.scrollIntoView({"block": "center"})
+                    }
+
+                } else {
                     window.scroll(0, 0)
                 }
             }, 50)

+ 2 - 1
src/web/templates/weixin/vipsubscribe/vip_order_detail.html

@@ -473,7 +473,8 @@ try{
 	        	label: '去设置',
 	        	type: 'primary',
 	        	onClick: function () {
-	        		window.location.replace("/front/wxMyOrder/myEmail?name=invoice&orderCode="+orderCode);
+	        		//window.location.replace("/front/wxMyOrder/myEmail?name=invoice&orderCode="+orderCode);
+	        		window.location.href="/front/wxMyOrder/myEmail?name=invoice&orderCode="+orderCode;
 	        	}
 	        },
 	        {

+ 40 - 15
src/web/templates/weixin/vipsubscribe/vip_purchase.html

@@ -261,6 +261,7 @@
     <script src="/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
     <script src="/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
     <script src="/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
+    {{include "/common/weixin.html"}}
     <script>
         $(window).bind("pageshow", function (event) {
             if (event.originalEvent.persisted) {
@@ -369,22 +370,26 @@
                     {{end}}
                     {{if .T.again}}    //再次购买回显
                     {{if eq .T.again 1 }}
+                    var orderCode=getParam("orderCode")
                     if (!sessionStorage.getItem("vipSubSelectArea") || !sessionStorage.getItem("vipSubSelectIndustry")) {
-                        $DoPost("/subscribepay/editSub/getSubBuyMsg", {}, function (r) {
-                            if (r.success) {
-                                if (!$.isEmptyObject(r.data.area)) {
-                                    purchase.areaSelect = r.data.area
-                                } else {
-                                    purchase.areaSelect = {"全国": []}
-                                }
-                                if (r.data.industry.length != 0) {
-                                    purchase.industrySelect = r.data.industry
-                                } else {
-                                    purchase.industrySelect = ["全部行业"]
-                                }
-                                sessionStorage.setItem("vipSubSelectArea", JSON.stringify(purchase.areaSelect));
-                                sessionStorage.setItem("vipSubSelectIndustry", JSON.stringify(purchase.industrySelect));
+                      $DoPost("/subscribepay/orderListDetails/getVipOrderInfo", {"orderCode":orderCode}, function (r) {
+                           if (!$.isEmptyObject(r.data.area)) {
+                                purchase.areaSelect = r.data.area
+                            } else {
+                                purchase.areaSelect = {"全国": []}
+                            }
+                            if (r.data.industry.length != 0) {
+                                purchase.industrySelect = r.data.industry
+                            } else {
+                                purchase.industrySelect = ["全部行业"]
                             }
+                            if (r.timeSelect!=undefined&&r.company!=undefined){
+                           		purchase.timeSelect=[r.timeSelect,r.company];
+                            }
+                            sessionStorage.setItem("vipSubSelectArea", JSON.stringify(purchase.areaSelect));
+                            sessionStorage.setItem("vipSubSelectIndustry", JSON.stringify(purchase.industrySelect));
+                            sessionStorage.setItem("vipSubSelectTime", JSON.stringify(purchase.timeSelect));
+                          
                         }, false)
                     }
                     {{end}}
@@ -743,9 +748,29 @@
             sessionStorage.removeItem("vipSubSelectTime");
             sessionStorage.removeItem("vipSub_read");
         }
+        
+        /******* 获取url参数(正则)********/
+		function getParam(name) {
+		    var search = document.location.search;
+		    // alert(search);
+		    var pattern = new RegExp("[?&]" + name + "\=([^&]+)", "g");
+		    var matcher = pattern.exec(search);
+		    var items = null;
+		    if (null != matcher) {
+		        try {
+		            items = decodeURIComponent(decodeURIComponent(matcher[1]));
+		        } catch (e) {
+		            try {
+		                items = decodeURIComponent(matcher[1]);
+		            } catch (e) {
+		                items = matcher[1];
+		            }
+		        }
+		    }
+		    return items;
+		};
 
     </script>
-    {{include "/common/weixin.html"}}
 </div>
 </body>
 

+ 63 - 7
src/web/templates/weixin/vipsubscribe/vip_upgrade.html

@@ -29,10 +29,15 @@
 	}
 	.vip_update .fixed-bottom-box, .vip_renew .fixed-bottom-box {
 	    width: 100%;
-	    position: fixed;
+	    position: static;
 	    bottom: 0;
 	    left: 0;
 	}
+	.vip_update .choose_condition, .vip_renew .choose_condition {
+	    -webkit-overflow-scrolling: touch;
+	    height: 100%;
+	}
+	
 </style>
 <body class="no-touch">
 	<script type="text/javascript">
@@ -141,7 +146,7 @@
             <div class="weui-cells weui-cells_checkbox radio-form">
                 <label class="weui-cell weui-check__label" for="buy">
                     <div class="weui-cell__hd">
-                        <input type="checkbox" class="weui-check" name="buyService" id="buy" checked />
+                        <input type="checkbox" class="weui-check" checked="checked" name="buyService" id="buy"/>
                         <i class="weui-icon-checked"></i>
                     </div>
                     <div class="weui-cell__bd read">
@@ -248,7 +253,7 @@
                 </div>
                 <div class="box_bd">
                     <div class="weui-cells weui-cells_checkbox choose-form">
-                        <label class="weui-cell weui-check__label now_label" for="nowTime">
+                        <label class="weui-cell weui-check__label now_label effect_one" for="nowTime">
                             <div class="weui-cell__bd read">
                                 <p class="effective_name now">立即生效,需支付当月费用差价</p>
                                 <p class="effective_time nownow">2019.08.23 - 2020.06.06</p>
@@ -460,6 +465,15 @@
 				$(".effect_next").hide();
 //				$(".box").css("height", "2.7rem");
 			}
+			if(!isvalidOk){
+				console.log(isvalidOk)
+				$(".effect_one").hide();
+				$(".effective_name").each(function(){
+		    		if($(this).text() === effectiveNames){
+		    			$(this).parent().next().find("input").prop("checked", true);
+		    		}
+		    	})
+			}
         })
         //
 		var effectiveName = new Date().getMonth()+2;
@@ -718,16 +732,30 @@
         //
         $("#buy").on("click", function(){
         	if(!$("#buy").prop("checked")){
+        		$("#buy").attr("checked", false);
+        		sessionStorage.buyCheck = false;
         		if($(".save_upgrade").attr("disabled")!=="undefined"){
         			$(".save_upgrade").attr("disabled",true);
         		}
         	}else{
+        		$("#buy").attr("checked", true);
+        		sessionStorage.buyCheck = true;
         		if(sessionStorage.vipSubSelectAreaUpgrade!==undefined || sessionStorage.vipSubSelectIndustryUpgrade!==undefined || (sessionStorage.upgrade_cycleunit!==undefined&&sessionStorage.upgrade_cycleunit!=="")){
         			$(".save_upgrade").removeAttr("disabled");
         		}
         	}
         });
         //
+        if(sessionStorage.buyCheck!==undefined&&sessionStorage.buyCheck!==""){
+        	let buyCheck = sessionStorage.buyCheck;
+        	let bCheck = "";
+        	if(buyCheck === "true"){
+        		bCheck = true;
+        	}else{
+        		bCheck = false;
+        	}
+        	$("#buy").prop("checked", bCheck);
+        }
         //新增区域
 	    if(sessionStorage.vipSubSelectAreaUpgrade!==""&&sessionStorage.vipSubSelectAreaUpgrade!==undefined){
 			var vipSubSelectArea = JSON.parse(sessionStorage.vipSubSelectAreaUpgrade);
@@ -858,6 +886,7 @@
 	    var starts = "";
 	    var endTime = "";
 	    var ends = "";
+	    var isvalidOk = "";
 	 	$DoPost("/subscribepay/renewUpgrade/getBuyMsg", {}, function (data) {
             if (data) {
                 area = data.area;
@@ -868,6 +897,7 @@
 			    starts = data.starttime;
 			    endTime = data.end;
 			    ends = data.endtime;
+			    isvalidOk = data.isvalidOk;
 			    //
 			    var areaArr = [];
 			    var areaHtml = "";
@@ -910,7 +940,15 @@
 			    var nowDate = data.now.replace(/-/g, ".");
 			    var a = nowDate+ " - " +endTime;
 			    $(".nownow").text(nowDate+ " - " +endTime.replace(/-/g, "."))
-			    
+			    //
+			    if(!isvalidOk){
+			    	var effectiveName = new Date().getMonth()+2;
+		    		if(effectiveName > 12){
+		    			effectiveName = effectiveName - 12
+		    		}
+		    		effectiveHtml = effectiveName+"月1日生效";
+		    		$("#effect_date_name").text(effectiveHtml);
+			    }
 			}
         },false);
         //
@@ -939,6 +977,15 @@
 			var oldPrice = "";
 			var price = "";
 			var effect = "";
+			var buyCheck = true;
+			if(sessionStorage.buyCheck!==undefined&&sessionStorage.buyCheck!==""){
+				let bcheck = sessionStorage.buyCheck;
+				if(bcheck === "true"){
+					buyCheck = true;
+				}else{
+					buyCheck = false;
+				}
+			}
 			if(sessionStorage.vipSubSelectAreaUpgrade!==""&&sessionStorage.vipSubSelectAreaUpgrade!==undefined){
 				var vipArea = JSON.parse(sessionStorage.vipSubSelectAreaUpgrade);
 				if(area !== ""&&area !== undefined){
@@ -979,7 +1026,10 @@
 						}
 					}
 				}
-				$(".save_upgrade").removeAttr("disabled");
+				console.log($(".save_upgrade").attr("disabled"))
+				if(buyCheck){
+					$(".save_upgrade").removeAttr("disabled");
+				}
 			}else{
 				if(area !== ""&&area !== undefined){
 					for(let province in area){
@@ -1008,7 +1058,9 @@
 						}
 					}
 				}
-				$(".save_upgrade").removeAttr("disabled");
+				if(buyCheck){
+					$(".save_upgrade").removeAttr("disabled");
+				}
 			}else{
 				if(buyerclass!==""&&buyerclass!==undefined){
 					for(let i in buyerclass){
@@ -1174,7 +1226,9 @@
 			$(".finally_price").html("¥"+cPrice);
 			//
 			if (cPrice>0){
-				$(".save_upgrade").removeAttr('disabled');
+				if(buyCheck){
+					$(".save_upgrade").removeAttr("disabled");
+				}
 			}
         }
         FinallyPrice();
@@ -1234,6 +1288,7 @@
 	    		"pay_source" : "Upgrade",
 	    		"time": times,
 	    		"nowUp": Number(nowRenew),
+	    		"isvalidOk" : isvalidOk,
 	    	}
 	    	console.log(param)
 	    	$DoPost("/subscribepay/renewUpgrade/renewUpgradeCreateOrder",param,function(r){
@@ -1253,6 +1308,7 @@
 	    	sessionStorage.removeItem("vipSubSelectAreaUpgrade");
 	    	sessionStorage.removeItem("vipSubSelectIndustryUpgrade");
 	    	sessionStorage.removeItem("effectiveDate");
+	    	sessionStorage.removeItem("buyCheck");
 	    }
 	    
 	    //