Ver código fonte

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

wangkaiyue 5 anos atrás
pai
commit
7e064a0f39

+ 24 - 5
src/jfw/modules/subscribepay/src/service/afterPay.go

@@ -67,7 +67,11 @@ func (a *AfterPay) SetUserInfo() error {
 		saveData := make(map[string]interface{})
 		if a.GetString("pageType") == "infoType" {
 			infoTypeArr := a.GetString("infoTypeArr")
-			saveData["o_vipjy.a_infotype"] = strings.Split(infoTypeArr, ",")
+			if infoTypeArr != "" {
+				saveData["o_vipjy.a_infotype"] = strings.Split(infoTypeArr, ",")
+			} else {
+				saveData["o_vipjy.a_infotype"] = make([]string, 0)
+			}
 		} else if a.GetString("pageType") == "saveSeniorset" {
 			i_ratemode, _ := a.GetInteger("ratemode")
 			i_wxpush, _ := a.GetInteger("wxpush")
@@ -102,11 +106,25 @@ func (a *AfterPay) SetUserInfo() error {
 					}
 				} else {
 					//首次添加分类和关键词
-					flag = util.MQFW.UpdateById("user", userId,
-						bson.M{
-							"$push": bson.M{"o_vipjy.a_items." + classify_index + ".a_key": bson.M{"key": _kws, "appendkey": addtion_kws, "notkey": not_kws}},
-							"$set":  bson.M{"o_vipjy.a_items." + classify_index + ".s_item": classify_name, "o_vipjy.a_items." + classify_index + ".i_tips": 0, "o_vipjy.l_modifydate": time.Now().Unix()},
+					var _key = make(map[string]interface{})
+					var a_key = make([]map[string]interface{}, 1)
+					var o_kws = make(map[string]interface{})
+					if kws_name == "" {
+						kws_name = "未分类"
+					}
+					o_kws["s_item"] = kws_name
+					_key["key"] = _kws
+					_key["appendkey"] = addtion_kws
+					_key["notkey"] = not_kws
+					a_key[0] = _key
+					o_kws["a_key"] = a_key
+					o_kws["i_tips"] = 0
+					if o_kws != nil && len(o_kws) > 0 {
+						flag = util.MQFW.UpdateById("user", userId, bson.M{
+							"$push": bson.M{"o_vipjy.a_items": o_kws},
+							"$set":  bson.M{"o_vipjy.l_modifydate": time.Now().Unix()},
 						})
+					}
 				}
 			} else if actionType == "DK" { //删除关键词
 				data, ok := util.MQFW.FindById("user", userId, `{"o_vipjy.a_items":1}`)
@@ -152,6 +170,7 @@ func (a *AfterPay) GetUserInfo() error {
 	userId, _ := a.GetSession("userId").(string)
 	var userData *map[string]interface{}
 	if userId != "" {
+		go util.MergeKws(userId)
 		userData, _ = util.MQFW.FindById("user", userId, `{"o_vipjy":1,"i_vip_status":1,"l_vip_starttime":1,"l_vip_endtime":1}`)
 		if *userData != nil {
 			data := qutil.ObjToMap((*userData)["o_vipjy"])

+ 8 - 9
src/jfw/modules/subscribepay/src/util/vrew.go

@@ -242,19 +242,18 @@ func MergeKws(userId string) {
 	if ok && data != nil && len(*data) > 0 {
 		o_vipjy, _ = (*data)["o_vipjy"].(map[string]interface{})
 		a_items, _ := o_vipjy["a_items"].([]interface{})
-		if a_items == nil { //首次
+		o_jy, _ = (*data)["o_jy"].(map[string]interface{})
+		a_key, _ := o_jy["a_key"].([]interface{})
+		if a_items == nil && len(a_key) > 0 { //首次
 			var o_kws = make(map[string]interface{})
-			o_jy, _ = (*data)["o_jy"].(map[string]interface{})
-			a_key, _ := o_jy["a_key"].([]interface{})
 			var _key = make([]map[string]interface{}, len(a_key))
-			if len(a_key) > 0 {
-				o_kws["s_item"] = "未分类"
-				for k, v := range a_key {
-					keyarr := v.(map[string]interface{})
-					_key[k] = map[string]interface{}{"key": keyarr["key"].([]interface{})}
-				}
+			o_kws["s_item"] = "未分类"
+			for k, v := range a_key {
+				keyarr := v.(map[string]interface{})
+				_key[k] = map[string]interface{}{"key": keyarr["key"].([]interface{})}
 			}
 			o_kws["a_key"] = _key
+			o_kws["i_tips"] = 0
 			if o_kws != nil && len(o_kws) > 0 {
 				a := MQFW.UpdateById("user", userId, bson.M{
 					"$push": bson.M{"o_vipjy.a_items": o_kws},

+ 16 - 15
src/jfw/modules/weixin/src/config.json

@@ -3,16 +3,16 @@
     "mongodbPoolSize": "5",
     "mongodbName": "qfw",
     "redisServers": "sso=192.168.3.128:1712,other=192.168.3.128:1712,jyop_other=192.168.3.128:1712,push=192.168.3.128:1712",
-	"redisLogin":"login=192.168.3.128:1712",
+    "redisLogin": "login=192.168.3.128:1712",
     "weixinport": "82",
     "weixinrpcport": "8083",
     "webrpcport": "127.0.0.1:8084",
     "jyop_webrpcport": "127.0.0.1:8012",
-    "webdomain": "http://web-jydev-ws.jianyu360.cn",
-	"appid": "wx5b1c6e7cc4dac0e4",
-    "apptoken": "top2015top2015",
-    "appsecret": "b026103ffebd2291b3edb7a269612112",
-	"proxysess": "http://web-jydev-ws.jianyu360.cn/front/sess/%s",
+    "webdomain": "http://web-jydev-wky.jianyu360.cn",
+    "appid": "wx79f2cc873dbea989",
+    "apptoken": "top2016top2016",
+    "appsecret": "fb3f77e9c6725811b5c39f6d58bd58a3",
+    "proxysess": "http://web-jydev-wky.jianyu360.cn/front/sess/%s",
     "followCompany": 10,
     "welcomemsg": "用剑鱼标讯,所有功能完全免费,\n和传统的会员制说再见!\n\n<a href='%s'>点击这里</a>设置关键词,或直接回复“订阅 关键词”,如“订阅 教学设备”,您将随时随地接收招标信息!\n\n剑鱼标讯,让投标无限可能!",
     "tpl_subscribe_push_id": "IY_RWWzMlwDK6hcd6RAzTec6qre8n5r8PNOOUM_hgk0",
@@ -32,6 +32,7 @@
         "skill": "http://mp.weixin.qq.com/mp/homepage?__biz=MzIyNTM1NDUyNw==&hid=3&sn=badf2d7da08654c58b58169e773f58f0#wechat_redirect",
         "success": "您已成功订阅该关键词“%s”。您可点击下方菜单“招标订阅”查看修改订阅关键词。<a href='%s'>点击这里,获得更多订阅技巧。</a>",
         "fail": "对不起,您已订阅十个关键词,请点击下方菜单“招标订阅”修改订阅关键词,<a href='%s'>点击这里,获得更多订阅技巧。</a>",
+        "fail_vip": "对不起,您已订阅300个关键词,请点击下方菜单“招标订阅”修改订阅关键词,<a href='%s'>点击这里,获得更多订阅技巧。</a>",
         "exists": "您已订阅过关键词“%s”,您可点击下方菜单“招标订阅”查看修改订阅关键词,<a href='%s'>点击这里,获得更多订阅技巧。</a>",
         "firsttake": "您已成功订阅该关键词“%s”。<a href='%s'>点击这里,获得更多订阅技巧。</a>",
         "hints": [
@@ -67,22 +68,22 @@
         "description": ""
     },
     "2017policy": "2017年招投标政策法规大盘点下载:https://share.weiyun.com/66b98209cefd61860fd32b9416ed52d9",
-	"activesign":true,
+    "activesign": true,
     "activeArr": [
         {
             "keysReplay": false,
             "keysReplayC": "证书",
             "keysTxtReplay": "<a href='%s'>点击测一测五年后的你</a>",
-			"keysTxtReplayUrlName":"futureIndex",
-			"activeCode":"future",
-			"activeName":"五年后的你",
-			"replayflag": true,
+            "keysTxtReplayUrlName": "futureIndex",
+            "activeCode": "future",
+            "activeName": "五年后的你",
+            "replayflag": true,
             "scanReplay": "<a href='%s'>啥是佩奇?房子、车子、孩子,看你五年后配不配的齐!</a>",
-			"scanReplayUrlName":"futureIndex",
-			"subReply":"啥是佩奇?房子、车子、孩子,看你五年后配不配的齐!",
-			"subReplyPic":"http://webws.qmx.top/future/images/pq.png",
+            "scanReplayUrlName": "futureIndex",
+            "subReply": "啥是佩奇?房子、车子、孩子,看你五年后配不配的齐!",
+            "subReplyPic": "http://webws.qmx.top/future/images/pq.png",
             "activeEnd": 1586185600,
-			"subSecondRP":"https://www.jianyu360.com/images/t3.jpg"
+            "subSecondRP": "https://www.jianyu360.com/images/t3.jpg"
         }
     ]
 }

+ 154 - 49
src/jfw/modules/weixin/src/wx/wx.go

@@ -27,6 +27,7 @@ import (
 	"github.com/SKatiyar/qr"
 	_ "github.com/influxdata/influxdb-client"
 	. "github.com/wizjin/weixin"
+	"gopkg.in/mgo.v2/bson"
 )
 
 var Mux *Weixin
@@ -101,6 +102,7 @@ func MsgTxtHandler(w ResponseWriter, r *Request) {
 	}
 	autoReply_reg, _ := regexp.Compile("剑鱼|招标|中标|订阅|公告|项目|设置|推送")
 	shalong_text, shalong_img := "", ""
+	log.Println(len(autoReply_reg.FindStringIndex(r.Content)))
 	if strings.Replace(r.Content, " ", "", -1) == "沙龙" {
 		shalong_text, shalong_img = shalongActive.Get()
 	}
@@ -132,6 +134,8 @@ func MsgTxtHandler(w ResponseWriter, r *Request) {
 						replyText = fmt.Sprintf(fastSubscribeText["fail"].(string), skill)
 					} else if returnValue == -2 {
 						replyText = fmt.Sprintf(fastSubscribeText["exists"].(string), keyWord, skill)
+					} else if returnValue == -3 {
+						replyText = fmt.Sprintf(fastSubscribeText["fail_vip"].(string), skill)
 					} else if returnValue == 1 {
 						if hasOldKey {
 							replyText = fmt.Sprintf(fastSubscribeText["success"].(string), keyWord, skill)
@@ -898,7 +902,7 @@ func ScanHandler(w ResponseWriter, r *Request) {
 		return
 	}
 	log.Println("openid======", openid)
-	m, b := tools.MQFW.FindOneByField("user", `{"s_m_openid":"`+openid+`"}`, `{"_id":1,"s_headimage":1,"o_jy":1}`)
+	m, b := tools.MQFW.FindOneByField("user", `{"s_m_openid":"`+openid+`"}`, `{"_id":1,"s_headimage":1,"o_jy":1,"o_vipjy":1,"i_vip_status":1}`)
 	if b {
 		//剑鱼标讯订阅提醒  (1:关注事件,2:扫码事件,3:发送客服消息处理,4:支付操作)
 		if openid != "" {
@@ -955,15 +959,31 @@ func ScanHandler(w ResponseWriter, r *Request) {
 					}
 				}
 			} else if pccodepre == "11" || pccodepre == "12" || pccodepre == "19" || pccodepre == "17" { //101pc订阅,102pc搜索关键词 22落地页订阅关键词
-				pcUser, pcresult, subkey := pcSetUserKeys(*m, r.EventKey, pccodepre)
-				go tools.MQFW.Update("user", &map[string]interface{}{
-					"s_m_openid": openid,
-				}, &map[string]interface{}{
-					"$set": map[string]interface{}{
-						"s_headimage": headimage,
-						"o_jy":        pcUser["o_jy"],
-					},
-				}, false, false)
+				var pcresult, subkey string
+				var pcUser map[string]interface{}
+				if (*m)["i_vip_status"] != nil && util.IntAll((*m)["i_vip_status"]) > 0 {
+					shareid := util.ObjToString(r.EventKey)
+					subkey = util.ObjToString(redis.Get("sso", "pc_subscribe_"+shareid))
+					resNum := 0
+					resNum, subkey, _ = vipFastSubscribe(m, subkey, openid)
+					if resNum == -2 {
+						pcresult = "repeat"
+					} else if resNum == -3 {
+						pcresult = "fail"
+					} else if resNum == 1 {
+						pcresult = "ok"
+					}
+				} else {
+					pcUser, pcresult, subkey = pcSetUserKeys(*m, r.EventKey, pccodepre)
+					go tools.MQFW.Update("user", &map[string]interface{}{
+						"s_m_openid": openid,
+					}, &map[string]interface{}{
+						"$set": map[string]interface{}{
+							"s_headimage": headimage,
+							"o_jy":        pcUser["o_jy"],
+						},
+					}, false, false)
+				}
 				if pcresult == "ok" {
 					pchints := config.Sysconfig["pchints"].(map[string]interface{})
 					url := fmt.Sprintf(config.Sysconfig["proxysess"].(string), se.EncodeString(openid+","+user.UnionId+","+strconv.Itoa(int(time.Now().Unix()))+",rssset"))
@@ -1491,9 +1511,89 @@ func updateIsPush(openid string, status int) {
 	}, false, true)
 }
 
+//
+func vipFastSubscribe(user *map[string]interface{}, keyWord, openId string) (returnValue int, content string, hasOldKey bool) {
+	o_vipjy, _ := (*user)["o_vipjy"].(map[string]interface{})
+	var classify_index = 0 //未分类索引
+	//var keys_index = 0     未分类关键词组数量
+	var keysHas = ""    //已订阅关键词
+	var itemHas = false //是否有未分类
+	flag := false
+	//有分类
+	var keysFilter = strings.Split(keyWord, " ")
+	if o_vipjy != nil && o_vipjy["a_items"] != nil && len(o_vipjy["a_items"].([]interface{})) > 0 {
+		var keysCount = 0 //已订关键词数量
+		hasOldKey = true
+		a_items := util.ObjArrToMapArr(o_vipjy["a_items"].([]interface{}))
+		classify_index = len(a_items)
+		for i, v := range a_items {
+			keysMap := util.ObjArrToMapArr(v["a_key"].([]interface{}))
+			if v["s_item"].(string) == "未分类" {
+				classify_index = i
+				itemHas = true
+			}
+			keysCount += len(keysMap)
+			for _, k := range keysMap {
+				_keysMap := util.ObjArrToStringArr(k["key"].([]interface{}))
+				keys := ""
+				for _, m := range _keysMap {
+					if keys == "" {
+						keys += util.ObjToString(m)
+					} else {
+						keys += "+" + util.ObjToString(m)
+					}
+				}
+				for i, n := range keysFilter {
+					if keys == n {
+						if !strings.Contains(keysHas, n) {
+							keysHas += " " + n
+						}
+						keysFilter = append(keysFilter[:i], keysFilter[i+1:]...)
+					}
+				}
+			}
+			if len(keysFilter) == 0 {
+				//						log.Println("已经订阅过此关键词-----")
+				return -2, strings.Replace(keyWord, "+", " ", -1), hasOldKey
+			}
+		}
+		if keysCount+len(keysFilter) > 300 {
+			//vip订阅超过300组关键词
+			log.Println("vip订阅超过300组关键词-----")
+			return -3, strings.Replace(keyWord, "+", " ", -1), hasOldKey
+		}
+	}
+	var _key = make([]map[string]interface{}, len(keysFilter))
+	if itemHas {
+		for k, v := range keysFilter {
+			_key[k] = map[string]interface{}{"key": strings.Split(v, " ")}
+		}
+		flag = tools.MQFW.Update("user", `{"s_m_openid":"`+openId+`"}`, map[string]interface{}{
+			"$pushAll": bson.M{"o_vipjy.a_items." + strconv.Itoa(classify_index) + ".a_key": _key},
+		}, false, false)
+	} else {
+		var o_kws = make(map[string]interface{})
+		o_kws["s_item"] = "未分类"
+		for k, v := range keysFilter {
+			_key[k] = map[string]interface{}{"key": strings.Split(v, " ")}
+		}
+		o_kws["a_key"] = _key
+		o_kws["i_tips"] = 0
+		if o_kws != nil && len(o_kws) > 0 {
+			flag = tools.MQFW.Update("user", `{"s_m_openid":"`+openId+`"}`, bson.M{
+				"$push": bson.M{"o_vipjy.a_items": o_kws},
+			}, false, false)
+		}
+	}
+	if flag {
+		return 1, strings.Replace(strings.Join(keysFilter, " "), "+", " ", -1), hasOldKey
+	}
+	return
+}
+
 //快速订阅关键词
 func fastSubscribe(content, openId string) (int, string, bool) {
-	user, ok := tools.MQFW.FindOneByField("user", `{"s_m_openid":"`+openId+`"}`, `{"o_jy":1}`)
+	user, ok := tools.MQFW.FindOneByField("user", `{"s_m_openid":"`+openId+`"}`, `{"o_jy":1:"o_vipjy":1,"i_vip_status":1}`)
 	hasOldKey := false
 	if ok && user != nil {
 		//content = strings.TrimPrefix(content, "订阅")
@@ -1501,48 +1601,53 @@ func fastSubscribe(content, openId string) (int, string, bool) {
 		content = regexp.MustCompile("\\s+").ReplaceAllString(content, " ")
 		keyWord := strings.Replace(content, " ", "+", -1)
 		o_jy, _ := (*user)["o_jy"].(map[string]interface{})
-		if o_jy == nil {
-			o_jy = make(map[string]interface{})
-		}
-		a_key, _ := o_jy["a_key"].([]interface{})
-		if len(a_key) > 0 {
-			hasOldKey = true
-		}
-		//关键词达到最大数量
-		if len(a_key) >= 10 {
-			return -1, content, hasOldKey
-		}
-		//关键词已存在
-		for _, v := range a_key {
-			if tmp, ok := v.(map[string]interface{}); ok {
-				key := tmp["key"].([]interface{})
-				keys := ""
-				for _, val := range key {
-					if keys == "" {
-						keys += util.ObjToString(val)
-					} else {
-						keys += "+" + util.ObjToString(val)
+		i_vip_status := util.IntAll((*user)["i_vip_status"])
+		if (*user)["i_vip_status"] != nil && i_vip_status > 0 && keyWord != "" {
+			return vipFastSubscribe(user, keyWord, openId)
+		} else {
+			if o_jy == nil {
+				o_jy = make(map[string]interface{})
+			}
+			a_key, _ := o_jy["a_key"].([]interface{})
+			if len(a_key) > 0 {
+				hasOldKey = true
+			}
+			//关键词达到最大数量
+			if len(a_key) >= 10 {
+				return -1, content, hasOldKey
+			}
+			//关键词已存在
+			for _, v := range a_key {
+				if tmp, ok := v.(map[string]interface{}); ok {
+					key := tmp["key"].([]interface{})
+					keys := ""
+					for _, val := range key {
+						if keys == "" {
+							keys += util.ObjToString(val)
+						} else {
+							keys += "+" + util.ObjToString(val)
+						}
+					}
+					if keys == keyWord {
+						return -2, content, hasOldKey
 					}
-				}
-				if keys == keyWord {
-					return -2, content, hasOldKey
 				}
 			}
+			key := map[string][]string{}
+			key["key"] = strings.Split(keyWord, "+")
+			key["notkey"] = []string{}
+			key["infotype"] = []string{}
+			key["area"] = []string{}
+			a_key = append(a_key, key)
+			tools.MQFW.Update("user", `{"s_m_openid":"`+openId+`"}`, map[string]interface{}{
+				"$set": map[string]interface{}{
+					"i_ts_guide":        1,
+					"o_jy.a_key":        a_key,
+					"o_jy.l_modifydate": time.Now().Unix(),
+				},
+			}, false, false)
+			return 1, content, hasOldKey
 		}
-		key := map[string][]string{}
-		key["key"] = strings.Split(keyWord, "+")
-		key["notkey"] = []string{}
-		key["infotype"] = []string{}
-		key["area"] = []string{}
-		a_key = append(a_key, key)
-		tools.MQFW.Update("user", `{"s_m_openid":"`+openId+`"}`, map[string]interface{}{
-			"$set": map[string]interface{}{
-				"i_ts_guide":        1,
-				"o_jy.a_key":        a_key,
-				"o_jy.l_modifydate": time.Now().Unix(),
-			},
-		}, false, false)
-		return 1, content, hasOldKey
 	}
 	return 0, content, hasOldKey
 }

BIN
src/web/staticres/vipsubscribe/image/frame.png


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

@@ -229,7 +229,7 @@
     <script src="{{Msg "seo" "cdn"}}/js/jquery.cookie.js?v={{Msg "seo" "version"}}"></script>
     <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
 	{{include "/common/weixin.html"}}
-	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}1"></script>
+	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}2"></script>
     <script>
 		initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
         weui.loading();
@@ -238,6 +238,7 @@
             if(window.location.search.indexOf("page=1")>-1){
 				history.replaceState("{id:1}","","/front/vipsubscribe/toSetKeyWordPage")
             }else if(history.state){
+				alert(history.state)
                 window.history.go(-1)
 			}
         },500)

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

@@ -150,7 +150,7 @@
                     var _userData = r.userData;
                     var _vipData = _userData["o_vipjy"];
                     var a_infotype = _vipData["a_infotype"]
-                    if (a_infotype!=undefined&&a_infotype.split("、").length>0){
+                    if (a_infotype!=undefined&&a_infotype.split("、").length>0&&a_infotype!=""){
                         inputHtml(a_infotype.split("、"));
                         isLockButton (true);
                     }else{

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

@@ -61,7 +61,7 @@
                 </div>
                 <!-- 如果用户同时购买全国和全行业 则隐藏修改功能 -->
                 <div class="s_info_bottom">
-                    <span onclick="window.location.href='vip_subscribe_edit.html'">修改</span>
+                    <span onclick="window.location.href='/front/vipsubscribe/toEditSubPage'">修改</span>
                     <i class="iconfont icon-arrow"></i>
                 </div>
             </div>
@@ -90,10 +90,10 @@
                         </div>
                         <a href="/front/vipsubscribe/toSetPushSetPage" class="media_right" id="pushSet"></a>
                     </div>
-                    <div class="media_list" style="margin-top:.2rem;display: none;" id="auto_renew">
+                    <div class="media_list" style="margin-top:.2rem;" id="auto_renew">
                         <div class="media_left">
-                            <img src="/vipsubscribe/image/renew.png?v={{Msg "seo" "version"}}" alt="">
-                            <span>自动续费</span>
+                            <img src="/vipsubscribe/image/frame.png?v={{Msg "seo" "version"}}" alt="">
+                            <span>项目匹配</span>
                         </div>
                         <div class="media_switch">
                             <div class="weui-cell__ft">
@@ -145,7 +145,7 @@
     <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>
     <script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
 	{{include "/common/weixin.html"}}
-	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}1"></script>
+	<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}11"></script>
     <script>
 		initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
         $(function () {