maxiaoshan 3 жил өмнө
parent
commit
b5f6d7978b

+ 45 - 44
src/front/spider.go

@@ -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(&lt, 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)
 	}
 }
 

+ 58 - 31
src/web/templates/heart.html

@@ -19,9 +19,15 @@
               <table id="spider" class="table table-bordered table-striped">
                 <thead>
                 <tr>
+                 <th>站点</th>
+                 <th>栏目</th>
+                  <th>爬虫</th>
                   <th>节点</th>
-          				<th>爬虫</th>
-          				<th>心跳</th>
+          				<th>维护人</th>
+          				<th>列表页心跳</th>
+                  <th>详情页心跳</th>
+                  <th>采集心跳</th>
+                  <th>更新时间</th>
                   <th class="hidden-xs">操作</th>
                 </tr>
                 </thead>
@@ -32,31 +38,55 @@
 </section>
 
 <script>
-	var first=1;
 	$(function(){
-		taskConst=false;
-		ttable=$('#spider').DataTable({
+		heartable=$('#spider').DataTable({
 		"language": {
               "url": "/js/dataTables.chinese.lang"
           },
 		"columnDefs": [
-		   
+		  { "orderable": false, "targets": [0,1,2,3,4,9] } //设置列不可排序 
 		],
+    "order": [[5,"asc"]], //默认排序列
 		"processing":true,
 		"serverSide": true,
 		"searching": true,
-		"ordering": false,
-		"info": false,
-    "paging": false,
+		"ordering": true,
+		"info": true,
+    "paging": true,
 		"autoWidth": true,
+    "iDisplayLength": 50, //每页初始显示5条记录
+
 		"ajax": {
 			"url": "/center/heart",
 			"type": "POST"
 		 },
 		"columns": [
+     { "data": "param_common",render:function(val,a,row){
+				vals=val[1];
+				if(vals.length>15){
+					vals=vals.substr(0,15)+"...";
+				}
+				return  vals
+			}},
+			{ "data": "param_common",render:function(val){
+				if(val.length<3){
+					val="暂无";
+				}else{
+					var href="#"
+					if(val[11]){
+						href=val[11]
+					}
+					val="<a href='"+href+"' title='"+val[2]+"' target='_blank'>"+val[2]+"</a>"
+				}
+				return val
+			}},
 			{ "data": "code"},
       { "data": "event"},
-			{ "data": "modifytime"},
+			{ "data": "modifyuser"},
+      { "data": "list"},
+      { "data": "detail"},
+      { "data": "detailexecute"},
+      { "data": "updatetime"},
 			{ "data": "state",render:function(val,a,row){
 				var div=$("<div><div class=\"btn-group\"></div></div>")
 				if(val==5){
@@ -71,34 +101,28 @@
 				return div.html()
 			}}
     ],
+    "fnServerParams": function (e) {  
+				var event = $("#heart_event").val();
+				//节点
+				if(event){
+					e.event = event;
+				}else{
+					e.event="-1";
+				}
+      }
 	});
 		common.setActive("index_heart");
-		ttable.on( 'init.dt', function () {
-			var search=getCookie("input");
-			if(search){
-				$("[type=search]").val(search);
-			}
-      /**
-			var opt="<option value='-1'>全部</option>"+
-				"<option value='3'>已通过</option>"+
-				"<option value='5'>已上架</option>"+
-				"<option value='6'>已下架</option>";
-			var select="<div class='form-group'><label for='name'>状态:</label>"+
-				"<select id='type_state' onchange='checkclick(this.value)' class='form-control input-sm'>"+
-				opt+
-				"</select></div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
-			var opt2="<option value='-1'>全部</option>"
+		heartable.on( 'init.dt', function () {
+			var opt="<option value='-1'>全部</option>"
 			var events={{.T.events}}
 			for(k in events){
-				opt2+="<option value='"+events[k]+"'>"+events[k]+"</option>"
+				opt+="<option value='"+events[k]+"'>"+events[k]+"</option>"
 			}
-			var select2="<div class='form-group'><label for='name'>节点:</label>"+
-				"<select id='eventid' onchange='checkclick(this.value)' class='form-control input-sm'>"+
-				opt2+
+			var select="<div class='form-group'><label for='name'>节点:</label>"+
+				"<select id='heart_event' onchange='checkclick(this.value)' class='form-control input-sm'>"+
+				opt+
 				"</select></div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
 			$("#spider_filter").prepend(select);
-			$("#spider_filter").prepend(select2);
-      */
 		});
 	})
 	
@@ -121,6 +145,9 @@
 		});
   }
 	
+	function checkclick(){
+		heartable.ajax.reload();
+	}
 	
 </script>
 </div>

+ 3 - 1
src/web/templates/sitelualist.html

@@ -99,7 +99,9 @@
                 val="<span class='text-danger text-bold'>无法处理</span>"
               }else if(state==10){
                 val="<span class='text-danger text-bold'>已删除</span>"
-              }
+              }else if(state==11){
+      					val="<span class='text-danger text-bold'>已上线</span>"
+      				}
               return val
             }},
           { "data": "platform"}