Преглед изворни кода

提交 弹框显示 分享

wangkaiyue пре 5 година
родитељ
комит
e1db2b1713

+ 3 - 26
src/config.json

@@ -210,31 +210,8 @@
     "advertName": "广告",
     "advertUrl": "/swordfish/about",
     "wxJianyu": {
-        "appid": "wx41a95e706276804d",
-        "appsecret": "1b385c7dd14274c5e0898b9b208580b7",
-        "pay": {
-            "mchid": "1418321102",
-            "key": "topnet2016topnet2016topnet2016ab",
-            "attachmsg": "剑鱼标讯打赏",
-            "bodymsg": "剑鱼标讯-招标信息打赏",
-            "detailmsg": "招标推送信息[%s] 打赏%s元钱",
-            "sjdc_attachmsg": "剑鱼标讯-历史数据",
-            "sjdc_bodymsg": "剑鱼标讯-历史数据",
-            "sjdc_detailmsg": "剑鱼标讯-历史数据",
-            "sjbd_msg": "剑鱼标讯-数据报告",
-            "subvip_msg":"剑鱼标讯-vip订阅"
-        },
-        "openidSwitch": {
-            "oIMvJvrVXG89597EFmYiSiznbyyY": "oHwE_wEQlEBvjZJOyZeNnQcgKQMo",
-            "ouCYjw4BJMbpdMRYrTTLb9nFi2RE": "oHwE_wNA1V0DURDO0h7wAriz0qIY"
-        }
-    },
-    "aliPay": {
-        "appid": "2016092900620854",
-        "reqUrl": "https://openapi.alipaydev.com/gateway.do",
-        "Subject": "剑鱼数据导出",
-        "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAtO7CU4hpdcMmV43MEA8bqQJYYx+f6yvYkP0nFc/oCvU24bU6zAdK/H2H56quEwD8Dh5YtVTfUCcKqpcG9HXY11TXWKCEUQiK1tkb0o7oSSURwk6h1DdDbg8m1+H8s+k+mvMvcqVCYKYi03PIPQyJCuHmzx/vcaALXRr2HOrEFaFFA8WYST1rywiKeyrC9PCNX1aJjGADhCs3cGrdZEJc4k+2tIHTYJccx+mJ96QiEkzFhJTqEmSFPcNqNUX9uCPgeVhfHW2pRNyffvrhoEyeSr1QoOpaYyn0I5JD2axnypBFCbk6P69LY3eGNKtOe81lp9hiZbMYpXPqb6KwPXTVQQIDAQABAoIBAEbJQm276MaR2uZWK4f84S12JW5iaQZw2QGgiTIXbQkcdqRHawF3uPafhhQ0ynXU5MgBR2NqGRQasimbfLUXhgZ4wueBpUKuvOLhfekaz/YN8qy6ZsXH+TGN6/x6BYu9rSiiC+YmkZmOZgGkQqrfxJ3lU4+lRuCFZOzAJ5mYn652CHRJXy6eDgZfyFLP2ol4/ioJEhwnGFXV345DlsVgmXTEe+IfjTyuvzxBtjod4lfu3dj/f2PhPrcgvN0ZQf1ldZbS+6FkMWInMOQt/WsJ/ANfiKgQ4sPzlxIhmVjrvDlnYTc1lbFekyInzZumV0pDyId+1Y6LAjxJTAhnjFAlBSECgYEAwsQdxOiZNLtxZ8J8JCQHKERYIo7euArW0iAurF+3Q9VNeGj0voFrmfHPju5OF5BHtuc7D3lkwZG4Ac+pyQtxF5dsEMl4vBoNc6onRQFsSDVEEIpl7OBghGlg1as23tvPSMh7DKnILM9OzVfFQ9WLvwHJwLRGsM7LOtmNovq4UFsCgYEA7dE/9Avr5YtCUjij8Y2zkAxN6qb8+ggqFoPiCr91JNGaKNKV9D2K7D3Zk49TXFJm7SX2zgYFuqR2Pa9vAWh9jtmwsc8L0qpIym4J1MM5ud/Xiu9c8O/prQOr7JlICNdk8WfqGbUC83BYfWa5SDonlXFYi6x3LlXdZnvEfZF645MCgYAC2ZnR6tFrGx8StJ7abIiKR02+27ZYnRf9pSjprtDgtjtW+royG3S2oPo3jjcoUx0piQKtPEqEJpy5sg86+ObjwHx9VmVk40C1I5VFhjrOZ7EiSNQq/jGLXntjRQkdg7vpxb0/NzDNrw7pJFKnpnVQCzenkTvDlJMWvl47N04BJwKBgHnpVtuIcPlPFkSH/KMLfQ1PAXJVAEI8hTbdjLbtxuOE/34F1hFKqzjHzA2034roQxM27vpWZAF15Zdho4oZQqREPCwqc2kfGgmLt0Z2fdUnRptWcVKh6ixjQXMccKz3niuSlZNwE38wDGzciAbaqQgW/sk7NC1wnvq2X9fvCAw5AoGANG2usqWYF4x+LvbhcdrKpJsjtvkLa2u9g2/wNXdoj+tBrv310O22/YM5LOcq9MrKPlx1S1C1KLoQO9TWFZiYuQ9C/sk7/ZTNmKQxCxVV0FVPaBYp+meD6sjgoRVJvaqY0UxnJwlHWMrusPTFua7Mtogqx9cvzlQolWh5VX7N1DM=\n-----END RSA PRIVATE KEY-----",
-        "callbackPublicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqkZY9RWrX1cZi/AWuBn7u6bjoT2RMBaq4Gdc87CgrIZm89wa28mYzbnuOrzxGtEMP82lU/KoVAbzY46j7s+bR0qUyUwQyFDFHYzDNSjhngeokzcZ+8rU6a8IOyXOHU0V2BLuvzKb44P4ctzZpmgtDZfxMbAt0ULumz9ma3elYa3pEYgQCoWm5i9eiN8DwhY2uBKZ94vW8+c2iCSwoNntZt6S608TYNOICl7nNWIR+zu3f3HnEE+7mQR37XC1aJWmtH5hKrHF8W5PVzEGhOWETcEdpUmaLhXOfN9nCBKNgFbYUmH+r6s93kfdHAqm6MEuFE6m42nmk6lqoDhEeHKteQIDAQAB"
+        "appid": "wxd66e9589c9fecff6",
+        "appsecret": "4d9d4b9ddab59e65fcb7bed125fbd342"
     },
     "industry": "分类综合测试",
     "recommendEntLimit": "50",
@@ -275,7 +252,7 @@
         "shareTimesUpperLimitR": 4000,
         "shareTimesUpperLimitIrr": 1000
     },
-    "cookiedomain": "web-jydev-ws.jianyu360.cn",
+    "cookiedomain": "web-jydev-xzh.jianyu360.cn",
     "pcHelper": {
         "subscribeTokenTimeout": 15,
         "version": "V2.5.1"

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

@@ -74,11 +74,13 @@ func (s *Subscribepay) ToSetPage() {
 
 //vip订阅介绍页
 func (s *Subscribepay) Introduce() {
+	s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
 	s.Render("/weixin/vipsubscribe/vip_introduce.html")
 }
 
 //试用完善信息
 func (s *Subscribepay) TrialInfo() {
+	s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
 	s.Render("/weixin/vipsubscribe/trial_info.html", &s.T)
 }
 

+ 5 - 19
src/jfw/modules/subscribepay/src/pay/aliPay.go

@@ -219,27 +219,13 @@ func (a *aliPayStruct) CloseOrder(tradeno string) bool {
 	}
 	valus := *qutil.ObjToMap((*resMap)["alipay_trade_close_response"])
 	log.Printf("%s 订单关闭相应参数  %+v", tradeno, valus)
-	if valus["msg"] == "Success" {
-		return true
-	} else if valus["sub_code"] == "ACQ.TRADE_NOT_EXIST" { //用户未扫码(调用撤销订单)
-		return true
-		//return Alipay.cancelOrder(tradeno)
+	if valus["sub_code"] == "ACQ.TRADE_STATUS_ERROR" || valus["sub_msg"] == "REASON_ILLEGAL_STATUS" {
+		return false
 	}
-	/*else if valus["sub_code"] == "ACQ.INVALID_PARAMETER" || valus["sub_code"] == "ACQ.TRADE_STATUS_ERROR" || valus["sub_code"] == "ACQ.SYSTEM_ERROR" { //参数异常  交易状态不合法  系统异常
+	/*if valus["msg"] == "Success" {
+		return true
+	} else if valus["sub_code"] == "ACQ.INVALID_PARAMETER" || valus["sub_code"] == "ACQ.TRADE_STATUS_ERROR" || valus["sub_code"] == "ACQ.SYSTEM_ERROR" { //参数异常  交易状态不合法  系统异常
 		return false
 	}*/
-	return false
-}
-
-//撤销订单
-func (a *aliPayStruct) cancelOrder(tradeno string) bool {
-	cancel := struct {
-		OutTradeNo string `json:"out_trade_no"`
-	}{
-		OutTradeNo: tradeno,
-	}
-	bizbyte, _ := json.Marshal(cancel)
-	resMap, err := Alipay.DoRequest(string(bizbyte), tradeno, Method_Tpye_Cancel)
-	log.Println(resMap, err)
 	return true
 }

+ 44 - 4
src/jfw/modules/subscribepay/src/service/vipSubscribeTrial.go

@@ -24,6 +24,8 @@ import (
 //试用用户
 type TrialOrder struct {
 	*xweb.Action
+	showTrailTip        xweb.Mapper `xweb:"/trial/showTrailTip"`        //首页试用弹框是否展示
+	closeTrailTip       xweb.Mapper `xweb:"/trial/closeTrailTip"`       //关闭首页试用弹框
 	getUserPhone        xweb.Mapper `xweb:"/trial/GetUserPhone"`        //获取用户手机号码
 	captcha             xweb.Mapper `xweb:"/trial/captcha"`             //图形验证码
 	sendPhoneCaptcha    xweb.Mapper `xweb:"/trial/sendPhoneCaptcha"`    //发送手机验证码
@@ -36,6 +38,35 @@ var (
 	phoneReg = regexp.MustCompile("^[1][3-9][0-9]{9}$")
 	nameReg  = regexp.MustCompile("^[\u4E00-\u9FA5A-Za-z\\s]+(·[\u4E00-\u9FA5A-Za-z]+)*$")
 )
+//首页试用弹框是否展示
+func (t *TrialOrder) ShowTrailTip() {
+	userId := qutil.ObjToString(t.GetSession("userId"))
+	showTrailTip := true
+	m, _ := util.MQFW.FindById("user", userId, `{"o_vipjy":1}`)
+	if m != nil && len(*m) > 0 {
+		if (*qutil.ObjToMap((*m)["o_vipjy"]))["i_trial"] != nil {
+			showTrailTip = false
+		}
+	}
+	t.ServeJson(map[string]interface{}{
+		"showTrailTip": showTrailTip,
+	})
+}
+
+//关闭首页试用弹框
+func (t *TrialOrder) CloseTrailTip() {
+	userId := qutil.ObjToString(t.GetSession("userId"))
+	ok := false
+	if util.MQFW.UpdateById("user", userId,
+		bson.M{"$set": bson.M{
+			"o_vipjy.i_trial": 2,}}) {
+		ok = true
+	} //已激活试用
+	t.ServeJson(map[string]interface{}{
+		"success": ok,
+	})
+}
+
 //获取之前用户信息
 func (t *TrialOrder) GetUserPhone() {
 	var phoneNum string
@@ -152,9 +183,18 @@ func (t *TrialOrder) SubmitApply() {
 			return false, "稍后重试"
 		}
 		go func() {
-			//更新user表可试用
-			if !util.MQFW.UpdateById("user", userId, bson.M{"$set": bson.M{"o_vipjy.i_trial": 1}}) {
-				log.Println("更新使用状态出错", userId)
+			//更新user表可试用(未试用状态)
+			res, ok := util.MQFW.FindById("user", userId, `{"o_vipjy.i_trial":1}`)
+			if res != nil && len(*res) > 0 && ok {
+				o_vipjy := qutil.ObjToMap((*res)["o_vipjy"])
+				i_trial, ok := (*o_vipjy)["i_trial"]
+				if !ok || qutil.IntAll(i_trial) == 2 { //2为不提示状态
+					if !util.MQFW.UpdateById("user", userId, bson.M{"$set": bson.M{"o_vipjy.i_trial": 1}}) {
+						log.Println("更新使用状态出错", userId)
+					}
+				} else {
+					log.Printf("%s: 状态%d不能修改为试用状态\n", userId, i_trial)
+				}
 			}
 		}()
 		clearTrialSession(t.Session())
@@ -270,7 +310,7 @@ func (this *TrialOrder) TrialPay() {
 		if orderid == -1 {
 			return &entity.FuncResult{false, errors.New("数据保存异常"), nil}
 		}
-		if !entity.JyVipSubStruct.StartSubVip(userId, area, industry, now, endTime,true,date_count,date_unit) { //设置开始试用
+		if !entity.JyVipSubStruct.StartSubVip(userId, area, industry, now, endTime, true, date_count, date_unit) { //设置开始试用
 			return &entity.FuncResult{false, errors.New("开通试用异常"), nil}
 		}
 		return &entity.FuncResult{true, nil, map[string]interface{}{"code": ordercode}}

+ 114 - 0
src/web/staticres/vipsubscribe/js/share.js

@@ -0,0 +1,114 @@
+function initShare(signature){
+	var myloc = window.location.host;
+	var ors = "";
+	if("https:"==document.location.protocol){
+		ors = "s"
+	}
+	myloc="http"+ors+"://"+myloc;
+	if(typeof(signature) != "undefined" && signature != null && signature.length == 4){
+		wx.config({
+		    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+		    appId: signature[0], // 必填,公众号的唯一标识
+		    timestamp:signature[1], // 必填,生成签名的时间戳
+		    nonceStr: signature[2], // 必填,生成签名的随机串
+		    signature: signature[3],// 必填,签名,见附录1
+		    jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage','onMenuShareQQ','onMenuShareQZone','closeWindow'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
+		});
+		var randShareTitle = getShareText();
+
+		var link = myloc+"/swordfish/about";
+
+		var otherLink = link;
+		var desc = "全国招标信息免费看,不遮挡";
+		var otherDesc = desc;
+		var url = "/wxswordfish/images/small_log_new.jpg";
+		var encryptid = "";
+		var subhref = window.location.href;
+		
+		wx.ready(function () {
+			var triggerFlag = false;
+	        wx.onMenuShareTimeline({
+			    title: randShareTitle, // 分享标题
+			    link: otherLink, // 分享链接
+			    imgUrl: myloc+'/wxswordfish/images/small_log_new.jpg', // 分享图标
+				trigger: function (res) {
+					try{
+						triggerFlag = true;
+						afterShareTimeline("trigger");
+					}catch(e){}
+                },
+			    success: function () {
+					if(!triggerFlag){
+						try{
+							afterShareTimeline("success");
+						}catch(e){}
+					}
+			       //alert('分享成功');
+			    },
+			    cancel: function () {
+					if(!triggerFlag){
+						try{
+							afterShareTimeline("cancel");
+						}catch(e){}
+					}
+			       //alert('分享失败,或用户取消了');
+			    }
+			});
+			wx.onMenuShareAppMessage({
+			    title: randShareTitle, // 分享标题
+			    desc: desc, // 分享描述
+			    link: link, // 分享链接
+			    imgUrl: myloc+url, // 分享图标
+			    type: 'link', // 分享类型,music、video或link,不填默认为link'
+			    dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
+			    success: function () {
+			        //alert('分享成功');
+			    },
+			    cancel: function () {
+					//alert('分享失败,或用户取消了');
+			    }
+			});
+			wx.onMenuShareQQ({
+				title: randShareTitle, // 分享标题
+				desc: otherDesc, // 分享描述
+				link: otherLink, // 分享链接
+				imgUrl: myloc+url, // 分享图标
+				success: function () {
+					// 用户确认分享后执行的回调函数
+				},
+				cancel: function () {
+					// 用户取消分享后执行的回调函数
+				}
+			});
+			wx.onMenuShareQZone({
+			    title: randShareTitle, // 分享标题
+				desc: otherDesc, // 分享描述
+				link: otherLink, // 分享链接
+				imgUrl: myloc+url, // 分享图标
+				success: function () {
+					// 用户确认分享后执行的回调函数
+				},
+				cancel: function () {
+					// 用户取消分享后执行的回调函数
+				}
+			});
+	    });
+		wx.error(function(res){
+		    // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
+			//alert("error auth");
+		});
+	}
+}
+//随机获取分享文案
+var ShareText = [
+	"我和投标伙伴都在用剑鱼标讯找项目,推荐你也试试",
+	"我用剑鱼标讯免费查到超多招标信息,推荐你也试试",
+	"我收到了剑鱼标讯免费推送的招标信息,推荐你也试试",
+	"发现了一个投标神器,推荐你也试试"
+]
+function getShareText(){
+	var Range = ShareText.length-1;
+	var Rand = Math.random();  
+	var num = Math.round(Rand * Range);
+	return ShareText[num];
+}

+ 1 - 1
src/web/templates/weixin/search/mainSearch.html

@@ -34,7 +34,7 @@
 	var pageSize = {{.T.pageSize}};
 	var encode = {{ConEncode "/jylab/mainSearch/"}};
 	var searchWord = {{.T.searchWord}};
-	initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}}),{{.T.keys}},{{.T.i_applystatus}};
+	initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}},{{.T.keys}},{{.T.i_applystatus}});
 	SuperSearch.ZBADDRESS = {{Msg "seo" "ZBADDRESS"}};
 	SuperSearch.industry = {{.T.industry}};
 	SuperSearch.sortArray = {{.T.sortArray}};

+ 29 - 1
src/web/templates/weixin/vipsubscribe/modal.html

@@ -2,10 +2,38 @@
 <script type="text/javascript" src="/js/bootstrap.min.js?v={{Msg "seo" "version"}}"></script>
 <script type="text/javascript">
 $(function(){
-	$("#myModal").modal("show");
+  //获取是否弹框
+  var NotshowNum = parseInt(localStorage.getItem("NotshowTrailTip"));
+  if(!NotshowNum&&NotshowNum!=0){ //localStorage值为空 请求后台是否展示
+    $.post("/subscribepay/trial/showTrailTip",{},function(r){
+      if(r.showTrailTip){
+        $("#myModal").modal("show");
+        NotshowNum=0;
+        localStorage.setItem("NotshowTrailTip",NotshowNum);
+        localStorage.setItem("vipTrialShowed_"+new Date().getDate(),"ok");
+      }else{ //不展示
+        localStorage.setItem("NotshowTrailTip","999");
+      } 
+    })
+  }else if (NotshowNum<3&&!localStorage.getItem("vipTrialShowed_"+new Date().getDate())){ //localStorage中有值 且今天第一次打开
+    $("#myModal").modal("show");
+    localStorage.setItem("vipTrialShowed_"+new Date().getDate(),"ok")
+  }
+    
 	$(".toast_close").on("click",function(){
 		$("#myModal").modal("hide");
+    NotshowNum++
+    if(NotshowNum>=3){ //以后不跳出弹框
+      $.post("/subscribepay/trial/closeTrailTip",{},function(r){
+        if(r.success){ 
+          localStorage.setItem("NotshowTrailTip",NotshowNum);
+        }
+      })
+    }else{
+      localStorage.setItem("NotshowTrailTip",NotshowNum);
+    }
 	})
+  
 	$(".toast_but").on("click",function(){
 		$("#myModal").modal("hide");
         window.location.href="/front/vipsubscribe/trialInfo"

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

@@ -12,7 +12,7 @@
     <link rel="stylesheet" type="text/css" href="/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}" />
     <link rel="stylesheet" type="text/css" href="/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
     <link rel="stylesheet" href="/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="/vipsubscribe/css/trial_info.css?v=111">
+    <link rel="stylesheet" href="/vipsubscribe/css/trial_info.css?v=111">    
 </head>
 
 <body>
@@ -72,12 +72,15 @@
             
         </form>
     </div>
+    {{include "/common/weixin.html"}}
     <script src="/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
     <script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>
     <script src="/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
     <script src="/vipsubscribe/js/personal_info.js?v={{Msg "seo" "version"}}"></script>
     <script src="/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/vipsubscribe/js/share.js?v={{Msg "seo" "version"}}"></script>
     <script>
+        initShare({{.T.signature}});
         $(function () {
             //获取用户信息
             $DoPost("/subscribepay/trial/GetUserPhone",{},function(r){

+ 5 - 0
src/web/templates/weixin/vipsubscribe/vip_introduce.html

@@ -137,5 +137,10 @@
             <a href="/weixin/pay/vipsubscribe_new" class="subscribe_btn">去订阅</a>
         </div>
     </div>
+    {{include "/common/weixin.html"}}
+    <script src="/vipsubscribe/js/share.js?v={{Msg "seo" "version"}}"></script>
+    <script>
+      initShare({{.T.signature}});
+    </script>
 </body>
 </html>