sitetask.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package taskManager
  2. import (
  3. "fmt"
  4. . "front"
  5. "mongodb"
  6. qu "qfw/util"
  7. util "spiderutil"
  8. "strings"
  9. "time"
  10. u "util"
  11. )
  12. func (t *TaskM) SiteTask() {
  13. modifyuser := t.GetString("modifyuser")
  14. repair := t.GetString("repair")
  15. overdue := t.GetString("overdue")
  16. latestdata := t.GetString("latestdata")
  17. codestate, _ := t.GetInteger("codestate")
  18. searchStr := t.GetString("search[value]")
  19. search := strings.TrimSpace(searchStr)
  20. draw, _ := t.GetInteger("draw")
  21. start, _ := t.GetInteger("start")
  22. limit, _ := t.GetInteger("length")
  23. if t.Method() == "GET" {
  24. t.T["modifyusers"] = u.GetModifyUsers()
  25. t.Render("sitetask.html", &t.T)
  26. } else {
  27. query := map[string]interface{}{
  28. "b_delete": false,
  29. }
  30. auth := qu.IntAll(t.GetSession("auth"))
  31. if auth == u.Role_Dev {
  32. user := qu.ObjToString(t.GetSession("loginuser"))
  33. query["s_modifyuser"] = user
  34. }
  35. if search != "" {
  36. query["$or"] = []interface{}{
  37. map[string]interface{}{"s_spidercode": map[string]interface{}{"$regex": search}},
  38. map[string]interface{}{"s_site": map[string]interface{}{"$regex": search}},
  39. map[string]interface{}{"s_channel": map[string]interface{}{"$regex": search}},
  40. }
  41. }
  42. if modifyuser != "-1" && auth > u.Role_Dev {
  43. query["s_modifyuser"] = modifyuser
  44. }
  45. if repair != "-1" {
  46. query["b_repair"] = repair == "1"
  47. }
  48. if codestate > -1 {
  49. query["i_state"] = codestate
  50. }
  51. if overdue != "-1" {
  52. if overdue == "1" { //查询超期
  53. query["l_max_repair_time"] = map[string]interface{}{
  54. "$lt": time.Now().Unix(),
  55. }
  56. } else { //未超期
  57. query["l_max_repair_time"] = map[string]interface{}{
  58. "$gte": time.Now().Unix(),
  59. }
  60. }
  61. }
  62. if latestdata != "-1" {
  63. query["b_latestdata"] = latestdata == "1"
  64. }
  65. sort := `{"%s":%d}`
  66. orderIndex := t.GetString("order[0][column]")
  67. orderName := t.GetString(fmt.Sprintf("columns[%s][data]", orderIndex))
  68. orderType := 1
  69. if t.GetString("order[0][dir]") != "asc" {
  70. orderType = -1
  71. }
  72. sort = fmt.Sprintf(sort, orderName, orderType)
  73. qu.Debug("query:", query, sort)
  74. task, _ := u.MgoEB.Find("spider_important_warning", query, sort, nil, false, start, limit)
  75. count := u.MgoEB.Count("spider_important_warning", query)
  76. for _, t := range *task {
  77. l_max_repair_time := qu.Int64All(t["l_max_repair_time"])
  78. t["b_overdue"] = l_max_repair_time < time.Now().Unix()
  79. //lua, _ := u.MgoEB.FindOneByField("luaconfig", map[string]interface{}{"code": t["s_spidercode"]}, map[string]interface{}{"state": 1})
  80. //t["i_state"] = (*lua)["state"]
  81. t["encode"] = util.Se.Encode2Hex(fmt.Sprint(t["s_spidercode"]))
  82. }
  83. t.ServeJson(map[string]interface{}{"draw": draw, "data": task, "recordsFiltered": count, "recordsTotal": count})
  84. }
  85. }
  86. func (t *TaskM) SiteTaskClose() {
  87. if qu.IntAll(t.GetSession("auth")) > u.Role_Dev {
  88. id := t.GetString("id")
  89. query := map[string]interface{}{
  90. "_id": mongodb.StringTOBsonId(id),
  91. }
  92. set := map[string]interface{}{
  93. "b_delete": true,
  94. "l_update_time": time.Now().Unix(),
  95. }
  96. ok := siteTaskUpdate(query, set)
  97. if ok {
  98. t.ServeJson("y")
  99. } else {
  100. t.ServeJson("n")
  101. }
  102. }
  103. t.ServeJson("没有权限")
  104. }
  105. func (t *TaskM) SiteTaskEdit() {
  106. spidercode := t.GetString("spidercode")
  107. //查询关联爬虫
  108. relatecode := ""
  109. lua, _ := u.MgoEB.FindOneByField("luaconfig", map[string]interface{}{"code": spidercode + u.Bu, "state": 5}, map[string]interface{}{"relatecode": 1})
  110. if len(*lua) > 0 {
  111. relatecode = spidercode + u.Bu
  112. }
  113. taskIds := CheckTask([]string{spidercode}, 1) //是否有常规任务
  114. taskid := ""
  115. if len(taskIds) == 1 {
  116. taskid = taskIds[0]
  117. } else if len(taskIds) > 1 {
  118. qu.Debug("任务量异常:", spidercode, len(taskIds))
  119. }
  120. result := map[string]string{
  121. "taskid": taskid,
  122. "relatecode": relatecode,
  123. }
  124. t.ServeJson(result)
  125. }
  126. func (t *TaskM) UpdateCodeState() {
  127. code := t.GetString("code")
  128. state, _ := t.GetInteger("state")
  129. ok := u.MgoEB.Update("luaconfig", map[string]interface{}{"code": code, "state": 5}, map[string]interface{}{"$set": map[string]interface{}{"state": state}}, false, false)
  130. t.ServeJson(map[string]interface{}{"ok": ok})
  131. }
  132. func siteTaskUpdate(query, set map[string]interface{}) bool {
  133. return u.MgoEB.Update("spider_important_warning", query, map[string]interface{}{"$set": set}, false, false)
  134. }