server.go 4.1 KB

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