server.go 4.2 KB

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