You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
2.6 KiB
120 lines
2.6 KiB
package http |
|
|
|
import ( |
|
"context" |
|
"encoding/json" |
|
"net/url" |
|
"strings" |
|
|
|
"go-common/app/admin/main/aegis/model" |
|
"go-common/library/database/elastic" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
) |
|
|
|
const ( |
|
_upsertES = "/x/admin/search/upsert" |
|
) |
|
|
|
// ResourceES search archives by es. |
|
func (d *Dao) ResourceES(c context.Context, arg *model.SearchParams) (sres *model.SearchRes, err error) { |
|
r := d.es.NewRequest("aegis_resource").Index("aegis_resource").Fields( |
|
"id", |
|
"business_id", |
|
"flow_id", |
|
"oid", |
|
"mid", |
|
"content", |
|
"extra1", |
|
"extra2", |
|
"extra3", |
|
"extra4", |
|
"extra5", |
|
"extra6", |
|
"extra1s", |
|
"extra2s", |
|
"extra3s", |
|
"extra4s", |
|
"extratime1", |
|
"octime", |
|
"ptime", |
|
"metadata", |
|
"note", |
|
"reject_reason", |
|
"reason_id", |
|
"state", |
|
"ctime", |
|
).OrderScoreFirst(false) |
|
|
|
escm := model.EsCommon{ |
|
Ps: arg.Ps, |
|
Pn: arg.Pn, |
|
Order: "ctime", |
|
Sort: strings.ToLower(arg.CtimeOrder), |
|
} |
|
if escm.Sort != "asc" && escm.Sort != "desc" { |
|
escm.Sort = "desc" |
|
} |
|
|
|
setESParams(r, arg, escm) |
|
if arg.KeyWord != "" { //描述 |
|
arg.KeyWord = strings.Replace(arg.KeyWord, ",", ",", -1) |
|
r.WhereLike([]string{"content"}, strings.Split(arg.KeyWord, ","), true, elastic.LikeLevelHigh) |
|
} |
|
|
|
log.Info("ResourceES params(%s)", r.Params()) |
|
|
|
sres = &model.SearchRes{} |
|
if err = r.Scan(c, sres); err != nil { |
|
log.Error("ResourceES r.Scan params(%s)|error(%v)", r.Params(), err) |
|
return |
|
} |
|
arg.Pn = sres.Page.Num |
|
arg.Ps = sres.Page.Size |
|
arg.Total = sres.Page.Total |
|
return |
|
} |
|
|
|
//UpsertES 更新搜索 |
|
func (d *Dao) UpsertES(c context.Context, rsc []*model.UpsertItem) (err error) { |
|
if len(rsc) == 0 { |
|
return |
|
} |
|
|
|
items := []*model.UpsertItem{} |
|
for _, item := range rsc { |
|
if item == nil || item.ID <= 0 { |
|
continue |
|
} |
|
items = append(items, item) |
|
} |
|
|
|
data := map[string][]*model.UpsertItem{ |
|
"aegis_resource": items, |
|
} |
|
datab, err := json.Marshal(data) |
|
if err != nil { |
|
log.Error("UpsertES json.Marshal error(%v) resource(%+v)", err, rsc) |
|
return err |
|
} |
|
|
|
res := new(struct { |
|
Code int `json:"code"` |
|
Message string `json:"message"` |
|
}) |
|
params := url.Values{} |
|
params.Set("business", "aegis_resource") |
|
params.Set("insert", "false") |
|
params.Set("data", string(datab)) |
|
if err = d.clientW.Post(c, d.c.Host.Manager+_upsertES, "", params, res); err != nil { |
|
log.Error("UpsertES d.clientW.Post error(%v) params(%+v)", err, params) |
|
return |
|
} |
|
if res.Code != ecode.OK.Code() { |
|
log.Error("UpsertES d.clientW.Post failed, response(%+v) params(%+v)", res, params) |
|
return |
|
} |
|
|
|
log.Info("response(%+v) url=%s%s?%s", res, d.c.Host.Manager, _upsertES, params.Encode()) |
|
return |
|
}
|
|
|