WH01243 1 жил өмнө
parent
commit
b6554ab97a

+ 132 - 51
src/jfw/front/searchOptimize.go

@@ -1,6 +1,13 @@
 package front
 
 import (
+	util "app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/encrypt"
+	elastic "app.yhyue.com/moapp/jybase/es"
+	"app.yhyue.com/moapp/jybase/redis"
+	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/bidsearch"
+	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
+	pc "app.yhyue.com/moapp/jypkg/public"
 	"encoding/json"
 	"fmt"
 	"jy/src/jfw/config"
@@ -10,14 +17,6 @@ import (
 	"strconv"
 	"strings"
 	"time"
-
-	util "app.yhyue.com/moapp/jybase/common"
-	"app.yhyue.com/moapp/jybase/encrypt"
-	elastic "app.yhyue.com/moapp/jybase/es"
-	"app.yhyue.com/moapp/jybase/redis"
-	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/bidsearch"
-	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
-	pc "app.yhyue.com/moapp/jypkg/public"
 )
 
 const (
@@ -26,6 +25,7 @@ const (
 	queryBoolShould         = `{"bool":{"should":[%s],"minimum_should_match": 1}}`
 	queryBoolMustBoolShould = `{"bool":{"must":[{"range":{"bidamount":{%s}}}]}},{"bool":{"must":[{"range":{"budget":{%s}}}],"must_not":[{"range":{"bidamount":{"gte":-1}}}]}}`
 	queryBoolMust           = `{"bool":{"must":[{"terms":{"s_subscopeclass":[%s]}}]}}`
+	queryBoolMustA          = `{"bool":{"must":[{"terms":{"%s":[%s]}}]}}`
 	queryBoolMustTerm       = `{"bool": {"must": [{ "term": {"isValidFile": %t }}]}}`
 	queryExists             = `{"constant_score":{"filter":{"exists":{"field":"%s"}}}}`
 	gte                     = `"gte": %s`
@@ -85,13 +85,21 @@ type SearchOptimize struct {
 	VipStatus           int           `json:"vipStatus"`
 	BigMemberStatus     int           `json:"bigMemberStatus"`
 	EntStatus           int           `json:"entStatus"`
-	HeightKeys          string        `json:"heightKeys"` //需要高亮的关键词
-	R                   *http.Request `json:"r"`          //http.request
-	District            string        `json:"district"`   //需要高亮的关键词
+	HeightKeys          string        `json:"heightKeys"`     //需要高亮的关键词
+	R                   *http.Request `json:"r"`              //http.request
+	District            string        `json:"district"`       //需要高亮的关键词
+	PropertyForm        string        `json:"propertyForm"`   //物业业态
+	ExpireTime          string        `json:"expireTime"`     //到期时间
+	Subinformation      string        `json:"subinformation"` //业务类型
+	Period              int           `json:"period"`         //合同周期
+	Changehand          int           `json:"changehand"`     //价格区间
+	Scale               int           `json:"scale"`          //换手率
 }
 
 // NewSearchOptimize  初始化
-func NewSearchOptimize(userId, phone, province, city, district, subtype, topType, publishTime, selectType, price, industry, buyerClass, buyerTel, winnerTel, fileExists, keyWords, additionalWords, exclusionWords, platform, territorialization string, pageNum, pageSize, searchGroup, searchMode, wordsMode int, userInfo jy.VipState, searchTypeSwitch bool, r *http.Request) *SearchOptimize {
+func NewSearchOptimize(userId, phone, province, city, district, subtype, topType, publishTime, selectType, price, industry, buyerClass, buyerTel, winnerTel, fileExists, keyWords, additionalWords, exclusionWords, platform, territorialization, expireTime, propertyForm, subinformation string,
+	pageNum, pageSize, searchGroup, searchMode, wordsMode, period, scale, changehand int,
+	userInfo jy.VipState, searchTypeSwitch bool, r *http.Request) *SearchOptimize {
 	var so = &SearchOptimize{
 		AppId:            "10000",
 		UserId:           userId,
@@ -126,6 +134,12 @@ func NewSearchOptimize(userId, phone, province, city, district, subtype, topType
 		EntStatus:        userInfo.EntMember,
 		R:                r,
 		District:         district,
+		PropertyForm:     propertyForm,
+		ExpireTime:       expireTime,
+		Subinformation:   subinformation,
+		Period:           period,
+		Changehand:       changehand,
+		Scale:            scale,
 	}
 	so.SearchParamsHandle()
 	return so
@@ -392,7 +406,6 @@ func (so *SearchOptimize) GetSearchQuery(mustQuery string) (qstr string) {
 		findFields = fmt.Sprintf(`"%s"`, strings.Join(selectTypeArr, "\",\""))
 	}
 	switchBool := strings.Contains(findFields, "detail") && strings.Contains(findFields, "title") && so.SearchTypeSwitch
-
 	//此时关键词中间有+进行隔离
 	if so.KeyWords != "" {
 		var (
@@ -404,13 +417,13 @@ func (so *SearchOptimize) GetSearchQuery(mustQuery string) (qstr string) {
 			}
 			//单个字  搜索范围 有全文或者附件 无标题 例如:学 虚拟机 detail  搜索的时候加上标题
 			if len([]rune(elastic.ReplaceYH(v))) == 1 && bidsearch.DetailFileORTitle(findFields) {
-				findFields += `,"title"`
+				findFields += `, "title"`
 			} else if switchBool && len([]rune(elastic.ReplaceYH(v))) > 1 {
 				//标题 全文搜索 搜索类型开关打开 默认搜索全文;(全文包含标题)(单字排除)
-				if strings.Contains(findFields, `"title",`) {
-					findFields = strings.Replace(findFields, `"title",`, ``, -1)
-				} else if strings.Contains(findFields, `,"title"`) {
-					findFields = strings.Replace(findFields, `,"title"`, ``, -1)
+				if strings.Contains(findFields, `"title", `) {
+					findFields = strings.Replace(findFields, `"title", `, ``, -1)
+				} else if strings.Contains(findFields, `, "title"`) {
+					findFields = strings.Replace(findFields, `, "title"`, ``, -1)
 				}
 			}
 			keyWordsMusts = append(keyWordsMusts, fmt.Sprintf(fmt.Sprintf(multiMatch, "%s", findFields), elastic.ReplaceYH(v)))
@@ -439,13 +452,13 @@ func (so *SearchOptimize) GetSearchQuery(mustQuery string) (qstr string) {
 				//单个字  搜索范围 有全文或者附件 无标题 例如:学 虚拟机 detail  搜索的时候加上标题
 				//detail 正文不支持单字查询
 				if len([]rune(elastic.ReplaceYH(v))) == 1 && bidsearch.DetailFileORTitle(findFields) {
-					findFields += `,"title"`
+					findFields += `, "title"`
 				} else if switchBool && len([]rune(elastic.ReplaceYH(v))) > 1 {
 					//标题 全文搜索 搜索类型开关打开 默认搜索全文;(全文包含标题)(单字排除)
-					if strings.Contains(findFields, `"title",`) {
-						findFields = strings.Replace(findFields, `"title",`, ``, -1)
-					} else if strings.Contains(findFields, `,"title"`) {
-						findFields = strings.Replace(findFields, `,"title"`, ``, -1)
+					if strings.Contains(findFields, `"title", `) {
+						findFields = strings.Replace(findFields, `"title", `, ``, -1)
+					} else if strings.Contains(findFields, `, "title"`) {
+						findFields = strings.Replace(findFields, `, "title"`, ``, -1)
 					}
 				}
 				addWordsMust = append(addWordsMust, fmt.Sprintf(fmt.Sprintf(multiMatch, "%s", findFields), elastic.ReplaceYH(v)))
@@ -484,7 +497,7 @@ func (so *SearchOptimize) GetSearchQuery(mustQuery string) (qstr string) {
 				if len([]rune(elastic.ReplaceYH(v))) == 1 {
 					//单个字 搜索范围 有全文或者附件 无标题 例如:学 虚拟机 detail  搜索的时候加上标题
 					if bidsearch.DetailFileORTitle(findFields) {
-						notKeyMultiMatch = fmt.Sprintf(multiMatch, "%s", findFields+`,"title"`)
+						notKeyMultiMatch = fmt.Sprintf(multiMatch, "%s", findFields+`, "title"`)
 					}
 				}
 				notKeyMustNot = append(notKeyMustNot, fmt.Sprintf(notKeyMultiMatch, elastic.ReplaceYH(v)))
@@ -494,8 +507,31 @@ func (so *SearchOptimize) GetSearchQuery(mustQuery string) (qstr string) {
 	}
 	//行业
 	if so.Industry != "" && isLogin {
-		musts = append(musts, fmt.Sprintf(queryBoolMust, `"`+strings.ReplaceAll(so.Industry, ",", `","`)+`"`))
+		musts = append(musts, fmt.Sprintf(queryBoolMust, `"`+strings.ReplaceAll(so.Industry, ", ", `", "`)+`"`))
 	}
+	/*if so.BidField == "BIProperty" {
+	      musts = append(musts, fmt.Sprintf(queryBoolMustA, "tag_topinformation", `"情报_物业"`))
+	  }
+	  //物业业态
+	  if so.PropertyForm != "" && isLogin {
+	      musts = append(musts, fmt.Sprintf(queryBoolMustA, "property form", `"`+strings.ReplaceAll(so.PropertyForm, ", ", `", "`)+`"`))
+	  }
+	  //业务类型
+	  if so.Subinformation != "" && isLogin {
+	      musts = append(musts, fmt.Sprintf(queryBoolMustA, "tag_subinformation", `"`+strings.ReplaceAll(so.Subinformation, ", ", `", "`)+`"`))
+	  }
+	  //价格区间
+	  if so.Scale != 0 && isLogin {
+	      musts = append(musts, fmt.Sprintf(queryBoolMustA, "tag_set.wuye.scale", `"`+gconv.String(so.Scale)+`"`))
+	  }
+	  //合同周期
+	  if so.Period != 0 && isLogin {
+	      musts = append(musts, fmt.Sprintf(queryBoolMustA, "tag_set.wuye.period", `"`+gconv.String(so.Period)+`"`))
+	  }
+	  //换手率
+	  if so.Changehand != 0 && isLogin {
+	      musts = append(musts, fmt.Sprintf(queryBoolMustA, "tag_set.wuye.changehand", `"`+gconv.String(so.Changehand)+`"`))
+	  }*/
 	//价格
 	if so.Price != "" && len(strings.Split(so.Price, "-")) > 1 && isLogin {
 		minPrice, maxPrice := strings.Split(so.Price, "-")[0], strings.Split(so.Price, "-")[1]
@@ -519,7 +555,7 @@ func (so *SearchOptimize) GetSearchQuery(mustQuery string) (qstr string) {
 				sq += fmt.Sprintf(gte, minPrice)
 			}
 			if minPrice != "" && maxPrice != "" {
-				sq += `,`
+				sq += `, `
 			}
 			if maxPrice != "" {
 				sq += fmt.Sprintf(lte, maxPrice)
@@ -557,7 +593,7 @@ func (so *SearchOptimize) GetSearchQuery(mustQuery string) (qstr string) {
 		}
 	}
 	// 如果是领域化数据则需要加标签
-	if so.BidField != "" {
+	if so.BidField != "" && so.BidField != "BIProperty" {
 		musts = append(musts, fmt.Sprintf(queryBoolMustTermDomain, so.BidField))
 	}
 	qstr = fmt.Sprintf(query, strings.Join(musts, ","), strings.Join(mustNot, ","))
@@ -572,14 +608,18 @@ func (so *SearchOptimize) GetBidSearchQuery() string {
 	area := so.Province
 	isLogin := so.UserId != ""
 	if area != "" && isLogin {
-		query += `{"terms":{"area":[`
+		query += `{
+    "terms":{
+    "area":[`
 		for k, v := range strings.Split(area, ",") {
 			if k > 0 {
-				query += `,`
+				query += `, `
 			}
 			query += `"` + v + `"`
 		}
-		query += `]}}`
+		query += `]
+}
+}`
 	}
 	//市
 	city := so.City
@@ -587,14 +627,18 @@ func (so *SearchOptimize) GetBidSearchQuery() string {
 		if len(query) > 0 {
 			query += ","
 		}
-		query += `{"terms":{"city":[`
+		query += `{
+    "terms":{
+    "city":[`
 		for k, v := range strings.Split(city, ",") {
 			if k > 0 {
-				query += `,`
+				query += `, `
 			}
 			query += `"` + v + `"`
 		}
-		query += `]}}`
+		query += `]
+}
+}`
 	}
 	//区域处理
 	district := so.District
@@ -604,11 +648,23 @@ func (so *SearchOptimize) GetBidSearchQuery() string {
 		}
 		for k, v := range strings.Split(district, ",") {
 			if k > 0 {
-				query += `,`
+				query += `, `
 			}
 			cityName := strings.Split(v, "_")[0]
 			districtName := strings.Split(v, "_")[1]
-			query_bool_must_and_district := `{"bool":{"must":[{"terms":{"city":["%s"]}},{"terms":{"district":["%s"]}}]}}`
+			query_bool_must_and_district := `{
+                                "bool":{
+                                "must":[{
+                                "terms":{
+                                "city":["%s"]
+                            }
+                            }, {
+                                "terms":{
+                                "district":["%s"]
+                            }
+                            }]
+                            }
+            }`
 			query += fmt.Sprintf(query_bool_must_and_district, cityName, districtName)
 		}
 
@@ -647,17 +703,23 @@ func (so *SearchOptimize) GetBidSearchQuery() string {
 			}
 			endTime = fmt.Sprint(time.Date(etTime.Year(), etTime.Month(), etTime.Day()+1, 0, 0, 0, 0, time.Local).Unix())
 		}
-		query += `{"range":{"publishtime":{`
+		query += `{
+    "range":{
+    "publishtime":{
+`
 		if startTime != "" {
 			query += `"gte":` + startTime
 		}
 		if startTime != "" && endTime != "" {
-			query += `,`
+			query += `, `
 		}
 		if endTime != "" {
 			query += `"lt":` + endTime
 		}
-		query += `}}}`
+		query += `
+}
+}
+}`
 	}
 	//信息类型-二级
 	subtype := so.Subtype
@@ -666,7 +728,9 @@ func (so *SearchOptimize) GetBidSearchQuery() string {
 	//二级分类
 	if subtype != "" {
 		var typeInt = 0
-		allType += `{"terms":{"subtype":[`
+		allType += `{
+    "terms":{
+    "subtype":[`
 		for k, v := range strings.Split(subtype, ",") {
 			if tType := util.If(topTypeMap[v] != "" && so.TopType == "", topTypeMap[v], "").(string); tType != "" {
 				topType = append(topType, tType)
@@ -674,11 +738,13 @@ func (so *SearchOptimize) GetBidSearchQuery() string {
 				continue
 			}
 			if k > typeInt {
-				allType += `,`
+				allType += `, `
 			}
 			allType += `"` + v + `"`
 		}
-		allType += `]}}`
+		allType += `]
+}
+}`
 		//subtype里都是一级信息类型
 		if typeInt == len(strings.Split(subtype, ",")) {
 			allType = ``
@@ -690,14 +756,18 @@ func (so *SearchOptimize) GetBidSearchQuery() string {
 		if allType != "" {
 			allType += ","
 		}
-		allType += `{"terms":{"toptype":[`
+		allType += `{
+    "terms":{
+    "toptype":[`
 		for k, v := range topType {
 			if k > 0 {
-				allType += `,`
+				allType += `, `
 			}
 			allType += `"` + v + `"`
 		}
-		allType += `]}}`
+		allType += `]
+}
+}`
 	}
 
 	if allType != "" {
@@ -711,14 +781,18 @@ func (so *SearchOptimize) GetBidSearchQuery() string {
 		if len(query) > 0 {
 			query += ","
 		}
-		query += `{"terms":{"buyerclass":[`
+		query += `{
+    "terms":{
+    "buyerclass":[`
 		for k, v := range strings.Split(so.BuyerClass, ",") {
 			if k > 0 {
-				query += `,`
+				query += `, `
 			}
 			query += `"` + v + `"`
 		}
-		query += `]}}`
+		query += `]
+}
+}`
 	}
 	return query
 }
@@ -816,16 +890,23 @@ func (e *SearchByES) GetAllByNgramWithCount() (int64, *[]map[string]interface{})
 			for _, w := range strings.Split(e.FindFields, ",") {
 				ws = append(ws, fmt.Sprintf(HighlightStr, w, e.Count))
 			}
-			queryStr = queryStr[:len(queryStr)-1] + `,` + fmt.Sprintf(HL, strings.Join(ws, ",")) + `}`
+			queryStr = queryStr[:len(queryStr)-1] + `, ` + fmt.Sprintf(HL, strings.Join(ws, ",")) + `
+}
+`
 		}
+		log.Println(len(queryStr))
+		log.Println(111, queryStr)
+		log.Println(11333)
+		log.Println(222, queryStr[:len(queryStr)-1])
+		log.Println(11333222)
 		if len(e.Fields) > 0 {
-			queryStr = queryStr[:len(queryStr)-1] + `,"_source":[` + e.Fields + "]}"
+			queryStr = queryStr[:len(queryStr)-1] + `, "_source":[` + e.Fields + "]}"
 		}
 		if len(e.Order) > 0 {
-			queryStr = queryStr[:len(queryStr)-1] + `,"sort":[` + SR(SR(SR(SR(e.Order, ",", "},{", -1), " ", "", -1), ":-1", `:"desc"`, -1), ":1", `:"asc"`, -1) + `]}`
+			queryStr = queryStr[:len(queryStr)-1] + `, "sort":[` + SR(SR(SR(SR(e.Order, ",", "},{", -1), " ", "", -1), ":-1", `:"desc"`, -1), ":1", `:"asc"`, -1) + `]}`
 		}
 		if e.Start > -1 {
-			queryStr = queryStr[:len(queryStr)-1] + `,"from":` + strconv.Itoa(e.Start) + `,"size":` + strconv.Itoa(e.Limit) + "}"
+			queryStr = queryStr[:len(queryStr)-1] + `,"from":` + strconv.Itoa(e.Start) + `, "size":` + strconv.Itoa(e.Limit) + "}"
 		}
 		log.Println(e.Index, e.IType, "--queryStr:", queryStr)
 		//if e.IsLogin {

+ 4 - 2
src/jfw/front/supsearch.go

@@ -499,7 +499,7 @@ func (p *Pcsearch) PcSearchIndex(module string) error {
 		b_word, a_word, s_word = jy.InterceptSearchKW(keywords, keywordsLimit, len(industry) == 0)
 	}
 	//医疗领域化信息 用户前提是大会员 超级订阅,才有领域化功能的权限
-	if territorialization != "" {
+	if territorialization != "" && territorialization != "BIProperty" {
 		isSearch = false
 		userInfo := jy.GetVipState(p.Session(), *config.Middleground, userId)
 		if userInfo.BigMember > 0 || userInfo.VipState > 0 {
@@ -511,7 +511,9 @@ func (p *Pcsearch) PcSearchIndex(module string) error {
 	isLimit := 1
 	if isSearch {
 		searchTypeSwitch, _ := config.Sysconfig["searchTypeSwitch"].(bool)
-		so := NewSearchOptimize(userId, phone, area, city, district, subtype, toptype, publishtime, strings.Join(queryItems, ","), fmt.Sprintf("%s-%s", minprice, maxprice), industry, buyerclass, hasBuyerTel, hasWinnerTel, fileExists, s_word, additionalWords, notkey, "PC", territorialization, 0, pageSize, searchGroup, searchMode, wordsMode, *userInfo, searchTypeSwitch, p.Request)
+		so := NewSearchOptimize(userId, phone, area, city, district, subtype, toptype, publishtime, strings.Join(queryItems, ","), fmt.Sprintf("%s-%s", minprice, maxprice), industry, buyerclass, hasBuyerTel, hasWinnerTel, fileExists, s_word, additionalWords, notkey, "PC", territorialization, "", "", "",
+			0, pageSize, searchGroup, searchMode, wordsMode, 0, 0, 0,
+			*userInfo, searchTypeSwitch, p.Request)
 		heightKeys = so.HeightKeys //主关键词和附加词合并,多组空格隔开,作为前端渲染高亮关键词使用
 		//关键词  行业 附加词
 		//放开用户不输入关键词可搜索 --P297需求

+ 17 - 5
src/jfw/front/swordfish.go

@@ -97,7 +97,7 @@ func (m *Front) PcAjaxReq() {
 		tabularflag = ""
 	}
 	userInfo := jy.GetVipState(m.Session(), *config.Middleground, userId)
-	if territorialization != "" { // 如果是领域化数据 判断是否是付费用户 是否有权限
+	if territorialization != "" && territorialization != "BIProperty" { // 如果是领域化数据 判断是否是付费用户 是否有权限 ,也不是物业产品
 		if (userInfo.BigMember <= 0 && userInfo.VipState <= 0) || (!jy.HasBidFieldPower(config.Middleground, m.Session(), MedicalFunctionCode)) {
 			m.ServeJson(map[string]interface{}{
 				"list": []map[string]interface{}{},
@@ -105,7 +105,6 @@ func (m *Front) PcAjaxReq() {
 			return
 		}
 	}
-
 	area := m.GetString("area")
 	district := m.GetString("district")
 	subtype := m.GetString("subtype")
@@ -116,7 +115,20 @@ func (m *Front) PcAjaxReq() {
 		selectType = "title,content"
 	}
 	searchGroup, _ := m.GetInteger("searchGroup") //搜索分组;默认0:全部;1:招标采购搜索;2:超前项目。
-
+	//物业版本参数接收
+	//地区
+	//到期时间
+	expireTime := m.GetString("expireTime")
+	//物业业态 propertyForm
+	propertyForm := m.GetString("propertyForm")
+	//业务类型  subinformation
+	subinformation := m.GetString("subinformation")
+	//合同周期 period
+	period, _ := m.GetInteger("period")
+	//价格区间 scale
+	scale, _ := m.GetInteger("scale")
+	//换手率 changehand
+	changehand, _ := m.GetInteger("changehand")
 	if userId == "" {
 		//未登录用户访问全部信息类型 需要过滤掉 拟建和采购意向
 		// p397 未登录用户收回查看拟建权限
@@ -208,7 +220,7 @@ func (m *Front) PcAjaxReq() {
 		}
 		if isLimit == 1 {
 			searchTypeSwitch, _ := config.Sysconfig["searchTypeSwitch"].(bool)
-			so := NewSearchOptimize(userId, phone, area, city, district, subtype, toptype, publishtime, strings.Join(queryItems, ","), fmt.Sprintf("%s-%s", minprice, maxprice), industry, buyerclass, hasBuyerTel, hasWinnerTel, fileExists, s_word, additionalWords, notkey, "PC", territorialization, currentPage, pageSize, searchGroup, searchMode, wordsMode, *userInfo, searchTypeSwitch, m.Request)
+			so := NewSearchOptimize(userId, phone, area, city, district, subtype, toptype, publishtime, strings.Join(queryItems, ","), fmt.Sprintf("%s-%s", minprice, maxprice), industry, buyerclass, hasBuyerTel, hasWinnerTel, fileExists, s_word, additionalWords, notkey, "PC", territorialization, expireTime, propertyForm, subinformation, currentPage, pageSize, searchGroup, searchMode, wordsMode, period, scale, changehand, *userInfo, searchTypeSwitch, m.Request)
 			if so.PageNum < 0 && so.PageSize < 0 {
 				log.Printf("查询参数超出范围,有可能是异常请求; 用户id:%s;用户手机号:%s \n", userId, phone)
 			} else {
@@ -219,7 +231,7 @@ func (m *Front) PcAjaxReq() {
 		}
 	} else {
 		searchTypeSwitch, _ := config.Sysconfig["searchTypeSwitch"].(bool)
-		so := NewSearchOptimize(userId, phone, area, city, district, subtype, toptype, publishtime, strings.Join(queryItems, ","), fmt.Sprintf("%s-%s", minprice, maxprice), industry, buyerclass, hasBuyerTel, hasWinnerTel, fileExists, s_word, additionalWords, notkey, "PC", territorialization, currentPage, pageSize, searchGroup, searchMode, wordsMode, *userInfo, searchTypeSwitch, m.Request)
+		so := NewSearchOptimize(userId, phone, area, city, district, subtype, toptype, publishtime, strings.Join(queryItems, ","), fmt.Sprintf("%s-%s", minprice, maxprice), industry, buyerclass, hasBuyerTel, hasWinnerTel, fileExists, s_word, additionalWords, notkey, "PC", territorialization, expireTime, propertyForm, subinformation, currentPage, pageSize, searchGroup, searchMode, wordsMode, period, scale, changehand, *userInfo, searchTypeSwitch, m.Request)
 		list, count, total = so.GetBidSearchListByCache()
 
 	}