|
@@ -1723,7 +1723,7 @@ func (m *Front) WxpushView() error {
|
|
|
if myopenid == "" {
|
|
|
return m.Redirect("/swordfish/share/-1")
|
|
|
}
|
|
|
- a_key, list := getWxPushViewData(myopenid, 1)
|
|
|
+ a_key, list := getWxPushViewData(myopenid, "", 1)
|
|
|
jyutil.BidListConvert("", list)
|
|
|
m.T["firstPage"] = list
|
|
|
m.T["hasNextPage"] = list != nil && len(*list) == wx_pageSize
|
|
@@ -1742,7 +1742,7 @@ func (m *Front) WxpushViewPaging() {
|
|
|
var list *[]map[string]interface{}
|
|
|
pageNum, _ := m.GetInteger("pageNum")
|
|
|
if myopenid := m.Session().Get("s_m_openid"); myopenid != nil && pageNum <= wx_maxPageNum {
|
|
|
- _, list = getWxPushViewData(myopenid.(string), pageNum)
|
|
|
+ _, list = getWxPushViewData(myopenid.(string), "", pageNum)
|
|
|
}
|
|
|
jyutil.BidListConvert("", list)
|
|
|
m.ServeJson(map[string]interface{}{
|
|
@@ -1750,7 +1750,7 @@ func (m *Front) WxpushViewPaging() {
|
|
|
"hasNextPage": list != nil && len(*list) == wx_pageSize && pageNum < wx_maxPageNum,
|
|
|
})
|
|
|
}
|
|
|
-func getWxPushViewData(myopenid string, pageNum int) (keys []interface{}, list *[]map[string]interface{}) {
|
|
|
+func getWxPushViewData(myopenid, allquery string, pageNum int) (keys []interface{}, list *[]map[string]interface{}) {
|
|
|
if myopenid == "" {
|
|
|
return
|
|
|
}
|
|
@@ -1780,7 +1780,7 @@ func getWxPushViewData(myopenid string, pageNum int) (keys []interface{}, list *
|
|
|
if err == nil {
|
|
|
json.Unmarshal(_bs, &allkeys)
|
|
|
}
|
|
|
- list = elastic.GetResForJY(INDEX, TYPE, allkeys, "", findf, `{"publishtime":"desc"}`, bidSearch_field, (pageNum-1)*wx_pageSize, wx_pageSize)
|
|
|
+ list = elastic.GetResForJY(INDEX, TYPE, allkeys, allquery, findf, `{"publishtime":"desc"}`, bidSearch_field, (pageNum-1)*wx_pageSize, wx_pageSize)
|
|
|
if list != nil {
|
|
|
for _, v := range *list {
|
|
|
v["_id"] = util.EncodeArticleId2ByCheck(util.ObjToString(v["_id"]))
|
|
@@ -2640,6 +2640,61 @@ func classify(stp, area, industry string) (string, string, string) {
|
|
|
}
|
|
|
return tpadd, areaadd, induadd
|
|
|
}
|
|
|
+func (f *Front) HasPushHistory() {
|
|
|
+ myopenid, _ := f.GetSession("s_m_openid").(string)
|
|
|
+ if myopenid == "" {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ user, ok := mongodb.FindOneByField("user", map[string]interface{}{
|
|
|
+ "s_m_openid": myopenid,
|
|
|
+ "i_appid": 2,
|
|
|
+ }, `{"o_jy":1}`)
|
|
|
+ var o_jy map[string]interface{}
|
|
|
+ if ok && user != nil {
|
|
|
+ o_jy, _ = (*user)["o_jy"].(map[string]interface{})
|
|
|
+ }
|
|
|
+ nowUnix := time.Now().Unix()
|
|
|
+ haskey := false
|
|
|
+ if o_jy != nil {
|
|
|
+ a_key, _ := o_jy["a_key"].([]interface{})
|
|
|
+ for _, vi := range a_key {
|
|
|
+ v, _ := vi.(map[string]interface{})
|
|
|
+ keys_a := v["key"].([]interface{})
|
|
|
+ if strings.TrimSpace(strings.Join(util.ObjArrToStringArr(keys_a), "")) != "" {
|
|
|
+ haskey = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ haskey = true
|
|
|
+ }
|
|
|
+ thistime, list := getHistorypush(nowUnix, 0, myopenid, nil, 0)
|
|
|
+ if haskey && (list == nil || len(*list) == 0) {
|
|
|
+ list = &[]map[string]interface{}{}
|
|
|
+ flag, data := makeHistoryDatas(util.BsonIdToSId((*user)["_id"]), myopenid, o_jy)
|
|
|
+ if flag && data != nil {
|
|
|
+ tmp := changeMapKeyForCass(data)
|
|
|
+ if ats, ok := tmp["o_pushinfo"].(map[string]interface{}); ok {
|
|
|
+ thistime = util.Int64All(tmp["l_date"])
|
|
|
+ tmp["count"] = len(ats)
|
|
|
+ *list = append(*list, tmp)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //
|
|
|
+ var success bool
|
|
|
+ if list != nil && len(*list) > 0 {
|
|
|
+ success = true
|
|
|
+ }
|
|
|
+ //
|
|
|
+ f.ServeJson(map[string]interface{}{
|
|
|
+ "haskey": haskey,
|
|
|
+ "data": list,
|
|
|
+ "thistime": thistime,
|
|
|
+ "success": success,
|
|
|
+ "isInTSguide": isInTSguide(myopenid),
|
|
|
+ })
|
|
|
+}
|
|
|
|
|
|
//历史推送
|
|
|
func (f *Front) Historypush() error {
|
|
@@ -2649,19 +2704,6 @@ func (f *Front) Historypush() error {
|
|
|
}
|
|
|
mynickname, _ := f.Session().Get("s_nickname").(string)
|
|
|
myavatar, _ := f.Session().Get("s_avatar").(string)
|
|
|
- var thistime int64
|
|
|
- var list *[]map[string]interface{}
|
|
|
- var success bool
|
|
|
- if myopenid != "" {
|
|
|
- lasttime := time.Now().Local().Unix()
|
|
|
- thistime, list = getHistorypush(lasttime, 0, myopenid, nil, 0)
|
|
|
- if list != nil && len(*list) > 0 {
|
|
|
- success = true
|
|
|
- }
|
|
|
- }
|
|
|
- f.T["data"] = list
|
|
|
- f.T["thistime"] = thistime
|
|
|
- f.T["success"] = success
|
|
|
f.T["nickname"] = mynickname
|
|
|
f.T["avatar"] = myavatar
|
|
|
f.T["signature"] = wx.SignJSSDK(f.Site() + f.Url())
|
|
@@ -2900,3 +2942,85 @@ func wxPushViewDatas(index, itype string, keys []elastic.KeyConfig, allquery, fi
|
|
|
return nil
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+//保存最近7天的数据到历史记录
|
|
|
+func makeHistoryDatas(id, openid string, o_jy map[string]interface{}) (bool, map[string]interface{}) {
|
|
|
+ allquery := `{"range":{"publishtime":{"gt":%s}}}`
|
|
|
+ allquery = fmt.Sprintf(allquery, fmt.Sprint(time.Now().AddDate(0, 0, -7).Unix()))
|
|
|
+ //allquery := ``
|
|
|
+ _, list := getWxPushViewData(openid, allquery, 1)
|
|
|
+ if list == nil || len(*list) == 0 {
|
|
|
+ return true, nil
|
|
|
+ }
|
|
|
+ filterData := &FilterData{}
|
|
|
+ filterData.Start(openid)
|
|
|
+ defer filterData.End()
|
|
|
+ var allkeysTemp []elastic.KeyConfig
|
|
|
+ _bs, err := json.Marshal(o_jy["a_key"])
|
|
|
+ if err == nil {
|
|
|
+ json.Unmarshal(_bs, &allkeysTemp)
|
|
|
+ }
|
|
|
+ keysTemp := []string{} //原始关键词
|
|
|
+ for _, vs := range allkeysTemp {
|
|
|
+ keysTemp = append(keysTemp, strings.Join(vs.Keys, "+"))
|
|
|
+ }
|
|
|
+ o_pushinfo := map[string]map[string]interface{}{}
|
|
|
+ publishTitle := map[string]bool{}
|
|
|
+ str := fmt.Sprintf("<div>根据您设置的关键词(%s),给您推送以下信息:</div>", strings.Join(keysTemp, ";"))
|
|
|
+ i := 0
|
|
|
+ for _, v := range *list {
|
|
|
+ title := strings.Replace(v["title"].(string), "\n", "", -1)
|
|
|
+ area := util.ObjToString(v["area"])
|
|
|
+ if publishTitle[area+title] {
|
|
|
+ log.Println("重复标题", title)
|
|
|
+ continue
|
|
|
+ } else {
|
|
|
+ publishTitle[area+title] = true
|
|
|
+ }
|
|
|
+ infoid := util.ObjToString(v["_id"])
|
|
|
+ //邮件附件
|
|
|
+ if filterData.IsExists(util.BsonIdToSId(v["_id"])) {
|
|
|
+ //continue
|
|
|
+ }
|
|
|
+ i++
|
|
|
+ industry := ""
|
|
|
+ if v["s_subscopeclass"] != nil {
|
|
|
+ k2sub := strings.Split(util.ObjToString(v["s_subscopeclass"]), ",")
|
|
|
+ if len(k2sub) > 0 {
|
|
|
+ industry = k2sub[0]
|
|
|
+ if industry != "" {
|
|
|
+ ss := strings.Split(industry, "_")
|
|
|
+ if len(ss) > 1 {
|
|
|
+ industry = ss[0]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ str += "<div class='tslist'><span class='xh'>" + fmt.Sprintf("%d", i) + ".</span><a class='bt' target='_blank' eid='" + infoid + "' href='" + util.ObjToString(v["href"]) + "'>" + title + "</a></div>"
|
|
|
+ o_pushinfo[strconv.Itoa(i)] = map[string]interface{}{
|
|
|
+ "publishtime": v["publishtime"],
|
|
|
+ "stype": util.ObjToString(v["type"]),
|
|
|
+ "topstype": util.ObjToString(v["toptype"]),
|
|
|
+ "substype": util.ObjToString(v["subtype"]),
|
|
|
+ "subscopeclass": industry,
|
|
|
+ "buyer": v["buyer"],
|
|
|
+ "projectname": v["projectname"],
|
|
|
+ "budget": v["budget"],
|
|
|
+ "bidopentime": v["bidopentime"],
|
|
|
+ "winner": v["winner"],
|
|
|
+ "bidamount": v["bidamount"],
|
|
|
+ }
|
|
|
+ }
|
|
|
+ md, _ := json.Marshal(o_pushinfo)
|
|
|
+ wxpush := map[string]interface{}{
|
|
|
+ "id": time.Now().Format(util.Date_Short_Layout),
|
|
|
+ "openid": openid,
|
|
|
+ "date": time.Now().Unix(),
|
|
|
+ "words": keysTemp,
|
|
|
+ "uid": id,
|
|
|
+ "content": str,
|
|
|
+ "pushinfo": string(md),
|
|
|
+ }
|
|
|
+ flag := cassandra.SaveCacheByTimeOut("jy_push", wxpush, 10)
|
|
|
+ return flag, wxpush
|
|
|
+}
|