errlua.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package luaerrdata
  2. import (
  3. qu "qfw/util"
  4. mgdb "qfw/util/mongodb"
  5. mgu "qfw/util/mongodbutil"
  6. "spider"
  7. util "spiderutil"
  8. "time"
  9. "github.com/go-xweb/xweb"
  10. )
  11. type ErrorLua struct {
  12. *xweb.Action
  13. errorLuaIndex xweb.Mapper `xweb:"/center/errorLua"` //加载错误爬虫信息
  14. reUpSpider xweb.Mapper `xweb:"/center/errorLua/upSpider"` //重新上架
  15. }
  16. func (el *ErrorLua) ErrorLuaIndex() {
  17. defer qu.Catch()
  18. if el.Method() == "POST" {
  19. auth := qu.IntAll(el.GetSession("auth"))
  20. username := el.GetSession("loginuser").(string)
  21. query := map[string]interface{}{
  22. // "modifytime": map[string]interface{}{
  23. // "$exists": false,
  24. // },
  25. }
  26. if auth == role_dev {
  27. if username != "" {
  28. query["modifyuser"] = username
  29. } else {
  30. el.Write("数据错误")
  31. }
  32. }
  33. qu.Debug("query:", query)
  34. list := *mgu.Find("spider_loadfail", "spider", "spider", query, map[string]interface{}{"_id": -1}, nil, false, -1, -1)
  35. for _, l := range list {
  36. l["encode"] = util.Se.Encode2Hex(qu.ObjToString(l["code"]))
  37. }
  38. el.ServeJson(map[string]interface{}{"data": list})
  39. } else {
  40. el.Render("errlualist.html")
  41. }
  42. }
  43. func (el *ErrorLua) ReUpSpider() {
  44. defer qu.Catch()
  45. code := el.GetString("code")
  46. id := el.GetString("id")
  47. lua := *mgdb.FindOne("luaconfig", `{"code":"`+code+`"}`)
  48. success := false
  49. text := ""
  50. if len(lua) > 0 {
  51. event := qu.IntAll(lua["event"])
  52. if qu.IntAll(lua["state"]) == 5 { //是上架状态
  53. //重新上架
  54. b, err := spider.UpdateSpiderByCodeState(code, "5", event)
  55. if b && err == nil {
  56. success = true
  57. go mgu.Update("spider_loadfail", "spider", "spider",
  58. map[string]interface{}{
  59. "_id": qu.StringTOBsonId(id),
  60. },
  61. map[string]interface{}{
  62. "$set": map[string]interface{}{
  63. "modifytime": time.Now().Unix(),
  64. },
  65. }, false, false)
  66. } else {
  67. success = false
  68. text = err.Error()
  69. }
  70. } else {
  71. success = false
  72. text = "爬虫暂时无法上架,请联系管理人员"
  73. }
  74. } else {
  75. success = false
  76. text = "没有对应爬虫"
  77. }
  78. el.ServeJson(map[string]interface{}{"success": success, "text": text})
  79. }