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