wangkaiyue 5 lat temu
rodzic
commit
56c472333d
38 zmienionych plików z 552 dodań i 267 usunięć
  1. 0 1
      src/jfw/modules/app/src/app/front/myorder.go
  2. 2 10
      src/jfw/modules/app/src/app/front/vipsubscribe.go
  3. 28 15
      src/jfw/modules/app/src/web/templates/me/setemail/bind_email.html
  4. 25 20
      src/jfw/modules/app/src/web/templates/me/setemail/bind_success.html
  5. 83 17
      src/jfw/modules/app/src/web/templates/me/setemail/unbind_email.html
  6. 2 2
      src/jfw/modules/pushsubscribe/src/match/config/config.go
  7. 63 30
      src/jfw/modules/pushsubscribe/src/match/job/matchjob.go
  8. BIN
      src/jfw/modules/pushsubscribe/src/match/match
  9. 4 0
      src/jfw/modules/pushsubscribe/src/public/util.go
  10. 1 1
      src/jfw/modules/pushsubscribe/src/push/config.json
  11. 4 0
      src/jfw/modules/pushsubscribe/src/push/job/movejob.go
  12. 2 2
      src/jfw/modules/pushsubscribe/src/push/job/projectpush.go
  13. 3 6
      src/jfw/modules/pushsubscribe/src/push/job/pushjob.go
  14. 8 4
      src/jfw/modules/pushsubscribe/src/push/pusher/normalpush.go
  15. 1 1
      src/jfw/modules/pushsubscribe/src/push/pusher/specialpush.go
  16. 13 20
      src/jfw/modules/pushsubscribe/src/push/util/entity.go
  17. 12 10
      src/jfw/modules/pushsubscribe/src/push/util/util.go
  18. 10 9
      src/jfw/modules/subscribepay/src/entity/dataexport.go
  19. 1 0
      src/jfw/modules/subscribepay/src/service/afterPay.go
  20. 1 1
      src/jfw/modules/subscribepay/src/service/orderListDetails.go
  21. 10 2
      src/jfw/modules/subscribepay/src/service/vipRenewUpgrade.go
  22. 4 4
      src/jfw/modules/subscribepay/src/util/vrew.go
  23. 1 1
      src/jfw/public/historypush.go
  24. 4 1
      src/web/staticres/vipsubscribe/css/addition_exclusive_word.css
  25. 1 1
      src/web/staticres/vipsubscribe/css/keyWord.css
  26. 26 16
      src/web/staticres/vipsubscribe/js/additionWord.js
  27. 19 12
      src/web/staticres/vipsubscribe/js/exclusiveWord.js
  28. 22 13
      src/web/staticres/vipsubscribe/js/keyWord.js
  29. 10 10
      src/web/templates/weixin/email/bind_email.html
  30. 1 1
      src/web/templates/weixin/email/bind_success.html
  31. 29 9
      src/web/templates/weixin/vipsubscribe/additionWord.html
  32. 30 9
      src/web/templates/weixin/vipsubscribe/exclusiveWord.html
  33. 72 32
      src/web/templates/weixin/vipsubscribe/keyWord.html
  34. 6 0
      src/web/templates/weixin/vipsubscribe/renew_pay.html
  35. 2 2
      src/web/templates/weixin/vipsubscribe/vip_index.html
  36. 20 1
      src/web/templates/weixin/vipsubscribe/vip_order_detail.html
  37. 22 1
      src/web/templates/weixin/vipsubscribe/vip_purchase.html
  38. 10 3
      src/web/templates/weixin/vipsubscribe/vip_upgrade.html

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

@@ -367,7 +367,6 @@ func (m *MyOrder) ToOrderDetail() error {
 
 func (m *MyOrder) MyEmail() {
 	m.T["userId"] = util.ObjToString(m.GetSession("userId"))
-
 	name := m.GetString("name") //
 	//检测用户是否绑定邮箱
 	if util.ObjToString(m.GetSession("userId")) != "" {

+ 2 - 10
src/jfw/modules/app/src/app/front/vipsubscribe.go

@@ -34,13 +34,13 @@ type Subscribepay struct {
 	submitEditSubFinish xweb.Mapper `xweb:"/jyapp/vipsubscribe/submitEditSubFinish"` //订阅收费修改成功
 
 	//升级
-	toUpgradePage xweb.Mapper `xweb:"/weixin/pay/toUpgradePage"`                   //订阅收费升级服务页面
+	toUpgradePage xweb.Mapper `xweb:"/jyapp/vipsubscribe/toUpgradePage"`           //订阅收费升级服务页面
 	addArea       xweb.Mapper `xweb:"/jyapp/vipsubscribe/toChooseAreaUpgrade"`     //订阅收费升级新增区域页面
 	addIndustry   xweb.Mapper `xweb:"/jyapp/vipsubscribe/toChooseIndustryUpgrade"` //订阅收费升级新增行业页面
 
 	//续费
 	renewPage    xweb.Mapper `xweb:"/jyapp/vipsubscribe/renewPage/(.*)"` //订阅到期(will:即将到期,exprie:已到期)
-	renewPayPage xweb.Mapper `xweb:"/weixin/pay/renewPayPage"`           //订阅到期续费
+	renewPayPage xweb.Mapper `xweb:"/jyapp/vipsubscribe/renewPayPage"`   //订阅到期续费
 
 	//发票
 	openInvoice xweb.Mapper `xweb:"/jyapp/vipsubscribe/openInvoice/(\\w+)"` //开发票
@@ -145,12 +145,6 @@ func (s *Subscribepay) ToOrderDetailPage() {
 
 //订阅收费设置关键词
 func (s *Subscribepay) ToSetKeyWordPage() {
-	myopenid := util.ObjToString(s.GetSession("s_m_openid"))
-	mynickname, _ := s.Session().Get("s_nickname").(string)
-	myavatar, _ := s.Session().Get("s_avatar").(string)
-	s.T["nickname"] = mynickname
-	s.T["avatar"] = myavatar
-	s.T["openid"] = se.EncodeString(myopenid)
 	s.Render("/vipsubscribe/keyWord.html")
 }
 
@@ -210,14 +204,12 @@ func (s *Subscribepay) RenewPage(sign string) {
 	s.T["orderId"] = orderId
 	s.T["startTime"] = startTimes
 	s.T["endTime"] = endTimes
-	s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
 	s.T["exprie"] = sign //是否已到期
 	s.Render("/vipsubscribe/renew_notice.html", &s.T)
 }
 
 //服务续费(will:即将到期,exprie:已到期)
 func (s *Subscribepay) RenewPayPage() {
-	s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url()) //微信支付准备参数
 	s.Render("/vipsubscribe/renew_pay.html")
 }
 

+ 28 - 15
src/jfw/modules/app/src/web/templates/me/setemail/bind_email.html

@@ -11,7 +11,9 @@
 		<meta name="Keywords" content="绑定邮箱"/>
 		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/myemail/css/reset.css?v={{Msg "seo" "version"}}"/>
 		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/myemail/css/common.css?v={{Msg "seo" "version"}}"/>
-		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/myemail/css/mine.css?v={{Msg "seo" "version"}}"/>        
+		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/myemail/css/mine.css?v={{Msg "seo" "version"}}"/>     
+		<link rel="stylesheet" type="text/css" href="/jyapp/css/layout.css?v={{Msg "seo" "version"}}" />
+		<link rel="stylesheet" type="text/css" href="/jyapp/css/font.css?v={{Msg "seo" "version"}}" />   
 		<link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/jyapp/dataExport/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
 
 	</head>
@@ -28,21 +30,32 @@
 			    display: none;
 			}
 		</style>
-		<div class="bind_email">
-			<div class="input mgT26">
-				<input type="email" placeholder="输入邮箱" name="" id="" value="" class="email_input" />
-				<input type="text" placeholder="输入验证码" name="" id="" value="" class="code_input" />
-				<button class="sendcode" >获取验证码</button>
-				<button class="code_true"><i class="icon iconfont email_check_ok" style="display: inline;"></i></button>
-				<!--<i class="icon iconfont email_check_ok" style="display: inline;color:#2cb7ca"></i>-->
-			</div>
-			<button type="button" disabled="disabled" class="common_btn btn" id="bindBtn">绑定</button>
-			<div class="toast" style="display: none;">
-				<div class="toast_content"></div>
+		<div class="app-layout-header">
+			<span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+			{{if .T.text_email}}
+			修改邮箱
+			{{else}}
+			我的邮箱
+			{{end}}
+		</div>
+		<div class="app-layout-content-b">
+			<div class="bind_email">
+				<div class="input mgT26">
+					<input type="email" placeholder="输入邮箱" name="" id="" value="" class="email_input" />
+					<input type="text" placeholder="输入验证码" name="" id="" value="" class="code_input" />
+					<button class="sendcode" >获取验证码</button>
+					<button class="code_true"><i class="icon iconfont email_check_ok" style="display: inline;"></i></button>
+					<!--<i class="icon iconfont email_check_ok" style="display: inline;color:#2cb7ca"></i>-->
+				</div>
+				<button type="button" disabled="disabled" class="common_btn btn" id="bindBtn">绑定</button>
+				<div class="toast" style="display: none;">
+					<div class="toast_content"></div>
+				</div>
 			</div>
 		</div>
 		<script src="{{Msg "seo" "cdn"}}/jyapp/myemail/js//zepto.js?v={{Msg "seo" "version"}}"></script>
 		<script src="{{Msg "seo" "cdn"}}/jyapp/myemail/js/public.js?v={{Msg "seo" "version"}}1"></script>
+		<script src="{{Msg "seo" "cdn"}}/jyapp/js/common.js?v={{Msg "seo" "version"}}"></script>
 		<script>
 			$(function(){
 				var emailVal,code;
@@ -140,13 +153,13 @@
 								if(data.success){
 									if ($("#bindBtn").text()=="确定"){	//更改绑定
 										sessionStorage.removeItem("send_myemail_"+{{.T.userId}});
-										window.location.replace("/front/wxMyOrder/setSuccess?name=changeEmail"); 
+										window.location.replace("/jyapp/front/myorder/setSuccess?name=changeEmail"); 
 									}else{
 										sessionStorage.removeItem("send_myemail_"+{{.T.userId}});
 										if((param="invoice")&&(orderCode!=null)){
-											window.location.replace("/front/wxMyOrder/setSuccess?name=invoice&orderCode="+orderCode); 
+											window.location.replace("/jyapp/front/myorder/setSuccess?name=invoice&orderCode="+orderCode); 
 										}else{
-											window.location.replace("/front/wxMyOrder/setSuccess?name=bindEmail"); 
+											window.location.replace("/jyapp/front/myorder/setSuccess?name=bindEmail"); 
 										}
 									}
 								}

+ 25 - 20
src/jfw/modules/app/src/web/templates/me/setemail/bind_success.html

@@ -4,38 +4,43 @@
 		<meta charset="utf-8">
 		<title>绑定成功</title>
 		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
-		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wxmyemail/css/reset.css?v={{Msg "seo" "version"}}">
-		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wxmyemail/css/common.css?v={{Msg "seo" "version"}}">
-		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wxmyemail/css/mine.css?v={{Msg "seo" "version"}}"/>   
-		{{include "/common/weixin.html"}}
-		<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>    
+		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/myemail/css/reset.css?v={{Msg "seo" "version"}}">
+		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/myemail/css/common.css?v={{Msg "seo" "version"}}">
+		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/myemail/css/mine.css?v={{Msg "seo" "version"}}"/>   
+		<link rel="stylesheet" type="text/css" href="/jyapp/css/layout.css?v={{Msg "seo" "version"}}" />
+		<link rel="stylesheet" type="text/css" href="/jyapp/css/font.css?v={{Msg "seo" "version"}}" />   
+		<link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/jyapp/dataExport/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
 	</head>
 	<body>
-		<div class="bind_success">
-			<div class="success">
-				<img src="{{Msg "seo" "cdn"}}/wxmyemail/img/successed.png" >
-				<p></p>
+		<div class="app-layout-header">
+			<span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+			我的邮箱
+		</div>
+		<div class="app-layout-content-b">
+			<div class="bind_success">
+				<div class="success">
+					<img src="{{Msg "seo" "cdn"}}/wxmyemail/img/successed.png" >
+					<p></p>
+				</div>
+				<button class="common_btn back">返回 <time class="time">()</time> </button>
 			</div>
-			<button class="common_btn back">返回 <time class="time">()</time> </button>
 		</div>
-		<script src="{{Msg "seo" "cdn"}}/wxmyemail/js/zepto.js"></script>
-		<script src="{{Msg "seo" "cdn"}}/wxmyemail/js/public.js"></script>
+		<script src="{{Msg "seo" "cdn"}}/jyapp/myemail/js/zepto.js"></script>
+		<script src="{{Msg "seo" "cdn"}}/jyapp/myemail/js/public.js"></script>
+		<script src="{{Msg "seo" "cdn"}}/jyapp/js/common.js?v={{Msg "seo" "version"}}"></script>
 		<script>
 			$(function(){
-				//分享
-				initShare({{.T.signature}},{{.T.openid}},2,"jy_wxmyorder",{{.T.nickname}},{{.T.avatar}});
-				
 				let param = getParam('name');//获取url传来的参数 判断显示成功的字幕
 				var orderCode=getParam("orderCode"); //开发票的订单
-				console.log(param)
-				var time = 6;
+				var time = 3;
 				function countDown(){
 					if(time == 0){
 						$('.time').html('');
-						if((param="invoice")&&(orderCode!="")){
+						if((param=="invoice")&&(orderCode!=null)){
+							//TODO
 							window.location.replace('/weixin/pay/toOrderDetailPage?orderCode='+orderCode);
 						}else{
-							window.location.replace('/front/wxMyOrder/myEmail');
+							window.location.replace('/jyapp/front/myorder/myEmail');
 						}
 					}else{
 						$('.time').html('(' + time + ')');
@@ -66,7 +71,7 @@
 				}
 				/* 返回 */
 				$('.back').on('click',() =>{
-					if((param="invoice")&&(orderCode!=null)){
+					if((param=="invoice")&&(orderCode!=null)){
 							window.location.replace('/weixin/pay/toOrderDetailPage?orderCode='+orderCode);
 						}else{
 							window.location.replace('/jyapp/front/myorder/myEmail');

+ 83 - 17
src/jfw/modules/app/src/web/templates/me/setemail/unbind_email.html

@@ -2,30 +2,96 @@
 <html>
 	<head>
 		<meta charset="utf-8">
-		<title>我的邮箱</title>
		<meta name="keywords" content="更换邮箱 解绑邮箱"/>
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wxmyemail/css/reset.css?v={{Msg "seo" "version"}}">
-		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wxmyemail/css/common.css?v={{Msg "seo" "version"}}">
-		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wxmyemail/css/mine.css?v={{Msg "seo" "version"}}"/> 
-		{{include "/common/weixin.html"}}
-		<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>   
+		<title>我的邮箱</title>
+		<meta name="keywords" content="更换邮箱 解绑邮箱"/>
+		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/myemail/css/reset.css?v={{Msg "seo" "version"}}">
+		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/myemail/css/common.css?v={{Msg "seo" "version"}}">
+		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/jyapp/myemail/css/mine.css?v={{Msg "seo" "version"}}"/> 
+		
+		<link rel="stylesheet" type="text/css" href="/jyapp/css/layout.css?v={{Msg "seo" "version"}}" />
+		<link rel="stylesheet" type="text/css" href="/jyapp/css/font.css?v={{Msg "seo" "version"}}" />   
+		<link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/jyapp/dataExport/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
 	</head>
 	<body>
-		<div class="unbind_email">
			<div class="input_box mgT26">
				<label>邮箱</label>
				<input type="email" name="email" id="" value="{{.T.text_email}}" readonly="readonly"/>
			</div>
			<button type="button" class="common_btn choose_email">更换邮箱</button>
			<p class="text-algin">
				<a href="javascript:;" class="unbind">解绑</a>
			</p>
			
			<!-- 更换邮箱弹框 -->
			<div class="dialog_confirm" id="choose_email_dialog" style="display: none;">
				<div class="mask"></div>
				<div class="dialog">
					<div class="dialog_hd"><strong>确定更换邮箱</strong></div>
					<div class="dialog_bd">{{.T.text_email}}</div>
					<div class="dialog_ft">
						<a href="javascript:;" class="btn_dialog default" id="cancel_choose">取消</a>
						<a href="javascript:;" class="btn_dialog primary" id="sure_choose">确定</a>
					</div>
				</div>
			</div>
			<!-- 解绑邮箱弹框 -->
			<div class="dialog_confirm" id="unbind_email_dialog" style="display: none;">
				<div class="mask"></div>
				<div class="dialog">
					<div class="dialog_hd"><strong>确定解绑邮箱</strong></div>
					<div class="dialog_bd" style="color: #888;">{{.T.text_email}}</div>
					<div class="dialog_ft">
						<a href="javascript:;" class="btn_dialog default" id="cancel_unbind">取消</a>
						<a href="javascript:;" class="btn_dialog primary" id="sure_unbind">确定</a>
					</div>
				</div>
			</div>
		</div>
		<script src="{{Msg "seo" "cdn"}}/wxmyemail/js/zepto.js"></script>
		<script>
-			initShare({{.T.signature}},{{.T.openid}},2,"jy_wxmyorder",{{.T.nickname}},{{.T.avatar}});
			$(function(){
				/* 更换邮箱 */
				$('.choose_email').on('click',() =>{
-					$('#choose_email_dialog').show(400);
-					$("#cancel_choose").on('click',() =>{
-						$('#choose_email_dialog').hide(400);
-					});
+		<div class="app-layout-header">
+			<span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+			我的邮箱
+		</div>
+		<div class="app-layout-content-b">
+			<div class="unbind_email">
+				<div class="input_box mgT26">
+					<label>邮箱</label>
+					<input type="email" name="email" id="" value="{{.T.text_email}}" readonly="readonly"/>
+				</div>
+				<button type="button" class="common_btn choose_email">更换邮箱</button>
+				<p class="text-algin">
+					<a href="javascript:;" class="unbind">解绑</a>
+				</p>
+				
+				<!-- 更换邮箱弹框 -->
+				<div class="dialog_confirm" id="choose_email_dialog" style="display: none;">
+					<div class="mask"></div>
+					<div class="dialog">
+						<div class="dialog_hd"><strong>确定更换邮箱</strong></div>
+						<div class="dialog_bd">{{.T.text_email}}</div>
+						<div class="dialog_ft">
+							<a href="javascript:;" class="btn_dialog default" id="cancel_choose">取消</a>
+							<a href="javascript:;" class="btn_dialog primary" id="sure_choose">确定</a>
+						</div>
+					</div>
+				</div>
+				<!-- 解绑邮箱弹框 -->
+				<div class="dialog_confirm" id="unbind_email_dialog" style="display: none;">
+					<div class="mask"></div>
+					<div class="dialog">
+						<div class="dialog_hd"><strong>确定解绑邮箱</strong></div>
+						<div class="dialog_bd" style="color: #888;">{{.T.text_email}}</div>
+						<div class="dialog_ft">
+							<a href="javascript:;" class="btn_dialog default" id="cancel_unbind">取消</a>
+							<a href="javascript:;" class="btn_dialog primary" id="sure_unbind">确定</a>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+		<script src="{{Msg "seo" "cdn"}}/jyapp/myemail/js/zepto.js"></script>
+		<script src="{{Msg "seo" "cdn"}}/jyapp/js/common.js?v={{Msg "seo" "version"}}"></script>
+		<script>
+			$(function(){
+				/* 更换邮箱 */
+				$('.choose_email').on('click',() =>{
+					$('#choose_email_dialog').show(400);
+					$("#cancel_choose").on('click',() =>{
+						$('#choose_email_dialog').hide(400);
+					});
 					$('#sure_choose').on('click',() =>{
 						//sessionStorage.removeItem("send_myemail_"+{{.T.userId}});
-						window.location.replace("/front/wxMyOrder/myEmail?name=change");
-					});
+						window.location.replace("/jyapp/front/myorder/myEmail?name=change");
+					});
 				})
 				
-				
				/* 解绑邮箱 */
				$('.unbind').on('click',() =>{
					$('#unbind_email_dialog').show(4);
					$("#cancel_unbind").on('click',() =>{
						$('#unbind_email_dialog').hide(400);
					});
					$('#sure_unbind').on('click',() =>{
+				
+				/* 解绑邮箱 */
+				$('.unbind').on('click',() =>{
+					$('#unbind_email_dialog').show(4);
+					$("#cancel_unbind").on('click',() =>{
+						$('#unbind_email_dialog').hide(400);
+					});
+					$('#sure_unbind').on('click',() =>{
 						$.post("/subscribepay/orderListDetails/emailOperation",{"operation":"unbind","email":{{.T.text_email}}},function(data){
 							if(data.success){
-								window.location.replace("/front/wxMyOrder/myEmail?name=unbind");
+								window.location.replace("/jyapp/front/myorder/myEmail?name=unbind");
 							}
-						})
					});
				})
				$('.mask').on('click',()=>{
					$('#choose_email_dialog').hide(400);
					$('#unbind_email_dialog').hide(400);
				})
			})
		</script>
-	{{include "/common/baiducc.html"}}
	</body>
+						})
+					});
+				})
+				$('.mask').on('click',()=>{
+					$('#choose_email_dialog').hide(400);
+					$('#unbind_email_dialog').hide(400);
+				})
+			})
+		</script>
+	{{include "/common/baiducc.html"}}
+	</body>
 </html>

+ 2 - 2
src/jfw/modules/pushsubscribe/src/match/config/config.go

@@ -24,8 +24,8 @@ type config struct {
 }
 
 type taskConfig struct {
-	StartTime int64  `json:"startTime"`
-	LastId    string `json:"lastId"`
+	LastTime string `json:"lastTime"`
+	LastId   string `json:"lastId"`
 }
 
 var (

+ 63 - 30
src/jfw/modules/pushsubscribe/src/match/job/matchjob.go

@@ -28,7 +28,7 @@ var (
 
 const (
 	DB           = "bidding"
-	MaxId        = `{"query":{"filtered":{"filter":{"bool":{"must":{"range":{"id":{"gt":"%s"}}}}}}},"_source":["_id"],"sort":{"id":"desc"},"from":0,"size":1}`
+	MaxId        = `{"query":{"filtered":{"filter":{"bool":{"must":{"range":{"id":{"gt":"%s"}}}}}}},"_source":["_id","comeintime"],"sort":{"id":"desc"},"from":0,"size":1}`
 	ProjectQuery = `{"query":{"filtered":{"filter":{"term":{"list.infoid":"%s"}}}},"_source":["_id","list.infoid"],"sort":{"id":"desc"},"from":0,"size":1}`
 )
 
@@ -48,24 +48,27 @@ type MatchJob struct {
 //定时任务,匹配数据,存库
 func (m *MatchJob) Execute() {
 	defer util.Catch()
-	lastId := util.ObjToString(TaskConfig.LastId)
-	logger.Info("开始匹配数据任务。。。", lastId)
+	logger.Info("开始匹配数据任务。。。", TaskConfig.LastId, TaskConfig.LastTime)
+	startId := util.ObjToString(TaskConfig.LastId)
 	//获取本次查询的最大id
 	idQuery := ""
-	if lastId == "" {
-		idQuery = strings.Replace(fmt.Sprintf(MaxId, lastId), `"gt"`, `"gte"`, -1)
+	if startId == "" {
+		idQuery = strings.Replace(fmt.Sprintf(MaxId, startId), `"gt"`, `"gte"`, -1)
 	} else {
-		idQuery = fmt.Sprintf(MaxId, lastId)
+		idQuery = fmt.Sprintf(MaxId, startId)
 	}
 	resId := elastic.Get(DB, DB, idQuery)
-	newId := ""
+	endId := ""
+	var endTime interface{}
 	if resId != nil && *resId != nil && len(*resId) == 1 {
-		newId = util.ObjToString((*resId)[0]["_id"])
+		endId = util.ObjToString((*resId)[0]["_id"])
+		endTime = (*resId)[0]["endTime"]
 	} else {
 		logger.Info("获取本次查询的最大id的时候,未查找到数据!", idQuery)
 		return
 	}
-	datas := m.LoadBidding(lastId, newId, TaskConfig.StartTime)
+	st, _ := time.ParseInLocation(util.Date_Full_Layout, TaskConfig.LastTime, time.Local)
+	datas := m.LoadBidding(startId, endId, st.Unix())
 	if datas == nil || len(*datas) == 0 {
 		return
 	}
@@ -87,10 +90,13 @@ func (m *MatchJob) Execute() {
 			break
 		}
 	}
-	logger.Info("匹配数据任务结束。。。", newId)
+	if endTime == nil {
+		endTime = time.Now().Unix()
+	}
+	TaskConfig.LastTime = util.FormatDateWithObj(&endTime, util.Date_Full_Layout)
+	TaskConfig.LastId = endId
+	logger.Info("匹配数据任务结束。。。", TaskConfig.LastId, TaskConfig.LastTime)
 	//
-	TaskConfig.StartTime = time.Now().Unix()
-	TaskConfig.LastId = newId
 }
 
 func (m *MatchJob) ToMatch(batchIndex int, matcher Matcher, datas *[]map[string]interface{}) {
@@ -116,9 +122,23 @@ func (m *MatchJob) ToMatch(batchIndex int, matcher Matcher, datas *[]map[string]
 			//取最新50条
 			sort.Sort(pushArray)
 			var array []*MatchInfo
+			titleMap := map[string]bool{}
 			size := 0
 			for _, v2 := range pushArray {
-				size++
+				title := util.ObjToString((*v2.Info)["title"])
+				pushInfoKey := PushInfoKey(user.Id, util.ObjToString((*v2.Info)["_id"]))
+				if titleMap[title] {
+					continue
+				}
+				titleMap[title] = true
+				isExists, err := redis.Exists(Pushcache_2_a, pushInfoKey)
+				if err != nil {
+					logger.Error("推送信息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 {
@@ -130,14 +150,18 @@ func (m *MatchJob) ToMatch(batchIndex int, matcher Matcher, datas *[]map[string]
 					Info: &info,
 					Keys: v2.Keys,
 				})
+				size++
 				maxPushSize := Config.MaxPushSize
 				if IsVipUser(user.VipStatus) {
 					maxPushSize = Config.VipMaxPushSize
 				}
-				if len(array) == maxPushSize {
+				if size == maxPushSize {
 					break
 				}
 			}
+			if size == 0 {
+				return
+			}
 			saveBatch = append(saveBatch, map[string]interface{}{
 				"s_m_openid":    user.S_m_openid,
 				"a_m_openid":    user.A_m_openid,
@@ -188,7 +212,8 @@ func (m *MatchJob) ToMatch(batchIndex int, matcher Matcher, datas *[]map[string]
 func (m *MatchJob) ToRelationProject(projectUser *sync.Map) {
 	logger.Info("开始关联项目。。。")
 	index := 0
-	var saveBatch []map[string]interface{}
+	var setBatch []map[string]interface{}
+	var queryBatch []map[string]interface{}
 	lock := &sync.Mutex{}
 	projectUser.Range(func(key interface{}, value interface{}) bool {
 		m.savePool <- true
@@ -216,18 +241,25 @@ func (m *MatchJob) ToRelationProject(projectUser *sync.Map) {
 			lock.Lock()
 			defer lock.Unlock()
 			for _, user := range *users {
-				saveBatch = append(saveBatch, map[string]interface{}{
-					"projectid":  (*projects)[0]["_id"],
-					"infoid":     _id,
-					"userid":     user.Id,
-					"maxid":      list_last_infoid,
-					"toptypes":   user.O_vipjy.TopTypes,
-					"createtime": time.Now().Unix(),
+				queryBatch = append(queryBatch, map[string]interface{}{
+					"projectid": (*projects)[0]["_id"],
+					"userid":    user.Id,
+				})
+				setBatch = append(setBatch, map[string]interface{}{
+					"$set": map[string]interface{}{
+						"projectid":  (*projects)[0]["_id"],
+						"infoid":     _id,
+						"userid":     user.Id,
+						"maxid":      list_last_infoid,
+						"toptypes":   user.O_vipjy.TopTypes,
+						"createtime": time.Now().Unix(),
+					},
 				})
 			}
-			if len(saveBatch) == BulkSize {
-				mongodb.SaveBulk(Pushspace_project, saveBatch...)
-				saveBatch = []map[string]interface{}{}
+			if len(setBatch) == BulkSize {
+				mongodb.NewUpdateBulk(Pushspace_project, queryBatch, setBatch)
+				setBatch = []map[string]interface{}{}
+				queryBatch = []map[string]interface{}{}
 			}
 		}(k, v)
 		index++
@@ -237,9 +269,10 @@ func (m *MatchJob) ToRelationProject(projectUser *sync.Map) {
 		return true
 	})
 	m.saveWaitGroup.Wait()
-	if len(saveBatch) > 0 {
-		mongodb.SaveBulk(Pushspace_project, saveBatch...)
-		saveBatch = []map[string]interface{}{}
+	if len(setBatch) > 0 {
+		mongodb.NewUpdateBulk(Pushspace_project, queryBatch, setBatch)
+		setBatch = []map[string]interface{}{}
+		queryBatch = []map[string]interface{}{}
 	}
 	logger.Info("关联项目结束。。。", index)
 }
@@ -264,7 +297,7 @@ func (m *MatchJob) LoadBidding(lastId, newId string, lastTime int64) *[]map[stri
 		c_query["_id"] = idQuery
 	}
 	//c_query = map[string]interface{}{
-	//"_id": bson.ObjectIdHex("5da706f7a5cb26b9b778d08a"),
+	//"_id": bson.ObjectIdHex("5da71f96a5cb26b9b79b8e6c"),
 	//}
 	logger.Info("开始加载", Bidding, "数据", c_query)
 	var res []map[string]interface{}
@@ -306,7 +339,7 @@ func (m *MatchJob) LoadBidding(lastId, newId string, lastTime int64) *[]map[stri
 				}
 				info[v] = temp[v]
 			}
-			redis.Put("pushcache_1", "info_"+_id, info, 259200)
+			redis.Put(Pushcache_1, "info_"+_id, info, 259200)
 		}(data)
 		data = make(map[string]interface{})
 		index++

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


+ 4 - 0
src/jfw/modules/pushsubscribe/src/public/util.go

@@ -21,6 +21,7 @@ const (
 	Pushspace_vip     = "pushspace_vip"
 	Pushspace_fail    = "pushspace_fail"
 	Pushspace         = "pushspace"
+	Pushcache_1       = "pushcache_1"
 	Pushcache_2_a     = "pushcache_2_a"
 )
 
@@ -230,3 +231,6 @@ func NewUserInfoByUserColl(temp map[string]interface{}) (user *UserInfo, o_msgse
 	}
 	return
 }
+func PushInfoKey(userId, infoId string) string {
+	return fmt.Sprintf("pushinfo_%s_%s", userId, infoId)
+}

Plik diff jest za duży
+ 1 - 1
src/jfw/modules/pushsubscribe/src/push/config.json


+ 4 - 0
src/jfw/modules/pushsubscribe/src/push/job/movejob.go

@@ -66,13 +66,17 @@ func (m *MoveJob) Execute() {
 			if moveUser != nil {
 				list, _ := moveUser.info["list"].(SortList)
 				idMap := map[string]bool{}
+				titleMap := map[string]bool{}
 				for _, v := range list {
 					idMap[util.ObjToString((*v.Info)["_id"])] = true
+					titleMap[util.ObjToString((*v.Info)["title"])] = true
 				}
 				newList := putil.ToSortList(temp["list"])
 				for _, v := range *newList {
 					if idMap[util.ObjToString((*v.Info)["_id"])] {
 						continue
+					} else if titleMap[util.ObjToString((*v.Info)["title"])] {
+						continue
 					}
 					list = append(list, v)
 				}

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

@@ -84,7 +84,7 @@ func (p *ProjectPushJob) Execute() {
 						if len(userTopType) > 0 && !userTopType[topType] {
 							continue
 						}
-						isExists, err := redis.Exists(Pushcache_2_a, putil.PushInfoKey(userId, infoid))
+						isExists, err := redis.Exists(Pushcache_2_a, PushInfoKey(userId, infoid))
 						if err != nil {
 							logger.Error("推送信息判重出错", err)
 							continue
@@ -122,7 +122,7 @@ func (p *ProjectPushJob) Execute() {
 					logger.Info(userId, "关联项目推送保存成功", pushDate, length)
 					redis.Put(Pushcache_2_a, dayCountKey, dayCount+length, OneDaySecond)
 					for _, v := range saveArray {
-						redis.Put(Pushcache_2_a, putil.PushInfoKey(userId, util.ObjToString((*v.Info)["_id"])), 1, OneDaySecond)
+						redis.Put(Pushcache_2_a, PushInfoKey(userId, util.ObjToString((*v.Info)["_id"])), 1, OneDaySecond)
 					}
 				} else {
 					logger.Info(userId, "关联项目推送保存出错", pushDate)

+ 3 - 6
src/jfw/modules/pushsubscribe/src/push/job/pushjob.go

@@ -48,12 +48,9 @@ func (p *PushJob) Execute(taskType int) {
 	defer p.lock.Unlock()
 	p.beforePush(taskType)
 	//每天九点以后,推送每周每月的用户
-	if taskType == 2 && putil.IsVipTempPushTime() {
-		now := time.Now()
-		if now.Weekday().String() == Config.VipPushWeek { //每周
-			p.beforePush(3)
-		} else if now.Day() == Config.VipPushDay { //每月
-			p.beforePush(4)
+	if taskType == 2 {
+		for _, v := range putil.ValieVipRateModes() {
+			p.beforePush(v)
 		}
 	}
 }

+ 8 - 4
src/jfw/modules/pushsubscribe/src/push/pusher/normalpush.go

@@ -28,8 +28,12 @@ func (n *NormalPush) OncePushBatch(taskType, batchIndex int, startId *string) (b
 			},
 		}
 	} else if taskType == 2 {
+		rateModes := putil.ValieVipRateModes()
+		rateModes = append(rateModes, 2)
 		query = map[string]interface{}{
-			"ratemode": 2,
+			"ratemode": map[string]interface{}{
+				"$in": rateModes,
+			},
 		}
 	} else {
 		logger.Error("taskType error", taskType)
@@ -99,25 +103,25 @@ func (n *NormalPush) GetPushParam(mailPush bool, u *UserInfo, sl *SortList) *put
 	dayCountKey := DayCountKey(u.Id)
 	onceCountKey := OnceCountKey(u.Id)
 	dayCount := redis.GetInt(Pushcache_2_a, dayCountKey)
+	isVipUser := IsVipUser(u.VipStatus)
 	pushParam := putil.NewPushParam(true, dayCount, mailPush, u, sl)
 	if pushParam.InfosLength == 0 {
 		return pushParam
 	}
-	isVipUser := IsVipUser(u.VipStatus)
 	//推送记录id
 	pushParam.PushDate = putil.SaveToPushsubscribe(isVipUser, u.Id, &pushParam.Infos)
 	if pushParam.PushDate > 0 {
 		redis.Put(Pushcache_2_a, dayCountKey, dayCount+pushParam.InfosLength, OneDaySecond)
 		redis.Put(Pushcache_2_a, onceCountKey, pushParam.InfosLength, OneDaySecond)
 		for _, v := range pushParam.Infos {
-			redis.Put(Pushcache_2_a, putil.PushInfoKey(u.Id, util.ObjToString((*v.Info)["_id"])), 1, OneDaySecond)
+			redis.Put(Pushcache_2_a, PushInfoKey(u.Id, util.ObjToString((*v.Info)["_id"])), 1, OneDaySecond)
 		}
 	} else {
 		logger.Info(u.Id, "订阅推送保存出错", pushParam.InfosLength)
 		return pushParam
 	}
 	logger.Info(u.Id, "订阅推送保存成功", pushParam.PushDate, pushParam.InfosLength)
-	if isVipUser && (u.RateMode == 3 || u.RateMode == 4) && !putil.IsVipTempPushTime() {
+	if isVipUser && (u.RateMode == 3 || u.RateMode == 4) {
 		pushParam.IsPush = false
 		n.vipTempSave(u, pushParam)
 	} else {

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

@@ -25,7 +25,7 @@ func (s *SpecialPush) OncePushBatch(taskType, batchIndex int, startId *string) (
 		query["ratemode"] = 4
 	} else if taskType == 5 {
 		query["ratemode"] = map[string]interface{}{
-			"$in": []int{4, 5},
+			"$in": []int{3, 4},
 		}
 	} else {
 		logger.Error("taskType error", taskType)

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

@@ -5,7 +5,6 @@ import (
 	. "public"
 	. "push/config"
 	"qfw/util"
-	"qfw/util/redis"
 	"strings"
 
 	"github.com/donnie4w/go-logger/logger"
@@ -83,17 +82,9 @@ func NewPushParam(isLimit bool, dayCount int, mailPush bool, u *UserInfo, sl *So
 	titleArray := []string{}
 	infos := []*MatchInfo{}
 	infosLength := 0
-	publishTitle := map[string]bool{}
 	isVipUser := IsVipUser(u.VipStatus)
 	for _, ks := range *sl {
 		k2 := *ks.Info
-		isExists, err := redis.Exists(Pushcache_2_a, PushInfoKey(u.Id, util.ObjToString(k2["_id"])))
-		if err != nil {
-			logger.Error("推送信息判重出错", err)
-		}
-		if isExists {
-			continue
-		}
 		title := strings.Replace(k2["title"].(string), "\n", "", -1)
 		title = Re.ReplaceAllString(title, "$1")
 		area := util.ObjToString(k2["area"])
@@ -101,10 +92,6 @@ func NewPushParam(isLimit bool, dayCount int, mailPush bool, u *UserInfo, sl *So
 			area = "全国"
 		}
 		newTitle := fmt.Sprintf("[%s]%s", area, title)
-		if publishTitle[newTitle] {
-			continue
-		}
-		publishTitle[newTitle] = true
 		infosLength++
 		infos = append(infos, ks)
 		titleArray = append(titleArray, newTitle)
@@ -114,19 +101,19 @@ func NewPushParam(isLimit bool, dayCount int, mailPush bool, u *UserInfo, sl *So
 		}
 		//增加行业的处理
 		industry := ""
-		industryclass := ""
+		industryClassName := ""
 		if isVipUser {
-			industryclass = "buyerclass"
+			industryClassName = "buyerclass"
 			industry, _ = k2["buyerclass"].(string)
 		} else {
-			industryclass = "subscopeclass"
+			industryClassName = "subscopeclass"
 			industry = GetSubScopeClass(k2["s_subscopeclass"])
 		}
 		if mailPush && infosLength <= Config.MaxPushSize { //关于邮件的处理
 			mailSid := util.CommonEncodeArticle("mailprivate", util.ObjToString(k2["_id"]))
 			url := fmt.Sprintf("%s/article/mailprivate/%s.html", Config.JianyuDomain, mailSid)
-			classArea := "area"
-			classType := "type"
+			areaClassName := "area"
+			typeClassName := "type"
 			infotype := util.ObjToString(k2["subtype"])
 			if infotype == "" {
 				infotype = util.ObjToString(k2["toptype"])
@@ -161,9 +148,15 @@ func NewPushParam(isLimit bool, dayCount int, mailPush bool, u *UserInfo, sl *So
 				}
 			}
 			if industry == "" {
-				industryclass = ""
+				industryClassName = ""
+			}
+			if area == "" {
+				areaClassName = ""
+			}
+			if infotype == "" {
+				typeClassName = ""
 			}
-			mailContent += fmt.Sprintf(Config.Mail_content, infosLength, url, otitle, classArea, area, classType, infotype, industryclass, industry, dates)
+			mailContent += fmt.Sprintf(Config.Mail_content, infosLength, url, otitle, areaClassName, area, typeClassName, infotype, industryClassName, industry, dates)
 		}
 		if isLimit {
 			if isVipUser {

+ 12 - 10
src/jfw/modules/pushsubscribe/src/push/util/util.go

@@ -2,7 +2,6 @@ package util
 
 import (
 	"encoding/json"
-	"fmt"
 	. "public"
 	. "push/config"
 	"qfw/util"
@@ -94,7 +93,7 @@ func NewUserInfoByPushSpaceColl(user map[string]interface{}) *UserInfo {
  *batchIndex < 0 不走分批次加载
  */
 func GetPushDatas(taskType, batchIndex int, collection string, startId *string, query map[string]interface{}) (bool, *[]map[string]interface{}) {
-	logger.Info(taskType, "开始加载第", batchIndex, "批用户", query)
+	logger.Info(taskType, collection, "开始加载第", batchIndex, "批用户", query)
 	sess := mongodb.GetMgoConn()
 	defer mongodb.DestoryMongoConn(sess)
 	users := []map[string]interface{}{}
@@ -109,14 +108,21 @@ func GetPushDatas(taskType, batchIndex int, collection string, startId *string,
 			break
 		}
 	}
-	logger.Info(taskType, "第", batchIndex, "批用户加载结束", *startId)
+	logger.Info(taskType, collection, "第", batchIndex, "批用户加载结束", *startId)
 	return batchIndex < 0 || i < Config.PushBatch, &users
 }
 
-//是否是一个月或者一周推送一次的时间
-func IsVipTempPushTime() bool {
+//获取当前有效的vip推送模式
+func ValieVipRateModes() []int {
 	now := time.Now()
-	return now.Day() == Config.VipPushDay || now.Weekday().String() == Config.VipPushWeek
+	rateMode := []int{}
+	if strings.ToLower(now.Weekday().String()) == strings.ToLower(Config.VipPushWeek) {
+		rateMode = append(rateMode, 3)
+	}
+	if now.Day() == Config.VipPushDay {
+		rateMode = append(rateMode, 4)
+	}
+	return rateMode
 }
 
 //获取信息行业
@@ -137,10 +143,6 @@ func GetSubScopeClass(subscopeclass interface{}) string {
 	return industry
 }
 
-func PushInfoKey(userId, infoId string) string {
-	return fmt.Sprintf("pushinfo_%s_%s", userId, infoId)
-}
-
 //推送记录保存到mysql
 func SaveToPushsubscribe(isVipUser bool, userId string, matchInfos *[]*MatchInfo) int64 {
 	SavePool <- true

+ 10 - 9
src/jfw/modules/subscribepay/src/entity/dataexport.go

@@ -359,18 +359,19 @@ func SendMailToBJFinance(order *map[string]interface{}, pay_time, transaction_id
 						}
 					}
 					//订阅区域
-					if nbs.AreaCount != 0 && city_count != 0 {
-						subscription_area = fmt.Sprintf("%d个省级地区、%d个地市", nbs.AreaCount, city_count)
-						log.Println(subscription_area)
-					} else if nbs.AreaCount == 0 && city_count != 0 {
-						subscription_area = fmt.Sprintf("%d个地市", city_count)
-					} else if nbs.AreaCount != 0 && city_count == 0 {
-						subscription_area = fmt.Sprintf("%d个省级地区", nbs.AreaCount)
-					} else {
+					if nbs.AreaCount == -1 {
 						subscription_area = "全国"
+					} else {
+						if city_count != 0 && nbs.AreaCount == 0 {
+							subscription_area = fmt.Sprintf("%d个地市", city_count)
+						} else if city_count == 0 && nbs.AreaCount != 0 {
+							subscription_area = fmt.Sprintf("%d个省级区域", nbs.AreaCount)
+						} else if city_count != 0 && nbs.AreaCount != 0 {
+							subscription_area = fmt.Sprintf("%d个省级区域、%d个地市", nbs.AreaCount, city_count)
+						}
 					}
 					//行业
-					if nbs.BuyerclassCount != 0 {
+					if nbs.BuyerclassCount != -1 {
 						industry = fmt.Sprintf("%d个行业", nbs.BuyerclassCount)
 					} else {
 						industry = "全行业"

+ 1 - 0
src/jfw/modules/subscribepay/src/service/afterPay.go

@@ -173,6 +173,7 @@ var oneRemind = int64(1 * 24 * 60 * 60)
 
 //
 func (a *AfterPay) GetUserInfo() error {
+	//	log.Println(util.GetDATE(2, 1, 1576166400))
 	defer qutil.Catch()
 	userId, _ := a.GetSession("userId").(string)
 	var userData *map[string]interface{}

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

@@ -56,7 +56,7 @@ func (this *OrderListDetails) GetOrderPayAllMsg() {
 			"order_code": orderCode,
 			//"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", "")
+		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 {

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

@@ -109,7 +109,9 @@ func (this *RenewUpgrade) RenewUpgradeCreateOrder() {
 		startTime := time.Unix(start, 0)
 		endTime := time.Unix(end, 0)
 		orderType := 0
+		isRenew := true
 		if pay_source == "Upgrade" { //计算升级时间
+			isRenew = false
 			if effect == "now" { //立即生效
 				orderType = 3
 				//				startTime = time.Now()
@@ -198,7 +200,7 @@ func (this *RenewUpgrade) RenewUpgradeCreateOrder() {
 			payStr = pay.GetWxJsPayStr(prepayid)
 		} else if payWay == "wx_app" {
 			var ret *map[string]string
-			tradeno, ret = pay.WxStruct.CreatePrepayOrder(pay.WX_SUBVIP_JSAPI, this.IP(), openId, "", totalfee)
+			tradeno, ret = pay.WxStruct.CreatePrepayOrder(pay.WX_SUBVIP_APP, this.IP(), openId, "", totalfee)
 			if ret == nil || (*ret)["status"] != "1" {
 				errMsg := "创建微信订单出错"
 				if (*ret)["errcodedes"] != "" {
@@ -210,6 +212,12 @@ func (this *RenewUpgrade) RenewUpgradeCreateOrder() {
 			}
 			prepayid = qutil.ObjToString((*ret)["prepayid"])
 			payStr = pay.WxStruct.GetAppWxPayStr(prepayid)
+		} else { //支付宝支付
+			var err error
+			payStr, tradeno, err = pay.Alipay.GetOrderPayParam((qutil.Float64All(totalfee)), "", pay.ALI_SUBVIP_APP)
+			if err != nil {
+				return &entity.FuncResult{false, errors.New("创建支付宝订单出错"), nil}
+			}
 		}
 
 		filterStr, _ := json.Marshal(filter)
@@ -233,6 +241,7 @@ func (this *RenewUpgrade) RenewUpgradeCreateOrder() {
 			"filter":         string(filterStr), //筛选
 			"vip_starttime":  qutil.FormatDate(&startTime, qutil.Date_Full_Layout),
 			"vip_endtime":    qutil.FormatDate(&endTime, qutil.Date_Full_Layout),
+			"vip_type":       qutil.If(isRenew, 1, 2),
 		}
 
 		orderid := util.Mysql.Insert("dataexport_order", insertMap)
@@ -267,7 +276,6 @@ func (this *RenewUpgrade) GetExprie() {
 			log.Printf("%s vipSubscribeStruct PayCallBack Unmarshal 出错 [%s]\n", filterStr)
 			return
 		}
-		log.Println("VMSG", vmsg)
 		dataArr := map[string]interface{}{
 			"area":       vmsg.Area,
 			"buyerclass": vmsg.Industry,

+ 4 - 4
src/jfw/modules/subscribepay/src/util/vrew.go

@@ -261,8 +261,8 @@ func GetDATE(val int, m int, endtime int64) (_endtime time.Time) {
 	date_m, _ := strconv.Atoi(strings.Split(endFormat, "-")[1])
 	date_d, _ := strconv.Atoi(strings.Split(endFormat, "-")[2])
 	if date_m+m > 12 {
-		date_y = date_y + (date_m+m)/12
-		date_m = date_m + m - 12*((date_m+m)/12)
+		date_y = date_y + (date_m+m-1)/12
+		date_m = date_m + m - 12*((date_m+m-1)/12)
 	} else {
 		date_m = date_m + m
 	}
@@ -286,7 +286,7 @@ func GetDATE(val int, m int, endtime int64) (_endtime time.Time) {
 			dstr = "0" + strconv.Itoa(date_d)
 		}
 	}
-	_date = strconv.Itoa(date_y) + "-" + mstr + "-" + dstr
-	lastDate, _ := time.ParseInLocation(qutil.Date_Short_Layout, _date, time.Local)
+	_date = strconv.Itoa(date_y) + "-" + mstr + "-" + dstr + " 23:59:59"
+	lastDate, _ := time.ParseInLocation(qutil.Date_Full_Layout, _date, time.Local)
 	return lastDate
 }

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

@@ -57,7 +57,7 @@ func (h *historyPush) Datas_Mysql(userId string, pageNum int, selectTime, area s
 	countSQL = countSQL + findStr
 	count := Mysql.CountBySql(countSQL)
 	start := (pageNum - 1) * pageSize
-	findStr += " order by infoid desc limit " + fmt.Sprint(start) + "," + fmt.Sprint(pageSize)
+	findStr += " order by id desc limit " + fmt.Sprint(start) + "," + fmt.Sprint(pageSize)
 	findSQL = findSQL + findStr
 	list := Mysql.SelectBySql(findSQL)
 	if len(*list) > 0 {

+ 4 - 1
src/web/staticres/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;
@@ -345,4 +345,7 @@
     left: 50%;
     margin-left: -25px;
     width: 50px;
+}
+.addkeyWord{
+	margin-bottom:.2rem;
 }

+ 1 - 1
src/web/staticres/vipsubscribe/css/keyWord.css

@@ -90,7 +90,7 @@
 }
 
 .keyWord .add-keyword-container .content .enter .btn button {
-  width: 100%;
+  width: 50%;
   height: 0.94rem;
   background: #2cb7ca;
   color: #fff;

+ 26 - 16
src/web/staticres/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,7 +38,7 @@ $(function(){
     })
     // 添加keyWords检查输入框内是否有文字,如果有才能点击添加按钮
     $('.addkeyWord input.enterOne').on('input', function() {
-        var buttonDOM = $(this).siblings().find('button')[0]
+        var buttonDOM = $(this).siblings().find('button')[1]
         if ($(this).val().length >= 1) {
             buttonDOM.style.opacity = 1
             buttonDOM.removeAttribute("disabled")
@@ -46,10 +49,16 @@ $(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;
+		if(keyWord==""){
+			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 +69,7 @@ $(function(){
 		}
         //保存新附加词
         _addkws = keyWord;
-        saveSession();
+        saveSession("",_addindex);
         var html = `<li>
                         <div class="one">
                             <div>
@@ -68,7 +77,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 +89,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 +99,7 @@ $(function(){
 
     // 编辑
     $(".showKeyWord").on('click', '.editKeyWord',function(e){
+        _addindex = Number($(this).attr("dataindex"));
         $('.enter.addkeyWord').hide()
         $('.addKeyWord').hide()
 
@@ -104,7 +115,7 @@ $(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;
+		var _index =  $('.showKeyWord li').length - $(this).parent().parent("li").index() -1;
         weui.confirm('确定要删除附加词?', {
             buttons: [{
                 label: '取消',
@@ -116,16 +127,15 @@ $(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();
+		var _index =  $('.showKeyWord li').length - $(this).parent().parent("li").index() -1;
         if(keyWord.length > 20){
             weui.toast('每组附加词不能超过20字', {
                 duration: 2000,
@@ -133,7 +143,6 @@ $(function(){
                 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 +151,9 @@ $(function(){
 	            });
 				return
 			}
+        	$('.addKeyWord').show()
             _addkws = keyWord;
-            saveSession();
+            saveSession("",_addindex,_index);
             $(this).parent().siblings().find('.key').text(keyWord)
             $(this).parent().hide().siblings().show()
         }

+ 19 - 12
src/web/staticres/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,7 +42,7 @@ $(function(){
             return
         }
 
-        var buttonDOM = $(this).siblings().find('button')[0]
+        var buttonDOM = $(this).siblings().find('button')[1]
         if ($(this).val().length >= 1) {
             buttonDOM.style.opacity = 1
             buttonDOM.removeAttribute("disabled")
@@ -59,9 +62,12 @@ $(function(){
     })
     // 添加 按钮的点击事件
    
-    $('.addkeyWord .btn button').on('click', function(){
+    $('.addkeyWord .btn button:nth-child(2)').on('click', function(){
         var keyWord = $('.addkeyWord input.enterOne').val()
-        _notindex = -1;
+		_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 +78,7 @@ $(function(){
             });
 			return
 		}
-        saveSession();
+        saveSession("",_notindex);
         var html = `<li>
                         <div class="one">
                             <div>
@@ -80,7 +86,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 +99,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 +109,7 @@ $(function(){
 
     // 编辑
     $(".showKeyWord").on('click', '.editKeyWord', function(e){
+        _notindex = Number($(this).attr("dataindex"));
         $('.enter.addkeyWord').hide()
         $('.addKeyWord').hide()
 
@@ -116,8 +124,8 @@ $(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('确定要删除关键词?', {
+		var _index =  $('.showKeyWord li').length - $(this).parent().parent("li").index() -1;
+        weui.confirm('确定要删除排除词?', {
             buttons: [{
                 label: '取消',
                 type: 'default',
@@ -128,8 +136,7 @@ $(function(){
                 onClick: function () {
                     jQueryDOM.remove()
                     hasWords()
-                    $('.addKeyWord').show();
-                    saveSession("D");
+                    saveSession("D",_notindex,_index);
                 }
             }]
         });
@@ -139,6 +146,7 @@ $(function(){
     $('.showKeyWord').on('click', '.ascertainKey', function(e) {
         var $this = $(this);
         var keyWord = $(this).siblings('textarea').val();
+		var _index =  $('.showKeyWord li').length - $(this).parent().parent("li").index() -1;
         if(keyWord.length > 20){
             weui.toast('每组排除词不能超过20字', {
                 duration: 2000,
@@ -157,9 +165,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);
         }
     })
 

+ 22 - 13
src/web/staticres/vipsubscribe/js/keyWord.js

@@ -29,7 +29,7 @@ var reloadFunc = function(){
 
     // 添加keyWords检查输入框内是否有文字,如果有才能点击添加按钮
     $('.content .addkeyWord input.enterOne').on('input', function () {
-        var buttonDOM = $(this).siblings()[1].children[0]
+        var buttonDOM = $(this).siblings()[1].children[1]
         if ($(this).val().length >= 1) {
             buttonDOM.style.opacity = 1
             buttonDOM.removeAttribute("disabled")
@@ -40,8 +40,11 @@ var reloadFunc = function(){
     })
 
     // 添加 确认按钮的点击事件
-    $('.content .addkeyWord .btn button').on('click', function () {
+    $('.content .addkeyWord .btn button:nth-child(2)').on('click', function () {
         var keyWord = $('.addkeyWord input.enterOne').val();
+		if(keyWord==""){
+			return
+		}
 		if(kws_arr[keyWord]!=undefined){
             weui.toast('您设置的关键词已存在,请调整后再添加。', {
                 duration: 2000,
@@ -58,11 +61,15 @@ var reloadFunc = function(){
             });
         }
         kws_name = keyWord;
-        kws_index = $(".showKeyWord li").length;
+		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 = $('.classify-r .classify-detail').text();
         //保存关键词
         kws_count = parseInt(kws_count) + 1;
@@ -78,8 +85,8 @@ var reloadFunc = function(){
                 setEmptyHistory();
             }
             //
-            doSessionData();
-            $(".add-keyword-container .addNewKeyword").show();
+            doSessionData("",_index);
+            $(".add-keyword-container .addNewKeyword i").show();
             //点击保存关键词,查看缓存中存的附加词 和排除词。
             $(".kws_count").text(kws_count);
             var html = `<li><div class="one"><div>
@@ -100,7 +107,7 @@ var reloadFunc = function(){
                                 +'</span>'
                 }
                 html +=`</div>
-                        <button class="editKeyWord"  dataIndex=`+kws_index+`><i class="iconfont icon-xiugai"></i> 修改</button>
+                        <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>`
@@ -114,7 +121,7 @@ var reloadFunc = function(){
             }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>`
+                html +=`<button class="deleteKey">删除</button><button class="ascertainKey" dataIndex=`+_index+` onclick="saveK(this)">确定</button></div></li>`
             $('.showKeyWord > ul').prepend(html);
             // 添加完成隐藏输入框
             $(".enter.addkeyWord").hide();
@@ -126,17 +133,17 @@ var reloadFunc = function(){
             addition_kws = [];
             not_kws = [];
 			//
-            var buttonDOM = $('.enter.addkeyWord .btn button')[0]
+            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==0&&$(".showKeyWord li").length>=20)||(kws_tips==20&&$(".showKeyWord li").length>=100)){
+                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==0){
+                    if(kws_tips==1){
                         param.kws_tips = 20;
                     }else if(kws_tips==20){
                         param.kws_tips = 100;
@@ -172,11 +179,12 @@ var reloadFunc = function(){
         $(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 +203,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 = "";

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

@@ -44,16 +44,16 @@
 					promptbox("解绑成功");
 				}
 				
-				$(".email_input").bind('input propertychange',()=>{
-					if((sessionStorage.getItem("send_myemail_"+userId)!=null)&&(sessionStorage.getItem("send_myemail_"+userId)!="")){
-						if((sessionStorage.getItem("send_myemail_"+userId))!= $('.email_input').val()){
-							$('.sendcode').prop("disabled","disabled");
-						}else{
-							sessionStorage.removeItem("send_myemail_"+userId);
-							$('.sendcode').removeAttr("disabled");
-						}
-					}
-				})
+//				$(".email_input").bind('input propertychange',()=>{
+//					if((sessionStorage.getItem("send_myemail_"+userId)!=null)&&(sessionStorage.getItem("send_myemail_"+userId)!="")){
+//						if((sessionStorage.getItem("send_myemail_"+userId))!= $('.email_input').val()){
+//							$('.sendcode').prop("disabled","disabled");
+//						}else{
+//							sessionStorage.removeItem("send_myemail_"+userId);
+//							$('.sendcode').removeAttr("disabled");
+//						}
+//					}
+//				})
 				
 				//
				$('.sendcode').on('click',function(){
 					var that =this;
					emailVal = $('.email_input').val();
					let isEmail = reg.test(emailVal);//正则验证邮箱号
					if($.trim(emailVal) === ''){

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

@@ -31,7 +31,7 @@
 				function countDown(){
 					if(time == 0){
 						$('.time').html('');
-						if((param="invoice")&&(orderCode!="")){
+						if((param=="invoice")&&(orderCode!=null)){
 							window.location.replace('/weixin/pay/toOrderDetailPage?orderCode='+orderCode);
 						}else{
 							window.location.replace('/front/wxMyOrder/myEmail');

+ 29 - 9
src/web/templates/weixin/vipsubscribe/additionWord.html

@@ -23,6 +23,7 @@
             <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>
@@ -37,7 +38,7 @@
                 疑问解答 <i class="iconfont icon-wenhao"></i>
             </div> 
         </section>
-        <div class="addKeyWord">
+        <div class="addKeyWord" style="display:none;">
             <i class="iconfont icon-tianjia"></i>
         </div>
         <!-- 疑难问题弹窗 -->
@@ -85,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--) {
 					addkws_arr[data[i]]=i
@@ -98,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>'
@@ -116,19 +127,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)
            }

+ 30 - 9
src/web/templates/weixin/vipsubscribe/exclusiveWord.html

@@ -23,6 +23,7 @@
             <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>
@@ -36,7 +37,7 @@
                 疑问解答 <i class="iconfont icon-wenhao"></i>
             </div>
         </section>
-        <div class="addKeyWord">
+        <div class="addKeyWord" style="display:none;">
             <i class="iconfont icon-tianjia"></i>
         </div>
         <!-- 疑难问题弹窗 -->
@@ -84,9 +85,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 +108,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 +126,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)
            }

+ 72 - 32
src/web/templates/weixin/vipsubscribe/keyWord.html

@@ -138,6 +138,7 @@
                         <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>
@@ -153,8 +154,8 @@
                 </div>
             </section>
 
-            <div class="addKeyWord addNewKeyword" style="display: none;">
-                <i class="iconfont icon-tianjia"></i>
+            <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>
@@ -164,7 +165,7 @@
                 
             </ul>
 
-            <div class="addKeyWord addNewKeyword" style="display: none;"><div class="addClassify">新增关键词分类</div></div>
+            <div class="addKeyWord addNewKeyword"><div class="addClassify">新增关键词分类</div></div>
         </section>
 
         <!-- 疑难问题弹窗 -->
@@ -251,6 +252,15 @@
             //是否第一次设置关键词
             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();
@@ -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){
@@ -428,12 +440,15 @@
             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();
             }
         }
         //修改关键词内容
         function toSetKws(){
+			console.log(kws_index)
             //分类列表进入
             if(kws_index==-1){
                 var edhtml = '<input type="text" class="enterOne" placeholder="请输入关键词" maxlength="20">'
@@ -450,6 +465,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 +536,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 +552,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,7 +570,6 @@
         }
         //跳转附加词
         function toappendkey(th){
-			history.replaceState("","","/front/vipsubscribe/toSetKeyWordPage?page=242")
             if(!$('.enter.addkeyWord').is(':hidden')){
                 if($('.addkeyWord input.enterOne').val()==""){
                     return
@@ -567,12 +582,12 @@
                }
                 kws_name = $(th).parent(".modify").find("textarea").val();
             }
+			history.replaceState("","","/front/vipsubscribe/toSetKeyWordPage?page=243")
             setSesstion();
             window.location.href="/front/vipsubscribe/toSetadditionPage";
         }
         //
         function tonotkey(th){
-			history.replaceState("","","/front/vipsubscribe/toSetKeyWordPage?page=242")
             if(!$('.enter.addkeyWord').is(':hidden')){
                 if($('.addkeyWord input.enterOne').val()==""){
                     return
@@ -585,6 +600,7 @@
                }
                 kws_name = $(th).parent(".modify").find("textarea").val();
             }
+			history.replaceState("","","/front/vipsubscribe/toSetKeyWordPage?page=243")
             setSesstion();
             window.location.href='/front/vipsubscribe/toSetexclusivePage';
         }
@@ -621,10 +637,17 @@
         //保存关键词
         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)){
+			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',
@@ -640,12 +663,12 @@
                 });
             }else{
                 if(saveData('SK')){
-					$this.attr("dataindex",kws_index);
+					//$this.attr("dataindex",kws_index);
                     $this.parent().siblings().find('.key').text(kws_name)
                     $this.parent().hide().siblings().show()
-                    $('.addKeyWord').show();
+                	$(".add-keyword-container .addNewKeyword i").show();
                     //
-                    doSessionData();
+                    doSessionData("",_index);
 		            //把kws_name,kws_index,addition_kws,not_kws初始化
 		            kws_index = 0;
 		            kws_name = "";
@@ -690,29 +713,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{
@@ -778,7 +818,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,9 +834,8 @@
                     // 还原有数据
                     $('.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();
                 
@@ -815,6 +854,7 @@
                 classify_name = $(this).find('.classify-item-l').text();
                 classify_index = $(this).index()
                 //展示此关键词信息
+				$(".add-keyword-container .addNewKeyword i").show();
                 toSetKws();
             })
         })

+ 6 - 0
src/web/templates/weixin/vipsubscribe/renew_pay.html

@@ -26,6 +26,12 @@
 	.weixin_pay{
 		padding-right: 3px;
 	}
+	.vip_update .fixed-bottom-box, .vip_renew .fixed-bottom-box {
+	    width: 100%;
+	    position: fixed;
+	    bottom: 0;
+	    left: 0;
+	}
 </style>
 <body class="no-touch">
 	<script type="text/javascript">

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

@@ -191,7 +191,7 @@
                 if (hasChecked == false) {
                     $(that).addClass('checked');
                     weui.toast('项目匹配已开启',{
-                        duration: 3000,
+                        duration: 1000,
                         className: 'custom-toast',
                     })
 					setprojectmatch(1);
@@ -200,7 +200,7 @@
                     $('.custom-dialog').hide()
                     // $('#auto_renew').hide(500);
                     weui.toast('项目匹配已关闭',{
-                        duration: 3000,
+                        duration: 1000,
                         className: 'custom-toast',
                     })
 					setprojectmatch(0);

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

@@ -221,7 +221,14 @@ try{
         //产品类型
         if(r.data.order.product_type) $(".productType").text(r.data.order.product_type);
         if(r.data.order.original_price==0){
-        	$(".productType").text(r.data.order.product_type+"(试用)")
+        	$(".productType").text(r.data.order.product_type+"(试用)");
+        }
+        //1 续费 2升级
+        console.log(r.data.order.vip_type)
+        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);
@@ -504,6 +511,18 @@ try{
 	  }
   })
       
+  //苹果端  刷新js
+  $(function () {    
+		var isPageHide = false;   
+		window.addEventListener('pageshow', function () {      
+		    if (isPageHide) {
+                location.reload();
+		    }    
+		});    
+		window.addEventListener('pagehide', function () {
+		    isPageHide = true;
+		});  
+	});
 </script>
 	{{include "/common/baiducc.html"}}
 </html>

+ 22 - 1
src/web/templates/weixin/vipsubscribe/vip_purchase.html

@@ -367,7 +367,28 @@
                         }, false)
                     }
                     {{end}}
-
+                    {{if .T.again}}    //再次购买回显
+                    {{if eq .T.again 1 }}
+                    if (!sessionStorage.getItem("vipSubSelectArea") || !sessionStorage.getItem("vipSubSelectIndustry")) {
+                        $DoPost("/subscribepay/editSub/getSubBuyMsg", {}, function (r) {
+                            if (r.success) {
+                                if (!$.isEmptyObject(r.data.area)) {
+                                    purchase.areaSelect = r.data.area
+                                } else {
+                                    purchase.areaSelect = {"全国": []}
+                                }
+                                if (r.data.industry.length != 0) {
+                                    purchase.industrySelect = r.data.industry
+                                } else {
+                                    purchase.industrySelect = ["全部行业"]
+                                }
+                                sessionStorage.setItem("vipSubSelectArea", JSON.stringify(purchase.areaSelect));
+                                sessionStorage.setItem("vipSubSelectIndustry", JSON.stringify(purchase.industrySelect));
+                            }
+                        }, false)
+                    }
+                    {{end}}
+                    {{end}}
                     if (sessionStorage.getItem("vipSubSelectTime")) {
                         this.timeSelect = JSON.parse(sessionStorage.getItem("vipSubSelectTime"));
                     }

+ 10 - 3
src/web/templates/weixin/vipsubscribe/vip_upgrade.html

@@ -27,6 +27,12 @@
 	.weixin_pay{
 		padding-right: 3px;
 	}
+	.vip_update .fixed-bottom-box, .vip_renew .fixed-bottom-box {
+	    width: 100%;
+	    position: fixed;
+	    bottom: 0;
+	    left: 0;
+	}
 </style>
 <body class="no-touch">
 	<script type="text/javascript">
@@ -344,6 +350,7 @@
   				function(r){
 				    if(r.err_msg == "get_brand_wcpay_request:ok"){
 				    	//
+                    	clearSessionStorage();
 						setTimeout(function(){
 							window.location.replace("/front/vipsubscribe/toPaySuccessPage?orderCode="+ordercode);
 						},500)
@@ -739,7 +746,6 @@
 			if(provinceLen === 0 && cityLen === 0){
 				$(".area-list").hide();
 			}
-			$(".save_upgrade").removeAttr("disabled");
 	    }
 	    //新增行业
 	    if(sessionStorage.vipSubSelectIndustryUpgrade!==""&&sessionStorage.vipSubSelectIndustryUpgrade!==undefined){
@@ -763,7 +769,6 @@
 			if(industryLen === 0){
 				$(".industry-list").hide();
 			}
-			$(".save_upgrade").removeAttr("disabled");
 	    }
 	    //生效时间
 	    if(sessionStorage.effectiveDate !== ""&&sessionStorage.effectiveDate!==undefined){
@@ -904,6 +909,7 @@
 	    var industrysArr = [];
 	    var nowRenew = "";
         function FinallyPrice(){
+        	$(".save_upgrade").attr('disabled','disabled');
 	    	var nowUpgrade = "";
 			//
 			var nowDate = new Date(startTime).toLocaleDateString();
@@ -960,6 +966,7 @@
 						}
 					}
 				}
+				$(".save_upgrade").removeAttr("disabled");
 			}else{
 				if(area !== ""&&area !== undefined){
 					for(let province in area){
@@ -988,6 +995,7 @@
 						}
 					}
 				}
+				$(".save_upgrade").removeAttr("disabled");
 			}else{
 				if(buyerclass!==""&&buyerclass!==undefined){
 					for(let i in buyerclass){
@@ -1216,7 +1224,6 @@
 	    	console.log(param)
 	    	$DoPost("/subscribepay/renewUpgrade/renewUpgradeCreateOrder",param,function(r){
                 if(r.success){
-                    clearSessionStorage();
                     onBridgeReady(JSON.parse(r.data.res),r.data.code);
                 }
                 $(".save_upgrade").removeAttr("disabled");

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików