Bladeren bron

fix:搜索置顶功能修改与数据导出查询修改

duxin 3 jaren geleden
bovenliggende
commit
b1e2deef69
1 gewijzigde bestanden met toevoegingen van 80 en 35 verwijderingen
  1. 80 35
      src/jfw/front/supsearch.go

+ 80 - 35
src/jfw/front/supsearch.go

@@ -9,6 +9,7 @@ import (
 	"math/rand"
 	"qfw/util"
 	"qfw/util/bidsearch"
+	"qfw/util/elastic"
 	"qfw/util/jy"
 	"qfw/util/redis"
 	"strconv"
@@ -393,53 +394,97 @@ func Newbids(p string) []interface{} {
 		if len(p) > 0 {
 			subtype = "拟建"
 		}
-		intns := make([]int, 0)
-		for i := 0; i < 10; i++ {
-			if len(intns) == 0 {
-				//			intns = append(intns, rand.Intn(100))
-				intns = append(intns, 0)
-			} else {
-				for {
-					v := rand.Intn(intns[(i-1)] + 100)
-					if v-intns[(i-1)] >= 30 {
-						intns = append(intns, v)
-						break
+		//查询置顶信息
+		var ss []map[string]interface{}
+		ls := top500(subtype)
+		if ls != nil && len(*ls) > 0 {
+			ss = append(ss, *ls...)
+		}
+		//pages = append(pages, ls)
+		if ls == nil || len(*ls) < 500 {
+			intns := make([]int, 0)
+			for i := 0; i < 10; i++ {
+				if len(intns) == 0 {
+					intns = append(intns, rand.Intn(100))
+					//intns = append(intns, 0)
+				} else {
+					for {
+						v := rand.Intn(intns[(i-1)] + 100)
+						if v-intns[(i-1)] > 50 {
+							intns = append(intns, v)
+							break
+						}
 					}
 				}
 			}
+			for i := 0; i < 10; i++ {
+				_, list = getLastNewsData("", "", "", "", subtype, "", "", "", "", "", "", "", "Y", intns[i], true, false, "")
+				ss = append(ss, *list...)
+				// pages = append(pages, list)
+			}
 		}
+		data := duplicateRemoval(ss)
 		for i := 0; i < 10; i++ {
-			_, list = getLastNewsData("", "", "", "", subtype, "", "", "", "", "", "", "", "Y", intns[i], true, false, "")
-			for k, v := range *list {
-				v["k"] = (k + 1) + i*50
-				t := time.Unix(util.Int64All(v["publishtime"]), 0)
-				v["timetemp"] = fmt.Sprint(util.Int64All(v["publishtime"]))
-				v["_id"] = util.EncodeArticleId2ByCheck(util.InterfaceToStr(v["_id"]))
-				v["time"] = util.TimeDiff(t)
-				var stp = ""
-				if v["subtype"] != nil {
-					stp, _ = v["subtype"].(string)
-				} else {
-					stp = ""
-				}
-				if stp == "" && v["toptype"] != nil {
-					stp, _ = v["toptype"].(string)
-				}
-				area, _ := v["area"].(string)
-				indtry := util.ObjToString(v["industry"])
-				v["stypeadd"], v["areaadd"], v["indadd"] = classify(stp, area, indtry)
-				if v["filetext"] != nil {
-					delete(v, "filetext")
-					v["fileExists"] = true
-				}
+			sta := i * 50
+			end := i*50 + 50
+			if end > len(data) {
+				pages = append(pages, data[end:])
+				break
 			}
-			pages = append(pages, list)
+			pages = append(pages, data[sta:end])
 		}
 		redis.Put("other", "index_list"+p, pages, 60*60*24*2)
 		pages, _ = redis.Get("other", "index_list"+p).([]interface{})
 	}
 	return pages
 }
+func duplicateRemoval(ss []map[string]interface{}) []map[string]interface{} {
+	d := make(map[string]interface{})
+	data := []map[string]interface{}{}
+	for _, v := range ss {
+		id := util.InterfaceToStr(v["_id"])
+		if _, ok := d[id]; ok || id == "" {
+			continue
+		}
+		t := time.Unix(util.Int64All(v["publishtime"]), 0)
+		v["timetemp"] = fmt.Sprint(util.Int64All(v["publishtime"]))
+		v["_id"] = util.EncodeArticleId2ByCheck(id)
+		v["time"] = util.TimeDiff(t)
+		var stp = ""
+		if v["subtype"] != nil {
+			stp, _ = v["subtype"].(string)
+		} else {
+			stp = ""
+		}
+		if stp == "" && v["toptype"] != nil {
+			stp, _ = v["toptype"].(string)
+		}
+		area, _ := v["area"].(string)
+		indtry := util.ObjToString(v["industry"])
+		v["stypeadd"], v["areaadd"], v["indadd"] = classify(stp, area, indtry)
+		if v["filetext"] != nil {
+			delete(v, "filetext")
+			v["fileExists"] = true
+		}
+		if _, ok := d[id]; ok {
+			continue
+		}
+		d[id] = true
+		v["k"] = util.IntAll(v["k"]) + 1
+		data = append(data, v)
+	}
+	return data
+}
+
+func top500(industry string) (list *[]map[string]interface{}) {
+	qstr := `{"query": {"bool": {"should": [{"term": {"dataweight": 1}}]}}}`
+	repl := elastic.GetAllByNgram(INDEX, TYPE, qstr, `"title"`, `{"publishtime":-1}`, bidSearch_field, 0, 500, 115, false)
+	if repl != nil && *repl != nil && len(*repl) > 0 {
+		public.BidListConvert(industry, repl)
+		list = repl
+	}
+	return
+}
 
 //二维码图片
 func (p *Pcsearch) Qr(t string) error {