server.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. package main
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "io/ioutil"
  7. qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  8. "net/http"
  9. "reflect"
  10. be "spider_creator/backend"
  11. "time"
  12. )
  13. const HREF = "http://127.0.0.1:8091/%s"
  14. type Result struct {
  15. Msg string `json:"msg"`
  16. Err int `json:"err"`
  17. Data *Data `json:"data"`
  18. }
  19. type Data struct {
  20. List []map[string]interface{} `json:"list"`
  21. Total int `json:"total"`
  22. }
  23. // ServerActionCodeList 获取爬虫列表
  24. func (a *App) ServerActionCodeList(param map[string]interface{}) *Result {
  25. qu.Debug("param---", param)
  26. data := &Result{}
  27. if User != nil {
  28. //formatUser(param)
  29. param["user"] = User
  30. qu.Debug("param---", param)
  31. getResult(param, data, "getcodes")
  32. } else {
  33. data.Msg = "用户登录异常,请重新登录!"
  34. qu.Debug(data.Msg)
  35. }
  36. return data
  37. }
  38. // ServerActionClaimCodes 爬虫认领
  39. func (a *App) ServerActionClaimCodes() *Result {
  40. data := &Result{}
  41. if User != nil && User.Auth == 1 {
  42. getResult(User, data, "claimcode")
  43. } else {
  44. data.Msg = "认领失败!"
  45. }
  46. return data
  47. }
  48. // ServerActionUpdateCode 爬虫更新
  49. func (a *App) ServerActionUpdateCode(param map[string]interface{}) *Result {
  50. qu.Debug("param---", param)
  51. data := &Result{}
  52. if User != nil {
  53. //formatUser(param)
  54. qu.Debug("param---", param)
  55. getResult(map[string]interface{}{"param": param, "user": User}, data, "updatecode")
  56. } else {
  57. data.Msg = "用户登录异常,请重新登录!"
  58. qu.Debug(data.Msg)
  59. }
  60. qu.Debug(*data)
  61. return data
  62. }
  63. // ServerActionUpdateCode 爬虫状态更新
  64. func (a *App) ServerActionUpdateCodeState(param map[string]interface{}) *Result {
  65. qu.Debug("param---", param)
  66. /*
  67. 1、提交审核
  68. 2、回退
  69. 3、打回
  70. 4、审核通过
  71. 5、上线
  72. */
  73. data := &Result{}
  74. //前期校验
  75. if User != nil {
  76. //提交审核时,验证校验清单
  77. lua, _ := param["lua"].(map[string]interface{})
  78. if qu.IntAll(lua["state"]) == 1 {
  79. code := qu.ObjToString(lua["code"])
  80. if vr := be.VerifyResults[code]; vr == nil { //没有检验清单,不允许提交
  81. data.Msg = "未验证,无法提交!"
  82. } else if !vr.ListItems || !vr.Content || !vr.Title || !vr.PublishTime { //校验检验清单必通过项
  83. //vr.ListTrunPage
  84. data.Msg = "验证清单未通过!"
  85. } else {
  86. param["verify"] = vr
  87. }
  88. }
  89. } else {
  90. data.Msg = "用户登录异常,请重新登录!"
  91. qu.Debug(data.Msg)
  92. }
  93. if data.Msg == "" {
  94. param["user"] = User
  95. //formatUser(param)
  96. getResult(param, data, "updatecodestate")
  97. }
  98. qu.Debug(*data)
  99. return data
  100. }
  101. // 格式化User对象
  102. func formatUser(tmp map[string]interface{}) {
  103. v := reflect.ValueOf(User)
  104. if v.Kind() == reflect.Ptr {
  105. v = v.Elem()
  106. }
  107. t := v.Type()
  108. for i := 0; i < v.NumField(); i++ {
  109. field := t.Field(i).Tag.Get("json")
  110. value := v.Field(i).Interface()
  111. tmp[field] = value
  112. }
  113. }
  114. // 获取接口结果
  115. func getResult(param, result interface{}, route string) {
  116. jsonData, err := json.Marshal(param)
  117. if err != nil {
  118. qu.Debug("Error marshaling request:", err)
  119. return
  120. }
  121. req, err := http.NewRequest("POST", fmt.Sprintf(HREF, route), bytes.NewBuffer(jsonData))
  122. if err != nil {
  123. qu.Debug("Error creating request:", err)
  124. return
  125. }
  126. // 设置请求头
  127. req.Header.Set("Content-Type", "application/json")
  128. // 发送请求
  129. client := &http.Client{
  130. Timeout: 10 * time.Second,
  131. }
  132. resp, err := client.Do(req)
  133. if err != nil {
  134. qu.Debug("Error sending request:", err)
  135. return
  136. }
  137. defer resp.Body.Close()
  138. // 读取响应体
  139. body, err := ioutil.ReadAll(resp.Body)
  140. if err != nil {
  141. qu.Debug("Error reading response body:", err)
  142. return
  143. }
  144. if err := json.Unmarshal(body, &result); err != nil {
  145. qu.Debug("Error unmarshaling response:", err)
  146. return
  147. }
  148. qu.Debug(result)
  149. }