package taskManager import ( "fmt" . "front" "mongodb" qu "qfw/util" util "spiderutil" "strings" "time" u "util" ) func (t *TaskM) SiteTask() { modifyuser := t.GetString("modifyuser") repair := t.GetString("repair") overdue := t.GetString("overdue") latestdata := t.GetString("latestdata") codestate, _ := t.GetInteger("codestate") searchStr := t.GetString("search[value]") search := strings.TrimSpace(searchStr) draw, _ := t.GetInteger("draw") start, _ := t.GetInteger("start") limit, _ := t.GetInteger("length") if t.Method() == "GET" { t.T["modifyusers"] = u.GetModifyUsers() t.Render("sitetask.html", &t.T) } else { query := map[string]interface{}{ "b_delete": false, } auth := qu.IntAll(t.GetSession("auth")) if auth == u.Role_Dev { user := qu.ObjToString(t.GetSession("loginuser")) query["s_modifyuser"] = user } if search != "" { query["$or"] = []interface{}{ map[string]interface{}{"s_spidercode": map[string]interface{}{"$regex": search}}, map[string]interface{}{"s_site": map[string]interface{}{"$regex": search}}, map[string]interface{}{"s_channel": map[string]interface{}{"$regex": search}}, } } if modifyuser != "-1" && auth > u.Role_Dev { query["s_modifyuser"] = modifyuser } if repair != "-1" { query["b_repair"] = repair == "1" } if codestate > -1 { query["i_state"] = codestate } if overdue != "-1" { if overdue == "1" { //查询超期 query["l_max_repair_time"] = map[string]interface{}{ "$lt": time.Now().Unix(), } } else { //未超期 query["l_max_repair_time"] = map[string]interface{}{ "$gte": time.Now().Unix(), } } } if latestdata != "-1" { query["b_latestdata"] = latestdata == "1" } sort := `{"%s":%d}` orderIndex := t.GetString("order[0][column]") orderName := t.GetString(fmt.Sprintf("columns[%s][data]", orderIndex)) orderType := 1 if t.GetString("order[0][dir]") != "asc" { orderType = -1 } sort = fmt.Sprintf(sort, orderName, orderType) qu.Debug("query:", query, sort) task, _ := u.MgoEB.Find("spider_important_warning", query, sort, nil, false, start, limit) count := u.MgoEB.Count("spider_important_warning", query) for _, t := range *task { l_max_repair_time := qu.Int64All(t["l_max_repair_time"]) t["b_overdue"] = l_max_repair_time < time.Now().Unix() //lua, _ := u.MgoEB.FindOneByField("luaconfig", map[string]interface{}{"code": t["s_spidercode"]}, map[string]interface{}{"state": 1}) //t["i_state"] = (*lua)["state"] t["encode"] = util.Se.Encode2Hex(fmt.Sprint(t["s_spidercode"])) } t.ServeJson(map[string]interface{}{"draw": draw, "data": task, "recordsFiltered": count, "recordsTotal": count}) } } func (t *TaskM) SiteTaskClose() { if qu.IntAll(t.GetSession("auth")) > u.Role_Dev { id := t.GetString("id") query := map[string]interface{}{ "_id": mongodb.StringTOBsonId(id), } set := map[string]interface{}{ "b_delete": true, "l_update_time": time.Now().Unix(), } ok := siteTaskUpdate(query, set) if ok { t.ServeJson("y") } else { t.ServeJson("n") } } t.ServeJson("没有权限") } func (t *TaskM) SiteTaskEdit() { spidercode := t.GetString("spidercode") //查询关联爬虫 relatecode := "" lua, _ := u.MgoEB.FindOneByField("luaconfig", map[string]interface{}{"code": spidercode + u.Bu, "state": 5}, map[string]interface{}{"relatecode": 1}) if len(*lua) > 0 { relatecode = spidercode + u.Bu } taskIds := CheckTask([]string{spidercode}, 1) //是否有常规任务 taskid := "" if len(taskIds) == 1 { taskid = taskIds[0] } else if len(taskIds) > 1 { qu.Debug("任务量异常:", spidercode, len(taskIds)) } result := map[string]string{ "taskid": taskid, "relatecode": relatecode, } t.ServeJson(result) } func (t *TaskM) UpdateCodeState() { code := t.GetString("code") state, _ := t.GetInteger("state") ok := u.MgoEB.Update("luaconfig", map[string]interface{}{"code": code, "state": 5}, map[string]interface{}{"$set": map[string]interface{}{"state": state}}, false, false) t.ServeJson(map[string]interface{}{"ok": ok}) } func siteTaskUpdate(query, set map[string]interface{}) bool { return u.MgoEB.Update("spider_important_warning", query, map[string]interface{}{"$set": set}, false, false) }