Files

82 lines
1.6 KiB
Go
Raw Normal View History

package service
import (
"SciencesServer/serve/es"
"SciencesServer/serve/logger"
"SciencesServer/utils"
"encoding/json"
"fmt"
)
type ESPatent struct {
ID uint64 `json:"id"`
Title string `json:"title"`
Industry string `json:"industry"` // 行业领域
}
type ESPatentOption func(patent *ESPatent)
func (this *ESPatent) Index() string {
return "es_patent_index"
}
func (this *ESPatent) Create() error {
if this.Industry != "" {
this.Title = this.Industry + " - " + this.Title
}
_bytes, _ := json.Marshal(this)
return es.Create(this.Index(), _bytes)
}
func (this *ESPatent) Search(page, pageSize int) (interface{}, error) {
mustParams := make(map[string]interface{}, 0)
shouldParams := make(map[string]interface{}, 0)
fmt.Println(utils.AnyToJSON(this))
if this.Title != "" {
shouldParams["title"] = this.Title
}
if this.Industry != "" {
mustParams["title"] = this.Industry
}
fmt.Println(mustParams)
fmt.Println(shouldParams)
out, err := es.Search(this, this.Index(), &es.SearchParams{
MustParams: mustParams,
ShouldParams: shouldParams,
}, page, pageSize)
if err != nil {
logger.ErrorF("查询ES信息错误【%s】", err)
}
return out, nil
}
func WithPatentID(id uint64) ESPatentOption {
return func(patent *ESPatent) {
patent.ID = id
}
}
func WithPatentTitle(title string) ESPatentOption {
return func(patent *ESPatent) {
patent.Title = title
}
}
func WithPatentIndustry(industry string) ESPatentOption {
return func(patent *ESPatent) {
patent.Industry = industry
}
}
func NewESPatent(options ...ESPatentOption) *ESPatent {
out := new(ESPatent)
for _, v := range options {
v(out)
}
return out
}