Browse Source

wip:最新标讯 标题判重

wangshan 11 tháng trước cách đây
mục cha
commit
002edd51bd

+ 2 - 2
jyBXBase/rpc/init/init.go

@@ -4,11 +4,11 @@ import (
 	MC "app.yhyue.com/moapp/jybase/common"
 	"app.yhyue.com/moapp/jypkg/compatible"
 	"app.yhyue.com/moapp/jypkg/middleground"
+	"bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXBase/entity"
+	"bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXBase/rpc/internal/config"
 	"flag"
 	_ "github.com/go-sql-driver/mysql"
 	"github.com/zeromicro/go-zero/core/conf"
-	"bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXBase/entity"
-	"bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXBase/rpc/internal/config"
 )
 
 var configFile = flag.String("cf", "etc/bxbase.yaml", "the config file")

+ 5 - 2
jyBXBase/rpc/internal/logic/newestbiddinglogic.go

@@ -1,8 +1,8 @@
 package logic
 
 import (
-	"context"
 	"bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXBase/rpc/model"
+	"context"
 	"log"
 	"time"
 
@@ -114,7 +114,10 @@ func (l *NewestBiddingLogic) NewestBidding(in *bxbase.NewestBiddingReq) (*bxbase
 	} else {
 		go model.ExtendNewListCache(n, in, r.Data.List)
 	}
-	model.MakeCollection(in.UserId, r.Data.List)
+	if len(r.Data.List) > 0 {
+		r.Data.List = model.DuplicatedByTitle(r.Data.List)
+		model.MakeCollection(in.UserId, r.Data.List)
+	}
 	log.Println(in.PositionId, "--接口耗时:", time.Since(t).Seconds())
 	return r, nil
 }

+ 26 - 6
jyBXBase/rpc/model/collectionInfo.go

@@ -8,13 +8,33 @@ import (
 	"strings"
 )
 
-//是否收藏
-func MakeCollection(userId string, list []*bxbase.NewestList) {
-	if list == nil || len(list) == 0 {
-		return
+// 标题判重
+func DuplicatedByTitle(list []*bxbase.NewestList) (res []*bxbase.NewestList) {
+	var (
+		i            int64 = 0
+		duplicateMap       = map[string]bool{}
+	)
+	for _, v := range list {
+		//判重
+		if i >= IC.C.NewsLimitNum {
+			break
+		}
+		if duplicateMap[v.Title] {
+			continue
+		}
+		i++
+		res = append(res, v)
 	}
-	param := []interface{}{userId}
-	wh := []string{}
+	return
+}
+
+// 是否收藏
+func MakeCollection(userId string, list []*bxbase.NewestList) {
+	var (
+		param = []interface{}{userId}
+		wh    = []string{}
+	)
+
 	for _, v := range list {
 		array := ME.DecodeArticleId2ByCheck(v.Id)
 		if len(array) == 1 && array[0] != "" {

+ 10 - 3
jyBXBase/rpc/model/newestBidding.go

@@ -86,7 +86,7 @@ func GetNewestInfo(userId, userType string, newUserId int64) *NewestInfo {
 		TableName:    mysqlTables[userType],
 		MysqlDb:      IC.BaseServiceMysql,
 		NewUserId:    newUserId,
-		NewsLimitNum: IC.C.NewsLimitNum,
+		NewsLimitNum: IC.C.NewsLimitNum + 10,
 	}
 	return nt
 }
@@ -224,6 +224,9 @@ func (n *NewestInfo) GetPushHistory() (res []*bxbase.NewestList) {
 		}
 		//
 		for _, v := range infos {
+			if v.Title == "" {
+				continue
+			}
 			res = append(res, v)
 		}
 	}
@@ -255,7 +258,7 @@ func NewestQuery(city, keys, subtype string) (str string) {
 	if len(bools) > 0 {
 		minimum_should_match = 1
 	}
-	str = fmt.Sprintf(query_city_hkeys, strings.Join(musts, ","), strings.Join(bools, ","), minimum_should_match, IC.C.NewsLimitNum)
+	str = fmt.Sprintf(query_city_hkeys, strings.Join(musts, ","), strings.Join(bools, ","), minimum_should_match, IC.C.NewsLimitNum+10)
 	logx.Info("str:", str)
 	return
 }
@@ -265,11 +268,15 @@ func NewestES(doSearchStr string) (res []*bxbase.NewestList) {
 	list := elastic.Get(search_index, search_type, doSearchStr)
 	if list != nil && len(*list) > 0 {
 		for _, v := range *list {
+			title := MC.ObjToString(v["title"])
+			if title == "" {
+				continue
+			}
 			_id := mongodb.BsonIdToSId(v["_id"])
 			isValidFile, _ := v["isValidFile"].(bool)
 			res = append(res, &bxbase.NewestList{
 				Id:          ME.EncodeArticleId2ByCheck(_id),
-				Title:       MC.ObjToString(v["title"]),
+				Title:       title,
 				Subtype:     MC.If(v["subtype"] != nil, MC.ObjToString(v["subtype"]), MC.ObjToString(v["toptype"])).(string),
 				Area:        MC.If(MC.ObjToString(v["area"]) == "A", "全国", MC.ObjToString(v["area"])).(string),
 				Buyerclass:  MC.ObjToString(v["buyerclass"]),