server.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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. "time"
  11. )
  12. const HREF = "http://127.0.0.1:8091/%s"
  13. type Result struct {
  14. Msg string `json:"msg"`
  15. Err int `json:"err"`
  16. Data *Data `json:"data"`
  17. }
  18. type Data struct {
  19. List []map[string]interface{} `json:"list"`
  20. Total int `json:"total"`
  21. }
  22. // ServerActionCodeList 获取爬虫列表
  23. func (a *App) ServerActionCodeList(param map[string]interface{}) *Result {
  24. qu.Debug("param---", param)
  25. data := &Result{}
  26. if User != nil {
  27. formatUser(param)
  28. qu.Debug("param---", param)
  29. getResult(param, data, "getcodes")
  30. } else {
  31. data.Msg = "用户登录异常,请重新登录!"
  32. qu.Debug(data.Msg)
  33. }
  34. return data
  35. }
  36. // ServerActionGetModifyUsers 获取爬虫开发人员列表
  37. func (a *App) ServerActionGetModifyUsers() *Result {
  38. data := &Result{}
  39. if User != nil && User.Auth > 1 { //禁止开发查询
  40. getResult(nil, data, "getmodifyusers")
  41. if len(User.Ids) > 0 && User.Identity == 0 { //外包审核员或管理员只能查看外包开发人员信息
  42. resultUsers := []map[string]interface{}{}
  43. for _, user := range data.Data.List {
  44. userid := qu.ObjToString(user["_id"])
  45. for _, id := range User.Ids {
  46. if userid == id {
  47. resultUsers = append(resultUsers, user)
  48. break
  49. }
  50. }
  51. }
  52. data.Data.List = resultUsers
  53. data.Data.Total = len(resultUsers)
  54. }
  55. } else {
  56. data.Msg = "查询开发列表失败,权限不够!"
  57. }
  58. return data
  59. }
  60. // ServerActionClaimCodes 爬虫认领
  61. func (a *App) ServerActionClaimCodes() *Result {
  62. data := &Result{}
  63. if User.Auth == 1 {
  64. param := map[string]interface{}{}
  65. formatUser(param)
  66. getResult(data, param, "claimcode")
  67. } else {
  68. data.Msg = "认领失败!"
  69. }
  70. return data
  71. }
  72. // ServerActionUpdateCode 爬虫更新
  73. func (a *App) ServerActionUpdateCode(param map[string]interface{}) *Result {
  74. qu.Debug("param---", param)
  75. data := &Result{}
  76. getResult(param, data, "updatecode")
  77. qu.Debug(*data)
  78. return data
  79. }
  80. // 格式化User对象
  81. func formatUser(tmp map[string]interface{}) {
  82. v := reflect.ValueOf(User)
  83. if v.Kind() == reflect.Ptr {
  84. v = v.Elem()
  85. }
  86. t := v.Type()
  87. for i := 0; i < v.NumField(); i++ {
  88. field := t.Field(i).Tag.Get("json")
  89. value := v.Field(i).Interface()
  90. tmp[field] = value
  91. }
  92. }
  93. // 获取接口结果
  94. func getResult(param, result interface{}, route string) {
  95. jsonData, err := json.Marshal(param)
  96. if err != nil {
  97. qu.Debug("Error marshaling request:", err)
  98. return
  99. }
  100. req, err := http.NewRequest("POST", fmt.Sprintf(HREF, route), bytes.NewBuffer(jsonData))
  101. if err != nil {
  102. qu.Debug("Error creating request:", err)
  103. return
  104. }
  105. // 设置请求头
  106. req.Header.Set("Content-Type", "application/json")
  107. // 发送请求
  108. client := &http.Client{
  109. Timeout: 10 * time.Second,
  110. }
  111. resp, err := client.Do(req)
  112. if err != nil {
  113. qu.Debug("Error sending request:", err)
  114. return
  115. }
  116. defer resp.Body.Close()
  117. // 读取响应体
  118. body, err := ioutil.ReadAll(resp.Body)
  119. if err != nil {
  120. qu.Debug("Error reading response body:", err)
  121. return
  122. }
  123. if err := json.Unmarshal(body, &result); err != nil {
  124. qu.Debug("Error unmarshaling response:", err)
  125. return
  126. }
  127. qu.Debug(result)
  128. }