server.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  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. hc "spider_creator/httpclient"
  12. "time"
  13. )
  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. r := &Result{}
  27. if User != nil {
  28. getResult(map[string]interface{}{"param": param, "user": User}, r, "getcodes")
  29. } else {
  30. r.Msg = "用户登录异常,请重新登录!"
  31. qu.Debug(r.Msg)
  32. }
  33. return r
  34. }
  35. // ServerActionClaimCodes 爬虫认领
  36. func (a *App) ServerActionClaimCodes() *Result {
  37. r := &Result{}
  38. if User != nil && User.Auth == 1 {
  39. getResult(User, r, "claimcode")
  40. } else {
  41. r.Msg = "认领失败!"
  42. }
  43. return r
  44. }
  45. // ServerActionCopyCode 复制爬虫
  46. func (a *App) ServerActionCopyCode(param map[string]interface{}) *Result {
  47. r := &Result{}
  48. if User != nil && User.Auth == 1 {
  49. getResult(map[string]interface{}{"param": param, "user": User}, r, "copycode")
  50. } else {
  51. r.Msg = "复制爬虫失败!"
  52. }
  53. return r
  54. }
  55. // ServerActionUpdateCode 爬虫更新
  56. func (a *App) ServerActionUpdateCode(param map[string]interface{}) *Result {
  57. qu.Debug("param---", param)
  58. r := &Result{}
  59. if User != nil {
  60. //formatUser(param)
  61. qu.Debug("param---", param)
  62. getResult(map[string]interface{}{"param": param, "user": User}, r, "updatecode")
  63. } else {
  64. r.Msg = "用户登录异常,请重新登录!"
  65. qu.Debug(r.Msg)
  66. }
  67. return r
  68. }
  69. // ServerActionUpdateCodeState 爬虫状态更新
  70. func (a *App) ServerActionUpdateCodeState(param map[string]interface{}) *Result {
  71. qu.Debug("param---", param)
  72. /*
  73. 1、提交审核
  74. 2、回退
  75. 3、打回
  76. 4、审核通过
  77. 5、上线
  78. */
  79. r := &Result{}
  80. //前期校验
  81. if User != nil {
  82. //提交审核时,验证校验清单
  83. p, _ := param["param"].(map[string]interface{})
  84. if qu.ObjToString(p["stype"]) == "提交" {
  85. code := qu.ObjToString(p["code"])
  86. vr := be.VerifyResults[code]
  87. if 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. p["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. // ServerActionQlmRecordList 千里马采集记录
  110. func (a *App) ServerActionQlmRecordList(param map[string]interface{}) *Result {
  111. r := &Result{}
  112. //前期校验
  113. if User != nil {
  114. getResult(map[string]interface{}{"param": param, "user": User}, r, "qlm/recordList")
  115. } else {
  116. r.Msg = "用户登录异常,请重新登录!"
  117. qu.Debug(r.Msg)
  118. }
  119. return r
  120. }
  121. // ServerActionQlmAddRecord 新增千里马采集记录
  122. func (a *App) ServerActionQlmAddRecord(param map[string]interface{}) *Result {
  123. qu.Debug("param---", param)
  124. r := &Result{}
  125. //前期校验
  126. if User != nil {
  127. getResult(map[string]interface{}{"param": param, "user": User}, r, "qlm/newRecord")
  128. } else {
  129. r.Msg = "用户登录异常,请重新登录!"
  130. qu.Debug(r.Msg)
  131. }
  132. return r
  133. }
  134. // ServerActionQlmRemoveRepeat 千里马数据去重
  135. func (a *App) ServerActionQlmRemoveRepeat(param map[string]interface{}) *Result {
  136. qu.Debug("param---", param)
  137. r := &Result{}
  138. //前期校验
  139. if User != nil {
  140. getResult(map[string]interface{}{"param": param}, r, "qlm/removeRepeat")
  141. } else {
  142. r.Msg = "用户登录异常,请重新登录!"
  143. qu.Debug(r.Msg)
  144. }
  145. return r
  146. }
  147. // ServerActionQlmPushData 千里马数据推送
  148. func (a *App) ServerActionQlmPushData(param map[string]interface{}) *Result {
  149. qu.Debug("param---", param)
  150. r := &Result{}
  151. //前期校验
  152. if User != nil {
  153. getResult(map[string]interface{}{"param": param}, r, "qlm/pushData")
  154. } else {
  155. r.Msg = "用户登录异常,请重新登录!"
  156. qu.Debug(r.Msg)
  157. }
  158. return r
  159. }
  160. // ServerActionQlmClearData 千里马数据清理
  161. func (a *App) ServerActionQlmClearData(param map[string]interface{}) *Result {
  162. qu.Debug("param---", param)
  163. r := &Result{}
  164. //前期校验
  165. if User != nil {
  166. getResult(map[string]interface{}{"param": param}, r, "qlm/clearData")
  167. } else {
  168. r.Msg = "用户登录异常,请重新登录!"
  169. qu.Debug(r.Msg)
  170. }
  171. return r
  172. }
  173. // 格式化User对象
  174. func formatUser(tmp map[string]interface{}) {
  175. v := reflect.ValueOf(User)
  176. if v.Kind() == reflect.Ptr {
  177. v = v.Elem()
  178. }
  179. t := v.Type()
  180. for i := 0; i < v.NumField(); i++ {
  181. field := t.Field(i).Tag.Get("json")
  182. value := v.Field(i).Interface()
  183. tmp[field] = value
  184. }
  185. }
  186. func getResult(param, result interface{}, route string) {
  187. jsonData, err := json.Marshal(param)
  188. if err != nil {
  189. qu.Debug("Error marshaling request:", err)
  190. return
  191. }
  192. req, err := http.NewRequest("POST", fmt.Sprintf(serverAddress, route), bytes.NewBuffer(jsonData))
  193. if err != nil {
  194. qu.Debug("Error creating request:", err)
  195. return
  196. }
  197. // 设置请求头
  198. req.Header.Set("Content-Type", "application/json")
  199. // 发送请求
  200. //client := &http.Client{
  201. // Timeout: 10 * time.Second,
  202. //}
  203. client := hc.HttpClient()
  204. client.Timeout = 10 * time.Second
  205. resp, err := client.Do(req)
  206. if err != nil {
  207. qu.Debug("Error sending request:", err)
  208. return
  209. }
  210. defer resp.Body.Close()
  211. // 读取响应体
  212. body, err := ioutil.ReadAll(resp.Body)
  213. if err != nil {
  214. qu.Debug("Error reading response body:", err)
  215. return
  216. }
  217. if err := json.Unmarshal(body, &result); err != nil {
  218. qu.Debug("Error unmarshaling response:", err)
  219. return
  220. }
  221. }