server.go 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  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 UserInfo struct {
  14. ID string `json:"_id"`
  15. Username string `json:"s_name"`
  16. Fullname string `json:"s_fullname"`
  17. Email string `json:"s_email"`
  18. Auth int `json:"i_auth"`
  19. Scope int `json:"i_scope"`
  20. Identity int `json:"i_identity"`
  21. Ids []string `json:"ids"`
  22. }
  23. type Result struct {
  24. Msg string `json:"msg"`
  25. Err int `json:"err"`
  26. Data Data `json:"data"`
  27. }
  28. type Data struct {
  29. List []map[string]interface{} `json:"list"`
  30. Total int `json:"total"`
  31. }
  32. var (
  33. //User map[string]interface{} //user对象
  34. User *UserInfo //user对象
  35. )
  36. // ServerActionUserLogin 登录
  37. func (a *App) ServerActionUserLogin(param map[string]interface{}) map[string]interface{} {
  38. qu.Debug("param---", param)
  39. User = &UserInfo{}
  40. //User = map[string]interface{}{}
  41. getResult(User, param, "login")
  42. qu.Debug("user:", *User)
  43. if User.ID == "" {
  44. return map[string]interface{}{
  45. "msg": "登录失败",
  46. "err": 1,
  47. "data": nil,
  48. }
  49. }
  50. return map[string]interface{}{
  51. "msg": "",
  52. "err": 0,
  53. "data": User,
  54. }
  55. }
  56. // ServerActionCheckLogin 检查是否登录
  57. func (a *App) ServerActionCheckLogin() map[string]interface{} {
  58. if User != nil && User.ID != "" {
  59. return map[string]interface{}{
  60. "msg": "",
  61. "err": 0,
  62. "data": User,
  63. }
  64. }
  65. return map[string]interface{}{
  66. "msg": "",
  67. "err": 1,
  68. "data": nil,
  69. }
  70. }
  71. // ServerActionUserLogout 退出登录
  72. func (a *App) ServerActionUserLogout() map[string]interface{} {
  73. User = &UserInfo{}
  74. return map[string]interface{}{
  75. "msg": "退出成功",
  76. "err": 0,
  77. "data": nil,
  78. }
  79. }
  80. // ServerActionCodeList 获取爬虫列表
  81. func (a *App) ServerActionCodeList(param map[string]interface{}) Result {
  82. qu.Debug("param---", param)
  83. data := &Result{}
  84. if User != nil {
  85. formatUser(param)
  86. qu.Debug("param---", param)
  87. getResult(data, param, "getcodes")
  88. } else {
  89. data.Msg = "用户登录异常,请重新登录!"
  90. data.Err = 1
  91. qu.Debug(data.Msg)
  92. }
  93. return *data
  94. //return map[string]interface{}{
  95. // "msg": msg,
  96. // "err": err,
  97. // "data": data,
  98. //}
  99. }
  100. // ServerActionGetModifyUsers 获取爬虫开发人员列表
  101. func (a *App) ServerActionGetModifyUsers() Result {
  102. data := &Result{}
  103. if User != nil && User.Auth > 1 { //禁止开发查询
  104. getResult(data, nil, "getmodifyusers")
  105. if len(User.Ids) > 0 && User.Identity == 0 { //外包审核员或管理员只能查看外包开发人员信息
  106. resultUsers := []map[string]interface{}{}
  107. for _, user := range data.Data.List {
  108. userid := qu.ObjToString(user["_id"])
  109. for _, id := range User.Ids {
  110. if userid == id {
  111. resultUsers = append(resultUsers, user)
  112. break
  113. }
  114. }
  115. }
  116. data.Data.List = resultUsers
  117. data.Data.Total = len(resultUsers)
  118. }
  119. } else {
  120. data.Msg = "查询开发列表失败"
  121. data.Err = 1
  122. }
  123. return *data
  124. }
  125. // ServerActionClaimCodes 爬虫认领
  126. func (a *App) ServerActionClaimCodes() Result {
  127. data := &Result{}
  128. if User.Auth == 1 {
  129. param := map[string]interface{}{}
  130. formatUser(param)
  131. getResult(data, param, "claimcode")
  132. } else {
  133. data.Msg = "认领失败!"
  134. data.Err = 1
  135. }
  136. return *data
  137. }
  138. // ServerActionUpdateCode 爬虫更新
  139. func (a *App) ServerActionUpdateCode(param []map[string]interface{}) map[string]interface{} {
  140. qu.Debug("param---", param)
  141. ////[
  142. //// [
  143. //// {
  144. //// "query":{},
  145. //// "set":{}
  146. //// },
  147. //// ],
  148. //// [
  149. //// {
  150. //// "query":{},
  151. //// "set":{}
  152. //// },
  153. //// ],
  154. ////]
  155. //data := &Result{}
  156. //var msg string
  157. //var err int
  158. //arr := [][]map[string]interface{}{}
  159. //for _, tmp := range param {
  160. // query, _ := tmp["query"].(map[string]interface{})
  161. // set, _ := tmp["set"].(map[string]interface{})
  162. // if query == nil || set == nil {
  163. // msg = "更新条件错误!"
  164. // err = 1
  165. // break
  166. // }
  167. // update := []map[string]interface{}{
  168. // query,
  169. // set,
  170. // }
  171. // arr = append(arr, update)
  172. //}
  173. //
  174. //getResult(data, arr, "updatecode")
  175. //
  176. //return map[string]interface{}{
  177. // "msg": "",
  178. // "err": 0,
  179. // "data": data,
  180. //}
  181. return map[string]interface{}{}
  182. }
  183. // 格式化User对象
  184. func formatUser(tmp map[string]interface{}) {
  185. v := reflect.ValueOf(User)
  186. if v.Kind() == reflect.Ptr {
  187. v = v.Elem()
  188. }
  189. t := v.Type()
  190. for i := 0; i < v.NumField(); i++ {
  191. field := t.Field(i).Tag.Get("json")
  192. value := v.Field(i).Interface()
  193. tmp[field] = value
  194. }
  195. }
  196. // 获取接口结果
  197. func getResult(result, param interface{}, route string) {
  198. jsonData, err := json.Marshal(param)
  199. if err != nil {
  200. qu.Debug("Error marshaling request:", err)
  201. return
  202. }
  203. req, err := http.NewRequest("POST", fmt.Sprintf(HREF, route), bytes.NewBuffer(jsonData))
  204. if err != nil {
  205. qu.Debug("Error creating request:", err)
  206. return
  207. }
  208. // 设置请求头
  209. req.Header.Set("Content-Type", "application/json")
  210. // 发送请求
  211. client := &http.Client{
  212. Timeout: 10 * time.Second,
  213. }
  214. resp, err := client.Do(req)
  215. if err != nil {
  216. qu.Debug("Error sending request:", err)
  217. return
  218. }
  219. defer resp.Body.Close()
  220. // 读取响应体
  221. body, err := ioutil.ReadAll(resp.Body)
  222. if err != nil {
  223. qu.Debug("Error reading response body:", err)
  224. return
  225. }
  226. if err := json.Unmarshal(body, &result); err != nil {
  227. qu.Debug("Error unmarshaling response:", err)
  228. return
  229. }
  230. qu.Debug(result)
  231. }