Browse Source

feat:最新招标信息

wangshan 3 years ago
parent
commit
e9b42612af

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

@@ -10,6 +10,7 @@ import (
 	"jyBXBase/rpc/model"
 	"log"
 	"strings"
+	"time"
 
 	"jyBXBase/rpc/internal/svc"
 	"jyBXBase/rpc/type/bxbase"
@@ -33,6 +34,7 @@ func NewNewestBiddingLogic(ctx context.Context, svcCtx *svc.ServiceContext) *New
 
 // 首页最新招标信息
 func (l *NewestBiddingLogic) NewestBidding(in *bxbase.NewestBiddingReq) (*bxbase.NewsetBiddingResp, error) {
+	t := time.Now()
 	r := func(in *bxbase.NewestBiddingReq) *bxbase.NewsetBiddingResp {
 		var res = &bxbase.NewsetBiddingResp{
 			Data: &bxbase.NewsetBidding{
@@ -42,6 +44,7 @@ func (l *NewestBiddingLogic) NewestBidding(in *bxbase.NewestBiddingReq) (*bxbase
 		log.Println("userid:", in.UserId)
 		rks := MC.If(in.UserId != "", in.UserId, in.City).(string)
 		redisByte, err := redis.GetBytes("other", "p1_indexMessage_new_"+rks)
+		log.Println(len(*redisByte))
 		if redisByte != nil && len(*redisByte) > 0 && err != nil {
 			err := json.Unmarshal(*redisByte, res.Data)
 			if err != nil {
@@ -50,6 +53,7 @@ func (l *NewestBiddingLogic) NewestBidding(in *bxbase.NewestBiddingReq) (*bxbase
 			}
 			return res
 		}
+		log.Println("-------------------0")
 		//登录用户
 		if in.UserId != "" {
 			//获取订阅信息
@@ -98,8 +102,9 @@ func (l *NewestBiddingLogic) NewestBidding(in *bxbase.NewestBiddingReq) (*bxbase
 				return res
 			}
 		}
+		log.Println("-------------------1")
 		if in.IsSearch == 2 { //定位查询
-			query := model.NewestQuery(in.City, "")
+			query := model.NewestQuery(rks, "")
 			result := model.NewestES(query)
 			res.Data.IsVip = false
 			res.Data.HasSubKeys = false
@@ -107,19 +112,23 @@ func (l *NewestBiddingLogic) NewestBidding(in *bxbase.NewestBiddingReq) (*bxbase
 			res.Data.List = result
 			return res
 		}
+		log.Println("-------------------2")
 		return res
 	}(in)
 	if r.Data.Count > 0 {
 		rks := MC.If(in.UserId != "", in.UserId, in.City).(string)
-		b, err := json.Marshal(r.Data.List)
+		b, err := json.Marshal(r.Data)
 		if err != nil {
-			logx.Info("保存缓存 序列化异常")
+			r.ErrCode = -1
+			r.ErrMsg = fmt.Sprintf("保存缓存 序列化异常,err:%s", err.Error())
 		} else {
-			if err := redis.PutBytes("other", "p1_indexMessage_new_"+rks, &b, 24*60*60); err != nil {
-				logx.Info("保存缓存 redis 异常")
+			if err := redis.PutBytes("other", "p1_indexMessage_new_"+rks, &b, 2*60*60); err != nil {
+				r.ErrCode = -1
+				r.ErrMsg = fmt.Sprintf("保存缓存 redis 异常,err:%s", err.Error())
 			}
 
 		}
 	}
+	log.Println("接口耗时:", time.Since(t).Seconds())
 	return r, nil
 }

+ 8 - 4
jyBXBase/rpc/model/newestBidding.go

@@ -6,6 +6,7 @@ import (
 	elastic "app.yhyue.com/moapp/jybase/esv1"
 	"app.yhyue.com/moapp/jybase/mongodb"
 	"fmt"
+	"github.com/zeromicro/go-zero/core/logx"
 	"go.mongodb.org/mongo-driver/bson/primitive"
 	"jyBXBase/rpc/bxbase"
 	IC "jyBXBase/rpc/init"
@@ -21,11 +22,13 @@ const (
 	multi_match         = `{"multi_match": {"query": %s,"type": "phrase", "fields": ["title"]}}`
 	query_bool_must     = `{"terms":{"%s":[%s]}}`
 	query_bool_must_and = `{"bool":{"must":[%s],"must_not":[%s]}}`
+	search_field        = `"_id","area", "publishtime", "s_subscopeclass", "subtype", "title", "toptype", "type", "buyerclass","bidamount","budget","projectname","buyer","bidopentime","s_winner","filetext"`
+	query_city_hkeys    = `{"query":{"bool":{"must":[%s],"should":[%s],"minimum_should_match": 1}},"highlight": {"pre_tags": ["<a>"],"post_tags": ["</a>"],"fields": {"title": {"fragment_size": 0,"number_of_fragments": 1}}},"_source":[` + search_field + `],"sort":[{"publishtime":"desc"},{"budget":"desc"}],"from":0,"size":20}`
 )
 
 func GetPushHistory(userId string) (res []*bxbase.NewestList) {
 	findSQL := "select infoid,matchkeys,attachment_count,budget,bidamount from pushsubscribe where userid = '" + userId + "'  and date >= %d order by id desc limit 50"
-	list := IC.PushMysql.SelectBySql(fmt.Sprintf(findSQL, time.Now().AddDate(0, 0, -7).Unix()))
+	list := IC.PushMysql.SelectBySql(fmt.Sprintf(findSQL, time.Now().AddDate(-1, 0, -7).Unix()))
 	if len(*list) > 0 {
 		m := map[string]bool{}
 		es_ids := []string{}
@@ -131,7 +134,8 @@ func NewestQuery(city, keys string) (str string) {
 	if city != "" {
 		musts = append(musts, fmt.Sprintf(query_bool_must, "city", `"`+city+`"`))
 	}
-	str = fmt.Sprintf(query, strings.Join(musts, ","), strings.Join(bools, ","))
+	str = fmt.Sprintf(query_city_hkeys, strings.Join(musts, ","), strings.Join(bools, ","))
+	logx.Info("str:", str)
 	return
 }
 
@@ -144,8 +148,8 @@ func NewestES(doSearchStr string) (res []*bxbase.NewestList) {
 			res = append(res, &bxbase.NewestList{
 				Id:         ME.EncodeArticleId2ByCheck(_id),
 				Title:      MC.ObjToString(v["title"]),
-				Subtype:    MC.If(v["subtype"] != nil, v["subtype"], v["toptype"]).(string),
-				Area:       MC.If(MC.ObjToString(v["area"]) == "A", "全国", v["area"]).(string),
+				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"]),
 				City:       MC.ObjToString(v["city"]),
 				Industry:   MC.If(MC.ObjToString(v["s_subscopeclass"]) != "", strings.Split(strings.Split(MC.ObjToString(v["s_subscopeclass"]), ",")[0], "_")[0], "").(string),