Browse Source

修改爬虫分配、切换平台,按维护人筛选人物

maxiaoshan 3 years ago
parent
commit
e269108fee

+ 55 - 80
src/front/front.go

@@ -45,7 +45,7 @@ type Front struct {
 	changeEvent  xweb.Mapper `xweb:"/center/changeEvent"`          //节点更新
 	getJson      xweb.Mapper `xweb:"/center/spider/json"`          //
 	delRedis     xweb.Mapper `xweb:"/center/spider/delRedis"`      //清理Redis
-	updateESP    xweb.Mapper `xweb:"/center/spider/updateesp"`     //修改爬虫的节点和状态
+	updateESP    xweb.Mapper `xweb:"/center/spider/updateesp"`     //修改爬虫的节点/状态/平台
 
 	spiderModel xweb.Mapper `xweb:"/center/model"`           //获取补充模型
 	runStep     xweb.Mapper `xweb:"/center/run"`             //方法测试
@@ -387,38 +387,30 @@ func (f *Front) LoadIndex() {
 		if platform != "-1" {
 			query["platform"] = platform
 		}
+		if search != "" {
+			query["$or"] = []interface{}{
+				bson.M{"code": bson.M{"$regex": search}},
+				bson.M{"createuser": bson.M{"$regex": search}},
+				bson.M{"param_common.1": bson.M{"$regex": search}},
+			}
+		}
 		if auth == role_examine { //审核员
 			if state > -1 {
 				query["state"] = state
 			} else {
 				query["state"] = Sp_state_1
 			}
-			if search != "" {
-				query["$or"] = []interface{}{
-					bson.M{"code": bson.M{"$regex": search}},
-					bson.M{"createuser": bson.M{"$regex": search}},
-					bson.M{"param_common.1": bson.M{"$regex": search}},
-				}
-			}
+
 		} else if auth == role_dev { //开发员
 			if state > -1 {
 				query["state"] = state
 			}
 			query["createuserid"] = f.GetSession("userid")
-			query["$or"] = []interface{}{
-				bson.M{"code": bson.M{"$regex": search}},
-				bson.M{"createuser": bson.M{"$regex": search}},
-				bson.M{"param_common.1": bson.M{"$regex": search}},
-			}
+
 		} else { //管理员
 			if state > -1 {
 				query["state"] = state
 			}
-			query["$or"] = []interface{}{
-				bson.M{"code": bson.M{"$regex": search}},
-				bson.M{"createuser": bson.M{"$regex": search}},
-				bson.M{"param_common.1": bson.M{"$regex": search}},
-			}
 		}
 		sort := `{"%s":%d}`
 		orderIndex := f.GetString("order[0][column]")
@@ -433,6 +425,7 @@ func (f *Front) LoadIndex() {
 		sort = fmt.Sprintf(sort, orderName, orderType)
 		page := start / 10
 		//log.Println("sort", sort, orderName)
+		qu.Debug("query:", query, "sort:", sort)
 		luas := *mgdb.Find("luaconfig", query, sort, list_fields, false, start, limit)
 		count := mgdb.Count("luaconfig", query)
 		for k, v := range luas {
@@ -746,86 +739,60 @@ func (f *Front) Assign() {
 		f.Write("n")
 		return
 	}
-	ids := f.GetString("ids")
 	codes := f.GetString("codes")
-	email := f.GetString("email")
-	idarr := strings.Split(ids, ",")
-	codesarr := strings.Split(codes, ",")
-	var idsinter []interface{}
-	isemail := strings.Index(ids, "@")
-	user := *mgdb.FindOne("user", bson.M{"s_email": email})
-	if len(user) > 0 {
-		userid := user["_id"].(bson.ObjectId).Hex()
-		name := user["s_name"].(string)
-		var query bson.M
-		if isemail > -1 {
-			query = bson.M{
-				"createuseremail": bson.M{
-					"$in": idarr,
-				},
-			}
-		} else {
-			idsinter = make([]interface{}, len(idarr))
-			for k, v := range idarr {
-				idsinter[k] = bson.ObjectIdHex(v)
-			}
-			query = bson.M{
-				"_id": bson.M{
-					"$in": idsinter,
-				},
-			}
+	userid := f.GetString("userid")       //分配给谁
+	codesarr := strings.Split(codes, ",") //被分配的爬虫
+	user, _ := u.MgoE.FindById("user", userid, nil)
+	if user != nil && len(*user) > 0 {
+		name := qu.ObjToString((*user)["s_name"])
+		query := map[string]interface{}{
+			"code": map[string]interface{}{
+				"$in": codesarr,
+			},
 		}
-
-		set := bson.M{
-			"$set": bson.M{
+		qu.Debug(query)
+		set := map[string]interface{}{
+			"$set": map[string]interface{}{
 				"createuserid":    userid,
-				"createuser":      user["s_name"],
-				"createuseremail": user["s_email"],
-				"modifyuser":      user["s_name"],
+				"createuser":      name,
+				"createuseremail": (*user)["s_email"],
+				"modifyuser":      name,
 				"modifyuserid":    userid,
 			},
 		}
-		b := mgdb.Update("luaconfig", query, set, false, true)
+		b := u.MgoE.Update("luaconfig", query, set, false, true)
 		if b {
+			go editModify(codesarr, userid, name) //修改爬虫对应任务的维护人
 			f.Write("y")
-			editModify(codesarr, userid, name) //分配
 		} else {
 			f.Write("n")
 		}
 	} else {
 		f.Write("null")
 	}
+
 }
 
 //修改维护人
 func editModify(codesarr []string, userid, name string) {
+	qu.Debug("修改爬虫对应任务的维护人:", name, codesarr)
 	//修改modifyid和modify
-	for _, v := range codesarr {
-		query := bson.M{
-			"s_code": v,
-			"i_state": bson.M{
-				"$ne": 4,
-			},
-		}
-		task := *mgdb.Find("task", query, nil, nil, false, -1, -1)
-		if len(task) > 0 {
-			for _, v := range task { //循环 修改任务
-				update := bson.M{
-					"$set": bson.M{
-						"s_modify":   name,
-						"s_modifyid": userid,
-					},
-				}
-				queryT := bson.M{
-					"_id": v["_id"],
-				}
-				flag := mgdb.Update("task", queryT, update, false, false)
-				log.Println("分配修改任务维护人:", flag)
-			}
-		} else {
-			continue
-		}
-	}
+	query := map[string]interface{}{
+		"s_code": map[string]interface{}{
+			"$in": codesarr,
+		},
+		"i_state": map[string]interface{}{
+			"$nin": []int{4, 6},
+		},
+	}
+	set := map[string]interface{}{
+		"$set": map[string]interface{}{
+			"s_modify":   name,
+			"s_modifyid": userid,
+		},
+	}
+	b := u.MgoE.Update("task", query, set, false, true)
+	qu.Debug("任务重新分配成功", b)
 }
 
 //清理Redis
@@ -877,9 +844,16 @@ func (f *Front) UpdateESP() {
 		set["state"] = 0
 	} else if w == "platform" {
 		set["platform"] = val
-		if val != "golua平台" { //由lua平台切换到其他平台,删除爬虫spider_heart心跳
+		if val != "golua平台" { //由lua平台切换到其他平台,删除心跳;爬虫下架;修改爬虫状态
+			set["state"] = 0
 			b := mgu.Update("spider_heart", "spider", "spider", map[string]interface{}{"code": code}, map[string]interface{}{"$set": map[string]interface{}{"del": true}}, false, true)
 			qu.Debug("Del Heart:", b)
+			b, err := UpStateAndUpSpider(code, "", "", "", Sp_state_6) //线上爬虫下架
+			qu.Debug("爬虫下架成功:", b)
+			if !b || err != nil {
+				f.Write("n")
+				return
+			}
 		}
 	} else { //修改节点
 		event, _ := strconv.Atoi(val)
@@ -890,6 +864,7 @@ func (f *Front) UpdateESP() {
 		code := f.GetString("c")
 		set["state"] = 6
 		b, err := UpStateAndUpSpider(code, "", "", "", Sp_state_6) //线上爬虫下架
+		qu.Debug("爬虫下架成功:", b)
 		if !b || err != nil {
 			f.Write("n")
 			return

+ 24 - 14
src/taskManager/taskManager.go

@@ -14,6 +14,7 @@ import (
 	"strconv"
 	"strings"
 	"time"
+	u "util"
 
 	"github.com/go-xweb/xweb"
 	"github.com/tealeg/xlsx"
@@ -165,6 +166,7 @@ func (t *TaskM) ManagerTask() {
 	taskState, _ := t.GetInteger("taskState") //任务状态
 	event, _ := t.GetInteger("taskEvent")     //节点
 	stype, _ := t.GetInteger("taskStype")     //任务类型
+	userid := t.GetString("userid")
 	searchStr := t.GetString("search[value]")
 	//search := strings.Replace(searchStr, " ", "", -1)
 	search := strings.TrimSpace(searchStr)
@@ -179,9 +181,10 @@ func (t *TaskM) ManagerTask() {
 			}
 			sort.Strings(events)
 			t.T["events"] = events
+			t.T["modifyusers"] = GetModifyUsers()
 			t.Render("task.html", &t.T)
 		} else {
-			query := queryCriteria(urgency, taskState, event, stype)
+			query := queryCriteria(userid, urgency, taskState, event, stype)
 			if search != "" {
 				query["$or"] = []interface{}{
 					bson.M{"s_code": bson.M{"$regex": search}},
@@ -204,6 +207,7 @@ func (t *TaskM) ManagerTask() {
 				//sort = `{"l_complete":1,` + sortb + `}`
 				sort = `{` + sortb + `,"l_complete":1}`
 			}
+			qu.Debug("query:", query)
 			task := *mgdb.Find("task", query, sort, nil, false, start, limit)
 			count := mgdb.Count("task", query)
 			page := start / 10
@@ -289,7 +293,7 @@ func (t *TaskM) Mytask() {
 		t.ServeJson("没有权限")
 		return
 	}
-	userid := t.GetSession("userid")
+	userid := qu.ObjToString(t.GetSession("userid"))
 	query := bson.M{}
 	if t.Method() == "POST" {
 		start, _ := t.GetInteger("start")
@@ -304,9 +308,7 @@ func (t *TaskM) Mytask() {
 		//search := strings.Replace(searchStr, " ", "", -1)
 		search := strings.TrimSpace(searchStr)
 		//查询自己的任务
-		query = queryCriteria(urgency, taskState, event, stype)
-		query["s_modifyid"] = userid
-
+		query = queryCriteria(userid, urgency, taskState, event, stype)
 		if search != "" {
 			query["$or"] = []interface{}{
 				bson.M{"s_code": bson.M{"$regex": search}},
@@ -430,21 +432,26 @@ func (t *TaskM) CheckCode() {
 
 //查询维护人员
 func (t *TaskM) SearchMintainer() {
-	query := bson.M{
-		"i_auth": 1,
-	}
-
-	mintainer := *mgdb.Find("user", query, nil, nil, false, -1, -1)
-	if len(mintainer) > 0 {
-		t.SetSession("mintainer", mintainer)
+	users := GetModifyUsers()
+	if len(users) > 0 {
+		//t.SetSession("mintainer", mintainer)
 		t.ServeJson(map[string]interface{}{
-			"mintainer": mintainer,
+			"mintainer": users,
 		})
 	} else {
 		log.Println("查询维护人员名单错误")
 	}
 }
 
+func GetModifyUsers() []map[string]interface{} {
+	query := map[string]interface{}{
+		"i_auth":   1,
+		"i_delete": 0,
+	}
+	user, _ := u.MgoE.Find("user", query, nil, nil, false, -1, -1)
+	return *user
+}
+
 //保存新建任务
 func (t *TaskM) SaveNewTask() {
 	auth := qu.IntAll(t.GetSession("auth"))
@@ -1089,8 +1096,11 @@ func updateClose(code string) {
 		fmt.Println("closerate关闭任务:code	", flag)
 	}
 }
-func queryCriteria(urgency, taskState, event, stype int) (query bson.M) {
+func queryCriteria(userid string, urgency, taskState, event, stype int) (query bson.M) {
 	query = bson.M{}
+	if userid != "" && userid != "-1" {
+		query["s_modifyid"] = userid
+	}
 	if urgency >= 0 {
 		query["s_urgency"] = strconv.Itoa(urgency)
 	}

+ 3 - 0
src/web/templates/head.html

@@ -45,6 +45,9 @@
 		#spider a{
 			color:#333 !important;
 		}
+    #task a{
+			color:#333 !important;
+		}
     #luamovecode a{
 			color:#333 !important;
 		}

+ 6 - 9
src/web/templates/index.html

@@ -650,10 +650,11 @@ $(function(){
 	function searchAssignModify(){
 		$.post("/center/searchMintainer",function(r){
 			var data = r.mintainer;
+      console.log(data)
 			$("#assign-modify").empty();
 			$("#assign-modify").append("<option value=''>--请选择--</option>");
 			for(var i in data){
-				$("#assign-modify").append("<option value='"+data[i]["s_email"]+"'>"+data[i]["s_email"]+"</option>");
+				$("#assign-modify").append("<option value='"+data[i]["_id"]+"'>"+data[i]["s_email"]+"</option>");
 			}
 		})
 	}
@@ -669,25 +670,21 @@ $(function(){
 	//分配爬虫
 	function assign_save(){
 		$("#modal-assign").modal("hide");
-		var email = $("#assign-modify").val();
-		if(email != ""){
-			var names=[];
-			var ids=[];
+		var userid = $("#assign-modify").val();
+		if(userid != ""){
 			var codes=[];
 			$("#spider td input[type=checkbox]").each(function(){
 				if($(this).prop("checked")){
-					names.push($(this).attr("name"));
 					codes.push($(this).attr("code"));
-					ids.push($(this).val());
+					//ids.push($(this).val());
 				}
 			});
 			$.ajax({
 					url:"/center/user/assign",
 					type:"post",
 					data:{
-						"ids":ids.join(","),
 						"codes":codes.join(","),
-						"email":email
+						"userid":userid
 					},
 					success:function(r){
 						if(r=="y"){

+ 1 - 1
src/web/templates/mytask.html

@@ -53,7 +53,7 @@
 			"serverSide": true,
 			"searching": true,
 			"ordering": true,
-			"info": false,
+			"info": true,
 			"autoWidth": true,
 			"columns": [
 				{"data":"s_code"},

+ 2 - 1
src/web/templates/pending.html

@@ -103,7 +103,8 @@
 	function assign(me){
 		var email=$(me).attr("email");
 		var toemail=window.prompt("\n==============请输入转移后的邮箱==============\n","");
-		if(toemail && toemail!=""){
+		return
+    if(toemail && toemail!=""){
 			$.ajax({
 				url:"/center/user/assign",
 				type:"post",

+ 37 - 18
src/web/templates/task.html

@@ -61,7 +61,7 @@
 		<section class="content">
 			<div class="box">
 				<div class="box-body">
-					<table id="import" class="table table-bordered table-striped">
+					<table id="task" class="table table-bordered table-striped">
 						<thead>
 							<tr>
 								<td>网址</td>
@@ -106,7 +106,7 @@
 		
 		taskConst = true;
 		setCookie("task","");
-		ttabletask = $('#import').DataTable({
+		ttabletask = $('#task').DataTable({
 			"language": {
                "url": "/js/dataTables.chinese.lang"
            },
@@ -126,7 +126,7 @@
 			"serverSide": true,
 			"searching": true,
 			"ordering": true,
-			"info": false,
+			"info": true,
 			"autoWidth": true,
 			"columns": [
 				{"data": "href"},
@@ -254,6 +254,7 @@
 				var taskState = $("#task_state").val();
 				var taskEvent = $("#task_event").val();
         var taskStype = $("#task_stype").val();
+        var userid = $("#modifyuser").val();
 				//紧急程度
 				if(state){
 					e.state=state;
@@ -278,6 +279,12 @@
 				}else{
 					e.taskStype="-1";
 				}
+        //维护人
+        if(userid){
+					e.userid = userid;
+				}else{
+					e.userid="-1";
+				}
       }
 	  });
 		common.setActive("index_rwgl");
@@ -295,8 +302,8 @@
 				"<select id='task_urgency' onchange='checkclick(this.value)' class='form-control input-sm'>"+
 				opt+
 				"</select></div>"
-			$("#import_filter").prepend("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
-			$("#import_filter").prepend(select);
+			$("#task_filter").prepend("&nbsp;&nbsp;");
+			$("#task_filter").prepend(select);
 			
 			var taskState="<option value='-1'>全部</option>"+
 				"<option value='0'>待确认</option>"+
@@ -310,8 +317,8 @@
 				"<select id='task_state' onchange='checkclick(this.value)' class='form-control input-sm'>"+
 				taskState+
 				"</select></div>"
-				$("#import_filter").prepend("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
-				$("#import_filter").prepend(selectState);
+				$("#task_filter").prepend("&nbsp;&nbsp;");
+				$("#task_filter").prepend(selectState);
         
 			var taskStype="<option value='-1'>全部</option>"+
         "<option value='8'>采集频率异常</option>"+
@@ -328,8 +335,8 @@
 				"<select id='task_stype' onchange='checkclick(this.value)' class='form-control input-sm'>"+
 				taskStype+
 				"</select></div>"
-				$("#import_filter").prepend("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
-				$("#import_filter").prepend(selectStype);
+				$("#task_filter").prepend("&nbsp;&nbsp;");
+				$("#task_filter").prepend(selectStype);
       	
 			var taskEvent="<option value='-1'>全部</option>"
 			var events={{.T.events}}
@@ -339,11 +346,23 @@
 			var selectEvent="<div class='form-group'><label for='name'>节点:</label>"+
 				"<select id='task_event' onchange='checkclick(this.value)' class='form-control input-sm'>"+
 				taskEvent+
-				"</select></div>"
-				$("#import_filter").prepend("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
-				$("#import_filter").prepend(selectEvent);
+			"</select></div>"
+			$("#task_filter").prepend("&nbsp;&nbsp;");
+      $("#task_filter").prepend(selectEvent);
+      
+      var modifyuser="<option value='-1'>全部</option>"
+			var modifyusers={{.T.modifyusers}}
+			for(k in modifyusers){
+				modifyuser+="<option value='"+modifyusers[k]["_id"]+"'>"+modifyusers[k]["s_name"]+"</option>"
+			}
+			var selectModifyuser="<div class='form-group'><label for='name'>维护人:</label>"+
+				"<select id='modifyuser' onchange='checkclick(this.value)' class='form-control input-sm'>"+
+				modifyuser+
+			"</select></div>"
+			$("#task_filter").prepend("&nbsp;&nbsp;");
+			$("#task_filter").prepend(selectModifyuser);
 			//修改样式
-			$("#import_wrapper .col-sm-6").css({width:"100%"});
+			$("#task_wrapper .col-sm-6").css({width:"100%"});
 		});
 		ttabletask.on('preXhr.dt', function ( e, settings, data ) {
 			$("[type=search]").keypress(function(){
@@ -465,7 +484,7 @@
 		var codes=[];
 		var ids=[];
 		var flag = true;
-		$("#import_wrapper td input[type=checkbox]").each(function(){
+		$("#task_wrapper td input[type=checkbox]").each(function(){
 			if($(this).prop("checked")){
 				var state = $(this).attr("state")
 				if(state == "关闭"){
@@ -502,7 +521,7 @@
 		var ids=[]
 		var codes=[];
 		var flag = true;
-		$("#import_wrapper td input[type=checkbox]").each(function(){
+		$("#task_wrapper td input[type=checkbox]").each(function(){
 			if($(this).prop("checked")){
 				var state = $(this).attr("state")
 				if(state == "关闭"){
@@ -539,7 +558,7 @@
   	function batchDeal(){
 	  var ids=[]
 	  // var codes=[];
-	  $("#import_wrapper td input[type=checkbox]").each(function(){
+	  $("#task_wrapper td input[type=checkbox]").each(function(){
 		  if($(this).prop("checked")){
 			  var state = $(this).attr("state")
 			  if(state == "待处理"){
@@ -567,9 +586,9 @@
 		var sel=$(me);
 		var isSelected=sel.prop('checked');
 		if(isSelected){
-			$("#import td input[type=checkbox]").prop("checked",true);
+			$("#task td input[type=checkbox]").prop("checked",true);
 		}else{
-			$("#import td input[type=checkbox]").prop("checked",false);
+			$("#task td input[type=checkbox]").prop("checked",false);
 		}
 	}
 </script>