package service import ( "SciencesServer/serve/es" "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 { _bytes, _ := json.Marshal(this) return es.Create(this.Index(), fmt.Sprintf("%d", this.ID), _bytes) } func (this *ESPatent) Update() error { _map := make(map[string]interface{}, 0) if this.Title != "" { _map["title"] = this.Title } if this.Industry != "" { _map["industry"] = this.Industry } return es.Update(this.Index(), fmt.Sprintf("%d", this.ID), _map) } func (this *ESPatent) Delete() error { return es.Delete(this.Index(), fmt.Sprintf("%d", this.ID)) } func (this *ESPatent) Search(page, pageSize int) (interface{}, int64, error) { termParams := make(map[string]interface{}, 0) mustParams := make(map[string]interface{}, 0) if this.Title != "" { mustParams["title"] = this.Title } if this.Industry != "" { termParams["industry"] = this.Industry } return es.Search(this, this.Index(), &es.SearchParams{ TermParams: termParams, MustParams: mustParams, }, page, pageSize) } 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 }