server.go 5.6 KB

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