Kaynağa Gözat

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

wangkaiyue 5 yıl önce
ebeveyn
işleme
26bca89f2a
55 değiştirilmiş dosya ile 2352 ekleme ve 1815 silme
  1. 1 0
      src/jfw/modules/app/src/app/front/shorturl.go
  2. 2 2
      src/jfw/modules/app/src/app/front/swordfish.go
  3. 26 26
      src/jfw/modules/app/src/web/staticres/jyapp/js/wxSupersearch.js
  4. 16 1
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/addition_exclusive_word.css
  5. 18 2
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/keyWord.css
  6. 2 2
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/subscribe_list.css
  7. 15 9
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/vip_index.css
  8. 42 25
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/additionWord.js
  9. 18 0
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/common.js
  10. 38 21
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/exclusiveWord.js
  11. 131 118
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/keyWord.js
  12. 11 0
      src/jfw/modules/app/src/web/templates/common/nnc.html
  13. 93 72
      src/jfw/modules/app/src/web/templates/vipsubscribe/additionWord.html
  14. 93 71
      src/jfw/modules/app/src/web/templates/vipsubscribe/exclusiveWord.html
  15. 254 206
      src/jfw/modules/app/src/web/templates/vipsubscribe/keyWord.html
  16. 17 12
      src/jfw/modules/app/src/web/templates/vipsubscribe/messageType.html
  17. 166 157
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_index.html
  18. 96 94
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_seniorset.html
  19. 28 25
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_viewPage.html
  20. 360 361
      src/jfw/modules/app/src/web/templates/weixin/historypush.html
  21. 2 2
      src/jfw/modules/app/src/web/templates/weixin/search/mainSearch.html
  22. 3 3
      src/jfw/modules/pushsubscribe/src/match/config.json
  23. 1 12
      src/jfw/modules/pushsubscribe/src/match/job/job.go
  24. 267 245
      src/jfw/modules/pushsubscribe/src/match/job/matchjob.go
  25. 7 2
      src/jfw/modules/pushsubscribe/src/match/job/timetask.go
  26. BIN
      src/jfw/modules/pushsubscribe/src/match/match
  27. 1 1
      src/jfw/modules/pushsubscribe/src/match/task.json
  28. 14 13
      src/jfw/modules/pushsubscribe/src/public/util.go
  29. 0 0
      src/jfw/modules/pushsubscribe/src/push/config.json
  30. 2 17
      src/jfw/modules/pushsubscribe/src/push/job/jobs.go
  31. 24 22
      src/jfw/modules/pushsubscribe/src/push/job/movejob.go
  32. 15 15
      src/jfw/modules/pushsubscribe/src/push/job/projectjob.go
  33. 8 7
      src/jfw/modules/pushsubscribe/src/push/job/pushjob.go
  34. BIN
      src/jfw/modules/pushsubscribe/src/push/push
  35. 15 11
      src/jfw/modules/pushsubscribe/src/push/pusher/specialpush.go
  36. 2 2
      src/jfw/modules/pushsubscribe/src/push/util/entity.go
  37. 0 0
      src/jfw/modules/subscribepay/src/dataexport.json
  38. 34 7
      src/jfw/modules/subscribepay/src/entity/dataexport.go
  39. 21 17
      src/jfw/modules/subscribepay/src/service/afterPay.go
  40. 1 1
      src/jfw/modules/subscribepay/src/service/commonAction.go
  41. 4 8
      src/jfw/modules/subscribepay/src/service/orderListDetails.go
  42. 5 4
      src/jfw/modules/subscribepay/src/service/payCallback.go
  43. 107 61
      src/jfw/modules/subscribepay/src/service/vipRenewUpgrade.go
  44. 7 3
      src/web/templates/weixin/dataExport/dataExport_invoiceSuccess.html
  45. 1 1
      src/web/templates/weixin/historypush.html
  46. 6 4
      src/web/templates/weixin/vipsubscribe/choose_area_upgrade.html
  47. 1 2
      src/web/templates/weixin/vipsubscribe/keyWord.html
  48. 4 1
      src/web/templates/weixin/vipsubscribe/messageType.html
  49. 29 19
      src/web/templates/weixin/vipsubscribe/renew_notice.html
  50. 1 1
      src/web/templates/weixin/vipsubscribe/renew_pay.html
  51. 3 8
      src/web/templates/weixin/vipsubscribe/vip_index.html
  52. 27 10
      src/web/templates/weixin/vipsubscribe/vip_order_detail.html
  53. 4 4
      src/web/templates/weixin/vipsubscribe/vip_purchase.html
  54. 309 107
      src/web/templates/weixin/vipsubscribe/vip_upgrade.html
  55. 0 1
      src/web/templates/weixin/vipsubscribe/vip_viewPage.html

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

@@ -10,6 +10,7 @@ import (
 	//"time"
 
 	"github.com/go-xweb/xweb"
+	"gopkg.in/mgo.v2/bson"
 )
 
 type Short struct {

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

@@ -520,8 +520,8 @@ func (m *Front) WxsearchlistPaging() {
 				}
 			}
 			arrs = append(arrs, searchvalue)
-			if len(arrs) > 5 {
-				arrs = arrs[1:6]
+			if len(arrs) > 10 {
+				arrs = arrs[1:11]
 			}
 			redis.Del("other", "s_"+userid.(string))
 			redis.Put("other", "s_"+userid.(string), strings.Join(arrs, ","), -1)

+ 26 - 26
src/jfw/modules/app/src/web/staticres/jyapp/js/wxSupersearch.js

@@ -242,7 +242,7 @@ var SuperSearch = {
 			}
 			$("#supersearchPage .inputDiv .history").find("li").remove();
 			$("#supersearchPage .inputDiv .inpTitle_history").addClass("hidden");
-			$("#supersearchPage .inputDiv .inpTitle_msgset").css("border-top-right-radius","5px").css("border-top-left-radius","5px");
+//			$("#supersearchPage .inputDiv .inpTitle_msgset").css("border-top-right-radius","5px").css("border-top-left-radius","5px");
 		});
 		////
 		SuperSearch.njTipEasyPopup = new EasyPopup("nijianTip");
@@ -1364,37 +1364,37 @@ var SuperSearch = {
 			$("#supersearchPage .inputDiv .inpTitle_history").removeClass("hidden");
 		}
 		//订阅信息
-		msgsetHtml="";
-		if(msgset != null){
-			for(var n=0;n<msgset.length;n++){
-				var  mymsgset="";
-				for(var m=0;m<msgset[n].length;m++){
-					mymsgset+=msgset[n][m]+" "
-				}
-				var mt = $.trim(mymsgset);
-				if(mt == ""){
-					continue
-				}
-				msgsetHtml+="<li>"+mt+"</li>";
-			}
-		}
-		$("#supersearchPage .inputDiv .myMsgset").html(msgsetHtml);
-		if(msgsetHtml == ""){
-			$("#supersearchPage .inputDiv .inpTitle_msgset").addClass("hidden");
-		}else{
-			$("#supersearchPage .inputDiv .inpTitle_msgset").removeClass("hidden");
-		}
+//		msgsetHtml="";
+//		if(msgset != null){
+//			for(var n=0;n<msgset.length;n++){
+//				var  mymsgset="";
+//				for(var m=0;m<msgset[n].length;m++){
+//					mymsgset+=msgset[n][m]+" "
+//				}
+//				var mt = $.trim(mymsgset);
+//				if(mt == ""){
+//					continue
+//				}
+//				msgsetHtml+="<li>"+mt+"</li>";
+//			}
+//		}
+//		$("#supersearchPage .inputDiv .myMsgset").html(msgsetHtml);
+//		if(msgsetHtml == ""){
+//			$("#supersearchPage .inputDiv .inpTitle_msgset").addClass("hidden");
+//		}else{
+//			$("#supersearchPage .inputDiv .inpTitle_msgset").removeClass("hidden");
+//		}
 		//样式控制
 		if(historyHtml != ""){
 			$("#supersearchPage .inputDiv .inpTitle_history").css({"border-top-right-radius":"5px","border-top-left-radius":"5px"});
-		}else if(historyHtml == "" && msgsetHtml != ""){
-			$("#supersearchPage .inputDiv .inpTitle_msgset").css({"border-top-right-radius":"5px","border-top-left-radius":"5px"});
+//		}else if(historyHtml == "" && msgsetHtml != ""){
+//			$("#supersearchPage .inputDiv .inpTitle_msgset").css({"border-top-right-radius":"5px","border-top-left-radius":"5px"});
 		}
 		//
-		if(historyHtml == "" && msgsetHtml == ""){
+		if(historyHtml == ""){
 			$("#supersearchPage .inputDiv").css("border-top-width","0px");
-		}else{
-			$("#supersearchPage .inputDiv").css("border-top-width","1px");
+//		}else{
+//			$("#supersearchPage .inputDiv").css("border-top-width","1px");
 		}
 		//		
 		var len=$("#supersearchPage .inputDiv ul li").length;

+ 16 - 1
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/addition_exclusive_word.css

@@ -61,7 +61,7 @@
 
 .exclusive-word .enter .btn button,
 .addition-word .enter .btn button {
-  width: 100%;
+  width: 50%;
   height: 0.94rem;
   background: #2cb7ca;
   color: #fff;
@@ -73,6 +73,7 @@
 .addition-word .showKeyWord ul li {
   margin-bottom: 0.16rem;
   overflow: hidden;
+width: 100%;
 }
 
 .exclusive-word .showKeyWord ul li .one,
@@ -345,4 +346,18 @@
     left: 50%;
     margin-left: -25px;
     width: 50px;
+}
+.addkeyWord{
+	margin-bottom:.2rem;
+}
+[type='text'] {
+	border: 0px solid #ccc; 
+/*    border-radius: 4px; 
+    padding-left: 10px; 
+    padding-right: 0px;*/
+}
+.btn{
+	background: rgba(245,244,249,1);
+	padding:0px;
+	border:0px;
 }

+ 18 - 2
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/keyWord.css

@@ -3,7 +3,7 @@
   flex-direction: column;
   justify-content: space-between;
   width: 100%;
-  height: 100vh;
+/*  height: 100vh;*/
   overflow: hidden;
 }
 
@@ -90,7 +90,7 @@
 }
 
 .keyWord .add-keyword-container .content .enter .btn button {
-  width: 100%;
+  width: 50%;
   height: 0.94rem;
   background: #2cb7ca;
   color: #fff;
@@ -304,6 +304,8 @@
   background-color: #fff;
   font-size: .28rem;
   color: #888;
+    position: fixed;
+    bottom: 0px;
 }
 
 .keyWord .problem {
@@ -468,4 +470,18 @@
     left: 50%;
     margin-left: -25px;
     width: 50px;
+}
+.enter.addkeyWord{
+	margin-bottom: .2rem;
+}
+[type='text'] {
+	border: 0px solid #ccc; 
+/*    border-radius: 4px; 
+    padding-left: 10px; 
+    padding-right: 0px;*/
+}
+.btn{
+	background: rgba(245,244,249,1);
+	padding:0px;
+	border:0px;
 }

+ 2 - 2
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/subscribe_list.css

@@ -533,8 +533,8 @@ text-decoration: none;
     -webkit-box-orient: vertical;
 }
 .overClass{
-	overflow: hidden;
-	height:100vh;
+/*	overflow: hidden;
+	height:100vh;*/
 }
 .buyerclass {
     border: 1px solid #CFAD89;

+ 15 - 9
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/vip_index.css

@@ -409,12 +409,13 @@
   flex-direction: column;
   flex-wrap: nowrap;
   width: 100%;
-  height: 100vh;
+/*  height: 100vh;*/
   padding-top: constant(safe-area-inset-top);
   padding-top: env(safe-area-inset-top);
   padding-bottom: constant(safe-area-inset-bottom);
   padding-bottom: env(safe-area-inset-bottom);
   box-sizing: border-box;
+margin-bottom:.5rem;
 }
 
 .vip_index .header {
@@ -618,14 +619,14 @@
 }
 
 .vip_index .content .subscribe_info .s_info_top .s_i_item .expand-box .icon-arrow {
-  position: absolute;
-  width: 1.14rem;
-  bottom: 0;
-  right: .1rem;
-  text-align: right;
-  font-size: .26rem;
-  background: linear-gradient(90deg, rgba(255, 218, 177, 0) 0%, #ffdab1 100%);
-  transition: height 0.5s ease;
+    position: absolute;
+    width: 1.14rem;
+    bottom: -0.08rem;
+    right: .05rem;
+    text-align: right;
+    font-size: .26rem;
+    background: linear-gradient(90deg, rgba(255, 218, 177, 0) 0%, #ffdab1 100%);
+    transition: height 0.5s ease;
 }
 
 .vip_index .content .subscribe_info .s_info_top .s_i_item .expand-box .icon-arrow::before {
@@ -797,4 +798,9 @@ i.icon-wenhao{
   background: transparent;
   border: 1px solid white;
   border-radius: .32rem;
+}
+.footer{
+	position: fixed;
+    bottom: 0;
+    width: 100%;
 }

+ 42 - 25
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/additionWord.js

@@ -11,18 +11,21 @@ $(function(){
         var showKeyWordLength = $(".showKeyWord ul").find('li').length;
         if(showKeyWordLength === 0){
             $(".addkeyWord").show();
+            $('.addKeyWord').hide();
         } else {
             $(".addkeyWord").hide();
+            $('.addKeyWord').show();
         }
     }
     hasWords()
     
     // 添加按钮
     $(".addKeyWord i").on('click',function(){
-        $(".addkeyWord").show()
-        $(".addkeyWord input").focus()
-        $('.showKeyWord').find('.one').show()
-        $('.showKeyWord').find('.modify').hide()
+        $(".addkeyWord").show();
+        $(".addKeyWord").hide();
+        $(".addkeyWord input").focus();
+        $('.showKeyWord').find('.one').show();
+        $('.showKeyWord').find('.modify').hide();
     })
     // 输入框自适应高度
     $('textarea').each(function(i,dom){
@@ -35,8 +38,8 @@ $(function(){
     })
     // 添加keyWords检查输入框内是否有文字,如果有才能点击添加按钮
     $('.addkeyWord input.enterOne').on('input', function() {
-        var buttonDOM = $(this).siblings().find('button')[0]
-        if ($(this).val().length >= 1) {
+        var buttonDOM = $(this).siblings().find('button')[1]
+        if ($.trim($(this).val()).length >= 1) {
             buttonDOM.style.opacity = 1
             buttonDOM.removeAttribute("disabled")
         } else {
@@ -46,10 +49,21 @@ $(function(){
     })
     
     // 添加 按钮的点击事件
-    $('.addkeyWord .btn button').on('click', function(){
+    $('.addkeyWord .btn button:nth-child(2)').on('click', function(){
         var timestamp = new Date().getTime();//动态生成不同的id,因为id唯一不能重复,所以 用时间戳 代替  防止重复
-        var keyWord = $('.addkeyWord input.enterOne').val();
-        _addindex = -1;
+        var keyWord = $.trim($('.addkeyWord input.enterOne').val());
+		if(keyWord==""&&keyWord.length==0){
+            weui.toast('附加词不能为空', {
+                duration: 2000,
+                className: 'custom-toast',
+                callback: function () { console.log('close') }
+            });
+			return
+		}
+		_addindex = 0;
+		if($(".showKeyWord li").length>0){
+        	_addindex =  Number($(".showKeyWord li:first").find(".editKeyWord").attr("dataIndex")) + Number(1);
+		}
 		if(addkws_arr[keyWord]!=undefined){
             weui.toast('您设置的附加词已存在,请调整后再添加。', {
                 duration: 2000,
@@ -60,7 +74,7 @@ $(function(){
 		}
         //保存新附加词
         _addkws = keyWord;
-        saveSession();
+        saveSession("",_addindex);
         var html = `<li>
                         <div class="one">
                             <div>
@@ -68,7 +82,7 @@ $(function(){
                                     <p class="key">${ keyWord }</p>
                                 </span>
                             </div>
-                            <button class="editKeyWord"><i class="iconfont icon-xiugai"></i> 修改</button>
+                            <button class="editKeyWord" dataindex="`+_addindex+`"><i class="iconfont icon-xiugai"></i> 修改</button>
                         </div>
                         <div class="modify">
                             <textarea  name=""  rows="1"  placeholder="" maxlength="20">${ keyWord}</textarea>
@@ -80,8 +94,9 @@ $(function(){
         // 隐藏
         $(".addkeyWord").hide();
         $('.showKeyWord').show();
+        $('.addKeyWord').show();
         $('.enter.addkeyWord > input').val('')
-        var buttonDOM = $('.enter.addkeyWord .btn button')[0]
+        var buttonDOM = $('.enter.addkeyWord .btn button')[1]
         buttonDOM.style.opacity = .5
         buttonDOM.setAttribute("disabled", true)
 
@@ -89,6 +104,7 @@ $(function(){
 
     // 编辑
     $(".showKeyWord").on('click', '.editKeyWord',function(e){
+        _addindex = Number($(this).attr("dataindex"));
         $('.enter.addkeyWord').hide()
         $('.addKeyWord').hide()
 
@@ -103,8 +119,8 @@ $(function(){
     // 编辑 删除
     $('.showKeyWord').on('click', '.deleteKey', function(e) {
         var jQueryDOM = $(this).parents('li');
-        _addkws = $(this).siblings('textarea').val();
-        _addindex = $(".showKeyWord li").length - $(this).parent().parent('li').index() - 1;
+        _addkws = $.trim($(this).siblings('textarea').val());
+		var _index =  $('.showKeyWord li').length - $(this).parent().parent("li").index() -1;
         weui.confirm('确定要删除附加词?', {
             buttons: [{
                 label: '取消',
@@ -116,24 +132,28 @@ $(function(){
                 onClick: function () {
                     jQueryDOM.remove();
                     hasWords();
-                    $('.addKeyWord').show();
-                    saveSession("D");
+                    saveSession("D",_addindex,_index);
                 }
             }]
         });
     })
     // 编辑 确定
     $('.showKeyWord').on('click', '.ascertainKey', function(e) {
-        $('.addKeyWord').show()
-        var keyWord = $(this).siblings('textarea').val();
-        if(keyWord.length > 20){
+        var keyWord = $.trim($(this).siblings('textarea').val());
+		var _index =  $('.showKeyWord li').length - $(this).parent().parent("li").index() -1;
+		if(keyWord.length==0){
+            weui.toast('附加词不能为空', {
+                duration: 2000,
+                className: 'custom-toast',
+                callback: function () { console.log('close') }
+            });
+		}else if(keyWord.length > 20){
             weui.toast('每组附加词不能超过20字', {
                 duration: 2000,
                 className: 'custom-toast',
                 callback: function () { console.log('close') }
             });
         }else{
-            _addindex = $(".showKeyWord li").length - $(this).parent().parent('li').index() - 1;
 			if(addkws_arr[keyWord]!=undefined&&addkws_arr[keyWord]!=_addindex){
 	            weui.toast('您设置的附加词已存在,请调整后再添加。', {
 	                duration: 2000,
@@ -142,8 +162,9 @@ $(function(){
 	            });
 				return
 			}
+        	$('.addKeyWord').show()
             _addkws = keyWord;
-            saveSession();
+            saveSession("",_addindex,_index);
             $(this).parent().siblings().find('.key').text(keyWord)
             $(this).parent().hide().siblings().show()
         }
@@ -164,8 +185,4 @@ $(function(){
 	        }
 	    })
 	}
-	(/iphone|ipod|ipad/i.test(navigator.appVersion)) && document.addEventListener('blur', (e) => {
-	    // 这里加了个类型判断,因为a等元素也会触发blur事件
-	    ['input', 'textarea'].includes(e.target.localName) && document.body.scrollIntoView(false)
-	}, true)
 })

+ 18 - 0
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/common.js

@@ -31,6 +31,24 @@ function getParam(name) {
   return context == null || context == "" || context == "undefined" ? "" : context;
 }
 
+//省份 城市 分类
+function getAreaClassArr_index(area){
+	let cityArr=[];//城市
+    let provinceArr=[];//省份
+    for(var i in area) {
+      let citys=area[i]
+      if(citys.length>0){
+        cityArr = cityArr.concat(citys);
+        provinceArr.push(i+"("+cityArr.join("、")+")")
+      }else{
+    	if(i=="全国"){
+			continue
+		}
+        provinceArr.push(i)
+      }
+    }
+    return SortArr(provinceArr)
+}
 
 //省份 城市 分类
 function getAreaClassArr(area){

+ 38 - 21
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/exclusiveWord.js

@@ -11,8 +11,10 @@ $(function(){
         var showKeyWordLength = $(".showKeyWord ul").find('li').length;
         if(showKeyWordLength === 0){
             $(".addkeyWord").show();
+            $('.addKeyWord').hide();
         } else {
             $(".addkeyWord").hide();
+            $('.addKeyWord').show();
         }
     }
     hasWords()
@@ -20,6 +22,7 @@ $(function(){
     // 添加按钮
     $(".addKeyWord i").on('click',function(){
         $(".addkeyWord").show()
+        $(".addKeyWord").hide();
         $(".addkeyWord input").focus()
         $('.showKeyWord').find('.one').show()
         $('.showKeyWord').find('.modify').hide()
@@ -39,8 +42,8 @@ $(function(){
             return
         }
 
-        var buttonDOM = $(this).siblings().find('button')[0]
-        if ($(this).val().length >= 1) {
+        var buttonDOM = $(this).siblings().find('button')[1]
+        if ($.trim($(this).val()).length >= 1) {
             buttonDOM.style.opacity = 1
             buttonDOM.removeAttribute("disabled")
         } else {
@@ -59,9 +62,20 @@ $(function(){
     })
     // 添加 按钮的点击事件
    
-    $('.addkeyWord .btn button').on('click', function(){
-        var keyWord = $('.addkeyWord input.enterOne').val()
-        _notindex = -1;
+    $('.addkeyWord .btn button:nth-child(2)').on('click', function(){
+        var keyWord = $.trim($('.addkeyWord input.enterOne').val());
+		if (keyWord==""){
+            weui.toast('排除词不能为空', {
+                duration: 2000,
+                className: 'custom-toast',
+                callback: function () { console.log('close') }
+            });
+			return
+		}
+		_notindex = 0;
+		if($(".showKeyWord li").length>0){
+        	_notindex = Number($(".showKeyWord li:first").find(".editKeyWord").attr("dataIndex")) + Number(1);
+		}
         //保存新附加词
         _notkws = keyWord;
 		if(notkws_arr[keyWord]!=undefined){
@@ -72,7 +86,7 @@ $(function(){
             });
 			return
 		}
-        saveSession();
+        saveSession("",_notindex);
         var html = `<li>
                         <div class="one">
                             <div>
@@ -80,7 +94,7 @@ $(function(){
                                     <p class="key">${ keyWord }</p>
                                 </span>
                             </div>
-                            <button class="editKeyWord"><i class="iconfont icon-xiugai"></i> 修改</button>
+                            <button class="editKeyWord" dataindex="`+_notindex+`"><i class="iconfont icon-xiugai"></i> 修改</button>
                         </div>
                         <div class="modify">
                             <textarea  name=""  rows="1"  placeholder="">${ keyWord}</textarea>
@@ -93,8 +107,9 @@ $(function(){
         // 隐藏
         $(".addkeyWord").hide();
         $('.showKeyWord').show();
+        $('.addKeyWord').show();
         $('.enter.addkeyWord > input').val('')
-        var buttonDOM = $('.enter.addkeyWord .btn button')[0]
+        var buttonDOM = $('.enter.addkeyWord .btn button')[1]
         buttonDOM.style.opacity = .5
         buttonDOM.setAttribute("disabled", true)
 
@@ -102,6 +117,7 @@ $(function(){
 
     // 编辑
     $(".showKeyWord").on('click', '.editKeyWord', function(e){
+        _notindex = Number($(this).attr("dataindex"));
         $('.enter.addkeyWord').hide()
         $('.addKeyWord').hide()
 
@@ -115,9 +131,9 @@ $(function(){
     // 编辑 删除
     $('.showKeyWord').on('click', '.deleteKey', function(e) {
         var jQueryDOM = $(this).parents('li');
-        _notkws = $(this).siblings('textarea').val();
-        _notindex = $(".showKeyWord li").length - $(this).parent().parent('li').index() - 1;
-        weui.confirm('确定要删除关键词?', {
+        _notkws = $.trim($(this).siblings('textarea').val());
+		var _index =  $('.showKeyWord li').length - $(this).parent().parent("li").index() -1;
+        weui.confirm('确定要删除排除词?', {
             buttons: [{
                 label: '取消',
                 type: 'default',
@@ -128,8 +144,7 @@ $(function(){
                 onClick: function () {
                     jQueryDOM.remove()
                     hasWords()
-                    $('.addKeyWord').show();
-                    saveSession("D");
+                    saveSession("D",_notindex,_index);
                 }
             }]
         });
@@ -138,8 +153,15 @@ $(function(){
     // 编辑 确定
     $('.showKeyWord').on('click', '.ascertainKey', function(e) {
         var $this = $(this);
-        var keyWord = $(this).siblings('textarea').val();
-        if(keyWord.length > 20){
+        var keyWord = $.trim($(this).siblings('textarea').val());
+		var _index =  $('.showKeyWord li').length - $(this).parent().parent("li").index() -1;
+		if(keyWord.length ==0){
+            weui.toast('排除词不能为空', {
+                duration: 2000,
+                className: 'custom-toast',
+                callback: function () { console.log('close') }
+            });
+        }else if(keyWord.length > 20){
             weui.toast('每组排除词不能超过20字', {
                 duration: 2000,
                 className: 'custom-toast',
@@ -157,9 +179,8 @@ $(function(){
             $this.parent().siblings().find('.key').text(keyWord);
             $this.parent().hide().siblings().show();
             $('.addKeyWord').show();
-            _notindex = $(".showKeyWord li").length - $(this).parent().parent('li').index() - 1;
             _notkws = keyWord;
-            saveSession();
+            saveSession("",_notindex,_index);
         }
     })
 
@@ -178,8 +199,4 @@ $(function(){
 	        }
 	    })
 	}
-	(/iphone|ipod|ipad/i.test(navigator.appVersion)) && document.addEventListener('blur', (e) => {
-	    // 这里加了个类型判断,因为a等元素也会触发blur事件
-	    ['input', 'textarea'].includes(e.target.localName) && document.body.scrollIntoView(false)
-	}, true)
 })

+ 131 - 118
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/keyWord.js

@@ -29,8 +29,8 @@ var reloadFunc = function(){
 
     // 添加keyWords检查输入框内是否有文字,如果有才能点击添加按钮
     $('.content .addkeyWord input.enterOne').on('input', function () {
-        var buttonDOM = $(this).siblings()[1].children[0]
-        if ($(this).val().length >= 1) {
+        var buttonDOM = $(this).siblings()[1].children[1]
+        if ($.trim($(this).val()).length >= 1) {
             buttonDOM.style.opacity = 1
             buttonDOM.removeAttribute("disabled")
         } else {
@@ -40,120 +40,129 @@ var reloadFunc = function(){
     })
 
     // 添加 确认按钮的点击事件
-    $('.content .addkeyWord .btn button').on('click', function () {
-        var keyWord = $('.addkeyWord input.enterOne').val();
-		if(kws_arr[keyWord]!=undefined){
-            weui.toast('您设置的关键词已存在,请调整后再添加。', {
-                duration: 2000,
-                className: 'custom-toast',
-                callback: function () { console.log('close') }
-            });
-			return
-		}
-        if(kws_name.length > 20){
-            weui.toast('关键词不能超过20字', {
-                duration: 2000,
-                className: 'custom-toast',
-                callback: function () { console.log('close') }
-            });
-        }
-        kws_name = keyWord;
-        kws_index = $(".showKeyWord li").length;
-        if(kws_index==0){
-            //分类首次添加关键词需重新获取分类索引
-            classify_index = a_items.length;
-        }
-        classify_name = $('.classify-r .classify-detail').text();
-        //保存关键词
-        kws_count = parseInt(kws_count) + 1;
-        if(kws_count>300){
-            weui.toast('您设置的关键词已超出最高上限,请调整后再添加。', {
-                duration: 2000,
-                className: 'custom-toast',
-                callback: function () { console.log('close') }
-            });
-        }else if (saveData("SK")){
-            // 设置状态 首次添加关键词
-            if(a_items.length==0){
-                setEmptyHistory();
-            }
-            //
-            doSessionData();
-            $(".add-keyword-container .addNewKeyword").show();
-            //点击保存关键词,查看缓存中存的附加词 和排除词。
-            $(".kws_count").text(kws_count);
-            var html = `<li><div class="one"><div>
-                            <span>
-                                <strong> 关键词:</strong>
-                                <p class="key">${keyWord}</p>
-                            </span>`
-                if (addition_kws.length>0){
-                    html +='<span>'
-                                +'<strong> 附加词:</strong>'
-                                +'<p class="addition">'+addition_kws.join(" ")+'</p>'
-                                +'</span>'
-                }
-                if (not_kws.length>0){
-                    html +='<span>'
-                                +'<strong> 排除词:</strong>'
-                                +'<p class="notkey">'+not_kws.join(" ")+'</p>'
-                                +'</span>'
-                }
-                html +=`</div>
-                        <button class="editKeyWord"  dataIndex=`+kws_index+`><i class="iconfont icon-xiugai"></i> 修改</button>
-                        </div>
-                        <div class="modify">
-                        <textarea  name=""  rows="1"  placeholder="" maxlength="20">${keyWord}</textarea>`
-            if (addition_kws.length>0){
-                html +=`<button class="addAdjunctWord" onClick="toappendkey(this)">编辑 附加词<i>(`+addition_kws.length+`)</i></button>`
-            }else{
-                html +=`<button class="addAdjunctWord" onClick="toappendkey(this)">添加 附加词</button>`
-            }
-            if (not_kws.length>0){
-                html +=`<button class="addAdjunctWord" onClick="tonotkey(this)">编辑 排除词<i>(`+not_kws.length+`)</i></button>`
-            }else{
-                html +=`<button class="addAdjunctWord" onClick="tonotkey(this)">添加 排除词</button>`
-            }
-                html +=`<button class="deleteKey">删除</button><button class="ascertainKey" dataIndex=`+kws_index+` onclick="saveK(this)">确定</button></div></li>`
-            $('.showKeyWord > ul').prepend(html);
-            // 添加完成隐藏输入框
-            $(".enter.addkeyWord").hide();
-            // 还原状态
-            $('.enter.addkeyWord > input').val('')
-            //把kws_name,kws_index,addition_kws,not_kws初始化
-            kws_index = 0;
-            kws_name = "";
-            addition_kws = [];
-            not_kws = [];
-			//
-            var buttonDOM = $('.enter.addkeyWord .btn button')[0]
-            buttonDOM.style.opacity = .5
-            buttonDOM.setAttribute("disabled", true)
-            //保存关键词 查看关键词数量 未分类 超过20 100提示
-            if(classify_name.indexOf("未分类")>-1){
-                if((kws_tips==0&&$(".showKeyWord li").length>=20)||(kws_tips==20&&$(".showKeyWord li").length>=100)){
-                    //未分类 20个关键词提示,100个关键词提示
-                    showMeg();
-                    var param = {};
-                    param.classify_index = classify_index;
-                    if(kws_tips==0){
-                        param.kws_tips = 20;
-                    }else if(kws_tips==20){
-                        param.kws_tips = 100;
-                    }
-                    $.post("/subscribepay/afterPay/updateUserTips",param,function(r){
-                        if(r.flag){
-                            kws_tips = param.kws_tips;
-                            $(".classify").attr("tips",kws_tips);
-                        }
-                    })
-                }
-            }
-        }
+    $('.content .addkeyWord .btn button:nth-child(2)').on('click', function () {
+		setTimeout(function(){
+	        var keyWord = $.trim($('.addkeyWord input.enterOne').val());
+			if(keyWord==""){
+				return
+			}
+			if(kws_arr[keyWord]!=undefined){
+	            weui.toast('您设置的关键词已存在,请调整后再添加。', {
+	                duration: 2000,
+	                className: 'custom-toast',
+	                callback: function () { console.log('close') }
+	            });
+				return
+			}
+	        if(kws_name.length > 20){
+	            weui.toast('关键词不能超过20字', {
+	                duration: 2000,
+	                className: 'custom-toast',
+	                callback: function () { console.log('close') }
+	            });
+	        }
+	        kws_name = keyWord;
+			kws_index = $(".showKeyWord li").length;
+	        if(kws_index==0){
+	            //分类首次添加关键词需重新获取分类索引
+	            classify_index = a_items.length;
+	        }
+			var _index = 0;
+			if($(".showKeyWord li").length>0){
+	        	_index =  Number($(".showKeyWord li:first").find(".editKeyWord").attr("dataIndex")) + Number(1);
+			}
+	        classify_name = $.trim($('.classify-r .classify-detail').text());
+	        //保存关键词
+	        kws_count = parseInt(kws_count) + 1;
+	        if(kws_count>300){
+	            weui.toast('您设置的关键词已超出最高上限,请调整后再添加。', {
+	                duration: 2000,
+	                className: 'custom-toast',
+	                callback: function () { console.log('close') }
+	            });
+	        }else if (saveData("SK")){
+	            // 设置状态 首次添加关键词
+	            if(a_items.length==0){
+	                setEmptyHistory();
+	            }
+	            //
+	            doSessionData("",_index);
+	            $(".add-keyword-container .addNewKeyword i").show();
+	            //点击保存关键词,查看缓存中存的附加词 和排除词。
+	            $(".kws_count").text(kws_count);
+	            var html = `<li><div class="one"><div>
+	                            <span>
+	                                <strong> 关键词:</strong>
+	                                <p class="key">${keyWord}</p>
+	                            </span>`
+	                if (addition_kws.length>0){
+	                    html +='<span>'
+	                                +'<strong> 附加词:</strong>'
+	                                +'<p class="addition">'+addition_kws.join(" ")+'</p>'
+	                                +'</span>'
+	                }
+	                if (not_kws.length>0){
+	                    html +='<span>'
+	                                +'<strong> 排除词:</strong>'
+	                                +'<p class="notkey">'+not_kws.join(" ")+'</p>'
+	                                +'</span>'
+	                }
+	                html +=`</div>
+	                        <button class="editKeyWord"  dataIndex=`+_index+`><i class="iconfont icon-xiugai"></i> 修改</button>
+	                        </div>
+	                        <div class="modify">
+	                        <textarea  name=""  rows="1"  placeholder="" maxlength="20">${keyWord}</textarea>`
+	            if (addition_kws.length>0){
+	                html +=`<button class="addAdjunctWord" onClick="toappendkey(this)">编辑 附加词<i>(`+addition_kws.length+`)</i></button>`
+	            }else{
+	                html +=`<button class="addAdjunctWord" onClick="toappendkey(this)">添加 附加词</button>`
+	            }
+	            if (not_kws.length>0){
+	                html +=`<button class="addExclusion" onClick="tonotkey(this)">编辑 排除词<i>(`+not_kws.length+`)</i></button>`
+	            }else{
+	                html +=`<button class="addExclusion" onClick="tonotkey(this)">添加 排除词</button>`
+	            }
+	                html +=`<button class="deleteKey">删除</button><button class="ascertainKey" dataIndex=`+_index+` onclick="saveK(this)">确定</button></div></li>`
+	            $('.showKeyWord > ul').prepend(html);
+	            // 添加完成隐藏输入框
+	            $(".enter.addkeyWord").hide();
+	            // 还原状态
+	            $('.enter.addkeyWord > input').val('')
+	            //把kws_name,kws_index,addition_kws,not_kws初始化
+	            kws_index = 0;
+	            kws_name = "";
+	            addition_kws = [];
+	            not_kws = [];
+				//
+	            var buttonDOM = $('.enter.addkeyWord .btn button')[1]
+	            buttonDOM.style.opacity = .5
+	            buttonDOM.setAttribute("disabled", true)
+	            //保存关键词 查看关键词数量 未分类 超过20 100提示
+	            if(classify_name.indexOf("未分类")>-1){
+	                if((kws_tips==1&&$(".showKeyWord li").length>=20)||(kws_tips==20&&$(".showKeyWord li").length>=100)){
+	                    //未分类 20个关键词提示,100个关键词提示
+	                    showMeg();
+	                    var param = {};
+	                    param.classify_index = classify_index;
+	                    if(kws_tips==1){
+	                        param.kws_tips = 20;
+	                    }else if(kws_tips==20){
+	                        param.kws_tips = 100;
+	                    }
+	                    $.post("/subscribepay/afterPay/updateUserTips",param,function(r){
+	                        if(r.flag){
+	                            kws_tips = param.kws_tips;
+	                            $(".classify").attr("tips",kws_tips);
+	                        }
+	                    })
+	                }
+	            }
+	        }
+		},150)
     })
     // 编辑
     $(".showKeyWord").on('click', '.editKeyWord', function (e) {
-        kws_name = $(this).parent().find('.key').text();
+        kws_name = $.trim($(this).parent().find('.key').text());
         //当前关键词数组的位置 是数组的总长度-当前所在的位置-1 数组正序索引
         kws_index = $('.showKeyWord li').length - $(this).parent().parent("li").index() -1;
         if($(this).prev('div').find(".addition").text()!=""){
@@ -168,15 +177,16 @@ var reloadFunc = function(){
         }
         $('.enter.addkeyWord').hide()
         let oSpan = $(this).parent().siblings().children('textarea');
-        let val = $(oSpan).val()
+        let val =  $.trim($(oSpan).val());
         $(this).parent().hide()
         $(this).parent().siblings().show().parent().siblings().children('.modify').hide().siblings('.one').show()
         $(oSpan).val('').focus().val(val) 
-        $('.addKeyWord').hide()
+        $(".add-keyword-container .addNewKeyword i").hide()
     })
 
     // 编辑删除
     $('.showKeyWord').on('click', '.deleteKey', function (e) {
+		var _index = Number($(this).next(".ascertainKey").attr("dataindex"));
         var jQueryDOM = $(this).parents('li')
         weui.confirm('确定要删除关键词?', {
             buttons: [{
@@ -195,10 +205,11 @@ var reloadFunc = function(){
 			                $(".enter.addkeyWord").find(".btnChoose button").eq(0).html('添加 附加词');
 			                $(".enter.addkeyWord").find(".btnChoose button").eq(1).html('添加 附加词');
 			                $(".enter.addkeyWord").find("input").val("");
+						}else{
+							$(".add-keyword-container .addNewKeyword i").show();
 						}
                         hasWords();
-                        $('.addKeyWord').show();
-                        doSessionData('DK');
+                        doSessionData('DK',_index);
 			            //把kws_name,kws_index,addition_kws,not_kws初始化
 			            kws_index = 0;
 			            kws_name = "";
@@ -271,7 +282,7 @@ var reloadFunc = function(){
     })
     // 关键词分类 - 确定按钮点击事件
     $('.classify-edit-pop .dialog__btn_confirm').on('click', function() {
-        classify_name = $('input.classify-keyword').val();
+        classify_name = $.trim($('input.classify-keyword').val());
         // 去空格
         classify_name = classify_name.trim();
         if (classify_name.length === 0) {
@@ -295,7 +306,9 @@ var reloadFunc = function(){
         $('.classify-edit-pop').hide();
         $('input.classify-keyword').val('');
         if($(".showKeyWord li").length>0){
+			kws_name = classify_name;
             saveData('SC')
+			kws_name = "";
             a_items[classify_index]["s_item"] = classify_name;
         }
     })

+ 11 - 0
src/jfw/modules/app/src/web/templates/common/nnc.html

@@ -0,0 +1,11 @@
+<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,initial-scale=1.0" user-scalable="no" />
+<link href="/jyapp/css/jy.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+<link href="/jyapp/css/common.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+<link href="/jyapp/css/animate.css" rel="stylesheet">
+<link rel="stylesheet" href="/jyapp/css/unicorn.main.css" />
+<link rel="stylesheet" href="/jyapp/css/unicorn.grey.css" />
+<script src="/jyapp/js/jquery-3.2.1.min.js?v={{Msg "seo" "version"}}"></script>
+<script src="/jyapp/js/jquery.cookie.js"></script>
+<script src="/jyapp/js/bootstrap.min.js"></script>
+<script src="/jyapp/js/jy.js?v={{Msg "seo" "version"}}"></script>
+{{include "/common/js.html"}}

+ 93 - 72
src/jfw/modules/app/src/web/templates/vipsubscribe/additionWord.html

@@ -2,76 +2,78 @@
 <html lang="en">
 
 <head>
-    <meta charset="UTF-8">
-    <meta name="viewport"
-        content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
-    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+	{{include "/common/meta.html"}}
     <title>附加词</title>
-    <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/addition_exclusive_word.css?v={{Msg "seo" "version"}}">
+	{{include "/common/nnc.html"}}
+    <script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/css/addition_exclusive_word.css?v={{Msg "seo" "version"}}">
 </head>
 
 <body>
-
-    <div class="addition-word">
-        <section class="content">
-            <p class="title">示例:开发(附加词)</p>
-            <!-- 添加附加词 -->
-            <div class="enter addkeyWord" style="display: none;">
-                <input type="text" class="enterOne" maxlength="20" placeholder="请输入附加词" />
-                <div class="btn">
-                    <button disabled>确认</button>
-                </div>
-            </div>
-
-            <!-- 添加附加词显示列表 -->
-            <div class="showKeyWord" style="display: none;">
-                <ul>
-                    
-                </ul>
-            </div>
-            <div class="problem">
-                疑问解答 <i class="iconfont icon-wenhao"></i>
-            </div> 
-        </section>
-        <div class="addKeyWord">
-            <i class="iconfont icon-tianjia"></i>
-        </div>
-        <!-- 疑难问题弹窗 -->
-        <div class="problemPop">
-            <div class="problemPopContent">
-                <h3>疑问解答</h3>
-                <ul>
-                    <li>
-                        <p>例:某公司主营业务为软件系统开发</p>
-                    </li>
-                    <li>
-                        <h4>关键词:</h4>
-                        <p>目标信息中的关键性词语,如“软件系统”</p>
-                    </li>
-                    <li>
-                        <h4>附加词:</h4>
-                        <p>与关键词形成一体/组合,便于查找准确信息,如“开发”</p>
-                    </li>
-                    <li>
-                        <h4>排除词:</h4>
-                        <p>与关键词互斥,可排除一部分非目标信息,如“运维”</p>
-                    </li>
-                </ul>
-                <button class="knowBtn">我知道了</button>
-            </div>
-        </div>
+	<div class="app-layout-header">
+		<span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+		附加词
+	</div>
+	
+	<div class="app-layout-content-b">
+	    <div class="addition-word">
+	        <section class="content">
+	            <p class="title">示例:开发(附加词)</p>
+	            <!-- 添加附加词 -->
+	            <div class="enter addkeyWord" style="display: none;">
+	                <input type="text" class="enterOne" maxlength="20" placeholder="请输入附加词" />
+	                <div class="btn">
+	                    <button onclick="Cancel()" style="width:49%;background:#fff;color:#2cb7ca;opacity: 1;">取消</button>
+	                    <button disabled>确认</button>
+	                </div>
+	            </div>
+	
+	            <!-- 添加附加词显示列表 -->
+	            <div class="showKeyWord" style="display: none;">
+	                <ul>
+	                    
+	                </ul>
+	            </div>
+	            <div class="problem">
+	                疑问解答 <i class="iconfont icon-wenhao"></i>
+	            </div> 
+	        </section>
+	        <div class="addKeyWord" style="display:none;">
+	            <i class="iconfont icon-tianjia"></i>
+	        </div>
+	        <!-- 疑难问题弹窗 -->
+	        <div class="problemPop">
+	            <div class="problemPopContent">
+	                <h3>疑问解答</h3>
+	                <ul>
+	                    <li>
+	                        <p>例:某公司主营业务为软件系统开发</p>
+	                    </li>
+	                    <li>
+	                        <h4>关键词:</h4>
+	                        <p>目标信息中的关键性词语,如“软件系统”</p>
+	                    </li>
+	                    <li>
+	                        <h4>附加词:</h4>
+	                        <p>与关键词形成一体/组合,便于查找准确信息,如“开发”</p>
+	                    </li>
+	                    <li>
+	                        <h4>排除词:</h4>
+	                        <p>与关键词互斥,可排除一部分非目标信息,如“运维”</p>
+	                    </li>
+	                </ul>
+	                <button class="knowBtn">我知道了</button>
+	            </div>
+	        </div>
+	    </div>
     </div>
-    <script src="{{Msg "seo" "cdn"}}/js/jquery-3.2.1.min.js?v=1412"></script>
-    <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/weui.min.js"></script>
-    <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/additionWord.js"></script>
-	{{include "/common/weixin.html"}}
-	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
+	<script src="{{Msg "seo" "cdn"}}/jyapp/js/jquery-3.2.1.min.js?v=1412"></script>
+    <script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/weui.min.js"></script>
+    <script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/additionWord.js?v={{Msg "seo" "version"}}"></script>
     <script>
-		initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
         var addition_kws = []//附加词
         var _addkws = "";
         var _addindex = -1;
@@ -85,9 +87,19 @@
                 $(".showKeyWord").hide();
             }
         })
+		//
+		function Cancel(){
+			if($(".showKeyWord li").length==0){
+				window.history.go(-1)
+			}else{
+				$(".content .addkeyWord").hide();
+        		$(".addKeyWord").show();
+			}
+		}
         //
         function appendHtml(data){
             if (data.length>0){
+				$('.addKeyWord').show();
                 var additionHtml = '';
                 for (var i = data.length - 1; i >= 0; i--) {
 					addkws_arr[data[i]]=i
@@ -98,7 +110,7 @@
                                     +'<p class="key">'+data[i]+'</p>'
                                     +'</span>'
                                     +'</div>'
-                                    +'<button class="editKeyWord"><i class="iconfont icon-xiugai"></i> 修改</button>'
+                                    +'<button class="editKeyWord" dataIndex="'+i+'"><i class="iconfont icon-xiugai"></i> 修改</button>'
                                     +'</div>'
                                     +'<div class="modify">'
                                     +'<textarea  name=""  rows="1"  placeholder="" maxlength="20" >'+data[i]+'</textarea>'
@@ -116,19 +128,28 @@
             }
         }
         //
-        function saveSession(t){
+        function saveSession(t,i,index){
             if (_addkws!=""){
                 if(t!="D"){
-                    if(_addindex>=0){
-						addkws_arr[_addkws] = _addindex;
-                        addition_kws[_addindex] = _addkws
+                    if($(".showKeyWord li:first").find(".editKeyWord").attr("dataIndex")!=undefined&&i <= Number($(".showKeyWord li:first").find(".editKeyWord").attr("dataIndex"))){
+						for (var n in addkws_arr){
+							if(addkws_arr[n]==i){
+								delete addkws_arr[n];
+							}
+						}
+						addkws_arr[_addkws] = i;
+                        addition_kws[index] = _addkws
                     }else{
-						addkws_arr[_addkws] = addition_kws.length;
+						addkws_arr[_addkws] = i;
                         addition_kws.push(_addkws)
                     }
                 }else{
-					delete addkws_arr[_addkws];
-                    addition_kws.splice(_addindex,1)
+					for (var n in addkws_arr){
+						if(addkws_arr[n]==i){
+							delete addkws_arr[n];
+						}
+					}
+                    addition_kws.splice(index,1);
                 }
                 sessionStorage.addition_kws = JSON.stringify(addition_kws)
            }

+ 93 - 71
src/jfw/modules/app/src/web/templates/vipsubscribe/exclusiveWord.html

@@ -2,75 +2,77 @@
 <html lang="en">
 
 <head>
-    <meta charset="UTF-8">
-    <meta name="viewport"
-        content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
-    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+	{{include "/common/meta.html"}}
     <title>排除词</title>
-    <script src="{{Msg "seo" "cdn"}}/vipsubscribe./js/rem.js?v={{Msg "seo" "version"}}"></script>
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/addition_exclusive_word.css?v={{Msg "seo" "version"}}">
+	{{include "/common/nnc.html"}}
+    <script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/css/addition_exclusive_word.css?v={{Msg "seo" "version"}}">
 </head>
 
 <body>
-
-    <div class="exclusive-word">
-        <section class="content">
-            <p class="title">示例:运维(排除词)</p>
-            <!-- 添加排除词 -->
-            <div class="enter addkeyWord">
-                <input type="text" class="enterOne" maxlength="20" placeholder="请输入排除词" />
-                <div class="btn">
-                    <button disabled>确认</button>
-                </div>
-            </div>
-            <!-- 添加排除词显示列表 -->
-            <div class="showKeyWord">
-                <ul>
-                    
-                </ul>
-            </div>
-            <div class="problem">
-                疑问解答 <i class="iconfont icon-wenhao"></i>
-            </div>
-        </section>
-        <div class="addKeyWord">
-            <i class="iconfont icon-tianjia"></i>
-        </div>
-        <!-- 疑难问题弹窗 -->
-        <div class="problemPop">
-            <div class="problemPopContent">
-                <h3>疑问解答</h3>
-                <ul>
-                    <li>
-                        <p>例:某公司主营业务为软件系统开发</p>
-                    </li>
-                    <li>
-                        <h4>关键词:</h4>
-                        <p>目标信息中的关键性词语,如“软件系统”</p>
-                    </li>
-                    <li>
-                        <h4>附加词:</h4>
-                        <p>与关键词形成一体/组合,便于查找准确信息,如“开发”</p>
-                    </li>
-                    <li>
-                        <h4>排除词:</h4>
-                        <p>与关键词互斥,可排除一部分非目标信息,如“运维”</p>
-                    </li>
-                </ul>
-                <button class="knowBtn">我知道了</button>
-            </div>
-        </div>
+	<div class="app-layout-header">
+		<span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+		附加词
+	</div>
+	
+	<div class="app-layout-content-b">
+	    <div class="exclusive-word">
+	        <section class="content">
+	            <p class="title">示例:运维(排除词)</p>
+	            <!-- 添加排除词 -->
+	            <div class="enter addkeyWord">
+	                <input type="text" class="enterOne" maxlength="20" placeholder="请输入排除词" />
+	                <div class="btn">
+					    <button onclick="Cancel()" style="width:49%;background:#fff;color:#2cb7ca;opacity: 1;">取消</button>
+	                    <button disabled>确认</button>
+	                </div>
+	            </div>
+	            <!-- 添加排除词显示列表 -->
+	            <div class="showKeyWord">
+	                <ul>
+	                    
+	                </ul>
+	            </div>
+	            <div class="problem">
+	                疑问解答 <i class="iconfont icon-wenhao"></i>
+	            </div>
+	        </section>
+	        <div class="addKeyWord" style="display:none;">
+	            <i class="iconfont icon-tianjia"></i>
+	        </div>
+	        <!-- 疑难问题弹窗 -->
+	        <div class="problemPop">
+	            <div class="problemPopContent">
+	                <h3>疑问解答</h3>
+	                <ul>
+	                    <li>
+	                        <p>例:某公司主营业务为软件系统开发</p>
+	                    </li>
+	                    <li>
+	                        <h4>关键词:</h4>
+	                        <p>目标信息中的关键性词语,如“软件系统”</p>
+	                    </li>
+	                    <li>
+	                        <h4>附加词:</h4>
+	                        <p>与关键词形成一体/组合,便于查找准确信息,如“开发”</p>
+	                    </li>
+	                    <li>
+	                        <h4>排除词:</h4>
+	                        <p>与关键词互斥,可排除一部分非目标信息,如“运维”</p>
+	                    </li>
+	                </ul>
+	                <button class="knowBtn">我知道了</button>
+	            </div>
+	        </div>
+	    </div>
     </div>
-    <script src="{{Msg "seo" "cdn"}}/js/jquery-3.2.1.min.js?v={{Msg "seo" "version"}}"></script>
-    <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
-    <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/exclusiveWord.js?v={{Msg "seo" "version"}}"></script>
-	{{include "/common/weixin.html"}}
-	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
+	<script src="{{Msg "seo" "cdn"}}/jyapp/js/jquery-3.2.1.min.js?v={{Msg "seo" "version"}}"></script>
+    <script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+    <script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/exclusiveWord.js?v={{Msg "seo" "version"}}"></script>
     <script>
-		initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
         var not_kws = []//排除词
         var _notkws = "";
         var _notindex = -1;
@@ -84,9 +86,19 @@
                 $(".showKeyWord").hide();
             }
         })
+		//
+		function Cancel(){
+			if($(".showKeyWord li").length==0){
+				window.history.go(-1)
+			}else{
+				$(".content .addkeyWord").hide();
+        		$(".addKeyWord").show();
+			}
+		}
         //
         function appendHtml(data){
             if (data.length>0){
+				$('.addKeyWord').show();
                 var additionHtml = '';
                 for (var i = data.length - 1; i >= 0; i--) {
 					notkws_arr[data[i]]=i
@@ -97,7 +109,7 @@
                                     +'<p class="key">'+data[i]+'</p>'
                                     +'</span>'
                                     +'</div>'
-                                    +'<button class="editKeyWord"><i class="iconfont icon-xiugai"></i> 修改</button>'
+                                    +'<button class="editKeyWord" dataIndex="'+i+'"><i class="iconfont icon-xiugai"></i> 修改</button>'
                                     +'</div>'
                                     +'<div class="modify">'
                                     +'<textarea  name=""  rows="1"  placeholder="" maxlength="20" >'+data[i]+'</textarea>'
@@ -115,19 +127,29 @@
             }
         }
         //
-        function saveSession(t){
+        function saveSession(t,i,index){
             if (_notkws!=""){
                 if(t!="D"){
-                    if(_notindex>0){
-						notkws_arr[_notkws] = _notindex;
-                        not_kws[_notindex] = _notkws
+                    if($(".showKeyWord li:first").find(".editKeyWord").attr("dataIndex")!=undefined&&i <= Number($(".showKeyWord li:first").find(".editKeyWord").attr("dataIndex"))){
+						for (var n in notkws_arr){
+							if(notkws_arr[n]==i){
+								delete notkws_arr[n];
+							}
+						}
+						notkws_arr[_notkws] = i;
+                        not_kws[index] = _notkws
                     }else{
-						notkws_arr[_notkws] = not_kws.length;
+						notkws_arr[_notkws] = i;
                         not_kws.push(_notkws)
                     }
                 }else{
-					delete notkws_arr[_notkws];
-                    not_kws.splice(_notindex,1)
+					for (var n in notkws_arr){
+						console.log(n,i)
+						if(notkws_arr[n]==i){
+							delete notkws_arr[n];
+						}
+					}
+                    not_kws.splice(index,1)
                 }
                 sessionStorage.not_kws = JSON.stringify(not_kws)
            }

+ 254 - 206
src/jfw/modules/app/src/web/templates/vipsubscribe/keyWord.html

@@ -2,16 +2,14 @@
 <html lang="zh-CN">
 
 <head>
-    <meta charset="UTF-8">
-    <meta name="viewport"
-        content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
-    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+	{{include "/common/meta.html"}}
     <title>关键词</title>
-    <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/keyWord.css?v={{Msg "seo" "version"}}">
+	<link href="{{Msg "seo" "cdn"}}/jyapp/css/common.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/css/keyWord.css?v={{Msg "seo" "version"}}">
+    <script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
     <style>
         .ios-user-select {
             -webkit-user-select: text;
@@ -114,126 +112,129 @@
 </head>
 
 <body>
-    <div class="keyWord">
-        <section class="add-keyword-container" style="display: none;">
-            <div>
-                <div class="classify">
-                    <span class="classify-l">关键词分类</span>
-                    <span class="classify-r">
-                        <span class="classify-detail">未分类</span>
-                        <span class="iconfont icon-arrow"></span>
-                    </span>
-                </div>
-                <p class="classify-tips">
-                    关键词分类便于对同类别关键词做整合管理
-                </p>
-            </div>
-            <section class="content">
-                <!-- 添加关键词 -->
-                <div class="enter addkeyWord" style="display: none;">
-                    <input type="text" class="enterOne" placeholder="请输入关键词" maxlength="20" />
-                    <!-- <textarea style="resize:none;" rows="1"  class="enterOne" name="" id=""  placeholder="请输入关键词" maxlength="100"></textarea> -->
-                    <div class="btnChoose" style="display:none;">
-                        <button onclick="toappendkey(this)">添加 附加词</button>
-                        <button onclick="tonotkey(this)">添加 排除词</button>
-                    </div>
-                    <div class="btn">
-                        <button disabled>确认</button>
-                    </div>
-                </div>
-
-                <!-- 添加关键词显示列表 -->
-                <div class="showKeyWord">
-                    <ul>
-                    </ul>
-                </div>
-
-                <div class="problem">
-                    疑问解答 <i class="iconfont icon-wenhao"></i>
-                </div>
-            </section>
-
-            <div class="addKeyWord addNewKeyword" style="display: none;">
-                <i class="iconfont icon-tianjia"></i>
-                <p> 关键词添加数量:<em style="color: #2cb7ca;" class="kws_count">0 </em>/ 300</p>
-            </div>
-        </section>
-        <section class="all-classify-column" style="display: none;">
-            <div class="keysexplain"><p> 关键词添加数量:<em style="color: #2cb7ca;" class="kws_count">0 </em> / 300</p></div>
-            <ul class="classify-list">
-                
-            </ul>
-
-            <div class="addKeyWord addNewKeyword" style="display: none;"><div class="addClassify">新增关键词分类</div></div>
-        </section>
-
-        <!-- 疑难问题弹窗 -->
-        <div class="problemPop dialog-container">
-            <div class="problemPopContent">
-                <h3>疑问解答</h3>
-                <ul>
-                    <li>
-                        <p>例:某公司主营业务为软件系统开发</p>
-                    </li>
-                    <li>
-                        <h4>关键词:</h4>
-                        <p>目标信息中的关键性词语,如“软件系统”</p>
-                    </li>
-                    <li>
-                        <h4>附加词:</h4>
-                        <p>与关键词形成一体/组合,便于查找准确信息,如“开发”</p>
-                    </li>
-                    <li>
-                        <h4>排除词:</h4>
-                        <p>与关键词互斥,可排除一部分非目标信息,如“运维”</p>
-                    </li>
-                </ul>
-                <button class="knowBtn">我知道了</button>
-            </div>
-        </div>
-        <!-- 关键词分类弹框 -->
-        <div class="classify-edit-pop dialog-container">
-            <!-- <div class="weui-mask weui-animate-fade-in"></div> -->
-            <div class="weui-dialog weui-animate-fade-in">
-                <div class="weui-dialog__hd">
-                    <strong class="weui-dialog__title">关键词分类</strong>
-                </div>
-                <div class="weui-dialog__bd">
-                    <input type="text" class="classify-keyword" maxlength="20" placeholder="输入分类名称">
-                </div>
-                <div class="weui-dialog__ft">
-                    <a href="javascript:;" class="dialog__btn dialog__btn_confirm opacity6">确定</a> 
-                    <a href="javascript:;" class="dialog__btn dialog__btn_cancel">取消</a>
-                </div>
-            </div>
-        </div>
-
-        <!-- 关键词分类说明 -->
-        <div class="classify-show-pop dialog-container">
-            <!-- <div class="weui-mask weui-animate-fade-in"></div> -->
-            <div class="weui-dialog weui-animate-fade-in">
-                <div class="weui-dialog__hd">
-                    <strong class="weui-dialog__title">提示信息</strong>
-                </div>
-                <div class="weui-dialog__bd">
-                    关键词分类有利于关键词做整合管理<br>工作更为高效!
-                </div>
-                <div class="weui-dialog__ft">
-                    <a href="javascript:;" class="dialog__btn dialog__btn_confirm">去设置</a> 
-                    <a href="javascript:;" class="dialog__btn dialog__btn_cancel">取消</a>
-                </div>
-            </div>
-        </div>
+	<div class="app-layout-header">
+		<span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+		信息类型
+	</div>
+	
+	<div class="app-layout-content-b">
+	    <div class="keyWord">
+	        <section class="add-keyword-container" style="display: none;">
+	            <div>
+	                <div class="classify">
+	                    <span class="classify-l">关键词分类</span>
+	                    <span class="classify-r">
+	                        <span class="classify-detail">未分类</span>
+	                        <span class="iconfont icon-arrow"></span>
+	                    </span>
+	                </div>
+	                <p class="classify-tips">
+	                    关键词分类便于对同类别关键词做整合管理
+	                </p>
+	            </div>
+	            <section class="content">
+	                <!-- 添加关键词 -->
+	                <div class="enter addkeyWord" style="display: none;">
+	                    <input type="text" class="enterOne" placeholder="请输入关键词" maxlength="20" />
+	                    <!-- <textarea style="resize:none;" rows="1"  class="enterOne" name="" id=""  placeholder="请输入关键词" maxlength="100"></textarea> -->
+	                    <div class="btnChoose" style="display:none;">
+	                        <button onclick="toappendkey(this)">添加 附加词</button>
+	                        <button onclick="tonotkey(this)">添加 排除词</button>
+	                    </div>
+	                    <div class="btn">
+	                        <button onclick="Cancel()" style="width:49%;background:#fff;color:#2cb7ca;opacity: 1;">取消</button>
+	                        <button disabled>确认</button>
+	                    </div>
+	                </div>
+	
+	                <!-- 添加关键词显示列表 -->
+	                <div class="showKeyWord">
+	                    <ul>
+	                    </ul>
+	                </div>
+	
+	                <div class="problem">
+	                    疑问解答 <i class="iconfont icon-wenhao"></i>
+	                </div>
+	            </section>
+	
+	            <div class="addKeyWord addNewKeyword">
+	                <i class="iconfont icon-tianjia"  style="display:none;"></i>
+	                <p> 关键词添加数量:<em style="color: #2cb7ca;" class="kws_count">0 </em>/ 300</p>
+	            </div>
+	        </section>
+	        <section class="all-classify-column" style="display: none;">
+	            <div class="keysexplain"><p> 关键词添加数量:<em style="color: #2cb7ca;" class="kws_count">0 </em> / 300</p></div>
+	            <ul class="classify-list">
+	                
+	            </ul>
+	
+	            <div class="addKeyWord addNewKeyword"><div class="addClassify">新增关键词分类</div></div>
+	        </section>
+	
+	        <!-- 疑难问题弹窗 -->
+	        <div class="problemPop dialog-container">
+	            <div class="problemPopContent">
+	                <h3>疑问解答</h3>
+	                <ul>
+	                    <li>
+	                        <p>例:某公司主营业务为软件系统开发</p>
+	                    </li>
+	                    <li>
+	                        <h4>关键词:</h4>
+	                        <p>目标信息中的关键性词语,如“软件系统”</p>
+	                    </li>
+	                    <li>
+	                        <h4>附加词:</h4>
+	                        <p>与关键词形成一体/组合,便于查找准确信息,如“开发”</p>
+	                    </li>
+	                    <li>
+	                        <h4>排除词:</h4>
+	                        <p>与关键词互斥,可排除一部分非目标信息,如“运维”</p>
+	                    </li>
+	                </ul>
+	                <button class="knowBtn">我知道了</button>
+	            </div>
+	        </div>
+	        <!-- 关键词分类弹框 -->
+	        <div class="classify-edit-pop dialog-container">
+	            <!-- <div class="weui-mask weui-animate-fade-in"></div> -->
+	            <div class="weui-dialog weui-animate-fade-in">
+	                <div class="weui-dialog__hd">
+	                    <strong class="weui-dialog__title">关键词分类</strong>
+	                </div>
+	                <div class="weui-dialog__bd">
+	                    <input type="text" class="classify-keyword" maxlength="20" placeholder="输入分类名称">
+	                </div>
+	                <div class="weui-dialog__ft">
+	                    <a href="javascript:;" class="dialog__btn dialog__btn_confirm opacity6">确定</a> 
+	                    <a href="javascript:;" class="dialog__btn dialog__btn_cancel">取消</a>
+	                </div>
+	            </div>
+	        </div>
+	
+	        <!-- 关键词分类说明 -->
+	        <div class="classify-show-pop dialog-container">
+	            <!-- <div class="weui-mask weui-animate-fade-in"></div> -->
+	            <div class="weui-dialog weui-animate-fade-in">
+	                <div class="weui-dialog__hd">
+	                    <strong class="weui-dialog__title">提示信息</strong>
+	                </div>
+	                <div class="weui-dialog__bd">
+	                    关键词分类有利于关键词做整合管理<br>工作更为高效!
+	                </div>
+	                <div class="weui-dialog__ft">
+	                    <a href="javascript:;" class="dialog__btn dialog__btn_confirm">去设置</a> 
+	                    <a href="javascript:;" class="dialog__btn dialog__btn_cancel">取消</a>
+	                </div>
+	            </div>
+	        </div>
+	    </div>
     </div>
-    
-    <script src="{{Msg "seo" "cdn"}}/js/jquery-3.2.1.min.js?v={{Msg "seo" "version"}}"></script>
-    <script src="{{Msg "seo" "cdn"}}/js/jquery.cookie.js?v={{Msg "seo" "version"}}"></script>
-    <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
-	{{include "/common/weixin.html"}}
-	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
-    <script>
-		initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
-        
+    <script src="{{Msg "seo" "cdn"}}/jyapp/js/jquery-3.2.1.min.js?v={{Msg "seo" "version"}}"></script>
+    <script src="{{Msg "seo" "cdn"}}/jyapp/js/jquery.cookie.js?v={{Msg "seo" "version"}}"></script>
+    <script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+    <script>        
         var a_items = [];//全部数据
         var classify_name = "";//分类名称
         var classify_index = 0;//分类索引
@@ -251,13 +252,22 @@
             //是否第一次设置关键词
             isFirstSetKeyword: true
         }
+		//
+		function Cancel(){
+			if($(".showKeyWord li").length==0){
+				window.history.go(-1)
+			}else{
+				$(".content .addkeyWord").hide();
+                $(".add-keyword-container .addNewKeyword i").show();
+			}
+		}
 		//
 		function initSess(){
 			weui.loading();
 	        setTimeout(function(){
 	            weui.loading().hide();
 	            if(window.location.search.indexOf("page=2")>-1){
-					history.replaceState("{id:1}","","/front/vipsubscribe/toSetKeyWordPage")
+					history.replaceState("{id:1}","","/jyapp/vipsubscribe/toSetKeyWordPage")
 	            }else if(history.state){
 	                window.history.go(-1)
 				}
@@ -339,7 +349,7 @@
                 modifyFlag = true;
                 kws_count = sessionStorage.kws_count;
                 $(".kws_count").text(kws_count);
-                $('.addKeyWord').hide();
+               $(".add-keyword-container .addNewKeyword i").hide();
                 toSetKws();
             }else{
                 //获取用户设置信息类型
@@ -380,11 +390,13 @@
             if (state) {
                 $('.add-keyword-container').show()
                 $('.all-classify-column').hide()
+            	$(".addClassify").hide();
             } else {
                 $('.add-keyword-container').hide()
                 $('.all-classify-column').show()
+            	$(".addClassify").show();
+                $(".add-keyword-container .addNewKeyword i").hide();
             }
-            $(".addNewKeyword").show();
         }
         //分类列表
         function appendHtml(kwsdata){
@@ -405,7 +417,7 @@
                     if(keystr!=""){
                         keystr += "、"
                     }
-                    keystr += a_key[j]["key"].join('');
+                    keystr += a_key[j]["key"].join(' ');
 					kws_arr[a_key[j]["key"].join(' ')]=j+"-"+i
                 } 
                 classifyHtml +='<li class="classify-item">'
@@ -428,8 +440,10 @@
             var showKeyWordLength = $(".showKeyWord ul").find('li').length;
             if (showKeyWordLength === 0) {
                 $(".content .addkeyWord").show();
+				$(".add-keyword-container .addNewKeyword i").hide();
             } else {
                 $(".content .addkeyWord").hide();
+				$(".add-keyword-container .addNewKeyword i").show();
             }
         }
         //修改关键词内容
@@ -450,6 +464,7 @@
                 }
                 edhtml +='</div>'
                         +'<div class="btn">'
+						+'<button onclick="Cancel()" style="width:49%;background:#fff;color:#2cb7ca;opacity: 1;">取消</button>'
                         +'<button style="opacity: 1;">确认</button>'
                         +'</div>'
                 $(".enter.addkeyWord").html(edhtml);
@@ -520,8 +535,9 @@
                                     +'<p class="notkey">'+_keyArr[i]["notkey"].join(" ")+'</p>'
                                     +'</span>'
                     }
+					var p = kws_arr[_keyArr[i]["key"].join(" ")].split("-")[0]
                     kwsHtml +='</div>'
-                                +'<button class="editKeyWord" dataIndex="'+i+'"><i class="iconfont icon-xiugai"></i> 修改</button>'
+                                +'<button class="editKeyWord" dataIndex="'+p+'"><i class="iconfont icon-xiugai"></i> 修改</button>'
                                 +'</div>'
                      
                     if(modifyFlag&&i==kws_index){
@@ -535,7 +551,6 @@
                     }else{
                         kwsHtml +='<div class="modify" style="display: none;">'
                     }
-					var p = kws_arr[_keyArr[i]["key"].join(" ")].split("-")[0]
                     kwsHtml +='<textarea name="" rows="1" placeholder="" maxlength="20">'+_keyArr[i]["key"].join(" ")+'</textarea>'
                                 +'<button class="addAdjunctWord" onclick="toappendkey(this)">'+ak_remark+' 附加词 <i class="appendkey '+ak_showClass+'">('+appendkeylth+')</i></button>'
                                 +'<button class="addExclusion" onclick="tonotkey(this)">'+nk_remark+' 排除词 <i class="notkey '+nk_showClass+'">('+notkeylth+')</i></button>'
@@ -554,39 +569,39 @@
         }
         //跳转附加词
         function toappendkey(th){
-			history.replaceState("","","/front/vipsubscribe/toSetKeyWordPage?page=242")
             if(!$('.enter.addkeyWord').is(':hidden')){
-                if($('.addkeyWord input.enterOne').val()==""){
+                if($.trim($('.addkeyWord input.enterOne').val())==""){
                     return
                 }
                 kws_index = -1
-                kws_name = $('.addkeyWord input.enterOne').val();
+                kws_name = $.trim($('.addkeyWord input.enterOne').val());
             }else{
-               if($(th).parent(".modify").find("textarea").val()==""){
+               if($.trim($(th).parent(".modify").find("textarea").val())==""){
                  return
                }
-                kws_name = $(th).parent(".modify").find("textarea").val();
+                kws_name = $.trim($(th).parent(".modify").find("textarea").val());
             }
+			history.replaceState("","","/jyapp/vipsubscribe/toSetKeyWordPage?page=243")
             setSesstion();
-            window.location.href="/front/vipsubscribe/toSetadditionPage";
+            window.location.href="/jyapp/vipsubscribe/toSetadditionPage";
         }
         //
         function tonotkey(th){
-			history.replaceState("","","/front/vipsubscribe/toSetKeyWordPage?page=242")
             if(!$('.enter.addkeyWord').is(':hidden')){
-                if($('.addkeyWord input.enterOne').val()==""){
+                if($.trim($('.addkeyWord input.enterOne').val())==""){
                     return
                 }
                 kws_index = -1
-                kws_name = $('.addkeyWord input.enterOne').val();
+                kws_name = $.trim($('.addkeyWord input.enterOne').val());
             }else{
-               if($(th).parent(".modify").find("textarea").val()==""){
+               if($.trim($(th).parent(".modify").find("textarea").val())==""){
                  return
                }
-                kws_name = $(th).parent(".modify").find("textarea").val();
+                kws_name = $.trim($(th).parent(".modify").find("textarea").val());
             }
+			history.replaceState("","","/jyapp/vipsubscribe/toSetKeyWordPage?page=243")
             setSesstion();
-            window.location.href='/front/vipsubscribe/toSetexclusivePage';
+            window.location.href='/jyapp/vipsubscribe/toSetexclusivePage';
         }
         //保存缓存
         function setSesstion(){
@@ -620,45 +635,54 @@
         }
         //保存关键词
         function saveK(th){
-            var $this = $(th);
-			var yuan_index = $this.attr("dataIndex")
-            kws_name = $(th).siblings('textarea').val();
-			console.log(kws_arr[kws_name])
-			if(kws_arr[kws_name]!=undefined&&kws_arr[kws_name]!=(yuan_index+"-"+classify_index)){
-                weui.toast('您设置的关键词已存在,请调整后再添加。', {
-                    duration: 2000,
-                    className: 'custom-toast',
-                    callback: function () { console.log('close') }
-                });
-				return
-			}
-            if(kws_name.length > 20){
-                weui.toast('关键词不能超过20字', {
-                    duration: 2000,
-                    className: 'custom-toast',
-                    callback: function () { console.log('close') }
-                });
-            }else{
-                if(saveData('SK')){
-					$this.attr("dataindex",kws_index);
-                    $this.parent().siblings().find('.key').text(kws_name)
-                    $this.parent().hide().siblings().show()
-                    $('.addKeyWord').show();
-                    //
-                    doSessionData();
-		            //把kws_name,kws_index,addition_kws,not_kws初始化
-		            kws_index = 0;
-		            kws_name = "";
-		            addition_kws = [];
-		            not_kws = [];
-                }else{
-		            weui.toast('保存出错,稍后再试', {
-		                duration: 2000,
-		                className: 'custom-toast',
-		                callback: function () { console.log('close') }
-		            });
-                }
-            }
+			setTimeout(function(){
+	            var $this = $(th);
+	            kws_name =  $.trim($(th).siblings('textarea').val());
+				if(kws_name==""){
+	                weui.toast('您设置的关键词不能为空,请调整后再添加。', {
+	                    duration: 2000,
+	                    className: 'custom-toast',
+	                    callback: function () { console.log('close') }
+	                });
+					return
+				}
+				var _index =  Number($this.attr("dataindex"));
+				if(kws_arr[kws_name]!=undefined&&kws_arr[kws_name]!=(_index+"-"+classify_index)){
+	                weui.toast('您设置的关键词已存在,请调整后再添加。', {
+	                    duration: 2000,
+	                    className: 'custom-toast',
+	                    callback: function () { console.log('close') }
+	                });
+					return
+				}
+	            if(kws_name.length > 20){
+	                weui.toast('关键词不能超过20字', {
+	                    duration: 2000,
+	                    className: 'custom-toast',
+	                    callback: function () { console.log('close') }
+	                });
+	            }else{
+	                if(saveData('SK')){
+						//$this.attr("dataindex",kws_index);
+	                    $this.parent().siblings().find('.key').text(kws_name)
+	                    $this.parent().hide().siblings().show()
+	                	$(".add-keyword-container .addNewKeyword i").show();
+	                    //
+	                    doSessionData("",_index);
+			            //把kws_name,kws_index,addition_kws,not_kws初始化
+			            kws_index = 0;
+			            kws_name = "";
+			            addition_kws = [];
+			            not_kws = [];
+	                }else{
+			            weui.toast('保存出错,稍后再试', {
+			                duration: 2000,
+			                className: 'custom-toast',
+			                callback: function () { console.log('close') }
+			            });
+	                }
+	            }
+			},150)
         }
         //保存数据
         function saveData(actionType){
@@ -690,29 +714,46 @@
             });
             return _flag
         }
-        //处理缓存数据
-        function doSessionData(t){
+        //处理缓存数据  根据新索引和原索引操作----
+        function doSessionData(t,index){
             //删除关键词
             if(t!="DK"){
-				kws_arr[kws_name] = kws_index+"-"+classify_index
-                if(kws_index == $(".showKeyWord li").length){
-                    //新加
+                if($(".showKeyWord li:first").find(".editKeyWord").attr("dataIndex")!=undefined&&index <= Number($(".showKeyWord li:first").find(".editKeyWord").attr("dataIndex"))){
+					var akws = a_items[classify_index]["a_key"];
+					for (var n in akws){
+						var ky = akws[n]["key"].join(" ");
+						var sy = index+"-"+classify_index
+						if(kws_arr[ky]==sy){
+							delete kws_arr[ky];
+							break;
+						}
+					}
+                    a_items[classify_index]["a_key"][kws_index]["key"]= kws_name.split(' ')
+                    a_items[classify_index]["a_key"][kws_index]["appendkey"]= addition_kws
+                    a_items[classify_index]["a_key"][kws_index]["notkey"]= not_kws
+                }else{
+					//新加
                     var karr = {"key":kws_name.split(" "),"appendkey":addition_kws,"notkey":not_kws}
-                    var keyM = [];
-                    keyM.push(karr);
-                    var classifyArr = {"s_item":classify_name,"a_key":keyM}
-                    if (kws_index==0){
+                    if (index==0){
+                    	var keyM = [];
+                    	keyM.push(karr);
+                    	var classifyArr = {"s_item":classify_name,"a_key":keyM}
                         a_items.push(classifyArr);
                     }else{
                         a_items[classify_index]["a_key"].push(karr);
                     }
-                }else{
-                    a_items[classify_index]["a_key"][kws_index]["key"]= kws_name.split(' ')
-                    a_items[classify_index]["a_key"][kws_index]["appendkey"]= addition_kws
-                    a_items[classify_index]["a_key"][kws_index]["notkey"]= not_kws
                 }
+				kws_arr[kws_name] = index+"-"+classify_index
             }else{
-				delete kws_arr[kws_name];
+				var akws = a_items[classify_index]["a_key"];
+				for (var n in akws){
+					var ky = akws[n]["key"].join(" ");
+					var sy = index+"-"+classify_index
+					if(kws_arr[ky]==sy){
+						delete kws_arr[ky];
+						break;
+					}
+				}
                 if (a_items[classify_index]["a_key"].length==1){
                     a_items.splice(classify_index,1);
                 }else{
@@ -738,7 +779,7 @@
 		    $('input.classify-keyword').val(currentClassifyName).focus()
 		}
     </script>
-    <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/keyWord.js?v={{Msg "seo" "version"}}21"></script>
+    <script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/keyWord.js?v={{Msg "seo" "version"}}23"></script>
     <script>
         // 设置一条空记录,用户第一次进入添加关键词点击确定时候调用
         function setEmptyHistory() {
@@ -778,7 +819,7 @@
                 $(".enter.addkeyWord").find(".btnChoose button").eq(1).html('添加 附加词');
                 $(".enter.addkeyWord").find("input").val("");
                 $(".enter.addkeyWord").show();
-                $(".add-keyword-container .addNewKeyword").hide();
+                $(".add-keyword-container .addNewKeyword i").hide();
                 setTimeout(function(){
                     modalOne();
                 },200)
@@ -794,15 +835,20 @@
                     // 还原有数据
                     $('.classify .classify-detail').text('未分类');
                     $('.add-keyword-container .showKeyWord ul').html('');
-                    
                 }
-                $(".add-keyword-container .addNewKeyword").hide();
+                $(".add-keyword-container .addNewKeyword i").hide();
                 $('.add-keyword-container').show();
                 $('.all-classify-column').hide();
-                
+                //
+				kws_index = 0;
+				modifyFlag = false;
+				addition_kws = [];
+				not_kws = [];
                 // 显示添加关键词的输入框
                 $(".enter.addkeyWord").find(".btnChoose button").eq(0).html('添加 附加词');
                 $(".enter.addkeyWord").find(".btnChoose button").eq(1).html('添加 排除词');
+            	$(".enter.addkeyWord").find(".btn button").eq(1).css({"opacity":".5"});
+            	$(".enter.addkeyWord").find(".btn button").eq(1).attr("disabled", true);
                 $(".enter.addkeyWord").find("input").val("");
                 $(".enter.addkeyWord").show();
                 $('.enterOne').focus();
@@ -812,9 +858,11 @@
             $('.classify-list').on('click', '.classify-item', function() {
                 // 添加一条空历史记录
                 history.pushState({id:1}, "","");
-                classify_name = $(this).find('.classify-item-l').text();
-                classify_index = $(this).index()
+                classify_name = $.trim($(this).find('.classify-item-l').text());
+                classify_index = $(this).index();
+				kws_index = 0;
                 //展示此关键词信息
+				$(".add-keyword-container .addNewKeyword i").show();
                 toSetKws();
             })
         })

+ 17 - 12
src/jfw/modules/app/src/web/templates/vipsubscribe/messageType.html

@@ -1,16 +1,14 @@
 <!DOCTYPE html>
 <html lang="en">
 <head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
-    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+	{{include "/common/meta.html"}}
     <title>信息类型</title>
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/messageType.css?v={{Msg "seo" "version"}}">    
-	<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/css/common.css?v={{Msg "seo" "version"}}">
-    <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+	{{include "/common/nnc.html"}}
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/css/messageType.css?v={{Msg "seo" "version"}}">    
+	<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
+    <script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
     <style type="text/css">
         body .industry .resetOne{
             position: fixed;
@@ -26,6 +24,12 @@
     </style>
 </head>
 <body>
+	<div class="app-layout-header">
+		<span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+		信息类型
+	</div>
+	
+	<div class="app-layout-content-b">
 	<div class="result">
         <p class="result_text line_two">
           已选择:<span class="result_name"></span>
@@ -94,9 +98,10 @@
         </div>
 
     </div>
-    <script src="{{Msg "seo" "cdn"}}/js/jquery-3.2.1.min.js?v=1412"></script>
-    <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
-    <script src="{{Msg "seo" "cdn"}}/js/common.js?v={{Msg "seo" "version"}}"></script>
+    </div>
+	<script src="{{Msg "seo" "cdn"}}/jyapp/js/jquery-3.2.1.min.js?v=1412"></script>
+    <script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+    <script src="{{Msg "seo" "cdn"}}/jyapp/js/common.js?v={{Msg "seo" "version"}}"></script>
     <script>      
 		var hasZBGG = ""
 		var hasZBJG = ""

+ 166 - 157
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_index.html

@@ -1,169 +1,170 @@
 <!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, viewport-fit=cover">
-    <meta name="apple-mobile-web-app-status-bar-style" content="#34355A" />
-    <meta name="theme-color" content="#34355A">
-    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+	{{include "/common/meta.html"}}
     <title>VIP订阅首页</title>
+	{{include "/common/nnc.html"}}
     <meta name="apple-mobile-web-app-capable" content="yes">
     <meta name="apple-mobile-web-app-status-bar-style" content="black">
-    <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
-    <link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}" />
-    <link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}" />
-    <link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/vip_index.css?v={{Msg "seo" "version"}}2">
+    <script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+    <script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
+    <link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/css/vip_index.css?v={{Msg "seo" "version"}}2">
 </head>
 
 <body style="visibility:hidden;">
-    <div class="vip_index">
-        <div class="header" style="display: none;">
-            <img class="header_left" src="/vipsubscribe/image/left.png?v={{Msg "seo" "version"}}" alt="" onclick="javascript:history.back(-1);">
-            <h3 class="header_title">VIP订阅</h3>
-            <span class="header_right"></span>
-        </div>
-        <div class="content">
-            <div class="vip_info">
-                <div class="service">
-                    <div class="s_left">
-                        <span class="free7days_pic"></span>
-                        <!-- <div class="already">
-                            <img src="/vipsubscribe/image/v.png?v={{Msg "seo" "version"}}" alt="">
-                            <h4>已开通VIP订阅服务</h4>
-                        </div> -->
-                    </div>
-                </div>
-            </div>
-            <div class="subscribe_info">
-                <div class="s_info_top">
-                    <p class="s_i_item" style="margin-bottom: .1rem;">
-                        <label>已购买区域:</label>
-						<span class="expand-box area expanded">
-                            <span class="_area"></span>
-                            <span class="iconfont icon-arrow"></span>
-                        </span>
-<!--                        <span class="_area"></span>-->
-                    </p>
-                    <p class="s_i_item" style="margin-bottom: .1rem;">
-                        <label>已购买行业:</label>
-                        <span class="expand-box trade expanded">
-                            <span class="_buyerClass"></span>
-                            <span class="iconfont icon-arrow"></span>
-                        </span>
-<!--                        <span class="_buyerClass"></span>-->
-                    </p>
-                    <p class="s_i_item" style="margin-bottom: .1rem;">
-                        <label>订阅周期:</label>
-                        <span class="_cycleCount"></span>
-                    </p>
-                    <p class="s_i_item">
-                        <label>有效日期:</label>
-                        <span class="_activeDate"></span>
-                    </p>
-                    <div class="to_expired" style="display: none;">
-                        <div class="e_circle">即将到期</div>
-                    </div>
-                </div>
-                <!-- 如果用户同时购买全国和全行业 则隐藏修改功能 -->
-                <div class="s_info_bottom">
-                    <span onclick="window.location.href='/front/vipsubscribe/toEditSubPage'">修改</span>
-                    <i class="iconfont icon-arrow"></i>
-                </div>
-            </div>
-            <div class="panel">
-                <div class="media">
-                    <div class="media_list">
-                        <div class="media_left">
-                            <img src="/vipsubscribe/image/keyword.png?v={{Msg "seo" "version"}}" alt="">
-                            <span>关键词</span>
-                        </div>
-                        <a href="/front/vipsubscribe/toSetKeyWordPage" class="media_right" id="keywords">
-                            
-                        </a>
-                    </div>
-                    <div class="media_list">
-                        <div class="media_left">
-                            <img src="/vipsubscribe/image/type.png?v={{Msg "seo" "version"}}" alt="">
-                            <span>信息类型</span>
-                        </div>
-                        <a href="/front/vipsubscribe/toSetInfoTypePage" class="media_right" id="infoType"></a>
-                    </div>
-                    <div class="media_list">
-                        <div class="media_left">
-                            <img src="/vipsubscribe/image/set.png?v={{Msg "seo" "version"}}" alt="">
-                            <span>推送设置</span>
-                        </div>
-                        <a href="/front/vipsubscribe/toSetPushSetPage" class="media_right" id="pushSet"></a>
-                    </div>
-                    <div class="media_list" style="margin-top:.2rem;margin-bottom: .2rem;" id="auto_renew">
-                        <div class="media_left">
-                            <img src="/vipsubscribe/image/frame.png?v={{Msg "seo" "version"}}" alt="">
-                            <span>项目匹配</span>
-							<i class="iconfont icon-wenhao "></i>
-                        </div>
-                        <div class="media_switch">
-                            <div class="weui-cell__ft">
-                                <button class="custom-switch switch"></button>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="media_list" style="margin-top:.2rem;margin-bottom: .98rem;display: none;">
-                        <div class="media_left">
-                            <img src="/vipsubscribe/image/data.png?v={{Msg "seo" "version"}}" alt="">
-                            <span>数据报告</span>
-                        </div>
-                        <a href="#" class="media_right">
-                            <span class="weui-badge">2</span>
-                        </a>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <div class="footer">
-            <!-- 续费提醒 -->
-            <div class="renew_toast" style="display: none;">
-                <div>
-                    <i class="icon iconfont" id="close_renew">&#xe61a;</i>
-                    <span>VIP订阅服务还有 <span class="renew_day"></span> 天到期,请及时续费!</span>
-                    <a href="/weixin/pay/renewPayPage">去续费</a>
-                </div>
-            </div>
-            <!-- 试用用户-去购买提醒 -->
-            <div class="nv_renew_toast" style="display: none;">
-                <div>
-                    <i class="icon iconfont" id="nv_close_renew">&#xe61a;</i>
-                    <span>VIP订阅服务试用即将过期,请及时购买!</span>
-                    <a href="/weixin/pay/vipsubscribe_new">去购买</a>
-                </div>
-            </div>
-            <!-- 升级 续费 -->
-            <div class="tabbar">
-                <a href="/weixin/pay/toUpgradePage" class="update_btn">升级</a>
-                <a href="/weixin/pay/renewPayPage" class="renew_btn">续费</a>
-            </div>
-        </div>
-        <!-- 项目匹配提醒 -->
-        <div class="custom-dialog" style="display: none;">
-            <div class="weui-mask weui-animate-fade-in"></div>
-            <div class="weui-dialog weui-animate-fade-in">
-                <div class="weui-dialog__hd"><strong class="weui-dialog__title" style="font-weight: bold;">项目匹配</strong></div>
-                <div class="weui-dialog__bd" style="line-height: .4rem;padding: .37rem .45rem;font-size: 14px;text-align: left;color: #686868;">开启后,系统将根据你订阅的关键词自动匹配出相关联的项目,并将相关联项目的后续动态在VIP订阅内一并推送。</div>
-                <div class="weui-dialog__ft" style="border-top: 1px solid #eee;padding-bottom: .2rem;padding-top: .2rem;"> 
-                    <a href="javascript:;" class="weui-dialog__btn weui-dialog__btn_primary" style="background: #fff;color: #2CB7CA;text-align: center;margin-right: unset;">我知道了</a>
-                </div>
-            </div>
-        </div>
+	<div class="app-layout-header">
+		<span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+		VIP订阅
+	</div>
+	
+	<div class="app-layout-content-b">
+	    <div class="vip_index">
+	        <div class="header" style="display: none;">
+	            <img class="header_left" src="/jyapp/vipsubscribe/image/left.png?v={{Msg "seo" "version"}}" alt="" onclick="javascript:history.back(-1);">
+	            <h3 class="header_title">VIP订阅</h3>
+	            <span class="header_right"></span>
+	        </div>
+	        <div class="content">
+	            <div class="vip_info">
+	                <div class="service">
+	                    <div class="s_left">
+	                        <span class="free7days_pic"></span>
+	                        <!-- <div class="already">
+	                            <img src="/vipsubscribe/image/v.png?v={{Msg "seo" "version"}}" alt="">
+	                            <h4>已开通VIP订阅服务</h4>
+	                        </div> -->
+	                    </div>
+	                </div>
+	            </div>
+	            <div class="subscribe_info">
+	                <div class="s_info_top">
+	                    <p class="s_i_item" style="margin-bottom: .1rem;">
+	                        <label>已购买区域:</label>
+							<span class="expand-box area expanded">
+	                            <span class="_area"></span>
+	                            <span class="iconfont icon-arrow"></span>
+	                        </span>
+	<!--                        <span class="_area"></span>-->
+	                    </p>
+	                    <p class="s_i_item" style="margin-bottom: .1rem;">
+	                        <label>已购买行业:</label>
+	                        <span class="expand-box trade expanded">
+	                            <span class="_buyerClass"></span>
+	                            <span class="iconfont icon-arrow"></span>
+	                        </span>
+	<!--                        <span class="_buyerClass"></span>-->
+	                    </p>
+	                    <p class="s_i_item" style="margin-bottom: .1rem;">
+	                        <label>订阅周期:</label>
+	                        <span class="_cycleCount"></span>
+	                    </p>
+	                    <p class="s_i_item">
+	                        <label>有效日期:</label>
+	                        <span class="_activeDate"></span>
+	                    </p>
+	                    <div class="to_expired" style="display: none;">
+	                        <div class="e_circle">即将到期</div>
+	                    </div>
+	                </div>
+	                <!-- 如果用户同时购买全国和全行业 则隐藏修改功能 -->
+	                <div class="s_info_bottom">
+	                    <span onclick="window.location.href='/jyapp/vipsubscribe/toEditSubPage'">修改</span>
+	                    <i class="iconfont icon-arrow"></i>
+	                </div>
+	            </div>
+	            <div class="panel">
+	                <div class="media">
+	                    <div class="media_list">
+	                        <div class="media_left">
+	                            <img src="/jyapp/vipsubscribe/image/keyword.png?v={{Msg "seo" "version"}}" alt="">
+	                            <span>关键词</span>
+	                        </div>
+	                        <a href="/jyapp/vipsubscribe/toSetKeyWordPage" class="media_right" id="keywords">
+	                            
+	                        </a>
+	                    </div>
+	                    <div class="media_list">
+	                        <div class="media_left">
+	                            <img src="/jyapp/vipsubscribe/image/type.png?v={{Msg "seo" "version"}}" alt="">
+	                            <span>信息类型</span>
+	                        </div>
+	                        <a href="/jyapp/vipsubscribe/toSetInfoTypePage" class="media_right" id="infoType"></a>
+	                    </div>
+	                    <div class="media_list">
+	                        <div class="media_left">
+	                            <img src="/jyapp/vipsubscribe/image/set.png?v={{Msg "seo" "version"}}" alt="">
+	                            <span>推送设置</span>
+	                        </div>
+	                        <a href="/jyapp/vipsubscribe/toSetPushSetPage" class="media_right" id="pushSet"></a>
+	                    </div>
+	                    <div class="media_list" style="margin-top:.2rem;margin-bottom: .2rem;" id="auto_renew">
+	                        <div class="media_left">
+	                            <img src="/jyapp/vipsubscribe/image/frame.png?v={{Msg "seo" "version"}}" alt="">
+	                            <span>项目匹配</span>
+								<i class="iconfont icon-wenhao "></i>
+	                        </div>
+	                        <div class="media_switch">
+	                            <div class="weui-cell__ft">
+	                                <button class="custom-switch switch"></button>
+	                            </div>
+	                        </div>
+	                    </div>
+	                    <div class="media_list" style="margin-top:.2rem;margin-bottom: .98rem;display: none;">
+	                        <div class="media_left">
+	                            <img src="/jyapp/vipsubscribe/image/data.png?v={{Msg "seo" "version"}}" alt="">
+	                            <span>数据报告</span>
+	                        </div>
+	                        <a href="#" class="media_right">
+	                            <span class="weui-badge">2</span>
+	                        </a>
+	                    </div>
+	                </div>
+	            </div>
+	        </div>
+	        <div class="footer">
+	            <!-- 续费提醒 -->
+	            <div class="renew_toast" style="display: none;">
+	                <div>
+	                    <i class="icon iconfont" id="close_renew">&#xe61a;</i>
+	                    <span>VIP订阅服务还有 <span class="renew_day"></span> 天到期,请及时续费!</span>
+	                    <a href="/weixin/pay/renewPayPage">去续费</a>
+	                </div>
+	            </div>
+	            <!-- 试用用户-去购买提醒 -->
+	            <div class="nv_renew_toast" style="display: none;">
+	                <div>
+	                    <i class="icon iconfont" id="nv_close_renew">&#xe61a;</i>
+	                    <span>VIP订阅服务试用即将过期,请及时购买!</span>
+	                    <a href="/weixin/pay/vipsubscribe_new">去购买</a>
+	                </div>
+	            </div>
+	            <!-- 升级 续费 -->
+	            <div class="tabbar">
+	                <a href="/weixin/pay/toUpgradePage" class="update_btn">升级</a>
+	                <a href="/weixin/pay/renewPayPage" class="renew_btn">续费</a>
+	            </div>
+	        </div>
+	        <!-- 项目匹配提醒 -->
+	        <div class="custom-dialog" style="display: none;">
+	            <div class="weui-mask weui-animate-fade-in"></div>
+	            <div class="weui-dialog weui-animate-fade-in">
+	                <div class="weui-dialog__hd"><strong class="weui-dialog__title" style="font-weight: bold;">项目匹配</strong></div>
+	                <div class="weui-dialog__bd" style="line-height: .4rem;padding: .37rem .45rem;font-size: 14px;text-align: left;color: #686868;">开启后,系统将根据你订阅的关键词自动匹配出相关联的项目,并将相关联项目的后续动态在VIP订阅内一并推送。</div>
+	                <div class="weui-dialog__ft" style="border-top: 1px solid #eee;padding-bottom: .2rem;padding-top: .2rem;"> 
+	                    <a href="javascript:;" class="weui-dialog__btn weui-dialog__btn_primary" style="background: #fff;color: #2CB7CA;text-align: center;margin-right: unset;">我知道了</a>
+	                </div>
+	            </div>
+	        </div>
+	    </div>
     </div>
-    <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
-<!--    <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>-->
-    <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
-	{{include "/common/weixin.html"}}
-	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}11"></script>
+	<script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
+<!--    <script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>-->
+    <script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
     <script>
-		initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
 		var checkedflag = true;
         $(function () {
 			var isinitpage = false;
@@ -288,8 +289,16 @@
 							}else{
 				                $('.switch').removeClass('checked')
 				            }
-	                        $("._area").text(_vipData["o_area"]);
-	                        $("._buyerClass").text(_vipData["a_buyerclass"]);
+							//地区
+							var area = _vipData["o_area"];
+	                        $("._area").text(area);
+							//行业
+							var buyerclass =  SortArr(_vipData["a_buyerclass"]);
+							if (buyerclass.length>0){
+	                        	$("._buyerClass").text(buyerclass.length+"个行业");
+							}else{
+	                        	$("._buyerClass").text("全部行业");
+							}
 	                        $("._cycleCount").text(_vipData["cycle"]);
 	                        $("._activeDate").text(_userData["l_vip_starttime"]+" - "+_userData["l_vip_endtime"]);
 	                        if(_vipData["a_infotype"]==""){

+ 96 - 94
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_seniorset.html

@@ -1,18 +1,15 @@
 <html>
 <head>
+	{{include "/common/meta.html"}}
 	<title>推送设置</title>
-	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
-	<link href="{{Msg "seo" "cdn"}}/mobiscroll/mobiscroll.min.css" rel="stylesheet">
-	<link href="{{Msg "seo" "cdn"}}/css/common.css?v={{Msg "seo" "version"}}" rel="stylesheet">
-	<link href="{{Msg "seo" "cdn"}}/css/wxkeyset.css?v={{Msg "seo" "version"}}" rel="stylesheet">
-	{{include "/common/weixin.html"}}
-	<script src="{{Msg "seo" "cdn"}}/js/jquery.js"></script>
-	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
-	<script src="{{Msg "seo" "cdn"}}/js/fastclick.js?v={{Msg "seo" "version"}}"></script>
-	<script src="{{Msg "seo" "cdn"}}/js/common.js?v={{Msg "seo" "version"}}"></script>
-	<script src="{{Msg "seo" "cdn"}}/mobiscroll/mobiscroll.min.js"></script>
-	<script src="{{Msg "seo" "cdn"}}/js/rem.js"></script>
-
+	<link href="{{Msg "seo" "cdn"}}/jyapp/mobiscroll/mobiscroll.min.css" rel="stylesheet">
+	<link href="{{Msg "seo" "cdn"}}/jyapp/css/common.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+	<link href="{{Msg "seo" "cdn"}}/jyapp/css/wxkeyset.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+	<script src="{{Msg "seo" "cdn"}}/jyapp/js/jquery.js"></script>
+	<script src="{{Msg "seo" "cdn"}}/jyapp/js/fastclick.js?v={{Msg "seo" "version"}}"></script>
+	<script src="{{Msg "seo" "cdn"}}/jyapp/js/common.js?v={{Msg "seo" "version"}}"></script>
+	<script src="{{Msg "seo" "cdn"}}/jyapp/mobiscroll/mobiscroll.min.js"></script>
+	<script src="{{Msg "seo" "cdn"}}/jyapp/js/rem.js"></script>
 	<style>
 		#pushway ul>li:nth-child(n+2) {
 			/*padding: 8px 0px;*/
@@ -33,9 +30,7 @@
 			color: #686868;
 		}
 	</style>
-	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}1"></script>
     <script>
-		initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
 		var s_email = "";
 		var keepOneTipWayMsg = "请保留一种推送方式,<br>剑鱼标讯还要推送信息给您";
 		var emailSetModal = null;
@@ -103,7 +98,7 @@
 				if(!clickDelayed){
 					return;
 				}
-				window.location.href = "/front/vipsubscribe/toVIPViewPage";
+				window.location.href = "/jyapp/vipsubscribe/toVIPViewPage";
 			});
 			
 			//微信提醒
@@ -243,90 +238,97 @@
 	</script>
 </head>
 <body class="seniorsetpage">
-	<div class="header">
-		推送设置<span class="complate">完成</span>
+	<div class="app-layout-header">
+		<span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+		VIP订阅
 	</div>
-
-	<div class="content">
-		<div id="pushfrequency">
-			<ul class="navchoose">
-				<li><img src="{{Msg "seo" "cdn"}}/images/wxkeyset/pushfrequency.png">推送时间</li>
-				<li onclick="docheck('1',this)" dataid="1">
-					实时推送
-					<img src="{{Msg "seo" "cdn"}}/images/wxkeyset/checked.png" class="checked-img">
-					<span>8点-20点实时推送</span>
-				</li>
-				<li onclick="docheck('2',this)" dataid="2">
-					每日推送
-					<img src="{{Msg "seo" "cdn"}}/images/wxkeyset/checked.png" class="checked-img">
-					<span>上午9点推送一次</span>
-				</li>
-				<li onclick="docheck('3',this)" dataid="3">
-					每周推送
-					<img src="{{Msg "seo" "cdn"}}/images/wxkeyset/checked.png" class="checked-img">
-					<span>每周五上午9点推送一次</span>
-				</li>
-				<li onclick="docheck('4',this)" dataid="4">
-					每月推送
-					<img src="{{Msg "seo" "cdn"}}/images/wxkeyset/checked.png" class="checked-img">
-					<span>每月28日上午9点推送一次</span>
-				</li>
-			</ul>
+	
+	<div class="app-layout-content-b">
+		<div class="header">
+			推送设置<span class="complate">完成</span>
 		</div>
-		<div id="pushway">
-			<ul class="navchoose">
-				<li><img src="{{Msg "seo" "cdn"}}/images/wxkeyset/pushway.png">推送方式</li>
-				<li id="wxtip">
-					微信提醒
-					<img src="{{Msg "seo" "cdn"}}/images/wxkeyset/turn-on.png" class="turn-on">
-					<img src="{{Msg "seo" "cdn"}}/images/wxkeyset/turn-off.png" class="turn-off">
-				</li>
-				<li id="emailtip">
-					邮件提醒
-					<img src="{{Msg "seo" "cdn"}}/images/wxkeyset/turn-on.png" class="turn-on">
-					<img src="{{Msg "seo" "cdn"}}/images/wxkeyset/turn-off.png" class="turn-off">
-					<div class="emailset">
-						<span></span>
-						<img src="{{Msg "seo" "cdn"}}/images/wx/editemail.png">
-					</div>
-				</li>
-			</ul>
-		</div>
-		<div id="matchType">
-			<ul class="navchoose">
-				<li><img src="{{Msg "seo" "cdn"}}/vipsubscribe/image/matchType.png">关键词匹配方式</li>
-				<li onclick="docheck('5',this)" dataid="5">
-					按标题匹配
-					<img src="{{Msg "seo" "cdn"}}/images/wxkeyset/checked.png" class="checked-img">
-				</li>
-				<li onclick="docheck('6',this)" dataid="6">
-					按全文匹配
-					<img src="{{Msg "seo" "cdn"}}/images/wxkeyset/checked.png" class="checked-img">
-					<span>会产生无效信息,请根据需要选择</span>
-				</li>
-			</ul>
-		</div>
-		<div class="onenavbar" id="resultpreview">
-			<img src="{{Msg "seo" "cdn"}}/images/wxkeyset/resultpreview.png" class="img-left">
-			推送结果预览
-			<img src="{{Msg "seo" "cdn"}}/wxswordfish/images/right.png" class="img-right">
-		</div>
-	</div>
-	<div class="easypopup" id="emailSetModal">
-		<div class="easypopup-edit">
-			<div class="easypopup-header">设置邮件地址</div>
-			<div class="easypopup-content">
-				<input type="text" id="email" placeholder="邮件地址" class="form-control"/>
-				<div class="error hide">您输入的邮箱不正确,请重新输入</div>
+	
+		<div class="content" style="margin-top:0px;">
+			<div id="pushfrequency">
+				<ul class="navchoose">
+					<li><img src="{{Msg "seo" "cdn"}}/jyapp/images/wxkeyset/pushfrequency.png">推送时间</li>
+					<li onclick="docheck('1',this)" dataid="1">
+						实时推送
+						<img src="{{Msg "seo" "cdn"}}/jyapp/images/wxkeyset/checked.png" class="checked-img">
+						<span>8点-20点实时推送</span>
+					</li>
+					<li onclick="docheck('2',this)" dataid="2">
+						每日推送
+						<img src="{{Msg "seo" "cdn"}}/jyapp/images/wxkeyset/checked.png" class="checked-img">
+						<span>上午9点推送一次</span>
+					</li>
+					<li onclick="docheck('3',this)" dataid="3">
+						每周推送
+						<img src="{{Msg "seo" "cdn"}}/jyapp/images/wxkeyset/checked.png" class="checked-img">
+						<span>每周五上午9点推送一次</span>
+					</li>
+					<li onclick="docheck('4',this)" dataid="4">
+						每月推送
+						<img src="{{Msg "seo" "cdn"}}/jyapp/images/wxkeyset/checked.png" class="checked-img">
+						<span>每月28日上午9点推送一次</span>
+					</li>
+				</ul>
+			</div>
+			<div id="pushway">
+				<ul class="navchoose">
+					<li><img src="{{Msg "seo" "cdn"}}/jyapp/images/wxkeyset/pushway.png">推送方式</li>
+					<li id="wxtip">
+						微信提醒
+						<img src="{{Msg "seo" "cdn"}}/jyapp/images/wxkeyset/turn-on.png" class="turn-on">
+						<img src="{{Msg "seo" "cdn"}}/jyapp/images/wxkeyset/turn-off.png" class="turn-off">
+					</li>
+					<li id="emailtip">
+						邮件提醒
+						<img src="{{Msg "seo" "cdn"}}/jyapp/images/wxkeyset/turn-on.png" class="turn-on">
+						<img src="{{Msg "seo" "cdn"}}/jyapp/images/wxkeyset/turn-off.png" class="turn-off">
+						<div class="emailset">
+							<span></span>
+							<img src="{{Msg "seo" "cdn"}}/jyapp/images/wx/editemail.png">
+						</div>
+					</li>
+				</ul>
 			</div>
-			<div class="easypopup-footer">
-				<span onclick="emailSetModal.hide();">取消</span>
-				<span id="sure">确定</span>
+			<div id="matchType">
+				<ul class="navchoose">
+					<li><img src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/image/matchType.png">关键词匹配方式</li>
+					<li onclick="docheck('5',this)" dataid="5">
+						按标题匹配
+						<img src="{{Msg "seo" "cdn"}}/jyapp/images/wxkeyset/checked.png" class="checked-img">
+					</li>
+					<li onclick="docheck('6',this)" dataid="6">
+						按全文匹配
+						<img src="{{Msg "seo" "cdn"}}/jyapp/images/wxkeyset/checked.png" class="checked-img">
+						<span>会产生无效信息,请根据需要选择</span>
+					</li>
+				</ul>
+			</div>
+			<div class="onenavbar" id="resultpreview">
+				<img src="{{Msg "seo" "cdn"}}/jyapp/images/wxkeyset/resultpreview.png" class="img-left">
+				推送结果预览
+				<img src="{{Msg "seo" "cdn"}}/jyapp/wxswordfish/images/right.png" class="img-right">
 			</div>
 		</div>
-	</div>
-	<div class="easyalert easyalert-icon" id="setSuccess">
-		<img src='{{Msg "seo" "cdn"}}/images/set-right.png' style='width: 49px;margin-bottom: 15px;margin-top: 25px;'><br>设置成功
+		<div class="easypopup" id="emailSetModal">
+			<div class="easypopup-edit">
+				<div class="easypopup-header">设置邮件地址</div>
+				<div class="easypopup-content">
+					<input type="text" id="email" placeholder="邮件地址" class="form-control"/>
+					<div class="error hide">您输入的邮箱不正确,请重新输入</div>
+				</div>
+				<div class="easypopup-footer">
+					<span onclick="emailSetModal.hide();">取消</span>
+					<span id="sure">确定</span>
+				</div>
+			</div>
+		</div>
+		<div class="easyalert easyalert-icon" id="setSuccess">
+			<img src='{{Msg "seo" "cdn"}}/jyapp/images/set-right.png' style='width: 49px;margin-bottom: 15px;margin-top: 25px;'><br>设置成功
+		</div>
 	</div>
 	{{include "/common/baiducc.html"}}
 </body>

+ 28 - 25
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_viewPage.html

@@ -1,19 +1,15 @@
 <html>
 <head>
-	<meta name="viewport" content="width=device-width,initial-scale=1.0">
+	{{include "/common/meta.html"}}
 	<title>VIP订阅结果预览</title>
-	{{include "/common/inc.html"}}
-	<link href="{{Msg "seo" "cdn"}}/css/dropload.css?v={{Msg "seo" "version"}}" rel="stylesheet">
-	<link href="{{Msg "seo" "cdn"}}/css/wxlist.css?v={{Msg "seo" "version"}}" rel="stylesheet">
-	{{include "/common/weixin.html"}}
-    <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
-	<script src="{{Msg "seo" "cdn"}}/js/jquery.js"></script>
-	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
-	<script src="{{Msg "seo" "cdn"}}/js/dropload.js?v={{Msg "seo" "version"}}"></script>
-	<script src="{{Msg "seo" "cdn"}}/js/fastclick.js?v={{Msg "seo" "version"}}"></script>
-	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}1"></script>
+	{{include "/common/nnc.html"}}
+	<link href="{{Msg "seo" "cdn"}}/jyapp/css/dropload.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+	<link href="{{Msg "seo" "cdn"}}/jyapp/css/wxlist.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+    <script src="{{Msg "seo" "cdn"}}/jyapp/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+	<script src="{{Msg "seo" "cdn"}}/jyapp/js/jquery.js"></script>
+	<script src="{{Msg "seo" "cdn"}}/jyapp/js/dropload.js?v={{Msg "seo" "version"}}"></script>
+	<script src="{{Msg "seo" "cdn"}}/jyapp/js/fastclick.js?v={{Msg "seo" "version"}}"></script>
     <script>
-		initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
 		var zbadd = {{Msg "seo" "ZBADDRESS"}};
 		var keys = [];
 		var sds = "";
@@ -344,7 +340,7 @@
 	body{
 		color: #333;
 	}
-	body>div:first-child{
+	body div.tipHeader{
 		background-color: #F8F8F8;
 		padding: 10px 15px;
 		color: #a0a0a0;
@@ -378,20 +374,27 @@
 </style>
 </head>
 <body>
-	<div class="tipHeader">根据您的设置,为您推荐的预览信息,点击标题可查看详情。</div>
-	<div class="listcontent">
-		<div id="list"></div>
+	<div class="app-layout-header">
+		<span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+		推送结果预览
 	</div>
-
-	<span class="text-center findnull" style="margin-top: 5rem;">
-		<div>
-			<img style="width:150px;margin:50px 0 50px 0;" src="{{Msg "seo" "cdn"}}/images/wx/jysorry_1.png">
+	
+	<div class="app-layout-content-b">
+		<div class="tipHeader">根据您的设置,为您推荐的预览信息,点击标题可查看详情。</div>
+		<div class="listcontent">
+			<div id="list"></div>
 		</div>
-		<span style="color:#1d1d1d;font-size:16px;">没有找到和你订阅设置内容有关的信息<br/></span>
-		<div onClick="window.history.go(-1)" style="width: 200px;position: relative;left: 50%;margin-left: -100px;" class="text-center">
-			<img style="width: 200px;margin-top: 25px;pointer-events: none;" src="{{Msg "seo" "cdn"}}/images/wx/jydyshz.png">
-		</div>
-	</span>
+	
+		<span class="text-center findnull" style="margin-top: 5rem;">
+			<div>
+				<img style="width:150px;margin:50px 0 50px 0;" src="{{Msg "seo" "cdn"}}/jyapp/images/wx/jysorry_1.png">
+			</div>
+			<span style="color:#1d1d1d;font-size:16px;">没有找到和你订阅设置内容有关的信息<br/></span>
+			<div onClick="window.history.go(-1)" style="width: 200px;position: relative;left: 50%;margin-left: -100px;" class="text-center">
+				<img style="width: 200px;margin-top: 25px;pointer-events: none;" src="{{Msg "seo" "cdn"}}/images/wx/jydyshz.png">
+			</div>
+		</span>
+	</div>
 	{{include "/common/baiducc.html"}}
 </body>
 </html>

+ 360 - 361
src/jfw/modules/app/src/web/templates/weixin/historypush.html

@@ -62,6 +62,19 @@ var isPassCount = false; //提示信息
 var haskey = false;//是否有关键词
 var isOnTail = false;//是否在试用
 var isExpire = 0;//到期天数3 2 1 
+var userId = "";
+var selectCity = "";
+
+//获取当前时间
+var date = (function(){
+	var date = new Date();
+	var year = date.getFullYear();
+	var month = date.getMonth() + 1;
+	var day = date.getDate();
+	month = month < 10 ? '0' + month : month;
+	day = day < 10 ? '0' + day : day;
+	return year + '-' + month + '-' + day;
+})();
 //JyObj初始化完成,回调
 function afterJyObjInit(){
 	redSpotOnMenu();
@@ -101,27 +114,32 @@ function initpage(){
 		haskey = sessionStorage.haskey=="true"?true:false;;
 		isOnTail = sessionStorage.isOnTail;
 		isExpire = sessionStorage.isExpire;
+		userId = sessionStorage.userId;
+		firstTime = sessionStorage.getItem(userId+"_searchTime");
+		selectCity = sessionStorage.getItem(userId+"_selectCity");
    		$("#list>*").remove();
-		$(".showType").css("display","flex");
-		structureHtml(dataCache,true);
+		firstPage = dataCache;
+		if(dataCache.length==0){
+			hasNoData();
+		}else{
+			structureHtml(dataCache,true);
+		}
 		//appendList($(listCache),$(tableCache));
 		$(".app-layout-content-b").scrollTop(scrollTop);
 		removeSessionStorage();
+		showPage();
 	}else{
-		if((sessionStorage.getItem(sessionStorage.userId+"_searchTime")!=null&&firstTime=="")||sessionStorage.selectCity){
-			firstTime = sessionStorage.getItem(sessionStorage.userId+"_searchTime")
-			isVipSub = sessionStorage.isVipSub=="true"?true:false;;
-			isPassCount = sessionStorage.isPassCount=="true"?true:false;;
-			haskey = sessionStorage.haskey=="true"?true:false;;
-			isOnTail = sessionStorage.isOnTail;
-			isExpire = sessionStorage.isExpire;
-			ajaxFun(sessionStorage.getItem(sessionStorage.userId+"_searchTime"),sessionStorage.selectCity);
-			return
+		userId = sessionStorage.userId;
+		if(sessionStorage.getItem(userId+"_searchTime")!=null&&sessionStorage.getItem(userId+"_searchTime")!=""){
+			firstTime = sessionStorage.getItem(userId+"_searchTime");
+		}
+		if(sessionStorage.getItem(userId+"_selectCity")!=null&&sessionStorage.getItem(userId+"_selectCity")!=""){
+			selectCity = sessionStorage.getItem(userId+"_selectCity");
 		}
 		$.ajax({
 			type: 'post',
 			url: '/jyapp/front/hasPushHistory?t='+new Date().getTime(),
-			data: {"selectTime":{{.T.selectTime}},"pageNum":pageIndex,"area":selectCity},
+			data: {"selectTime":firstTime,"pageNum":1,"area":selectCity},
 			async: false,
 			dataType: 'json',
 			success: function(data){
@@ -130,32 +148,19 @@ function initpage(){
 				firstPage = data.data;
 				hasNextPage=data.hasNextPage;
 				isVipSub = data.isVipSub;
+				sessionStorage.isVipSub = isVipSub;
+				userId = data.userId;
+				sessionStorage.userId = userId;
 				isPassCount = data.isPassCount;
-				userId=data.userId;
+				sessionStorage.isPassCount = isPassCount;
 				haskey = data.haskey;
+				sessionStorage.haskey = haskey;
 				isOnTail = data.isOnTail;
+				sessionStorage.isOnTail = isOnTail;
 				isExpire = data.isExpire;
-				sessionStorage.userId=userId;
-				if(!firstPage.length>0 && !data.haskey){
-					if(sessionStorage&&(sessionStorage.keysetindexToHistory=="1"||sessionStorage.keysetindexToHistory=="2"||sessionStorage.keysetindexToHistory=="3")){
-            sessionStorage.removeItem("keysetindexToHistory");
-					}else{
-						if(!isVipSub){
-							history.pushState({},"","");
-							if(data.isInTSguide){
-								if(localStorage){
-									localStorage.removeItem("tsGuide_status");
-								}
-								window.location.href='/jyapp/tenderSubscribe/guide';
-							}else{
-								window.location.href='/jyapp/wxkeyset/keyset/index';
-							}
-							return
-						}
-					}
-				}else{
-		          	sessionStorage.removeItem("keysetindexToHistory");
-		        }
+				sessionStorage.isExpire = isExpire;
+				sessionStorage.setItem(userId+"_searchTime",firstTime);
+				showPage();
 			},
 			error: function(xhr, type){
 				hasNoData();
@@ -167,6 +172,7 @@ function initpage(){
 			hasNoData();
 			return;
 		}
+		$(".findnull_").hide();
 		dataCache = dataCache.concat(firstPage);
 		structureHtml(firstPage,true);
 		setTimeout(function(){
@@ -174,15 +180,43 @@ function initpage(){
 			//$("#list").css("visibility","visible");
 		},300);
 	}
+	if(hasNextPage){
+		setTimeout(function(){
+			wxflag = $('.listcontent').dropload({
+		        scrollArea : $(".app-layout-content-b"),
+				loadUpFn : function(me){
+					//loadDatas(me,-1);
+          			reloadFirstPage(me);//下拉刷新更新订阅词
+				},
+		        loadDownFn : function(me){
+					loadDatas(me,lasttime);
+		        }
+		    });
+		},1000);
+	}else{
+		wxflag = $('.listcontent').dropload({
+	        scrollArea : $(".app-layout-content-b"),
+			loadUpFn : function(me){
+				loadDatas(me,-1);
+			},
+	        loadDownFn : function(me){
+				loadDatas(me,lasttime);
+	        }
+	    });
+		noMoreData(wxflag);
+	}
+
+}
+function showPage(){
 	//
-	setTimeout(function(){
-		if(firstTime!=""){
-			var _formatDate = formatDate(firstTime/1000,"2");
-			date = formatDate(firstTime/1000,"1");
-			$('#showDatePicker .time_result').html(_formatDate).addClass('current');
-		}
-		$(".tab_left .time").show();
-	},500)
+	if(firstTime!=""){
+		var _formatDate = formatDate(firstTime/1000,"2");
+		date = formatDate(firstTime/1000,"1");
+		$('#showDatePicker .time_result').html(_formatDate).addClass('current');
+	}
+	$(".tab_left .time").show();
+	//地区渲染
+	mapData();
 	if(isVipSub){
 		if(!haskey){
 			$(".set_keyword").show();
@@ -211,40 +245,34 @@ function initpage(){
 		}
 		$(".normal_set").show();
 		$(".tab_left .area").hide();
+		if(!firstPage.length>0 && !data.haskey){
+			if(sessionStorage&&(sessionStorage.keysetindexToHistory=="1"||sessionStorage.keysetindexToHistory=="2"||sessionStorage.keysetindexToHistory=="3")){
+          sessionStorage.removeItem("keysetindexToHistory");
+			}else{
+				if(!isVipSub){
+					history.pushState({},"","");
+					if(data.isInTSguide){
+						if(localStorage){
+							localStorage.removeItem("tsGuide_status");
+						}
+						window.location.href='/jyapp/tenderSubscribe/guide';
+					}else{
+						window.location.href='/jyapp/wxkeyset/keyset/index';
+					}
+					return
+				}
+			}
+		}else{
+          	sessionStorage.removeItem("keysetindexToHistory");
+        }
 	}
-	if(hasNextPage){
-		setTimeout(function(){
-			wxflag = $('.listcontent').dropload({
-		        scrollArea : $(".app-layout-content-b"),
-				loadUpFn : function(me){
-					//loadDatas(me,-1);
-          			reloadFirstPage(me);//下拉刷新更新订阅词
-				},
-		        loadDownFn : function(me){
-					loadDatas(me,lasttime);
-		        }
-		    });
-		},1000);
-	}else{
-		wxflag = $('.listcontent').dropload({
-	        scrollArea : $(".app-layout-content-b"),
-			loadUpFn : function(me){
-				loadDatas(me,-1);
-			},
-	        loadDownFn : function(me){
-				loadDatas(me,lasttime);
-	        }
-	    });
-		noMoreData(wxflag);
-	}
-
 }
 //下拉刷新
 function reloadFirstPage(me){
   	$.ajax({
 		type: 'post',
 		url: '/jyapp/front/hasPushHistory?t='+new Date().getTime(),
-		data: {"selectTime":sessionStorage.getItem(sessionStorage.userId+"_searchTime"),"pageNum": 1,"area":selectCity},
+		data: {"selectTime":firstTime,"pageNum": 1,"area":selectCity},
 		async: false,
 		dataType: 'json',
 		success: function(data){
@@ -287,7 +315,7 @@ function loadDatas(me,le){
 	$.ajax({
 		type: 'post',
 		url: '/jyapp/swordfish/historypush/paging',
-		data: {"pageNum": pageIndex,"selectTime":sessionStorage.getItem(sessionStorage.userId+"_searchTime"),"area":selectCity},
+		data: {"pageNum": pageIndex,"selectTime":firstTime,"area":selectCity},
 		dataType: 'json',
 		success: function(data){
 			//没有数据
@@ -327,16 +355,12 @@ function noMoreData(me){
 function hasNoData(){
 	$(".listcontent").hide();
 	$(".findnull").css("display","block");
-	$(".showType").hide();
-	$(".showType").next().hide();
 	$("#loading").hide();
 }
 //具体日期没有数据
 function hasNoDataByTime(){
 	$(".listcontent").hide();
 	$(".findnull_").css("display","block");
-	$(".showType").hide();
-	$(".showType").next().hide();
 	$("#loading").hide();
 }
 function structureHtml(object,showAd){
@@ -519,7 +543,7 @@ function appendList(content){
 function beforeJump(eid,h,sds,index,pd,vis){
 	if(!vis){
 		for(var i=0;i<dataCache.length;i++){
-			if(dataCache[i].ca_openlist_index==index&&dataCache[i].ca_date==pd){
+			if(dataCache[i]._id==eid&&dataCache[i].ca_date==pd){
 				dataCache[i].ca_visit=1;
 				break
 			}
@@ -536,13 +560,6 @@ function setSessionStorage(){
 		sessionStorage.historypushPageIndexCache = pageIndex;
 		sessionStorage.historypushHasNextPage = hasNextPage;
 		sessionStorage.historypushCount = count;
-		sessionStorage.selectCity = selectCity;
-		sessionStorage.date = firstTime;
-		sessionStorage.isVipSub = isVipSub;
-		sessionStorage.isPassCount = isPassCount;
-		sessionStorage.haskey = haskey;
-		sessionStorage.isOnTail = isOnTail;
-		sessionStorage.isExpire  = isExpire;
 	}
 }
 
@@ -572,7 +589,12 @@ function setVisitedIndex(obj,eid){
 	}
 }
 //
+var ajaxFlag = true;
 function ajaxFun(time,area){
+	if (!ajaxFlag){
+		return
+	}
+	ajaxFlag = false;
 	$("#loading").show();
 	$.ajax({
 		type: 'post',
@@ -587,6 +609,18 @@ function ajaxFun(time,area){
 			hasNextPage=data.hasNextPage;
 			words=data.keys;
 			userId=data.userId;
+			ajaxFlag = true;
+			if(time==undefined||time==""){
+				sessionStorage.removeItem(userId+"_searchTime");
+			}else{
+				sessionStorage.setItem(userId+"_searchTime",time);
+			}
+			if(area==undefined||area==""){
+				sessionStorage.removeItem(userId+"_selectCity");
+				sessionStorage.removeItem(userId+"_selectCityName");
+			}else{
+				sessionStorage.setItem(userId+"_selectCity",area);
+			}
 		},
 		error: function(xhr, type){
 			hasNoDataByTime();
@@ -600,24 +634,12 @@ function ajaxFun(time,area){
 		hasNoDataByTime();
 		return;
 	}else{
-		$(".showType").css("display","flex");
 		$(".findnull_").css("display","none");
 	}
 	//$("#list").css("visibility","hidden");
 	dataCache = firstPage;
 	$("#list").html("");
 	count=0;
-	if(time!=undefined&&time!=""){
-		firstTime = time;
-	}else{
-		firstTime = ""
-	}
-	if(area!=undefined&&area!=""){
-		sessionStorage.selectCity = area;
-	}else{
-		sessionStorage.removeItem("selectCity");
-		sessionStorage.removeItem("selectedCityName");
-	}
 	structureHtml(firstPage,true);
 	setTimeout(function(){
 		$(".app-layout-content-b").scrollTop(0);
@@ -919,288 +941,265 @@ function AdClick(e,isExternal,link,title){
 <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
 <script src="{{Msg "seo" "cdn"}}/dataExport/js/mapJSON.js?v={{Msg "seo" "version"}}"></script>
 <script type="text/javascript" charset="UTF-8">
-	mapData();
-	function mapData(){
-		var _citySessionData = null
-		var _provinceArr = {}
-		var _cityMap = []
-		if (sessionStorage&&sessionStorage.selectedCityName!=null){
-			_citySessionData  = JSON.parse(sessionStorage.selectedCityName);
-			for(var k=0;k<_citySessionData.length;k++){
-				_provinceArr[_citySessionData[k]["province"]] = _citySessionData[k]["selectCity"].length
-				_cityMap = _cityMap.concat(_citySessionData[k]["selectCity"])
-			}
-			if(_cityMap.length>0){
-				 $('#showArea .jymobile-tab-triangle').addClass('current').text(`地区 ${_cityMap.length}`);
-			}
-	//
-	sessionStorage.removeItem("selectedCityName");
+function mapData(){
+	var _citySessionData = null
+	var _provinceArr = {}
+	var _cityMap = []
+	if (sessionStorage&&sessionStorage.getItem(userId+"_selectCityName")!=null){
+		_citySessionData  = JSON.parse(sessionStorage.getItem(userId+"_selectCityName"));
+		for(var k=0;k<_citySessionData.length;k++){
+			_provinceArr[_citySessionData[k]["province"]] = _citySessionData[k]["selectCity"].length
+			_cityMap = _cityMap.concat(_citySessionData[k]["selectCity"])
 		}
-		// console.log(_provinceArr)
-		// console.log(_cityMap)
-		var provinceArr = ["安徽","澳门","北京","重庆","福建","广东","广西","贵州","甘肃","河北","湖北","黑龙江","海南","河南","湖南","吉林","江苏","江西","辽宁","内蒙古","宁夏","青海","山西","陕西","上海","山东","四川","天津","台湾","西藏","新疆","香港","云南","浙江"]
-		var provinceHtml = '<div class="province">';
-		var cityHtml = '<div class="city" >';
-		for (var j = 0;  j <  provinceArr.length;j++) {
-			var shwohide = 'none'
-			var _active = "";
-			for (var i = chinaMapJSON.length - 1; i >= 0; i--) {
-				_chinaMap = chinaMapJSON[i]
-				if(_chinaMap["name"].indexOf(provinceArr[j])>-1){
-					if (j==0){
-						shwohide = "";
-						_active = "active";
-					}
-					var provinceFlag = true;
-					if(_provinceArr[provinceArr[j]]!=undefined&&_provinceArr[provinceArr[j]]>0){
-					provinceHtml +='<p class="p_item '+_active+'"><span class="province-name">'+provinceArr[j]+'</span><span class="city-count" style="display: inline;">('+_provinceArr[provinceArr[j]]+')</span></p>'
-					//
-					cityHtml +='<div class="province_city" data-id="'+provinceArr[j]+'" style="display:'+shwohide+'">';
-					provinceFlag = false;
-					}
-					if(provinceFlag){
-						provinceHtml +='<p class="p_item '+_active+'"><span class="province-name">'+provinceArr[j]+'</span><span class="city-count"></span></p>'
-					
-						cityHtml +='<div class="province_city" data-id="'+provinceArr[j]+'" style="display:'+shwohide+'">'
-					}
-					var cityArr = _chinaMap["city"]
-					for(var m = 0;m < cityArr.length;m++){
-						var cityFlag = true;
- 					if(_cityMap.length>0){
-  					for(var k=0;k<_cityMap.length;k++){
-  						if(_cityMap[k]==cityArr[m]["name"]){
-  							cityHtml +='<p class="c_item"><input type="checkbox" class="checkbox"  checked><span class="city-name">'+cityArr[m]["name"]+'</span></p>';
-  							cityFlag = false;
-  							break;
-  						}
-  					}
-  				}
-  				if(cityFlag){
-							cityHtml +='<p class="c_item"><input type="checkbox" class="checkbox"><span class="city-name">'+cityArr[m]["name"]+'</span></p>'
-						}
+		if(_cityMap.length>0){
+			 $('#showArea .jymobile-tab-triangle').addClass('current').text(`地区 ${_cityMap.length}`);
+		}
+//sessionStorage.removeItem("selectCityName");
+	}
+	var provinceArr = ["安徽","澳门","北京","重庆","福建","广东","广西","贵州","甘肃","河北","湖北","黑龙江","海南","河南","湖南","吉林","江苏","江西","辽宁","内蒙古","宁夏","青海","山西","陕西","上海","山东","四川","天津","台湾","西藏","新疆","香港","云南","浙江"]
+	var provinceHtml = '<div class="province">';
+	var cityHtml = '<div class="city" >';
+	for (var j = 0;  j <  provinceArr.length;j++) {
+		var shwohide = 'none'
+		var _active = "";
+		for (var i = chinaMapJSON.length - 1; i >= 0; i--) {
+			_chinaMap = chinaMapJSON[i]
+			if(_chinaMap["name"].indexOf(provinceArr[j])>-1){
+				if (j==0){
+					shwohide = "";
+					_active = "active";
+				}
+				var provinceFlag = true;
+				if(_provinceArr[provinceArr[j]]!=undefined&&_provinceArr[provinceArr[j]]>0){
+				provinceHtml +='<p class="p_item '+_active+'"><span class="province-name">'+provinceArr[j]+'</span><span class="city-count" style="display: inline;">('+_provinceArr[provinceArr[j]]+')</span></p>'
+				//
+				cityHtml +='<div class="province_city" data-id="'+provinceArr[j]+'" style="display:'+shwohide+'">';
+				provinceFlag = false;
+				}
+				if(provinceFlag){
+					provinceHtml +='<p class="p_item '+_active+'"><span class="province-name">'+provinceArr[j]+'</span><span class="city-count"></span></p>'
+				
+					cityHtml +='<div class="province_city" data-id="'+provinceArr[j]+'" style="display:'+shwohide+'">'
+				}
+				var cityArr = _chinaMap["city"]
+				for(var m = 0;m < cityArr.length;m++){
+					var cityFlag = true;
+					if(_cityMap.length>0){
+ 					for(var k=0;k<_cityMap.length;k++){
+ 						if(_cityMap[k]==cityArr[m]["name"]){
+ 							cityHtml +='<p class="c_item"><input type="checkbox" class="checkbox"  checked><span class="city-name">'+cityArr[m]["name"]+'</span></p>';
+ 							cityFlag = false;
+ 							break;
+ 						}
+ 					}
+ 				}
+ 				if(cityFlag){
+						cityHtml +='<p class="c_item"><input type="checkbox" class="checkbox"><span class="city-name">'+cityArr[m]["name"]+'</span></p>'
 					}
-					cityHtml +='</div>'
 				}
+				cityHtml +='</div>'
 			}
 		}
-		provinceHtml += '</div>'
-		cityHtml += '</div>'
-		$(".area_data").html(provinceHtml+cityHtml)
 	}
-	function weuiDialog(){
-weui.dialog({
+	provinceHtml += '</div>'
+	cityHtml += '</div>'
+	$(".area_data").html(provinceHtml+cityHtml)
+}
+function weuiDialog(){
+	weui.dialog({
 	title: '提示信息',
 	content: '您未设置关键词<br/>设置后接收信息更精确',
-       className: 'jymobile-setting-dialog',// 设置弹框的类名
-       buttons: [
-       {
-       	label: '去设置',
-       	type: 'primary',
-       	onClick: function () {
-       		console.log('确定')
+	      className: 'jymobile-setting-dialog',// 设置弹框的类名
+	      buttons: [
+	      {
+	      	label: '去设置',
+	      	type: 'primary',
+	      	onClick: function () {
+	      		console.log('确定')
 			tosetkeyspage();
-       	}
-       },
-       {
-       	label: '取消',
-       	type: 'default',
-       	onClick: function () {
-       		console.log('取消')
-       	}
-       }
-       ]
-   });
+	      	}
+	      },
+	      {
+	      	label: '取消',
+	      	type: 'default',
+	      	onClick: function () {
+	      		console.log('取消')
+	      	}
+	      }
+	    ]
+	});
 }
-    //获取当前时间
-    var date = (function(){
-     	var date = new Date();
-     	var year = date.getFullYear();
-     	var month = date.getMonth() + 1;
-     	var day = date.getDate();
-     	month = month < 10 ? '0' + month : month;
-     	day = day < 10 ? '0' + day : day;
-     	return year + '-' + month + '-' + day;
-     })();
-    //
-    function FTAGData(time){
-     	if(time!=undefined&&time.toString()!=""){
-	var Time = new Date(time);
-	var timestemp = Time.getTime();
-	ajaxFun(timestemp.toString(),selectCity);
-     	}else{
-     		ajaxFun("",selectCity);
-     	}
-     }
-	//禁止默认行为方法
-	function stopScroll(e) {
-	   e.preventDefault()
-	}
-	//
-	$(function () { 
-		//document.querySelector('.screen').addEventListener('touchmove', stopScroll,  {passive: false});
-		//document.querySelector('.tab_left').addEventListener('touchmove', stopScroll,  {passive: false});
-		//document.querySelector('.tab_right').addEventListener('touchmove', stopScroll,  {passive: false});
-		//document.querySelector('.handle_menu').addEventListener('touchmove', stopScroll,  {passive: false});
-		if(firstTime!=""){
-			date = formatDate(firstTime/1000,"1");
-     	}
-        // 点击选择时间
-        $('#showDatePicker').on('click', function () {
-         	var that = this
-         	$(that).find('.time_result').addClass('current')
-         	weui.datePicker({
-         		id: '1',
-         		start: 2000,
-         		end: new Date(),
-         		defaultValue:date.split('-'),
-         		className: 'jymobile-datePicker',
-         		onChange: function (result) {},
-         		onConfirm: function (result) {
-         			let year = result[0].value;
-         			let month = result[1].value < 10 ? '0' + result[1].value : result[1].value;
-         			let day = result[2].value < 10 ? '0' + result[2].value:result[2].value;
-         			let time_result = year + '.' + month + '.' + day;
-         			FTAGData(year + '-' + month + '-' + day)
-         			$('.time_result').html(time_result)
-         		}
-         	});
+//
+function FTAGData(time){
+  	if(time!=undefined&&time.toString()!=""){
+		var Time = new Date(time);
+		var timestemp = Time.getTime();
+		firstTime = timestemp.toString();
+		ajaxFun(firstTime,selectCity);
+  	}else{
+		firstTime = "";
+  		ajaxFun("",selectCity);
+  	}
+}
+//
+$(function () { 
+	if(firstTime!=""&&firstTime!=null){
+		date = formatDate(firstTime/1000,"1");
+   	}
+    // 点击选择时间
+    $('#showDatePicker').on('click', function () {
+    var that = this
+    $(that).find('.time_result').addClass('current')
+    weui.datePicker({
+  		id: '1',
+  		start: 2000,
+  		end: new Date(),
+  		defaultValue:date.split('-'),
+  		className: 'jymobile-datePicker',
+  		onChange: function (result) {},
+  		onConfirm: function (result) {
+  			let year = result[0].value;
+  			let month = result[1].value < 10 ? '0' + result[1].value : result[1].value;
+  			let day = result[2].value < 10 ? '0' + result[2].value:result[2].value;
+  			let time_result = year + '.' + month + '.' + day;
+  			FTAGData(year + '-' + month + '-' + day)
+  			$('.time_result').html(time_result)
+  		}
+  	});
 
-             // 日期选择器样式修改--start---------------------
-             // 修改标题
-             // $('.jymobile-datePicker .weui-picker__hd a[data-action=cancel]')
-             $('.jymobile-datePicker .weui-picker__hd a:first').removeClass('weui-picker__action').addClass('jymobile-picker__action').text('选择时间')
+    // 日期选择器样式修改--start---------------------
+    // 修改标题
+    // $('.jymobile-datePicker .weui-picker__hd a[data-action=cancel]')
+    $('.jymobile-datePicker .weui-picker__hd a:first').removeClass('weui-picker__action').addClass('jymobile-picker__action').text('选择时间')
 	$("#weui-picker-confirm").css("text-decoration","none");
-             // 如果没有选择,不会出现 '查看全部时间'
-             var timeResultBox = $(that).find('.time_result')
-             var timeResult = timeResultBox.text()
-             if (timeResult !== '时间') {
-                 // 给日期选择器添加footer
-                 var footerHTML = `<div class="weui-picker__ft">
-                 <div class="reset-time weui-picker__action" data-action="cancel">查看全部时间</div></div>`
-                 $('.jymobile-datePicker .weui-picker').append(footerHTML)
-                 // 日期选择器样式添加--end---------------------
-                 $('.jymobile-datePicker .weui-picker__ft').on('click', function(){
-                 	FTAGData();
-                 	$('.weui-mask.weui-animate-fade-in').trigger('click');
-                 	$(that).find('.time_result').removeClass('current').text('时间')
-                 })
-             }
-
-             // 给取遮罩绑定点击事件
-             $('.weui-mask.weui-animate-fade-in').on('click', function(){
-             	var timeResultBox = $(that).find('.time_result')
-             	var timeResult = timeResultBox.text()
-                // 点击取消或者空白处,时间选择器消失。判断#showDatePicker是否高亮
-                if (timeResult === '时间') {
-                 	$(that).find('.time_result').toggleClass('current')
-                }
-            })
-        });
-        // 选择地区
-        $('#showArea').on('click', function (){
+    // 如果没有选择,不会出现 '查看全部时间'
+    var timeResultBox = $(that).find('.time_result')
+    var timeResult = timeResultBox.text()
+   	if (timeResult !== '时间') {
+       // 给日期选择器添加footer
+       var footerHTML = `<div class="weui-picker__ft">
+       <div class="reset-time weui-picker__action" data-action="cancel">查看全部时间</div></div>`
+       $('.jymobile-datePicker .weui-picker').append(footerHTML)
+       // 日期选择器样式添加--end---------------------
+       $('.jymobile-datePicker .weui-picker__ft').on('click', function(){
+       	FTAGData();
+       	$('.weui-mask.weui-animate-fade-in').trigger('click');
+       	$(that).find('.time_result').removeClass('current').text('时间')
+       })
+   	}
+    // 给取遮罩绑定点击事件
+    $('.weui-mask.weui-animate-fade-in').on('click', function(){
+    	var timeResultBox = $(that).find('.time_result')
+    	var timeResult = timeResultBox.text()
+        // 点击取消或者空白处,时间选择器消失。判断#showDatePicker是否高亮
+        if (timeResult === '时间') {
+        	$(that).find('.time_result').toggleClass('current')
+        }
+    })
+});
+       // 选择地区
+       $('#showArea').on('click', function (){
+       	$(".subscribe").toggleClass('overClass');
+		if(sessionStorage.getItem(userId+"_selectCityName")==""||sessionStorage.getItem(userId+"_selectCityName")==undefined){
 			$(this).find("span").toggleClass("current");
-         	$('.area_container').slideToggle();
-         	$('.screen').toggle();
-         	$(".app-layout-content-b").toggleClass('overClass');
-        })
-        // 地区省份选择的操作
-        $('.province .p_item').click(function(){
-         	var i = $(this).index();
-         	$(this).addClass('active').siblings().removeClass('active');
-         	$('.city div').eq(i).show().siblings().hide();
-        })
-
-        // 扩大点击区域(点击城市名字也能选中)
-        $('.area_wrap .c_item .city-name').on('click', function(){
-         	$(this).parent().children('input').trigger('click')
-        })
-        // 每次选择框变化,更新城市计数
-        $('.area_wrap .c_item input[type="checkbox"]').on('change',function () { 
-         	var i = $(this).parent().parent().index()
-            // 找到该省份下所有被选中的input,统计有几个
-            var checkedCityNum = $(this).parent().parent().find('input:checked').length;
-            var cityCountDOM = $('.province .p_item').eq(i).children('.city-count')
-            if (checkedCityNum) {
-             	cityCountDOM.show().text(`(${checkedCityNum})`)
-            } else {
-             	cityCountDOM.show().text('')
-             	cityCountDOM.hide()
-            }
-        })
-        //
-        $('.screen').click(function(){
-	 	$('#showArea').find("span").toggleClass("current");
-         	$('.area_container').slideUp();
-         	$(".app-layout-content-b").toggleClass('overClass');
-         	$('.screen').hide();
-        })
-        // 地区选择确认按钮
-        $('.enter_btn').click(function (){
-         	$(".app-layout-content-b").toggleClass('overClass');
-         	let cityCount = $('.area_wrap .city input:checked').length;
-         	$('.area_container').slideUp();
-         	$('.screen').hide()
-             selectCity = "" //重新选择 初始化地区 参数
-
-         	if(!cityCount){
-         		$('#showArea .jymobile-tab-triangle').removeClass('current').text(`地区`);
-                 sessionStorage.selectedCityName  = JSON.stringify([]);
-         		 ajaxFun(firstTime,selectCity);
-         		return
-         	}
-
-             // cityName对象
-             let selectedCityName = []
-             // 判断省份后面的数字是否隐藏来确定该省份下的城市有没有被选择
-             $('.area_wrap .province .p_item').each(function(i, dom){
-             	var f = $(dom).find('.city-count').is(':hidden')
+		}
+       	$('.area_container').slideToggle();
+       	$('.screen').toggle();
+       })
+       // 地区省份选择的操作
+       $('.province .p_item').click(function(){
+       	var i = $(this).index();
+       	$(this).addClass('active').siblings().removeClass('active');
+       	$('.city div').eq(i).show().siblings().hide();
+       })
 
-                 // 如果隐藏说明该省份下没有被选中的城市
-                 if (f) {
-                     // 结束当前循环,进入下个循环
-                     return true
-                 }
-                 // 省份名称
-                 var provinceName = $(dom).children('.province-name').text()
-                 var citiesBox = $('.area_wrap .city .province_city').eq(i)
-                 var selectedCities = citiesBox.find('input:checked').parent().children('.city-name')
-                 // 城市数组
-                 var cityArr = []
-                 selectedCities.each(function(i, dom){
-                     // 对获取到的城市名字符串去空格处理
-                     cityArr.push($(dom).text().replace(/\s+/g, ''));
-                 })
-                 for(var i=0;i<cityArr.length;i++){
-                     if(selectCity!=""){
-                     	selectCity += ","
-                     }
-                     selectCity += cityArr[i];
-                 }
-                 selectedCityName.push({
-                 	province: provinceName,
-                 	selectCity: cityArr
-                 });
-                 sessionStorage.selectedCityName  = JSON.stringify(selectedCityName);
-                 ajaxFun(firstTime,selectCity);
-             })
-             // 重写地区text
-             $('#showArea .jymobile-tab-triangle').addClass('current').text(`地区 ${cityCount}`);
-        })
-        $('.reset_btn').click(function (){
-         	$('#showArea .jymobile-tab-triangle').removeClass('current').text(`地区`);
-         	$('.area_wrap .province .city-count').hide().text('')
-         	$('.c_item input[type="checkbox"]').prop('checked', false)
-        })
-        // 关闭设置弹窗
-        $('#close_set').on('click',() =>{
-         	$('.set_keyword').hide()
-        })
-        $('#close_renew').on('click',() =>{
-         	$('.renew_toast').hide()
-        })
-        $('#nv_close_renew').on('click',() =>{
-         	$('.nv_renew_toast').hide()
+       // 扩大点击区域(点击城市名字也能选中)
+       $('.area_wrap .c_item .city-name').on('click', function(){
+       	$(this).parent().children('input').trigger('click')
+       })
+       // 每次选择框变化,更新城市计数
+       $('.area_wrap .c_item input[type="checkbox"]').on('change',function () { 
+       	var i = $(this).parent().parent().index()
+           // 找到该省份下所有被选中的input,统计有几个
+           var checkedCityNum = $(this).parent().parent().find('input:checked').length;
+           var cityCountDOM = $('.province .p_item').eq(i).children('.city-count')
+           if (checkedCityNum) {
+           	cityCountDOM.show().text(`(${checkedCityNum})`)
+           } else {
+           	cityCountDOM.show().text('')
+           	cityCountDOM.hide()
+           }
+       })
+    //
+    $('.screen').click(function(){
+       	$(".subscribe").toggleClass('overClass');
+		$('#showArea').find("span").toggleClass("current");
+       	$('.area_container').slideUp();
+       	$('.screen').hide();
+    })
+       // 地区选择确认按钮
+    $('.enter_btn').click(function (){
+       	$(".subscribe").toggleClass('overClass');
+       	let cityCount = $('.area_wrap .city input:checked').length;
+       	$('.area_container').slideUp();
+       	$('.screen').hide()
+        selectCity = "" //重新选择 初始化地区 参数
+       	if(!cityCount){
+       		$('#showArea .jymobile-tab-triangle').removeClass('current').text(`地区`);
+       		 ajaxFun(firstTime,selectCity);
+       		return
+       	}
+        // cityName对象
+        let selectCityName = []
+        // 判断省份后面的数字是否隐藏来确定该省份下的城市有没有被选择
+        $('.area_wrap .province .p_item').each(function(i, dom){
+	        var f = $(dom).find('.city-count').is(':hidden')
+	        // 如果隐藏说明该省份下没有被选中的城市
+	        if (f) {
+	         	// 结束当前循环,进入下个循环
+	            return true
+	        }
+	        // 省份名称
+	        var provinceName = $(dom).children('.province-name').text()
+	        var citiesBox = $('.area_wrap .city .province_city').eq(i)
+	        var selectedCities = citiesBox.find('input:checked').parent().children('.city-name')
+	        // 城市数组
+	        var cityArr = []
+	        selectedCities.each(function(i, dom){
+	        	// 对获取到的城市名字符串去空格处理
+	        	cityArr.push($(dom).text().replace(/\s+/g, ''));
+	       	})
+	        for(var i=0;i<cityArr.length;i++){
+	            if(selectCity!=""){
+	            	selectCity += ","
+	            }
+	            selectCity += cityArr[i];
+	        }
+	        selectCityName.push({
+	        	province: provinceName,
+	        	selectCity: cityArr
+	        });
+	        sessionStorage.setItem(userId+"_selectCityName", JSON.stringify(selectCityName));
+	        ajaxFun(firstTime,selectCity);
         })
+        // 重写地区text
+       	$('#showArea .jymobile-tab-triangle').addClass('current').text(`地区 ${cityCount}`); 
+    })
+    $('.reset_btn').click(function (){
+       	$('#showArea .jymobile-tab-triangle').text(`地区`);
+       	$('.area_wrap .province .city-count').hide().text('')
+       	$('.c_item input[type="checkbox"]').prop('checked', false)
+    })
+       // 关闭设置弹窗
+    $('#close_set').on('click',() =>{
+       	$('.set_keyword').hide()
+    })
+    $('#close_renew').on('click',() =>{
+       	$('.renew_toast').hide()
+    })
+    $('#nv_close_renew').on('click',() =>{
+       	$('.nv_renew_toast').hide()
     })
+})
  </script>
 </html>

+ 2 - 2
src/jfw/modules/app/src/web/templates/weixin/search/mainSearch.html

@@ -249,10 +249,10 @@
 						<ul class="history"></ul>
 					</div>
 					<div style="clear: both"></div>
-					<div class="inpTitle_msgset"><img src="/jyapp/images/search/msgset.png"><span>我订阅的关键词</span></div>
+<!--					<div class="inpTitle_msgset"><img src="/jyapp/images/search/msgset.png"><span>我订阅的关键词</span></div>
 					<div>
 						<ul class="myMsgset"></ul>
-					</div>
+					</div>-->
 				</div>
 				<span class="screen text-center">筛选</span>
 				<span class="query hidden"><img src="/jyapp/images/wx/jywxjs.png"></span>

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

@@ -6,13 +6,13 @@
 	"vipMaxPushSize":2000,
 	"mgoAddr":"192.168.3.128:27080",
 	"mgoSize":10,
-	"testids":["5dce0129e1382317285a570a"],
+	"testids":["5d81c5a525ef8723ac0036f9"],
 	"filterWords":["项目","中标","公告"],
 	"matchPoolSize":60,
 	"savePoolSize":5,
 	"loadBiddingPoolSize":60,
 	"loadUserPoolSize":60,
-	"matchDuration":1, 
-	"userBatch":2,
+	"matchDuration":60, 
+	"userBatch":10,
 	"pcHelper":"127.0.0.1:8082"
 }

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

@@ -1,7 +1,6 @@
 package job
 
 import (
-	. "match/config"
 	"sync"
 )
 
@@ -15,16 +14,6 @@ type jobs struct {
 
 var Jobs = &jobs{
 	Match: &MatchJob{
-		matchPool:            make(chan bool, Config.MatchPoolSize),
-		matchWaitGroup:       &sync.WaitGroup{},
-		loadBiddingPool:      make(chan bool, Config.LoadBiddingPoolSize),
-		loadBiddingWaitGroup: &sync.WaitGroup{},
-		loadUserPool:         make(chan bool, Config.LoadBiddingPoolSize),
-		loadUserWaitGroup:    &sync.WaitGroup{},
-		loadUserLock:         &sync.Mutex{},
-		savePool:             make(chan bool, Config.SavePoolSize),
-		saveWaitGroup:        &sync.WaitGroup{},
-		userMapLock:          &sync.Mutex{},
-		allProject:           &sync.Map{},
+		allProject: &sync.Map{},
 	},
 }

+ 267 - 245
src/jfw/modules/pushsubscribe/src/match/job/matchjob.go

@@ -1,7 +1,6 @@
 package job
 
 import (
-	"container/list"
 	"encoding/json"
 	"fmt"
 	. "match/config"
@@ -38,17 +37,7 @@ type Project struct {
 }
 
 type MatchJob struct {
-	matchPool            chan bool
-	matchWaitGroup       *sync.WaitGroup
-	loadBiddingPool      chan bool
-	loadBiddingWaitGroup *sync.WaitGroup
-	loadUserPool         chan bool
-	loadUserWaitGroup    *sync.WaitGroup
-	loadUserLock         *sync.Mutex
-	savePool             chan bool
-	saveWaitGroup        *sync.WaitGroup
-	userMapLock          *sync.Mutex
-	allProject           *sync.Map
+	allProject *sync.Map
 }
 
 //定时任务,匹配数据,存库
@@ -106,202 +95,6 @@ func (m *MatchJob) Execute() {
 	//
 }
 
-func (m *MatchJob) ToMatch(batchIndex int, matcher Matcher, datas *[]map[string]interface{}) {
-	logger.Info("开始匹配第", batchIndex, "批用户。。。")
-	userMap, projectUserMap := m.EachAllBidInfo(matcher, datas)
-	logger.Info("第", batchIndex, "批用户匹配结束。。。")
-	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)
-		go func(user *UserInfo, infos *list.List) {
-			defer func() {
-				<-m.savePool
-				m.saveWaitGroup.Done()
-			}()
-			var pushArray = make(SortList, 0)
-			for e := infos.Front(); e != nil; e = e.Next() {
-				matchInfo := *(e.Value.(*MatchInfo))
-				pushArray = append(pushArray, &matchInfo)
-			}
-			//取最新50条
-			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"])
-				_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(pushInfoKey, "推送信息redis判重出错", err)
-				}
-				if isExists {
-					continue
-				}
-				redis.Put(Pushcache_2_a, pushInfoKey, 1, OneDaySecond)
-				info := map[string]interface{}{}
-				for _, field := range SaveFields {
-					if (*v2.Info)[field] == nil {
-						continue
-					}
-					info[field] = (*v2.Info)[field]
-				}
-				infoIdMap[_id] = true
-				array = append(array, &MatchInfo{
-					Info: &info,
-					Keys: v2.Keys,
-				})
-				size++
-				maxPushSize := Config.MaxPushSize
-				if IsVipUser(user.VipStatus) {
-					maxPushSize = Config.VipMaxPushSize
-				}
-				if size == maxPushSize {
-					break
-				}
-			}
-			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,
-				"phone":         user.Phone,
-				"jpushid":       user.Jpushid,
-				"opushid":       user.Opushid,
-				"appphonetype":  user.AppPhoneType,
-				"userid":        user.Id,
-				"ratemode":      user.RateMode,
-				"wxpush":        user.WxPush,
-				"apppush":       user.AppPush,
-				"mailpush":      user.MailPush,
-				"pchelperpush":  user.PcHelperPush,
-				"usertype":      user.UserType,
-				"email":         user.Email,
-				"list":          array,
-				"size":          size,
-				"subscribe":     user.Subscribe,
-				"applystatus":   user.ApplyStatus,
-				"words":         user.Keys,
-				"modifydate":    user.ModifyDate,
-				"mergeorder":    user.MergeOrder,
-				"timestamp":     time.Now().Unix(),
-				"nickname":      user.NickName,
-				"firstpushtime": user.FirstPushTime,
-				"vipstatus":     user.VipStatus,
-			})
-			if len(saveBatch) == BulkSize {
-				mongodb.SaveBulk(Pushspace_temp, saveBatch...)
-				saveBatch = []map[string]interface{}{}
-			}
-		}(u, i)
-		index++
-		if index%500 == 0 {
-			logger.Info(Pushspace_temp, index)
-		}
-	}
-	m.saveWaitGroup.Wait()
-	if len(saveBatch) > 0 {
-		mongodb.SaveBulk(Pushspace_temp, saveBatch...)
-		saveBatch = []map[string]interface{}{}
-	}
-	logger.Info("第", batchIndex, "批保存到", Pushspace_temp, "表结束。。", index)
-	m.ToRelationProject(projectUserMap)
-}
-
-//关联项目
-func (m *MatchJob) ToRelationProject(projectUser *sync.Map) {
-	logger.Info("开始关联项目。。。")
-	index := 0
-	var updateproject [][]map[string]interface{}
-	lock := &sync.Mutex{}
-	projectUser.Range(func(key interface{}, value interface{}) bool {
-		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()
-			}()
-			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,
-				})
-			}
-			if projectId == "" || list_last_infoid == "" {
-				return
-			}
-			lock.Lock()
-			defer lock.Unlock()
-			for _, user := range *users {
-				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,
-							"subtypes":   user.O_vipjy.SubTypes,
-							"createtime": time.Now().Unix(),
-						},
-					},
-				})
-			}
-			if len(updateproject) == BigBulkSize {
-				mongodb.NewUpdateBulk(Pushspace_project, true, true, updateproject...)
-				updateproject = [][]map[string]interface{}{}
-			}
-		}(k, v)
-		index++
-		if index%500 == 0 {
-			logger.Info("关联项目", index)
-		}
-		return true
-	})
-	m.saveWaitGroup.Wait()
-	if len(updateproject) > 0 {
-		mongodb.NewUpdateBulk(Pushspace_project, true, true, updateproject...)
-		updateproject = [][]map[string]interface{}{}
-	}
-	logger.Info("关联项目结束。。。", index)
-}
-
 //加载数据到内存中
 func (m *MatchJob) LoadBidding(lastId, newId string, lastTime int64) *[]map[string]interface{} {
 	defer util.Catch()
@@ -342,13 +135,15 @@ func (m *MatchJob) LoadBidding(lastId, newId string, lastTime int64) *[]map[stri
 		"buyerclass":      1,
 	}).Sort("_id").Iter()
 	index := 0
+	loadBiddingPool := make(chan bool, Config.LoadBiddingPoolSize)
+	loadBiddingWaitGroup := &sync.WaitGroup{}
 	for data := make(map[string]interface{}); it.Next(&data); {
-		m.loadBiddingPool <- true
-		m.loadBiddingWaitGroup.Add(1)
+		loadBiddingPool <- true
+		loadBiddingWaitGroup.Add(1)
 		go func(temp map[string]interface{}) {
 			defer func() {
-				<-m.loadBiddingPool
-				m.loadBiddingWaitGroup.Done()
+				<-loadBiddingPool
+				loadBiddingWaitGroup.Done()
 			}()
 			_id := util.BsonIdToSId(temp["_id"])
 			temp["_id"] = _id
@@ -369,10 +164,10 @@ func (m *MatchJob) LoadBidding(lastId, newId string, lastTime int64) *[]map[stri
 		data = make(map[string]interface{})
 		index++
 		if index%500 == 0 {
-			logger.Info(Bidding, index)
+			logger.Info("加载", Bidding, "数据:", index)
 		}
 	}
-	m.loadBiddingWaitGroup.Wait()
+	loadBiddingWaitGroup.Wait()
 	logger.Info(Bidding, "数据已经加载结束。。。", index)
 	return &res
 }
@@ -410,13 +205,17 @@ func (m *MatchJob) OnceUserBatch(batchIndex int, lastUserId *string) (int, *VipU
 	//免费用户
 	title_key_user := make(map[string]*[]*UserInfo)
 	title_notkey_user := make(map[string]*[]*UserInfo)
+	//
+	loadUserPool := make(chan bool, Config.LoadUserPoolSize)
+	loadUserWaitGroup := &sync.WaitGroup{}
+	lock := &sync.Mutex{}
 	for userTemp := make(map[string]interface{}); query.Next(&userTemp); {
-		m.loadUserPool <- true
-		m.loadUserWaitGroup.Add(1)
+		loadUserPool <- true
+		loadUserWaitGroup.Add(1)
 		go func(temp map[string]interface{}) {
 			defer func() {
-				<-m.loadUserPool
-				m.loadUserWaitGroup.Done()
+				<-loadUserPool
+				loadUserWaitGroup.Done()
 			}()
 			user, o_msgset := public.NewUserInfoByUserColl(temp)
 			if user == nil {
@@ -519,8 +318,8 @@ func (m *MatchJob) OnceUserBatch(batchIndex int, lastUserId *string) (int, *VipU
 			user.Keys = originalKeys
 			user.Key_notkey = key_notkey
 			/***************start*****************/
-			m.loadUserLock.Lock()
-			defer m.loadUserLock.Unlock()
+			lock.Lock()
+			defer lock.Unlock()
 			if isVipUser {
 				user.O_vipjy = &O_vipjy{
 					ProjectMatch: util.IntAll(o_msgset["i_projectmatch"]),
@@ -599,7 +398,7 @@ func (m *MatchJob) OnceUserBatch(batchIndex int, lastUserId *string) (int, *VipU
 			break
 		}
 	}
-	m.loadUserWaitGroup.Wait()
+	loadUserWaitGroup.Wait()
 	//
 	vip_title_pjob := &KeyDfa{
 		Key_user:    &vip_title_key_user,
@@ -653,26 +452,48 @@ func (m *MatchJob) MakeKeyUser(keys []string, user *UserInfo, key_user *map[stri
 }
 
 //遍历数据并执行推送操作
-func (m *MatchJob) EachAllBidInfo(matcher Matcher, datas *[]map[string]interface{}) (*map[*UserInfo]*list.List, *sync.Map) {
+func (m *MatchJob) EachAllBidInfo(matcher Matcher, datas *[]map[string]interface{}) (*map[*UserInfo]*SortList, *map[*UserInfo]*[]string) {
 	defer util.Catch()
 	logger.Info("开始匹配数据。。。")
-	userMap := map[*UserInfo]*list.List{}
-	relationProject := &sync.Map{}
+	userMap := map[*UserInfo]*SortList{}
+	projectUserMap := map[*UserInfo]*[]string{}
+	lock := &sync.Mutex{}
 	var index int
+	matchPool := make(chan bool, Config.MatchPoolSize)
+	matchWaitGroup := &sync.WaitGroup{}
 	for _, temp := range *datas {
-		m.matchPool <- true
-		m.matchWaitGroup.Add(1)
+		matchPool <- true
+		matchWaitGroup.Add(1)
 		go func(info map[string]interface{}) {
 			defer func() {
-				m.matchWaitGroup.Done()
-				<-m.matchPool
+				matchWaitGroup.Done()
+				<-matchPool
 			}()
 			users, projectUsers := matcher.Match(&info)
+			lock.Lock()
+			defer lock.Unlock()
 			if users != nil && len(*users) > 0 {
-				m.EachInfoToUser(users, &info, &userMap)
+				for k, v := range *users {
+					l := userMap[k]
+					if l == nil {
+						l = &SortList{}
+					}
+					*l = append(*l, &MatchInfo{
+						Info: &info,
+						Keys: v.Keys,
+					})
+					userMap[k] = l
+				}
 			}
 			if projectUsers != nil && len(*projectUsers) > 0 {
-				relationProject.Store(util.ObjToString(info["_id"]), projectUsers)
+				for _, v := range *projectUsers {
+					l := projectUserMap[v]
+					if l == nil {
+						l = &[]string{}
+					}
+					*l = append(*l, util.ObjToString(info["_id"]))
+					projectUserMap[v] = l
+				}
 			}
 		}(temp)
 		index++
@@ -680,24 +501,225 @@ func (m *MatchJob) EachAllBidInfo(matcher Matcher, datas *[]map[string]interface
 			logger.Info("匹配数据", index)
 		}
 	}
-	m.matchWaitGroup.Wait()
+	matchWaitGroup.Wait()
 	logger.Info("匹配数据结束。。。", index)
-	return &userMap, relationProject
+	return &userMap, &projectUserMap
+}
+func (m *MatchJob) ToMatch(batchIndex int, matcher Matcher, datas *[]map[string]interface{}) {
+	logger.Info("开始匹配第", batchIndex, "批用户。。。")
+	userMap, projectUserMap := m.EachAllBidInfo(matcher, datas)
+	logger.Info("第", batchIndex, "批用户匹配结束。。。")
+	logger.Info("第", batchIndex, "批开始保存到", Pushspace_temp, "表。。。")
+	index := 0
+	var saveBatch []map[string]interface{}
+	myMatchId := map[string]map[string]bool{}
+	myFilterId := map[string]map[string]bool{}
+	//
+	savePool := make(chan bool, Config.SavePoolSize)
+	saveWaitGroup := &sync.WaitGroup{}
+	lock := &sync.Mutex{}
+	for k, v := range *userMap {
+		savePool <- true
+		saveWaitGroup.Add(1)
+		go func(user *UserInfo, infos *SortList) {
+			defer func() {
+				<-savePool
+				saveWaitGroup.Done()
+			}()
+			//取最新50条
+			sort.Sort(infos)
+			var array []*MatchInfo
+			matchTitle := map[string]bool{}
+			matchId := map[string]bool{}
+			filterId := map[string]bool{}
+			size := 0
+			for _, v2 := range *infos {
+				title := util.ObjToString((*v2.Info)["title"])
+				_id := util.ObjToString((*v2.Info)["_id"])
+				pushInfoKey := PushInfoKey(user.Id, _id)
+				if matchTitle[title] {
+					filterId[_id] = true
+					continue
+				}
+				matchTitle[title] = true
+				isExists, err := redis.Exists(Pushcache_2_a, pushInfoKey)
+				if err != nil {
+					logger.Error(pushInfoKey, "推送信息redis判重出错", err)
+				}
+				if isExists {
+					filterId[_id] = true
+					continue
+				}
+				redis.Put(Pushcache_2_a, pushInfoKey, 1, OneDaySecond)
+				info := map[string]interface{}{}
+				for _, field := range SaveFields {
+					if (*v2.Info)[field] == nil {
+						continue
+					}
+					info[field] = (*v2.Info)[field]
+				}
+				matchId[_id] = true
+				array = append(array, &MatchInfo{
+					Info: &info,
+					Keys: v2.Keys,
+				})
+				size++
+				maxPushSize := Config.MaxPushSize
+				if IsVipUser(user.VipStatus) {
+					maxPushSize = Config.VipMaxPushSize
+				}
+				if size == maxPushSize {
+					break
+				}
+			}
+			if size == 0 {
+				return
+			}
+			lock.Lock()
+			defer lock.Unlock()
+			myMatchId[user.Id] = matchId
+			myFilterId[user.Id] = filterId
+			saveBatch = append(saveBatch, map[string]interface{}{
+				"s_m_openid":    user.S_m_openid,
+				"a_m_openid":    user.A_m_openid,
+				"phone":         user.Phone,
+				"jpushid":       user.Jpushid,
+				"opushid":       user.Opushid,
+				"appphonetype":  user.AppPhoneType,
+				"userid":        user.Id,
+				"ratemode":      user.RateMode,
+				"wxpush":        user.WxPush,
+				"apppush":       user.AppPush,
+				"mailpush":      user.MailPush,
+				"pchelperpush":  user.PcHelperPush,
+				"usertype":      user.UserType,
+				"email":         user.Email,
+				"list":          array,
+				"size":          size,
+				"subscribe":     user.Subscribe,
+				"applystatus":   user.ApplyStatus,
+				"words":         user.Keys,
+				"modifydate":    user.ModifyDate,
+				"mergeorder":    user.MergeOrder,
+				"timestamp":     time.Now().Unix(),
+				"nickname":      user.NickName,
+				"firstpushtime": user.FirstPushTime,
+				"vipstatus":     user.VipStatus,
+			})
+			if len(saveBatch) == BulkSize {
+				mongodb.SaveBulk(Pushspace_temp, saveBatch...)
+				saveBatch = []map[string]interface{}{}
+			}
+		}(k, v)
+		index++
+		if index%500 == 0 {
+			logger.Info("保存到", Pushspace_temp, "表:", index)
+		}
+	}
+	saveWaitGroup.Wait()
+	if len(saveBatch) > 0 {
+		mongodb.SaveBulk(Pushspace_temp, saveBatch...)
+		saveBatch = []map[string]interface{}{}
+	}
+	logger.Info("第", batchIndex, "批保存到", Pushspace_temp, "表结束。。。", index)
+	m.ToRelationProject(projectUserMap, &myMatchId, &myFilterId)
 }
 
-//遍历用户加入到此条信息上
-func (m *MatchJob) EachInfoToUser(users *map[*UserInfo]*MatchUser, info *map[string]interface{}, userMap *map[*UserInfo]*list.List) {
-	defer m.userMapLock.Unlock()
-	m.userMapLock.Lock()
-	for k, v := range *users {
-		l := (*userMap)[k]
-		if l == nil {
-			l = list.New()
+//关联项目
+func (m *MatchJob) ToRelationProject(projectUser *map[*UserInfo]*[]string, myMatchId, myFilterId *map[string]map[string]bool) {
+	logger.Info("开始关联项目。。。")
+	index := 0
+	var updateproject [][]map[string]interface{}
+	//
+	savePool := make(chan bool, Config.SavePoolSize)
+	saveWaitGroup := &sync.WaitGroup{}
+	lock := &sync.Mutex{}
+	for k, v := range *projectUser {
+		savePool <- true
+		saveWaitGroup.Add(1)
+		go func(user *UserInfo, _ids *[]string) {
+			defer func() {
+				<-savePool
+				saveWaitGroup.Done()
+			}()
+			needLength := Config.MaxPushSize - len((*myMatchId)[user.Id])
+			for _, _id := range *_ids {
+				if (*myFilterId)[user.Id] != nil && (*myFilterId)[user.Id][_id] {
+					continue
+				}
+				//如果有信息类型,优先用订阅匹配上的信息,然后最多关联50条
+				if len(user.O_vipjy.SubTypes) > 0 {
+					if (*myMatchId)[user.Id] == nil || !(*myMatchId)[user.Id][_id] {
+						if needLength > 0 {
+							needLength--
+						} else {
+							continue
+						}
+					}
+				} else { //如果没有信息类型,只关联订阅匹配上的信息
+					if (*myMatchId)[user.Id] == nil || !(*myMatchId)[user.Id][_id] {
+						continue
+					}
+				}
+				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 {
+						continue
+					}
+					list := (*projects)[0]["list"].([]interface{})
+					if len(list) == 0 {
+						continue
+					}
+					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,
+					})
+				}
+				if projectId == "" || list_last_infoid == "" {
+					continue
+				}
+				lock.Lock()
+				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,
+							"subtypes":   user.O_vipjy.SubTypes,
+							"createtime": time.Now().Unix(),
+						},
+					},
+				})
+				if len(updateproject) == BigBulkSize {
+					mongodb.NewUpdateBulk(Pushspace_project, true, true, updateproject...)
+					updateproject = [][]map[string]interface{}{}
+				}
+				lock.Unlock()
+			}
+		}(k, v)
+		index++
+		if index%500 == 0 {
+			logger.Info("关联项目:", index)
 		}
-		l.PushBack(&MatchInfo{
-			Info: info,
-			Keys: v.Keys,
-		})
-		(*userMap)[k] = l
 	}
+	saveWaitGroup.Wait()
+	if len(updateproject) > 0 {
+		mongodb.NewUpdateBulk(Pushspace_project, true, true, updateproject...)
+		updateproject = [][]map[string]interface{}{}
+	}
+	logger.Info("关联项目结束。。。", index)
 }

+ 7 - 2
src/jfw/modules/pushsubscribe/src/match/job/timetask.go

@@ -20,8 +20,13 @@ type MatchTimeTask struct {
 }
 
 func (m *MatchTimeTask) Execute() {
-	Jobs.Match.Execute()
-	util.WriteSysConfig("./task.json", &TaskConfig)
+	hour := time.Hour
+	//23点到1点之间,不执行定时任务
+	//订阅付费有每天0点的定时任务删除pushspace_temp表的数据,会有冲突
+	if hour < 23 && hour > 1 {
+		Jobs.Match.Execute()
+		util.WriteSysConfig("./task.json", &TaskConfig)
+	}
 	t := time.Duration(Config.MatchDuration) * time.Minute
 	logger.Info("start match job after", t)
 	time.AfterFunc(t, m.Execute)

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


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

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

+ 14 - 13
src/jfw/modules/pushsubscribe/src/public/util.go

@@ -11,19 +11,20 @@ import (
 )
 
 const (
-	BulkSize          = 20
-	BigBulkSize       = 100
-	OneDaySecond      = 86400
-	User              = "user"
-	Bidding           = "bidding"
-	Projectset        = "projectset"
-	Pushspace_project = "pushspace_project"
-	Pushspace_temp    = "pushspace_temp"
-	Pushspace_vip     = "pushspace_vip"
-	Pushspace_fail    = "pushspace_fail"
-	Pushspace         = "pushspace"
-	Pushcache_1       = "pushcache_1"
-	Pushcache_2_a     = "pushcache_2_a"
+	BulkSize           = 20
+	BigBulkSize        = 100
+	OneDaySecond       = 86400
+	User               = "user"
+	Bidding            = "bidding"
+	Projectset         = "projectset"
+	Pushspace_project  = "pushspace_project"
+	Pushspace_temp     = "pushspace_temp"
+	Pushspace_vip      = "pushspace_vip"
+	Pushspace_vip_fail = "pushspace_vip_fail"
+	Pushspace_fail     = "pushspace_fail"
+	Pushspace          = "pushspace"
+	Pushcache_1        = "pushcache_1"
+	Pushcache_2_a      = "pushcache_2_a"
 )
 
 var (

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
src/jfw/modules/pushsubscribe/src/push/config.json


+ 2 - 17
src/jfw/modules/pushsubscribe/src/push/job/jobs.go

@@ -1,7 +1,6 @@
 package job
 
 import (
-	. "push/config"
 	"sync"
 )
 
@@ -10,23 +9,9 @@ var Jobs = struct {
 	Push        *PushJob
 	ProjectPush *ProjectPushJob
 }{
-	Move: &MoveJob{
-		moveLock:  &sync.Mutex{},
-		moveWait:  &sync.WaitGroup{},
-		movePool:  make(chan bool, Config.MovePoolSize),
-		mergeLock: &sync.Mutex{},
-		mergeWait: &sync.WaitGroup{},
-		mergePool: make(chan bool, Config.MergePoolSize),
-	},
+	Move: &MoveJob{},
 	Push: &PushJob{
-		pool: make(chan bool, Config.PushPoolSize),
-		wait: &sync.WaitGroup{},
 		lock: &sync.Mutex{},
 	},
-	ProjectPush: &ProjectPushJob{
-		pushPool: make(chan bool, Config.ProjectPushPoolSize),
-		pushWait: &sync.WaitGroup{},
-		loadPool: make(chan bool, Config.LoadProjectPoolSize),
-		loadWait: &sync.WaitGroup{},
-	},
+	ProjectPush: &ProjectPushJob{},
 }

+ 24 - 22
src/jfw/modules/pushsubscribe/src/push/job/movejob.go

@@ -22,12 +22,6 @@ type MoveUser struct {
 }
 
 type MoveJob struct {
-	moveLock  *sync.Mutex
-	moveWait  *sync.WaitGroup
-	movePool  chan bool
-	mergeLock *sync.Mutex
-	mergeWait *sync.WaitGroup
-	mergePool chan bool
 }
 
 func (m *MoveJob) Execute() {
@@ -45,15 +39,18 @@ func (m *MoveJob) Execute() {
 	}).Sort("userid").Iter()
 	moveUsers := map[string]*MoveUser{}
 	index, number, length := 0, 0, 0
+	//
+	moveWait := &sync.WaitGroup{}
+	movePool := make(chan bool, Config.MovePoolSize)
+	moveLock := &sync.Mutex{}
 	for data := make(map[string]interface{}); it.Next(&data); {
-		m.movePool <- true
-		m.moveWait.Add(1)
+		movePool <- true
+		moveWait.Add(1)
 		index++
 		go func(temp map[string]interface{}) {
 			defer func() {
-				<-m.movePool
-				m.moveWait.Done()
-				m.moveLock.Unlock()
+				<-movePool
+				moveWait.Done()
 			}()
 			userId := util.ObjToString(temp["userid"])
 			isVipUser := IsVipUser(util.IntAll(temp["vipstatus"]))
@@ -61,7 +58,8 @@ func (m *MoveJob) Execute() {
 			if isVipUser {
 				maxPushSize = Config.VipMaxPushSize
 			}
-			m.moveLock.Lock()
+			moveLock.Lock()
+			defer moveLock.Unlock()
 			moveUser := moveUsers[userId]
 			if moveUser != nil {
 				list, _ := moveUser.info["list"].(*SortList)
@@ -109,7 +107,7 @@ func (m *MoveJob) Execute() {
 			logger.Info("迁移数据:", index)
 		}
 	}
-	m.moveWait.Wait()
+	moveWait.Wait()
 	if length > 0 {
 		m.merge(&number, nowUnix, moveUsers)
 		length = 0
@@ -127,26 +125,30 @@ func (m *MoveJob) merge(number *int, nowUnix int64, moveUsers map[string]*MoveUs
 	updateArray_set := []map[string]interface{}{}
 	updateArray_delete := []interface{}{}
 	invalidArray_delete := []interface{}{}
+	//
+	mergeLock := &sync.Mutex{}
+	mergeWait := &sync.WaitGroup{}
+	mergePool := make(chan bool, Config.MergePoolSize)
 	for k, v := range moveUsers {
-		m.mergePool <- true
-		m.mergeWait.Add(1)
+		mergePool <- true
+		mergeWait.Add(1)
 		go func(userId string, moveUser *MoveUser) {
 			defer func() {
-				<-m.mergePool
-				m.mergeWait.Done()
+				<-mergePool
+				mergeWait.Done()
 			}()
 			sess := mongodb.GetMgoConn()
 			defer mongodb.DestoryMongoConn(sess)
 			var data map[string]interface{}
 			sess.DB(DbName).C(Pushspace).Find(map[string]interface{}{"userid": userId}).Select(map[string]interface{}{"list": 1}).One(&data)
 			if data == nil { //批量新增
-				m.mergeLock.Lock()
+				mergeLock.Lock()
 				saveArray = append(saveArray, moveUser.info)
 				saveArray_delete = append(saveArray_delete, moveUser.ids...)
 				if len(saveArray) == BulkSize {
 					m.saveBulk(sess, &saveArray, &saveArray_delete)
 				}
-				m.mergeLock.Unlock()
+				mergeLock.Unlock()
 			} else { //批量更新
 				setMap := map[string]interface{}{}
 				for _, field := range MoveFields {
@@ -198,14 +200,14 @@ func (m *MoveJob) merge(number *int, nowUnix int64, moveUsers map[string]*MoveUs
 					}
 				}
 				upSet["$set"] = setMap
-				m.mergeLock.Lock()
+				mergeLock.Lock()
 				updateArray_delete = append(updateArray_delete, moveUser.ids...)
 				updateArray_query = append(updateArray_query, map[string]interface{}{"_id": data["_id"]})
 				updateArray_set = append(updateArray_set, upSet)
 				if len(updateArray_query) == BulkSize {
 					m.updateBulk(sess, &updateArray_query, &updateArray_set, &updateArray_delete)
 				}
-				m.mergeLock.Unlock()
+				mergeLock.Unlock()
 			}
 		}(k, v)
 		index++
@@ -213,7 +215,7 @@ func (m *MoveJob) merge(number *int, nowUnix int64, moveUsers map[string]*MoveUs
 			logger.Info("第", *number, "次合并数据:", index)
 		}
 	}
-	m.mergeWait.Wait()
+	mergeWait.Wait()
 	if len(saveArray) > 0 {
 		m.saveBulk(nil, &saveArray, &saveArray_delete)
 	}

+ 15 - 15
src/jfw/modules/pushsubscribe/src/push/job/projectjob.go

@@ -18,10 +18,6 @@ import (
 )
 
 type ProjectPushJob struct {
-	pushPool chan bool
-	pushWait *sync.WaitGroup
-	loadPool chan bool
-	loadWait *sync.WaitGroup
 }
 
 func (p *ProjectPushJob) Execute() {
@@ -32,18 +28,21 @@ func (p *ProjectPushJob) Execute() {
 	projects := p.loadProject()
 	startId := ""
 	batchIndex := 0
+	//
+	pushPool := make(chan bool, Config.ProjectPushPoolSize)
+	pushWait := &sync.WaitGroup{}
 	for {
 		batchIndex++
 		batchCount, datas := p.loadPushspace_project(batchIndex, &startId)
 		logger.Info("开始第", batchIndex, "次关联项目匹配。。。")
 		index := 0
 		for k, v := range *datas {
-			p.pushPool <- true
-			p.pushWait.Add(1)
+			pushPool <- true
+			pushWait.Add(1)
 			go func(userId string, list []map[string]interface{}) {
 				defer func() {
-					<-p.pushPool
-					p.pushWait.Done()
+					<-pushPool
+					pushWait.Done()
 				}()
 				sess := mongodb.GetMgoConn()
 				defer mongodb.DestoryMongoConn(sess)
@@ -176,7 +175,7 @@ func (p *ProjectPushJob) Execute() {
 				logger.Info("第", batchIndex, "次关联项目匹配:", index)
 			}
 		}
-		p.pushWait.Wait()
+		pushWait.Wait()
 		logger.Info("第", batchIndex, "次关联项目匹配结束", index)
 		if batchCount < Config.PushBatch {
 			break
@@ -240,7 +239,6 @@ func (p *ProjectPushJob) loadPushspace_project(batchIndex int, startId *string)
 		}
 		prevUserId = userId
 	}
-	p.loadWait.Wait()
 	logger.Info("第", batchIndex, "批关联项目加载结束", index, *startId)
 	return index, &datas
 }
@@ -264,13 +262,15 @@ func (p *ProjectPushJob) loadProject() *sync.Map {
 	}).Sort("_id").Iter()
 	projectMap := &sync.Map{}
 	index := 0
+	loadPool := make(chan bool, Config.LoadProjectPoolSize)
+	loadWait := &sync.WaitGroup{}
 	for m := make(map[string]interface{}); it.Next(&m); {
-		p.loadPool <- true
-		p.loadWait.Add(1)
+		loadPool <- true
+		loadWait.Add(1)
 		go func(data map[string]interface{}) {
 			defer func() {
-				<-p.loadPool
-				p.loadWait.Done()
+				<-loadPool
+				loadWait.Done()
 			}()
 			_id := util.BsonIdToSId(data["_id"])
 			projectMap.Store(_id, data)
@@ -281,7 +281,7 @@ func (p *ProjectPushJob) loadProject() *sync.Map {
 			logger.Info("加载项目:", index)
 		}
 	}
-	p.loadWait.Wait()
+	loadWait.Wait()
 	logger.Info("加载项目结束。。。", index)
 	return projectMap
 }

+ 8 - 7
src/jfw/modules/pushsubscribe/src/push/job/pushjob.go

@@ -35,8 +35,6 @@ func init() {
 }
 
 type PushJob struct {
-	pool                    chan bool
-	wait                    *sync.WaitGroup
 	lock                    *sync.Mutex
 	minutePushPool          chan bool
 	fastigiumMinutePushPool chan bool
@@ -74,6 +72,9 @@ func (p *PushJob) StartPush(pusher Pusher, taskType int) {
 	logger.Info("推送任务", taskType, "开始推送。。。")
 	batchIndex := 0
 	startId := ""
+	//
+	pushPool := make(chan bool, Config.PushPoolSize)
+	pushWait := &sync.WaitGroup{}
 	for {
 		batchIndex++
 		isBreak, users := pusher.OncePushBatch(taskType, batchIndex, &startId)
@@ -90,15 +91,15 @@ func (p *PushJob) StartPush(pusher Pusher, taskType int) {
 						}
 					}
 				}()
-			case p.pool <- true:
+			case pushPool <- true:
 			}
-			p.wait.Add(1)
+			pushWait.Add(1)
 			go func(v map[string]interface{}, take bool) {
 				defer func() {
 					if take {
-						<-p.pool
+						<-pushPool
 					}
-					p.wait.Done()
+					pushWait.Done()
 				}()
 				u, pushWay := pusher.GetUserInfo(v)
 				if u == nil {
@@ -116,7 +117,7 @@ func (p *PushJob) StartPush(pusher Pusher, taskType int) {
 			break
 		}
 	}
-	p.wait.Wait()
+	pushWait.Wait()
 	logger.Info("推送任务结束。。。", taskType)
 }
 

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


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

@@ -16,9 +16,7 @@ type SpecialPush struct{}
 
 //获取需要推送的用户
 func (s *SpecialPush) OncePushBatch(taskType, batchIndex int, startId *string) (bool, *[]map[string]interface{}) {
-	query := map[string]interface{}{
-		"status": 1,
-	}
+	query := map[string]interface{}{}
 	if taskType == 3 {
 		query["ratemode"] = 3
 	} else if taskType == 4 {
@@ -93,17 +91,23 @@ func (s *SpecialPush) GetPushParam(mailPush bool, u *UserInfo, sl *SortList) *pu
 
 //推送以后处理
 func (s *SpecialPush) AfterPush(pushResult *putil.PushResult, u *UserInfo, user map[string]interface{}) {
-	if pushResult == nil || (pushResult.WxStatus != -1 && pushResult.AppStatus != -1 && pushResult.MailStatus != -1) {
-		s.deletePushspaceVip(user)
-	} else {
+	s.deletePushspaceVip(user)
+	if pushResult != nil && (pushResult.WxStatus == -1 || pushResult.AppStatus == -1 || pushResult.MailStatus == -1) {
 		sess := mongodb.GetMgoConn()
 		defer mongodb.DestoryMongoConn(sess)
-		err := sess.DB(DbName).C(Pushspace_vip).UpdateId(user["_id"], map[string]interface{}{
-			"failtime": time.Now().Unix(),
-			"status":   -1,
-		})
+		if pushResult.WxStatus == -1 {
+			user["wxfail"] = 1
+		}
+		if pushResult.AppStatus == -1 {
+			user["appfail"] = 1
+		}
+		if pushResult.MailStatus == -1 {
+			user["mailfail"] = 1
+		}
+		user["failtime"] = time.Now().Unix()
+		err := sess.DB(DbName).C(Pushspace_vip_fail).Insert(user)
 		if err != nil {
-			logger.Error(u.Id, "更新出错", err)
+			logger.Error(u.Id, "新出错", err)
 		}
 	}
 }

+ 2 - 2
src/jfw/modules/pushsubscribe/src/push/util/entity.go

@@ -84,6 +84,8 @@ func NewPushParam(isLimit bool, dayCount int, mailPush bool, u *UserInfo, sl *So
 	infosLength := 0
 	isVipUser := IsVipUser(u.VipStatus)
 	for _, ks := range *sl {
+		infosLength++
+		dayCount++
 		k2 := *ks.Info
 		title := strings.Replace(k2["title"].(string), "\n", "", -1)
 		title = Re.ReplaceAllString(title, "$1")
@@ -92,7 +94,6 @@ func NewPushParam(isLimit bool, dayCount int, mailPush bool, u *UserInfo, sl *So
 			area = "全国"
 		}
 		newTitle := fmt.Sprintf("[%s]%s", area, title)
-		infosLength++
 		infos = append(infos, ks)
 		titleArray = append(titleArray, newTitle)
 		if infosLength == 1 {
@@ -169,7 +170,6 @@ func NewPushParam(isLimit bool, dayCount int, mailPush bool, u *UserInfo, sl *So
 					break
 				}
 			}
-			dayCount++
 		}
 	}
 	return &PushParam{

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
src/jfw/modules/subscribepay/src/dataexport.json


+ 34 - 7
src/jfw/modules/subscribepay/src/entity/dataexport.go

@@ -340,15 +340,16 @@ func SendMailToBJFinance(order *map[string]interface{}, pay_time, transaction_id
 				}
 			}
 			//vip开发票内容
-			subscription_area, industry, subscription_cycle, effective_date := "", "", "", ""
+			subscription_area, industry, subscription_cycle, effective_date, payment_number := "", "", "", "", ""
 			city_count := 0
 			filter := qutil.ObjToString((*order)["filter"])
 			vip_starttime := qutil.ObjToString((*order)["vip_starttime"])
 			vip_endtime := qutil.ObjToString((*order)["vip_endtime"])
+			payment_number = getPayTransactionId(qutil.ObjToString((*order)["pay_way"]), qutil.ObjToString((*order)["out_trade_no"]))
+			vip_type := qutil.Int64All((*order)["vip_type"]) //判断 续费 升级订单
 			vf := new(VipFilter)
 			err := json.Unmarshal([]byte(filter), &vf)
 			if err == nil && vf != nil {
-				log.Println(vf.Area)
 				vip_area := vf.Area    //区域
 				vip_ind := vf.Industry //行业
 				nbs := JyVipSubStruct.NewBuySet(&vip_area, vip_ind)
@@ -409,19 +410,22 @@ func SendMailToBJFinance(order *map[string]interface{}, pay_time, transaction_id
 						} else if year > 0 && month == 0 {
 							subscription_cycle = fmt.Sprintf("%d年", year)
 						}
-						log.Println(subscription_cycle)
 						//有效日期
 						vip_starttime = strings.Replace(vip_starttime[0:10], "-", ".", -1)
 						vip_endtime = strings.Replace(vip_endtime[0:10], "-", ".", -1)
 						effective_date = fmt.Sprintf("%v-%v", vip_starttime, vip_endtime)
-						log.Println(effective_date)
 					}
 				}
 			}
-			//vip
-			product_type = "VIP订阅"
+			if vip_type == 1 {
+				product_type = "VIP订阅(续费)"
+			} else if vip_type == 2 {
+				product_type = "VIP订阅(升级)"
+			} else {
+				product_type = "VIP订阅"
+			}
 			mail_title = "电子发票申请-[剑鱼标讯]VIP订阅(" + order_code + ")"
-			mailcontent = fmt.Sprintf(ExConf.Mail_vip_invoice_finance_content, bill_title, company_flag, bill_company, taxnum_flag, bill_taxnum, user_email, order_code, create_time, pay_time, pay_way, product_type, pay_money, subscription_area, industry, subscription_cycle, effective_date)
+			mailcontent = fmt.Sprintf(ExConf.Mail_vip_invoice_finance_content, bill_title, company_flag, bill_company, taxnum_flag, bill_taxnum, user_email, order_code, create_time, payment_number, pay_time, pay_way, product_type, pay_money, subscription_area, industry, subscription_cycle, effective_date)
 		}
 	}
 	//发送邮件
@@ -762,3 +766,26 @@ func GetBrforeMsg(userId, openId string) (name, phone, company, email string) {
 	}
 	return
 }
+
+//获取支付单号
+func getPayTransactionId(payWay, tradeNo string) (transaction_id string) {
+	if payWay == "" || tradeNo == "" {
+		return
+	}
+	table := ""
+	if strings.HasPrefix(payWay, "wx") {
+		table = "weixin_pay"
+	} else if strings.HasPrefix(payWay, "ali") {
+		table = "ali_pay"
+	} else {
+		return
+	}
+	query := map[string]interface{}{
+		"out_trade_no": tradeNo,
+	}
+	r := util.Mysql.FindOne(table, query, "transaction_id", "")
+	if r != nil {
+		transaction_id = qutil.ObjToString((*r)["transaction_id"])
+	}
+	return
+}

+ 21 - 17
src/jfw/modules/subscribepay/src/service/afterPay.go

@@ -288,24 +288,28 @@ func (a *AfterPay) GetUserInfo() error {
 			data := qutil.ObjToMap((*userData)["o_vipjy"])
 			i_vip_status := qutil.IntAll((*userData)["i_vip_status"])
 			//区域
-			//			_area := qutil.ObjToMap((*data)["o_area"].(interface{}))
-			//			var area = ""
-			//			for k, v := range *_area {
-			//				if len(v.([]interface{})) == 0 {
-			//					area += k + "、"
-			//				} else {
-			//					for _, _v := range v.([]interface{}) {
-			//						area += _v.(string) + "、"
-			//					}
-			//				}
-			//			}
-			//			if area == "" {
-			//				(*data)["o_area"] = "全国"
-			//			} else {
-			//				(*data)["o_area"] = strings.TrimRight(area, "、")
-			//			}
+			_area := qutil.ObjToMap((*data)["o_area"].(interface{}))
+			var area_i = 0
+			var area_j = 0
+			for _, v := range *_area {
+				if len(v.([]interface{})) == 0 {
+					area_i += 1
+				} else {
+
+					area_j += len(v.([]interface{}))
+				}
+			}
+			if area_i != 0 && area_j != 0 {
+				(*data)["o_area"] = strconv.Itoa(area_i) + "个省级区域、" + strconv.Itoa(area_j) + "个地市"
+			} else if area_i == 0 && area_j != 0 {
+				(*data)["o_area"] = strconv.Itoa(area_j) + "个地市"
+			} else if area_i != 0 && area_j == 0 {
+				(*data)["o_area"] = strconv.Itoa(area_i) + "个省级区域"
+			} else {
+				(*data)["o_area"] = "全国"
+			}
 			//采购行业
-			//			_buyClass := (*data)["a_buyerclass"].([]interface{})
+			//_buyClass := (*data)["a_buyerclass"].([]interface{})
 			//			var buyClass = ""
 			//			for _, v := range _buyClass {
 			//				buyClass += v.(string) + "、"

+ 1 - 1
src/jfw/modules/subscribepay/src/service/commonAction.go

@@ -52,7 +52,7 @@ func (d *CommonAction) ApplyInvoice() error {
 		go func() {
 			orderdata := util.Mysql.FindOne("dataexport_order", map[string]interface{}{
 				"order_code": order_code,
-			}, "id,filter,user_mail,user_phone,product_type,data_spec,filter_id,order_code,data_count,order_status,order_money,out_trade_no,applybill_type,applybill_company,applybill_taxnum,user_openid,create_time,pay_time,pay_way,pay_money,vip_starttime,vip_endtime,user_id", "")
+			}, "id,filter,user_mail,user_phone,product_type,data_spec,filter_id,order_code,data_count,order_status,order_money,out_trade_no,applybill_type,applybill_company,applybill_taxnum,user_openid,create_time,pay_time,pay_way,pay_money,vip_starttime,vip_endtime,user_id,vip_type", "")
 			tt := time.Now()
 			pay_time := qutil.FormatDate(&tt, qutil.Date_Full_Layout)
 			entity.SendMailToBJFinance(orderdata, pay_time, "", 2, config.GmailAuth)

+ 4 - 8
src/jfw/modules/subscribepay/src/service/orderListDetails.go

@@ -58,7 +58,6 @@ func (this *OrderListDetails) GetOrderPayAllMsg() {
 			//"order_status": 1,
 		}
 		oData := util.Mysql.FindOne(tableName_order, query, "prepay_time,create_time,pay_time,pay_way,original_price,applybill_status,out_trade_no,filter,product_type,order_status,applybill_type,applybill_taxnum,applybill_company,vip_starttime,vip_endtime,vip_type", "")
-		log.Println("odata:", oData)
 		//查询订单信息
 		if oData == nil || len(*oData) == 0 {
 			return &entity.FuncResult{false, errors.New("未找到此订单"), nil}
@@ -68,12 +67,6 @@ func (this *OrderListDetails) GetOrderPayAllMsg() {
 		if uData == nil || len(*uData) == 0 {
 			return &entity.FuncResult{false, errors.New("数据库查询异常"), nil}
 		}
-		//		//判断用户状态
-		//		uStatus, ok := util.MQFW.FindById("user", userId, `{"i_vip_status":1}`)
-		//		if uStatus == nil || len(*uStatus) == 0 || !ok {
-		//			return &entity.FuncResult{false, errors.New("数据库查询异常"), nil}
-		//		}
-		//		log.Println("udata:", uData)
 		if qutil.IntAll((*oData)["order_status"]) != 1 {
 			return &entity.FuncResult{true, nil, map[string]interface{}{
 				"order": oData,
@@ -433,7 +426,10 @@ func (o *OrderListDetails) SetRes(res []map[string]interface{}, queryM map[strin
 		//创建时间戳
 		create_time, _ := time.ParseInLocation(qutil.Date_Full_Layout, create_time_str, time.Local)
 		//48小时后的时间戳
-		create_time_stamp := create_time.AddDate(0, 0, 2).Unix()
+		//create_time_stamp_48 := create_time.AddDate(0, 0, 2).Unix()
+		//测试暂时改成1h
+		onehour, _ := time.ParseDuration("1h")
+		create_time_stamp := create_time.Add(onehour).Unix()
 		//当前时间时间戳
 		now_time_stamp := time.Now().Unix()
 		if create_time_stamp < now_time_stamp && qutil.ObjToString(v["product_type"]) == "VIP订阅" {

+ 5 - 4
src/jfw/modules/subscribepay/src/service/payCallback.go

@@ -4,13 +4,14 @@ import (
 	"config"
 	"entity"
 	"fmt"
-	"github.com/go-xweb/xweb"
 	"log"
 	"net/url"
 	"pay"
 	qutil "qfw/util"
 	"qfw/util/redis"
 	"strings"
+
+	"github.com/go-xweb/xweb"
 )
 
 type PayCallBackAction struct {
@@ -79,7 +80,7 @@ func (p *PayCallBackAction) WxPayCallback() {
 	}
 
 	ok := func() bool {
-		if ret["return_code"] != "SUCCESS" || !(ret["appid"] == pay.WxStruct.Appid ||ret["appid"] == pay.WxStruct.Appid_app)|| ret["mch_id"] != pay.WxStruct.Mchid {
+		if ret["return_code"] != "SUCCESS" || !(ret["appid"] == pay.WxStruct.Appid || ret["appid"] == pay.WxStruct.Appid_app) || ret["mch_id"] != pay.WxStruct.Mchid {
 			return false
 		}
 		if thisParam.Openid != "" {
@@ -88,7 +89,7 @@ func (p *PayCallBackAction) WxPayCallback() {
 		if ret["sign"] != qutil.CreateWxSign(fmt.Sprintf("&key=%s", pay.WxStruct.Key), ret) {
 			return false
 		}
-		update, insert := false, false;
+		update, insert := false, false
 		if strings.HasPrefix(thisParam.OutTradeno, pay.WX_REWARD_JSAPI) { //打赏
 			if update = entity.JyReWardStruct.PayCallBack(thisParam); !update {
 				log.Printf("微信打赏更新执行出错 %+v\n", thisParam)
@@ -102,7 +103,7 @@ func (p *PayCallBackAction) WxPayCallback() {
 				log.Printf("微信数据报告更新执行出错 %+v\n", thisParam)
 			}
 		} else if strings.HasPrefix(thisParam.OutTradeno, pay.WX_SUBVIP_APP) || strings.HasPrefix(thisParam.OutTradeno, pay.WX_SUBVIP_JSAPI) { //vip订阅
-			if update=entity.JyVipSubStruct.PayCallBack(thisParam);!update{
+			if update = entity.JyVipSubStruct.PayCallBack(thisParam); !update {
 				log.Printf("微信vip订阅更新执行出错 %+v\n", thisParam)
 			}
 		}

+ 107 - 61
src/jfw/modules/subscribepay/src/service/vipRenewUpgrade.go

@@ -16,7 +16,7 @@ import (
 	"util"
 
 	"github.com/go-xweb/xweb"
-	"gopkg.in/mgo.v2/bson"
+	//	"gopkg.in/mgo.v2/bson"
 )
 
 //订阅升级修改相关接口
@@ -43,14 +43,14 @@ 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
+		//		isvalidOk := true
 
-		str, oks := util.MQFW.FindOne("vip_upgrade", bson.M{"s_userid": userId, "i_isvalid": 0})
-		if oks && len(*str) > 0 && *str != nil {
-			area = (*str)["o_area"]
-			buyerclass = (*str)["a_buyerclass"]
-			isvalidOk = false
-		}
+		//		str, oks := util.MQFW.FindOne("vip_upgrade", bson.M{"s_userid": userId, "i_isvalid": 0})
+		//		if oks && len(*str) > 0 && *str != nil {
+		//			area = (*str)["o_area"]
+		//			buyerclass = (*str)["a_buyerclass"]
+		//			isvalidOk = false
+		//		}
 
 		dataArr := map[string]interface{}{
 			"area":       area,
@@ -63,7 +63,7 @@ func (this *RenewUpgrade) GetBuyMsg() {
 			"end":        end,
 			"now":        now,
 			"vipStatus":  vipStatus,
-			"isvalidOk":  isvalidOk,
+			//			"isvalidOk":  isvalidOk,
 		}
 		this.ServeJson(dataArr)
 	}
@@ -72,26 +72,50 @@ func (this *RenewUpgrade) GetBuyMsg() {
 //升级续费
 //创建订单返回支付串
 func (this *RenewUpgrade) RenewUpgradeCreateOrder() {
-	area := qutil.ObjToMap(this.GetString("area"))                 //已购买区域+新增区域
-	industry := strings.Split(this.GetString("industry"), ",")     //已购买行业+新增行业
-	areas := qutil.ObjToMap(this.GetString("areas"))               //已购买区域
-	industrys := strings.Split(this.GetString("industryarr"), ",") //已购买行业
-	date := this.GetString("time")                                 //不延长时为空,正常为 年或月
-	payWay := this.GetString("payWay")                             //支付方式
-	effect := this.GetString("effect")                             //升级 生效日期 立即生效-now  下月一号生效-下月一号的时间戳
-	pay_source := this.GetString("pay_source")                     //类型  续费-Renew or 升级-Upgrade
+	areaArr := this.GetString("area")
+	var area *map[string]interface{}
+	if areaArr != "no" {
+		area = qutil.ObjToMap(this.GetString("area")) //新增区域
+	} else {
+		area = &map[string]interface{}{
+			"no": "no",
+		}
+	}
+	industryArr := this.GetString("industry")
+	var industry []string
+	if industryArr != "no" {
+		industry = strings.Split(this.GetString("industry"), ",") //新增行业
+	} else {
+		industry = append(industry, "no")
+	}
+	areas := qutil.ObjToMap(this.GetString("areas"))                 //已购买区域
+	industrys := strings.Split(this.GetString("industryarr"), ",")   //已购买行业
+	allArea := qutil.ObjToMap(this.GetString("allArea"))             //已购+新增区域
+	allIndustry := strings.Split(this.GetString("allIndustry"), ",") //已购+新增行业
+	date := this.GetString("time")                                   //不延长时为空,正常为 年或月
+	payWay := this.GetString("payWay")                               //支付方式
+	log.Println("payWay", payWay)
+	//	effect := this.GetString("effect")         //升级 生效日期 立即生效-now  下月一号生效-下月一号的时间戳
+	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")
+	log.Println("area", area)
+	log.Println("industry", industry)
+	//	isvalidOk, _ := this.GetBool("isvalidOk")
 	r := func() *entity.FuncResult {
 		now := time.Now()
 		//数据校验
-		if len(industry) == 1 && industry[0] == "" { //去掉[""]
-			industry = []string{}
+		if (industry[0]) != "no" {
+			if len(industry) == 1 && industry[0] == "" { //去掉[""]
+				industry = []string{}
+			}
 		}
 		if len(industrys) == 1 && industrys[0] == "" { //去掉[""]
 			industrys = []string{}
 		}
+		if len(allIndustry) == 1 && allIndustry[0] == "" { //去掉[""]
+			allIndustry = []string{}
+		}
 		if !(pay_source == "Renew" || pay_source == "Upgrade") {
 			return &entity.FuncResult{false, errors.New("未知操作"), nil}
 		}
@@ -122,19 +146,20 @@ func (this *RenewUpgrade) RenewUpgradeCreateOrder() {
 		isRenew := true
 		if pay_source == "Upgrade" { //计算升级时间
 			isRenew = false
-			if effect == "now" { //立即生效
-				orderType = 3
-				//				startTime = time.Now()
-			} else { //下月生效
-				orderType = 4
-				//				startTime = time.Date(time.Now().Year(), time.Now().Month()+1, 1, 0, 0, 0, 0, time.Local)
-			}
-			if !isvalidOk {
-				orderType = 6
-			}
+			//			if effect == "now" { //立即生效
+			orderType = 3
+			startTime = time.Now()
+			//			} else { //下月生效
+			//				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
+			log.Println("startTime", startTime)
 		}
 		//		if date_unit == 1 { ///延长时间
 		//			endTime = endTime.AddDate(date_count, 0, 0)
@@ -145,15 +170,15 @@ func (this *RenewUpgrade) RenewUpgradeCreateOrder() {
 			endTime = util.GetDATE(date_unit, date_count, end)
 		}
 		log.Println("endend", endTime)
-		if pay_source == "Renew" && now.Unix() > end { //到期后的续费从当前时间往后延长
-			startTime = now
-			//			if date_unit == 1 { ///延长时间
-			//				endTime = startTime.AddDate(date_count, 0, 0)
-			//			} else if date_unit == 2 { //月
-			//				endTime = startTime.AddDate(0, date_count, 0)
-			//			}
-			endTime = util.GetDATE(date_unit, date_count, startTime.Unix())
-		}
+		//		if pay_source == "Renew" && now.Unix() > end { //到期后的续费从当前时间往后延长
+		//			startTime = now
+		//			//			if date_unit == 1 { ///延长时间
+		//			//				endTime = startTime.AddDate(date_count, 0, 0)
+		//			//			} else if date_unit == 2 { //月
+		//			//				endTime = startTime.AddDate(0, date_count, 0)
+		//			//			}
+		//			endTime = util.GetDATE(date_unit, date_count, startTime.Unix())
+		//		}
 		filter := entity.VipSimpleMsg{
 			area,
 			industry,
@@ -170,22 +195,48 @@ func (this *RenewUpgrade) RenewUpgradeCreateOrder() {
 		if pay_source == "Renew" {
 			totalfee = entity.JyVipSubStruct.GetSubVipPrice(area, industry, date_count, date_unit)
 		} else if pay_source == "Upgrade" {
-			upgradeYear, upgradeMonth := MaxUpgradeMonth(end, effect)                     //获取最大升级月数
-			addY := entity.JyVipSubStruct.GetSubVipPrice(area, industry, upgradeYear, 1)  //已购+新增,以年为单位的价格
-			addM := entity.JyVipSubStruct.GetSubVipPrice(area, industry, upgradeMonth, 2) //已购+新增,以月为单位的价格
-			addPrice := addM + addY                                                       //已购+新增总价格
-			log.Println("1", addPrice)
-			nowY := entity.JyVipSubStruct.GetSubVipPrice(areas, industrys, upgradeYear, 1)  //已购,以年为单位的价格
-			nowM := entity.JyVipSubStruct.GetSubVipPrice(areas, industrys, upgradeMonth, 2) //已购,以月为单位的价格
-			nowPrice := nowM + nowY                                                         //已购总价格
-			log.Println("2", nowPrice)
-			totalfee = addPrice - nowPrice //已购+新增的总价格 - 已购总价格 = 升级差价
-			if date_unit == 1 {            //升级中的延长时间
-				lengPrice := entity.JyVipSubStruct.GetSubVipPrice(area, industry, date_count, 1) //单位为年的已购+新增延长时间价格
-				totalfee = totalfee + lengPrice                                                  //已购+新增延长时间价格 + 升级差价 = 最终价格
+			upgradeYear, upgradeMonth := MaxUpgradeMonth(end) //获取最大升级月数
+			log.Println(upgradeYear)
+			log.Println(upgradeMonth)
+			addAreaY := 0
+			addAreaM := 0
+			oldAreaY := 0
+			oldAreaM := 0
+			addIndustryY := 0
+			addIndustryM := 0
+			if (*area)["no"] != "no" && industry[0] != "no" {
+				log.Println("1")
+				addAreaY = entity.JyVipSubStruct.GetSubVipPrice(area, industry, upgradeYear, 1)
+				addAreaM = entity.JyVipSubStruct.GetSubVipPrice(area, industry, upgradeMonth, 2)
+			}
+			if (*area)["no"] != "no" {
+				log.Println("2")
+				oldAreaY = entity.JyVipSubStruct.GetSubVipPrice(area, industrys, upgradeYear, 1)
+				oldAreaM = entity.JyVipSubStruct.GetSubVipPrice(area, industrys, upgradeMonth, 2)
+			}
+			if industry[0] != "no" {
+				log.Println("3")
+				addIndustryY = entity.JyVipSubStruct.GetSubVipPrice(areas, industry, upgradeYear, 1)
+				addIndustryM = entity.JyVipSubStruct.GetSubVipPrice(areas, industry, upgradeMonth, 2)
+			}
+			log.Println("addIndustryY", addIndustryY)
+			log.Println("addIndustryM", addIndustryM)
+			//			addY := entity.JyVipSubStruct.GetSubVipPrice(area, industry, upgradeYear, 1)  //已购+新增,以年为单位的价格
+			//			addM := entity.JyVipSubStruct.GetSubVipPrice(area, industry, upgradeMonth, 2) //已购+新增,以月为单位的价格
+			//			addPrice := addM + addY                                                       //已购+新增总价格
+			//			log.Println("1", addPrice)
+			//			nowY := entity.JyVipSubStruct.GetSubVipPrice(areas, industrys, upgradeYear, 1)  //已购,以年为单位的价格
+			//			nowM := entity.JyVipSubStruct.GetSubVipPrice(areas, industrys, upgradeMonth, 2) //已购,以月为单位的价格
+			//			nowPrice := nowM + nowY                                                         //已购总价格
+			//			log.Println("2", nowPrice)
+			//			totalfee = addPrice - nowPrice //已购+新增的总价格 - 已购总价格 = 升级差价
+			totalfee = addAreaY + addAreaM + oldAreaY + oldAreaM + addIndustryY + addIndustryM
+			if date_unit == 1 { //升级中的延长时间
+				lengPrice := entity.JyVipSubStruct.GetSubVipPrice(allArea, allIndustry, date_count, 1) //单位为年的已购+新增延长时间价格
+				totalfee = totalfee + lengPrice                                                        //已购+新增延长时间价格 + 升级差价 = 最终价格
 			} else if date_unit == 2 {
-				lengPrice := entity.JyVipSubStruct.GetSubVipPrice(area, industry, date_count, 2) //单位为月的已购+新增延长时间价格
-				totalfee = totalfee + lengPrice                                                  //已购+新增延长时间价格 + 升级差价 = 最终价格
+				lengPrice := entity.JyVipSubStruct.GetSubVipPrice(allArea, allIndustry, date_count, 2) //单位为月的已购+新增延长时间价格
+				totalfee = totalfee + lengPrice                                                        //已购+新增延长时间价格 + 升级差价 = 最终价格
 			}
 		}
 		log.Println("price", totalfee)
@@ -224,6 +275,7 @@ func (this *RenewUpgrade) RenewUpgradeCreateOrder() {
 			}
 			prepayid = qutil.ObjToString((*ret)["prepayid"])
 			payStr = pay.WxStruct.GetAppWxPayStr(prepayid)
+			log.Println("tradeno", tradeno)
 		} else { //支付宝支付
 			var err error
 			payStr, tradeno, err = pay.Alipay.GetOrderPayParam((qutil.Float64All(totalfee)), "", pay.ALI_SUBVIP_APP)
@@ -321,7 +373,7 @@ func checkReqDates(dateStr string) (cyclecount, cycleunit int, err error) {
 }
 
 //获取最大升级月数
-func MaxUpgradeMonth(endTime int64, effect string) (int, int) {
+func MaxUpgradeMonth(endTime int64) (int, int) {
 	endYear := time.Unix(endTime, 0).Year()
 	endMonth := int(time.Unix(endTime, 0).Month())
 	endDay := time.Unix(endTime, 0).Day()
@@ -361,12 +413,6 @@ func MaxUpgradeMonth(endTime int64, effect string) (int, int) {
 		}
 	}
 
-	if effect != "now" {
-		nowUpgrade = nowUpgrade - 1
-	}
-	if nowUpgrade == 0 {
-		nowUpgrade = 1
-	}
 	//
 	var nowUpgradeYear = 0
 	if nowUpgrade >= 12 {

+ 7 - 3
src/web/templates/weixin/dataExport/dataExport_invoiceSuccess.html

@@ -31,18 +31,22 @@
             <a href="javascript:history.go(-1)" class="go_back"></a>
         </div>
         <script>
-        	var i=5;
+        	var i=3;
 			$(function(){
 			 	setTimeout(function(){
 			 	//如果再次进入此页面 不显示 缓存
 				 	window.location.href="javascript:history.go(-1)";
-				},5000);//5秒后返回首页
+				},3000);//3秒后返回首页
 				after();
 			});
 			//自动刷新页面上的时间
 			function after(){
 			 gobackHtml=""
-			 gobackHtml+='<a href="javascript:history.go(-1)" class="go_back">返回('+i+')</a>';
+			 if (i==0){
+			  gobackHtml+='<a href="javascript:history.go(-1)" class="go_back">返回</a>';
+			 }else{
+			  gobackHtml+='<a href="javascript:history.go(-1)" class="go_back">返回('+i+')</a>';
+			 }
 			 $(".go_back").empty().append(gobackHtml);
 			 if(i>0){
 			 	i=i-1;

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

@@ -1193,7 +1193,7 @@
                 
             })
             $('.reset_btn').click(function (){
-            	$('#showArea .jymobile-tab-triangle').removeClass('current').text(`地区`);
+            	$('#showArea .jymobile-tab-triangle').text(`地区`);
             	$('.area_wrap .province .city-count').hide().text('')
             	$('.c_item input[type="checkbox"]').prop('checked', false)
             })

+ 6 - 4
src/web/templates/weixin/vipsubscribe/choose_area_upgrade.html

@@ -539,7 +539,7 @@
               let arr =[];
               // 判断省份下的城市是否等于选中的城市长度,相等就是全部选中
               if (length == activeLeng) {
-                  $('.tips_btn .tips_d_text.citys').hide()
+                  $('.tips_btn .tips_d_text.citys').slideUp()
                   // 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({
@@ -590,10 +590,12 @@
               if( children.length >0){
                   // 判断每个省份下选中的城市长度,当大于等于4的时候 弹出"选择全省更划算的弹窗"
                   let childrenArr=[];
-                  if (children.length >= 4 && !this.vipSubisTrial) {
+                  if (children.length >= 3 && !this.vipSubisTrial) {
                       $('.tips_btn .tips_d_text.citys').text("已选择"+children.length+"个市,建议购买“全省”。");
-                      $('.tips_btn .tips_d_text.citys').show();
-                  } 
+                      $('.tips_btn .tips_d_text.citys').slideDown();
+                  }else{
+                  		$('.tips_btn .tips_d_text.citys').slideUp();
+                  }
                   html += `${result[i].name}(`
                   for(var j = 0;j < children.length;j++){
                       childrenArr.push(children[j].name)

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

@@ -3,8 +3,7 @@
 
 <head>
     <meta charset="UTF-8">
-    <meta name="viewport"
-        content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <title>关键词</title>
     <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>

+ 4 - 1
src/web/templates/weixin/vipsubscribe/messageType.html

@@ -11,6 +11,7 @@
 	<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/css/common.css?v={{Msg "seo" "version"}}">
     <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+	{{include "/common/weixin.html"}}
     <style type="text/css">
         body .industry .resetOne{
             position: fixed;
@@ -97,7 +98,9 @@
     <script src="{{Msg "seo" "cdn"}}/js/jquery-3.2.1.min.js?v=1412"></script>
     <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
     <script src="{{Msg "seo" "cdn"}}/js/common.js?v={{Msg "seo" "version"}}"></script>
-    <script>      
+	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}1"></script>
+    <script>
+		initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
 		var hasZBGG = ""
 		var hasZBJG = ""
 		var hasZBXYXX = ""

+ 29 - 19
src/web/templates/weixin/vipsubscribe/renew_notice.html

@@ -84,39 +84,44 @@
 						var buyerclass = r.buyerclass
 						var exprie = {{.T.exprie}};
 						var vipStatus = Number(r.vipStatus);
-						var areaArr = [];
-					    var areaHtml = "";
+						var areaHtml = "";
+					    var provinceArr = [];
+					    var cityArr = [];
 					    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);
+				//	    		console.log(citys);
 					    		if(citys.length===0){
-					    			areaArr.push(province);
+					    			provinceArr.push(province);
 					    		}else{
 					    			for(var i in citys){
-					    				areaArr.push(citys[i]);
+					    				var city = citys[i];
+					    				cityArr.push(city);
 					    			}
 					    		}
 					    	}
-					    	areaHtml = areaArr.toString().replace(/,/g, "、");
-					    	if(checkObj(area)){
+					    	var provinceLen = provinceArr.length;
+					 		var cityLen = cityArr.length;
+					    	areaHtml = provinceLen+"个省级区域、"+cityLen+"个市";
+					    	
+							if(checkObj(area)){
 								areaHtml = "全国";
 							}
-					    	$('.area-list').text(areaHtml);
+					    	$(".area-list").text(areaHtml);
 					    }
 					    if(buyerclass !== "" && buyerclass !== undefined){
 					    	for(var i in buyerclass){
 					    		var industry = buyerclass[i];
 					    		buyerclassArr.push(industry);
+					    		buyerclassHtml = buyerclassArr.length+"个行业";
 					    	}
-					    	buyerclassHtml = buyerclassArr.toString().replace(/,/g, "、");
 					    	if(checkObj(buyerclass)){
 					    		buyerclassHtml = "全行业";
 					    	}
-							$('.industry-list').text(buyerclassHtml);
+					    	$('.industry-list').text(buyerclassHtml);
 					    }
 					    if(starts !== "" && ends !== ""){
 					    	let start = starts.toString().replace(/-/g, ".");
@@ -153,8 +158,9 @@
 					    var exprie = {{.T.exprie}};
 					    var vipStatus = Number(data.vipStatus);
 					    //
-					    var areaArr = [];
 					    var areaHtml = "";
+					    var provinceArr = [];
+					    var cityArr = [];
 					    var buyerclassArr = [];
 					    var buyerclassHtml = "";
 				//	    var dateName = "";
@@ -162,31 +168,35 @@
 					    if (area !== "" && area !== undefined){
 					    	for(var province in area){
 					    		var citys = area[province]
-			//		    		console.log(citys);
+				//	    		console.log(citys);
 					    		if(citys.length===0){
-					    			areaArr.push(province);
+					    			provinceArr.push(province);
 					    		}else{
 					    			for(var i in citys){
-					    				areaArr.push(citys[i]);
+					    				var city = citys[i];
+					    				cityArr.push(city);
 					    			}
 					    		}
 					    	}
-					    	areaHtml = areaArr.toString().replace(/,/g, "、");
-					    	if(checkObj(area)){
+					    	var provinceLen = provinceArr.length;
+					 		var cityLen = cityArr.length;
+					    	areaHtml = provinceLen+"个省级区域、"+cityLen+"个市";
+					    	
+							if(checkObj(area)){
 								areaHtml = "全国";
 							}
-					    	$('.area-list').text(areaHtml);
+					    	$(".area-list").text(areaHtml);
 					    }
 					    if(buyerclass !== "" && buyerclass !== undefined){
 					    	for(var i in buyerclass){
 					    		var industry = buyerclass[i];
 					    		buyerclassArr.push(industry);
+					    		buyerclassHtml = buyerclassArr.length+"个行业";
 					    	}
-					    	buyerclassHtml = buyerclassArr.toString().replace(/,/g, "、");
 					    	if(checkObj(buyerclass)){
 					    		buyerclassHtml = "全行业";
 					    	}
-							$('.industry-list').text(buyerclassHtml);
+					    	$('.industry-list').text(buyerclassHtml);
 					    }
 				//	    if(cycleunit !== "" && cycleunit !== undefined){
 				//	    	if(cycleunit === 1){

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

@@ -618,7 +618,7 @@
 			    	}
 			    	var provinceLen = provinceArr.length;
 			 		var cityLen = cityArr.length;
-			    	areaHtml = provinceLen+"个省级区域/"+cityLen+"个市";
+			    	areaHtml = provinceLen+"个省级区域"+cityLen+"个市";
 			    	
 					if(checkObj(area)){
 						areaHtml = "全国";

+ 3 - 8
src/web/templates/weixin/vipsubscribe/vip_index.html

@@ -291,16 +291,11 @@
 				            }
 							//地区
 							var area = _vipData["o_area"];
-							var _area = getAreaClassArr_index(area)
-							if (_area.length>0){
-	                        	$("._area").text(_area.join("、"));
-							}else{
-	                        	$("._area").text("全国");
-							}
+	                        $("._area").text(area);
 							//行业
-							var buyerclass =  SortArr(_vipData["a_buyerclass"]);
+							var buyerclass =  _vipData["a_buyerclass"];
 							if (buyerclass.length>0){
-	                        	$("._buyerClass").text(buyerclass.join("、"));
+	                        	$("._buyerClass").text(buyerclass.length+"个行业");
 							}else{
 	                        	$("._buyerClass").text("全部行业");
 							}

+ 27 - 10
src/web/templates/weixin/vipsubscribe/vip_order_detail.html

@@ -132,19 +132,19 @@
                     </div>
                     <div class="card-content">
                         <div class="item-list">
-                            <label>订阅区域:</label>
+                            <label class="dyqy">订阅区域:</label>
                             <ul class="item-list-parents">
                                 <li class="areaNum"></li>
                             </ul>
                         </div>
                         <div class="item-list">
-                            <label>订阅行业:</label>
+                            <label class="dyhy">订阅行业:</label>
                             <ul class="item-list-parents">
                                 <li><span class="industryNum"></span></li>
                             </ul>
                         </div>
                         <div class="item-list">
-                            <label>订阅周期:</label>
+                            <label class="dyzq">订阅周期:</label>
                             <ul class="item-list-parents">
                                 <li><span class="cyclecount"></li>
                             </ul>
@@ -213,7 +213,6 @@ try{
     $(".orderCode").text(orderCode);
     $DoPost("/subscribepay/orderListDetails/getOrderPayAllMsg",{"orderCode":orderCode},function(r){
       if(r.success){
-      	
         //下单时间
         if(r.data.order.prepay_time) {
         	$(".prepayTime").text(r.data.order.prepay_time.replace("-",".").replace("-","."));
@@ -224,11 +223,7 @@ try{
         	$(".productType").text(r.data.order.product_type+"(试用)");
         }
         //1 续费 2升级
-        if(r.data.order.vip_type==1){
-        	$(".productType").text(r.data.order.product_type+"(续费)");
-        }else if(r.data.order.vip_type==2){
-        	$(".productType").text(r.data.order.product_type+"(升级)");
-        }
+
         //价格
         $(".price").text(r.data.order.original_price/100);
         
@@ -316,6 +311,27 @@ try{
 	           $(".cyclecount").text(filterObj.cyclecount+"天")
 	      }
        }
+       
+        if(r.data.order.vip_type==1){
+        	$(".productType").text(r.data.order.product_type+"(续费)");
+        	$(".dyqy").text("续费区域:");
+        	$(".dyhy").text("续费行业:");
+        	$(".dyzq").text("续费周期:");
+        }else if(r.data.order.vip_type==2){
+        	$(".productType").text(r.data.order.product_type+"(升级)");
+        	if(filterObj.cycleunit==1){
+		        $(".cyclecount").text(filterObj.cyclecount+"年")
+		    }else if(filterObj.cycleunit==2){
+		        $(".cyclecount").text(filterObj.cyclecount+"个月")
+		    }else if(filterObj.cycleunit==3){
+		        $(".cyclecount").text(filterObj.cyclecount+"天")
+		    }else if (filterObj.cycleunit==-1){
+		        $(".cyclecount").text("不延期");
+		    }
+        	$(".dyqy").text("升级区域:");
+        	$(".dyhy").text("升级行业:");
+        	$(".dyzq").text("延长周期:");
+        }
         
         if(r.data.order.order_status==0){       	
           //未支付
@@ -412,7 +428,8 @@ try{
 	    	//倒计时 未购买
 			var create_time=r.data.order.create_time;
 			create_time=create_time.replace(/-/g,'/')
-			var clock_end = +new Date(create_time) + 172800000;
+			//var clock_end = +new Date(create_time) + 172800000;
+			var clock_end = +new Date(create_time) + 3600000;
 			setTimeFunc(clock_end); 
 			setInterval(function(){
 				setTimeFunc(clock_end);

+ 4 - 4
src/web/templates/weixin/vipsubscribe/vip_purchase.html

@@ -382,13 +382,13 @@
                             } else {
                                 purchase.industrySelect = ["全部行业"]
                             }
-                            if (r.timeSelect!=undefined&&r.company!=undefined){
-                           		purchase.timeSelect=[r.timeSelect,r.company];
-                            }
+//                          if (r.timeSelect!=undefined&&r.company!=undefined){
+//                         		purchase.timeSelect=[r.timeSelect,r.company];
+//                          }
                             $(".weui-icon-checked").click();
                             sessionStorage.setItem("vipSubSelectArea", JSON.stringify(purchase.areaSelect));
                             sessionStorage.setItem("vipSubSelectIndustry", JSON.stringify(purchase.industrySelect));
-                            sessionStorage.setItem("vipSubSelectTime", JSON.stringify(purchase.timeSelect));
+                            //sessionStorage.setItem("vipSubSelectTime", JSON.stringify(purchase.timeSelect));
                           
                         }, false)
                     }

+ 309 - 107
src/web/templates/weixin/vipsubscribe/vip_upgrade.html

@@ -47,18 +47,18 @@
                 <li class="choose_item">
                     <a href="/front/vipsubscribe/toChooseAreaUpgrade">
                         <span class="label">区域</span>
-                        <input type="text" id="area" value="" disabled placeholder="选择全国、省份、地市" class="info">
+                        <input type="text" id="area" value="" disabled placeholder="选择升级区域" class="info">
                         <i class="iconfont icon-arrow"></i>
                     </a>
-                    <p class="add_tips area-list" style="display: none;">已新增 1 个省级区域、4 个地市</p>
+                    <!--<p class="add_tips area-list" style="display: none;">已新增 1 个省级区域、4 个地市</p>-->
                 </li>
                 <li class="choose_item">
                     <a href="/front/vipsubscribe/toChooseIndustryUpgrade">
                         <span class="label">行业</span>
-                        <input type="text" id="buyerclass" disabled value="" placeholder="选择采购单位行业" class="info">
+                        <input type="text" id="buyerclass" disabled value="" placeholder="选择升级行业" class="info">
                         <i class="iconfont icon-arrow"></i>
                     </a>
-                    <p class="add_tips industry-list" style="display: none;">已新增 2 个行业</p>
+                    <!--<p class="add_tips industry-list" style="display: none;">已新增 2 个行业</p>-->
                 </li>
                 <!-- <li class="choose_item select_cycle">
                     <a href="javascript:;">
@@ -349,12 +349,31 @@
 		         	"paySign": res["sign"]
   				},
   				function(r){
-				    if(r.err_msg == "get_brand_wcpay_request:ok"){
+				    if(true){
 				    	//
                     	clearSessionStorage();
+						/*
 						setTimeout(function(){
 							window.location.replace("/front/vipsubscribe/toPaySuccessPage?orderCode="+ordercode);
 						},500)
+						*/
+						 var interval
+				        //支付完成跳转
+				        function checkPaySuccess(orderCode){
+				        	if(interval){
+				            	clearInterval(interval);
+			        		}
+				        	interval=setInterval(function() {
+				            	$.post("/jypay/isPaySuccess", {
+											code: orderCode
+										}, function(r) {
+											if (r.success) {
+												window.location.replace("/front/vipsubscribe/toPaySuccessPage?orderCode="+ordercode);
+												clearInterval(interval);
+											}
+										})
+				         	},3000)
+				        }
 					}
 //					}else if(r.err_msg == "get_brand_wcpay_request:cancel"){               
 ////	                	alert("开发环境【支付跳转完成】")
@@ -785,13 +804,17 @@
 			}
 			var provinceLen = provinceArr.length;
 			var cityLen = cityArr.length;
+			var areaHtml = "";
 			if(isAll === ""){
-				$(".area-list").text("已新增 "+ provinceLen +" 个省级区域、"+ cityLen +" 个地市");
+				areaHtml = "已新增 "+ provinceLen +" 个省级区域、"+ cityLen +" 个地市";
+				$("#area").attr("placeholder", areaHtml);
 			}else{
-				$(".area-list").text("已新增为 : 全国");
+				areaHtml = "已新增全国";
+				$("#area").attr("placeholder", areaHtml);
 			}
 			if(provinceLen === 0 && cityLen === 0){
-				$(".area-list").hide();
+				areaHtml = "选择升级区域";
+				$("#area").attr("placeholder", areaHtml);
 			}
 	    }
 	    //新增行业
@@ -799,7 +822,8 @@
 	    	var vipSubSelectIndustry = JSON.parse(sessionStorage.vipSubSelectIndustryUpgrade);
 	    	var industryArr = [];
 	    	var isAll = "";
-	    	$(".industry-list").show();
+	    	var industryHtml = "";
+//	    	$(".industry-list").show();
 	    	for(var i in vipSubSelectIndustry){
 	    		var industry = vipSubSelectIndustry[i];
 	    		industryArr.push(industry);
@@ -809,12 +833,15 @@
 	    	}
 	    	var industryLen = industryArr.length
 	    	if(isAll === ""){
-				$(".industry-list").text("已新增 "+ industryLen +" 个行业");
+	    		industryHtml = "已新增 "+ industryLen +" 个行业";
+				$("#buyerclass").attr("placeholder", industryHtml);
 			}else{
-				$(".industry-list").text("已新增为 : 全部行业");
+				industryHtml = "已新增全行业";
+				$("#buyerclass").attr("placeholder", industryHtml);
 			}
 			if(industryLen === 0){
-				$(".industry-list").hide();
+				industryHtml = "选择升级行业";
+				$("#buyerclass").attr("placeholder", industryHtml);
 			}
 	    }
 	    //生效时间
@@ -905,50 +932,50 @@
 			    ends = data.endtime;
 //			    isvalidOk = data.isvalidOk;
 			    //
-			    var provinceArr = [];
-			    var cityArr = [];
-			    var areaHtml = "";
-			    var buyerclassArr = [];
-			    var buyerclassHtml = "";
+//			    var provinceArr = [];
+//			    var cityArr = [];
+//			    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){
-			    			provinceArr.push(province);
-			    		}else{
-			    			for(var i in citys){
-			    				cityArr.push(citys[i]);
-			    			}
-			    		}
-			    	}
-			    	var provinceLen = provinceArr.length;
-			 		var cityLen = cityArr.length;
-			    	areaHtml = "已购买"+provinceLen+"个省级区域/"+cityLen+"个市";
-		//	    	$(".item_area .label_for").text(areaHtml);
-					if(checkObj(area)){
-						areaHtml = "已购买全国";
-					}
-			    	$('#area').attr("placeholder",areaHtml);
-			    }
-			    if(buyerclass !== "" && buyerclass !== undefined){
-			    	for(var i in buyerclass){
-			    		var industry = buyerclass[i];
-			    		buyerclassArr.push(industry);
-			    		buyerclassHtml = "已购买"+buyerclassArr.length+"个行业";
-			    	}
-		//	    	$(".item_industry .label_for").text(buyerclassHtml);
-					if(checkObj(buyerclass)){
-						buyerclassHtml = "已购买全行业";
-					}
-					$('#buyerclass').attr("placeholder",buyerclassHtml);
-			    }
-			    //
-			    var nowDate = data.now.replace(/-/g, ".");
-			    var a = nowDate+ " - " +endTime;
-			    $(".nownow").text(nowDate+ " - " +endTime.replace(/-/g, "."))
+//			    if (area !== "" && area !== undefined){
+//			    	for(var province in area){
+//			    		var citys = area[province]
+//		//	    		console.log(citys);
+//			    		if(citys.length===0){
+//			    			provinceArr.push(province);
+//			    		}else{
+//			    			for(var i in citys){
+//			    				cityArr.push(citys[i]);
+//			    			}
+//			    		}
+//			    	}
+//			    	var provinceLen = provinceArr.length;
+//			 		var cityLen = cityArr.length;
+//			    	areaHtml = "已购买"+provinceLen+"个省级区域/"+cityLen+"个市";
+//		//	    	$(".item_area .label_for").text(areaHtml);
+//					if(checkObj(area)){
+//						areaHtml = "已购买全国";
+//					}
+//			    	$('#area').attr("placeholder",areaHtml);
+//			    }
+//			    if(buyerclass !== "" && buyerclass !== undefined){
+//			    	for(var i in buyerclass){
+//			    		var industry = buyerclass[i];
+//			    		buyerclassArr.push(industry);
+//			    		buyerclassHtml = "已购买"+buyerclassArr.length+"个行业";
+//			    	}
+//		//	    	$(".item_industry .label_for").text(buyerclassHtml);
+//					if(checkObj(buyerclass)){
+//						buyerclassHtml = "已购买全行业";
+//					}
+//					$('#buyerclass').attr("placeholder",buyerclassHtml);
+//			    }
+//			    //
+//			    var nowDate = data.now.replace(/-/g, ".");
+//			    var a = nowDate+ " - " +endTime;
+//			    $(".nownow").text(nowDate+ " - " +endTime.replace(/-/g, "."))
 			    //
 //			    if(!isvalidOk){
 //			    	var effectiveName = new Date().getMonth()+2;
@@ -967,14 +994,16 @@
         var oldMonthPrice = 0;
         var areasArr = {};
 	    var industrysArr = [];
+	    var allArea = {};
+	    var allIndustry = [];
 	    var nowRenew = "";
         function FinallyPrice(){
         	$(".save_upgrade").attr('disabled','disabled');
 	    	var nowUpgrade = "";
 			//
-			var nowMonth = new Date(startTime).getMonth()+1;
-			var nowYear = new Date(startTime).getFullYear();
-			var nowDay = new Date(startTime).getDate();
+			var nowMonth = new Date().getMonth()+1;
+			var nowYear = new Date().getFullYear();
+			var nowDay = new Date().getDate();
 			//
 			var endMonth = new Date(endTime).getMonth()+1;
 			var endYear = new Date(endTime).getFullYear();
@@ -983,6 +1012,7 @@
 			var price = "";
 //			var effect = "";
 			var buyCheck = true;
+			var cPrice = 0;
 			if(sessionStorage.buyCheck!==undefined&&sessionStorage.buyCheck!==""){
 				let bcheck = sessionStorage.buyCheck;
 				if(bcheck === "true"){
@@ -993,26 +1023,42 @@
 			}
 			if(sessionStorage.vipSubSelectAreaUpgrade!==""&&sessionStorage.vipSubSelectAreaUpgrade!==undefined){
 				var vipArea = JSON.parse(sessionStorage.vipSubSelectAreaUpgrade);
+				for(let province in vipArea){
+		    		let citys = vipArea[province];
+		    		if(citys.length===0){
+						areasArr[province] = [];
+		    		}else{
+		    			areasArr[province] = citys;
+		    		}
+		    	}
+				for(let province in vipArea){
+		    		if(province === "全国"){
+						areasArr = {"全国":[]};
+					}
+		    	}
+				if(buyCheck){
+					$(".save_upgrade").removeAttr("disabled");
+				}
 				if(area !== ""&&area !== undefined){
 					for(let province in area){
 			    		let citys = area[province];
 			    		if(citys.length===0){
-							areasArr[province] = [];
+							allArea[province] = [];
 			    		}else{
-			    			areasArr[province] = citys;
+			    			allArea[province] = citys;
 			    		}
 			    	}
 					for(let province in vipArea){
 						let citys = vipArea[province];
-						if(areasArr[province] === undefined){
-							areasArr[province] = citys
+						if(allArea[province] === undefined){
+							allArea[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(let i in allArea[province]){
+								cityArr.push(allArea[province][i]);
 							}
 							//
 							for (var x = 0; x < cityArr.length; x++) {
@@ -1024,42 +1070,105 @@
 					            }
 					       	}
 							//
-							areasArr[province] = cityArr;
+							allArea[province] = cityArr;
 						}
 						if(province === "全国"){
-							areasArr = {"全国":[]};
+							allArea = {"全国":[]};
 						}
 					}
 				}
-				console.log($(".save_upgrade").attr("disabled"))
-				if(buyCheck){
-					$(".save_upgrade").removeAttr("disabled");
-				}
 			}else{
+				areasArr = null;
 				if(area !== ""&&area !== undefined){
 					for(let province in area){
 			    		let citys = area[province];
 			    		if(citys.length===0){
-							areasArr[province] = [];
+							allArea[province] = [];
 			    		}else{
-			    			areasArr[province] = citys;
+			    			allArea[province] = citys;
 			    		}
 			    	}
 				}
 			}
+//			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);
+				for(let i in vipIndustry){
+		    		let industry = vipIndustry[i];
+		    		industrysArr.push(industry);
+		        }
+				for(let i in vipIndustry){
+					if(industry === "全部行业"){
+						industrysArr = ["全部行业"];
+					}
+				}
 				if(buyerclass!==""&&buyerclass!==undefined){
 					for(let i in buyerclass){
 			    		let industry = buyerclass[i];
-			    		industrysArr.push(industry);
+			    		allIndustry.push(industry);
 			        }
 					for(let i in vipIndustry){
 						let industry = vipIndustry[i];
-						industrysArr.push(industry);
+						allIndustry.push(industry);
 						if(industry === "全部行业"){
-							industrysArr = ["全部行业"];
+							allIndustry = ["全部行业"];
 						}
 					}
 				}
@@ -1067,18 +1176,55 @@
 					$(".save_upgrade").removeAttr("disabled");
 				}
 			}else{
+				industrysArr = null;
 				if(buyerclass!==""&&buyerclass!==undefined){
 					for(let i in buyerclass){
 			    		let industry = buyerclass[i];
-			    		industrysArr.push(industry);
+			    		allIndustry.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);
+//			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);
+//			    	}
+//			    }
+//			}
+			if(industrysArr !== null){
+				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++;
+		            }
+		       	}
+			}
+			for (var x = 0; x < allIndustry.length; x++) {
+	            for (var j =x+1; j <allIndustry.length; ) {
+	                if (allIndustry[x] === allIndustry[j]){
+	                    allIndustry.splice(j, 1);
 	                }
 	                else j++;
 	            }
@@ -1130,12 +1276,12 @@
 			nowRenew = nowUpgrade;
 			console.log("monthold",nowUpgrade)
 			//
-			if(effect === "notnow"){
-				nowUpgrade = nowUpgrade -1;
-			}
-			if(nowUpgrade == 0){
-				nowUpgrade = 1;
-			}
+//			if(effect === "notnow"){
+//				nowUpgrade = nowUpgrade -1;
+//			}
+//			if(nowUpgrade == 0){
+//				nowUpgrade = 1;
+//			}
 			
 			//
 			var nowUpgradeYear = 0;
@@ -1174,9 +1320,30 @@
 			
 			//
 			if(nowUpgradeYear >= 1){
-				let yearprice = getsubVipOrderPrice(areasArr,industrysArr,[nowUpgradeYear,1]);
-				let monthprice = getsubVipOrderPrice(areasArr,industrysArr,[nowUpgrade,2]);
-				price = yearprice + monthprice;
+				let addAreaPriceY = 0;
+				let addAreaPriceM = 0;
+				let oldAreaPriceY = 0;
+				let oldAreaPriceM = 0;
+				let addIndustryPriceY = 0;
+				let addIndustryPriceM = 0;
+				if(areasArr !== null&&industrysArr !== null){
+					addAreaPriceY = getsubVipOrderPrice(areasArr,industrysArr,[nowUpgradeYear,1]);
+					addAreaPriceM = getsubVipOrderPrice(areasArr,industrysArr,[nowUpgrade,2]);
+				}
+				if(areasArr !== null){
+					oldAreaPriceY = getsubVipOrderPrice(areasArr,buyerclass,[nowUpgradeYear,1]);
+					oldAreaPriceM = getsubVipOrderPrice(areasArr,buyerclass,[nowUpgrade,2]);
+				}
+				if(industrysArr !== null){
+					addIndustryPriceY = getsubVipOrderPrice(area,industrysArr,[nowUpgradeYear,1]);
+					addIndustryPriceM = getsubVipOrderPrice(area,industrysArr,[nowUpgrade,2]);
+				}
+				let yearprice = getsubVipOrderPrice(allArea,allIndustry,[nowUpgradeYear,1]);
+				let monthprice = getsubVipOrderPrice(allArea,allIndustry,[nowUpgrade,2]);
+//				price = yearprice + monthprice;
+				price = addAreaPriceY + addAreaPriceM + oldAreaPriceY + oldAreaPriceM + addIndustryPriceY + addIndustryPriceM;
+//				let yearprice = addAreaPriceY + oldAreaPriceY + addIndustryPriceY;
+//				let monthprice = addAreaPriceM + oldAreaPriceM + addIndustryPriceM;
 				if(monthprice === 0){
 					completeMonth = ((yearprice / nowUpgradeYear) / 10).toFixed(1);
 					completeYear = (yearprice / nowUpgradeYear).toFixed(1);
@@ -1188,16 +1355,30 @@
 				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);
+				let addAreaPriceM = 0;
+				let oldAreaPriceM = 0;
+				let addIndustryPriceM = 0;
+				if(areasArr !== null&&industrysArr !== null){
+					addAreaPriceM = getsubVipOrderPrice(areasArr,industrysArr,[nowUpgrade,2]);
+				}
+				if(areasArr !== null){
+					oldAreaPriceM = getsubVipOrderPrice(areasArr,buyerclass,[nowUpgrade,2]);
+				}
+				if(industrysArr !== null){
+					addIndustryPriceM = getsubVipOrderPrice(area,industrysArr,[nowUpgrade,2]);
+				}
+				let monthprice = getsubVipOrderPrice(allArea,allIndustry,[nowUpgrade,2]);
+//				price = getsubVipOrderPrice(areasArr,industrysArr,[nowUpgrade,2]);
+				price = addAreaPriceM + oldAreaPriceM + addIndustryPriceM;
+				completeMonth = (monthprice / nowUpgrade).toFixed(1);
+				completeYear = ((monthprice / nowUpgrade)*10).toFixed(1);
 				console.log("<1",price)
 			}
 			
 			console.log("oldPrice", oldPrice);
 			if(sessionStorage.vipSubSelectAreaUpgrade===undefined&&sessionStorage.vipSubSelectIndustryUpgrade===undefined){
-				completeMonth = oldMonthPrice
-				completeYear = oldYearPrice
+				completeMonth = oldMonthPrice;
+				completeYear = oldYearPrice;
 			}
 			console.log("completeMonth",completeMonth)
 			console.log("completeYear",completeYear)
@@ -1212,10 +1393,10 @@
 					sessionStorage.proPrice = price;
 				}
 			}
-			var cPrice = 0;
-  			if(price>0){
-  				var cPrice = (price - oldPrice).toFixed(1);
-  			}
+			
+			if(price>0){
+				var cPrice = (price).toFixed(1);
+			}
 			console.log(cPrice);
 			if(sessionStorage.proPrice!==""&&sessionStorage.proPrice!==undefined){
 				let proPrice = sessionStorage.proPrice;
@@ -1264,16 +1445,35 @@
         	//
         	let areas = areasArr;
         	let industrys = industrysArr;
-        	if(areas["全国"]){
-                areas={};
-            }
-            if(industrys.length==1&&industrys[0]=="全部行业"){
-                industrys=[];
-            }
+        	let industryArr = "";
+        	let areaArr = "";
+        	if(areas !== null){
+        		if(areas["全国"]){
+	                areas={};
+	            }
+        		areaArr = JSON.stringify(areas);
+        	}else{
+        		areaArr = "no";
+        	}
+        	if(industrys !== null){
+        		if(industrys.length==1&&industrys[0]=="全部行业"){
+	                industrys=[];
+	            }
+        		industryArr = industrys.join(",");
+        	}else{
+        		industryArr = "no";
+        	}
             //
             let areaarr = area;
         	let industryarr = buyerclass;
-        	
+        	let allAreaArr = allArea;
+        	let allIndustryArr = allIndustry;
+        	if(allAreaArr["全国"]){
+                allAreaArr={};
+            }
+        	if(allIndustryArr.length==1&&allIndustryArr[0]=="全部行业"){
+                allIndustryArr=[];
+            }
             //
             let renew_time = $('.choose_item.lengthen .info').text();
             let times = "";
@@ -1282,15 +1482,17 @@
             }
             //
 	    	var param = {
-	    		"area": JSON.stringify(areas),
-	    		"industry": industrys.join(","),
+	    		"area": areaArr,
+	    		"industry": industryArr,
 	    		"areas": JSON.stringify(areaarr),
 	    		"industryarr": industryarr.join(","),
+	    		"allArea": JSON.stringify(allAreaArr),
+	    		"allIndustry": allIndustryArr.join(","),
 	    		"payWay": "wx_js",
 //	    		"effect": effect,
 	    		"pay_source" : "Upgrade",
 	    		"time": times,
-	    		"nowUp": Number(nowRenew),
+//	    		"nowUp": Number(nowRenew),
 //	    		"isvalidOk" : isvalidOk,
 	    	}
 	    	console.log(param)

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

@@ -11,7 +11,6 @@
 	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
 	<script src="{{Msg "seo" "cdn"}}/js/dropload.js?v={{Msg "seo" "version"}}"></script>
 	<script src="{{Msg "seo" "cdn"}}/js/fastclick.js?v={{Msg "seo" "version"}}"></script>
-	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}1"></script>
     <script>
 		initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
 		var zbadd = {{Msg "seo" "ZBADDRESS"}};

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor