|
@@ -1244,58 +1244,59 @@ func (f *Front) Heart() {
|
|
|
return
|
|
|
}
|
|
|
if f.Method() == "POST" {
|
|
|
- // start, _ := f.GetInteger("start")
|
|
|
- // limit, _ := f.GetInteger("length")
|
|
|
- // draw, _ := f.GetInteger("draw")
|
|
|
+ event, _ := f.GetInteger("event")
|
|
|
+ start, _ := f.GetInteger("start")
|
|
|
+ limit, _ := f.GetInteger("length")
|
|
|
+ draw, _ := f.GetInteger("draw")
|
|
|
searchStr := f.GetString("search[value]")
|
|
|
search := strings.TrimSpace(searchStr) //只能搜索code
|
|
|
//qu.Debug("search:", search, "start:", start, "limit:", limit, "draw:", draw)
|
|
|
- result := []map[string]interface{}{}
|
|
|
+ query := bson.M{
|
|
|
+ "del": false,
|
|
|
+ }
|
|
|
+ if event > -1 {
|
|
|
+ query["event"] = event
|
|
|
+ }
|
|
|
if search != "" {
|
|
|
- if tmp, ok := spinfos.Load(search); ok {
|
|
|
- info := tmp.(*spinfo)
|
|
|
- result = append(result, map[string]interface{}{
|
|
|
- "modifytime": info.lastHeartbeat,
|
|
|
- "lstate": info.lstate,
|
|
|
- })
|
|
|
+ query["code"] = search
|
|
|
+ }
|
|
|
+ sort := `{"%s":%d}`
|
|
|
+ orderIndex := f.GetString("order[0][column]")
|
|
|
+ orderName := f.GetString(fmt.Sprintf("columns[%s][data]", orderIndex))
|
|
|
+ orderType := 1
|
|
|
+ if f.GetString("order[0][dir]") != "asc" {
|
|
|
+ orderType = -1
|
|
|
+ }
|
|
|
+ sort = fmt.Sprintf(sort, orderName, orderType)
|
|
|
+ list := *mgu.Find("spider_heart", "spider", "spider", query, sort, nil, false, start, limit)
|
|
|
+ count := mgu.Count("spider_heart", "spider", "spider", query)
|
|
|
+ for _, l := range list {
|
|
|
+ code := qu.ObjToString(l["code"])
|
|
|
+ d := *mgdb.FindOneByField("luaconfig", map[string]interface{}{"code": code}, map[string]interface{}{"state": 1, "param_common": 1})
|
|
|
+ l["state"] = d["state"]
|
|
|
+ l["param_common"] = d["param_common"]
|
|
|
+ if lt := qu.Int64All(l["list"]); lt != 0 {
|
|
|
+ l["list"] = qu.FormatDateByInt64(<, qu.Date_Full_Layout)
|
|
|
}
|
|
|
- } else {
|
|
|
- timeCode := map[string]string{}
|
|
|
- spinfos.Range(func(k, v interface{}) bool {
|
|
|
- code := k.(string)
|
|
|
- info, ok := v.(*spinfo)
|
|
|
- if ok {
|
|
|
- timeCode[code] = info.lastHeartbeat
|
|
|
- }
|
|
|
- return true
|
|
|
- })
|
|
|
- vs := u.MapStringValueSort(timeCode)
|
|
|
- n := 0
|
|
|
- for _, c := range vs.Keys {
|
|
|
- if strings.HasPrefix(c, "jzgc_") { //过滤企业爬虫
|
|
|
- continue
|
|
|
- }
|
|
|
- if n > 300 {
|
|
|
- break
|
|
|
- }
|
|
|
- d := mgdb.FindOne("luaconfig", map[string]interface{}{"code": c})
|
|
|
- state := qu.IntAll((*d)["state"])
|
|
|
- if state != 5 && state != 6 {
|
|
|
- continue
|
|
|
- }
|
|
|
- n++
|
|
|
- result = append(result, map[string]interface{}{
|
|
|
- "code": c,
|
|
|
- "modifytime": timeCode[c],
|
|
|
- "state": (*d)["state"],
|
|
|
- "event": (*d)["event"],
|
|
|
- })
|
|
|
+ if dt := qu.Int64All(l["detail"]); dt != 0 {
|
|
|
+ l["detail"] = qu.FormatDateByInt64(&dt, qu.Date_Full_Layout)
|
|
|
+ }
|
|
|
+ if det := qu.Int64All(l["detailexecute"]); det != 0 {
|
|
|
+ l["detailexecute"] = qu.FormatDateByInt64(&det, qu.Date_Full_Layout)
|
|
|
}
|
|
|
- vs = nil
|
|
|
+ ut := qu.Int64All(l["updatetime"])
|
|
|
+ l["updatetime"] = qu.FormatDateByInt64(&ut, qu.Date_Full_Layout)
|
|
|
}
|
|
|
- f.ServeJson(map[string]interface{}{"data": result})
|
|
|
+
|
|
|
+ f.ServeJson(map[string]interface{}{"draw": draw, "data": list, "recordsFiltered": count, "recordsTotal": count})
|
|
|
} else {
|
|
|
- f.Render("heart.html")
|
|
|
+ events := []string{}
|
|
|
+ for k, _ := range util.Config.Uploadevents {
|
|
|
+ events = append(events, k)
|
|
|
+ }
|
|
|
+ sort.Strings(events)
|
|
|
+ f.T["events"] = events
|
|
|
+ f.Render("heart.html", &f.T)
|
|
|
}
|
|
|
}
|
|
|
|