fwh_siteInfo.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package fwh_pro
  2. import (
  3. "fmt"
  4. "io"
  5. "net/http"
  6. "net/url"
  7. "strconv"
  8. "strings"
  9. "time"
  10. )
  11. type SiteInfoListPayload struct {
  12. Search *string `json:"search,omitempty"` // 只能搜索单条SN
  13. Serials *string `json:"serials,omitempty"` // 可搜索多条SN,SN之间以‘,’隔开
  14. CountryId *int `json:"countryId,omitempty"`
  15. ProvinceId *int `json:"provinceId,omitempty"`
  16. CityId *int `json:"cityId,omitempty"`
  17. NetworkStatus *int `json:"networkStatus,omitempty"`
  18. DeviceStatus *int `json:"deviceStatus,omitempty"`
  19. OnOffStatus *int `json:"onOffStatus,omitempty"`
  20. PageSize uint `json:"pageSize"`
  21. PageNum uint `json:"pageNum"`
  22. Lang string `json:"lang"`
  23. }
  24. type SiteModeInfoPayload struct {
  25. GatewayId string `json:"gatewayId"`
  26. ShowType int `json:"showType"`
  27. Lang string `json:"lang"`
  28. }
  29. // 查询站点基本信息
  30. func QuerySiteInfoList(sn []string, pageSize uint, pageNum uint) ([]byte, error) {
  31. snList := strings.Join(sn, ",")
  32. token := getLoginToken()
  33. // 要发送的 JSON
  34. payload := SiteInfoListPayload{
  35. Serials: &snList,
  36. PageSize: pageSize,
  37. PageNum: pageNum,
  38. Lang: "ZH_CN",
  39. }
  40. // 要发送的表单数据
  41. form := url.Values{}
  42. form.Set("serials", *payload.Serials) // *string 转 string
  43. form.Set("pageSize", fmt.Sprintf("%d", payload.PageSize))
  44. form.Set("pageNum", fmt.Sprintf("%d", payload.PageNum))
  45. form.Set("lang", payload.Lang)
  46. // 创建请求
  47. req, err := http.NewRequest(
  48. http.MethodPost,
  49. "https://energy.franklinwh.com/hes-gateway/manage/selectIotFirmwareGatewayList",
  50. strings.NewReader(form.Encode()))
  51. if err != nil {
  52. fmt.Println(err.Error())
  53. return nil, err
  54. }
  55. // 设置 Content-Type 和 Authorization
  56. req.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
  57. req.Header.Set("Logintoken", token)
  58. // 发送请求
  59. client := &http.Client{Timeout: 5 * time.Second}
  60. resp, err := client.Do(req)
  61. if err != nil {
  62. fmt.Println(err.Error())
  63. return nil, err
  64. }
  65. defer resp.Body.Close()
  66. body, _ := io.ReadAll(resp.Body)
  67. // fmt.Printf("Status: %s\nBody: %s\n", resp.Status, body)
  68. return body, nil
  69. }
  70. // 查询站点工作模式信息
  71. func QuerySiteModeInfo(sn string) ([]byte, error) {
  72. token := getLoginToken()
  73. // 要发送的 JSON
  74. payload := SiteModeInfoPayload{
  75. GatewayId: sn,
  76. ShowType: 1,
  77. Lang: "ZH_CN",
  78. }
  79. // 要发送的表单数据
  80. form := url.Values{}
  81. form.Set("gatewayId", payload.GatewayId)
  82. form.Set("showType", strconv.Itoa(payload.ShowType))
  83. form.Set("lang", payload.Lang)
  84. // 创建请求
  85. req, err := http.NewRequest(
  86. http.MethodPost,
  87. "https://energy.franklinwh.com/hes-gateway/manage/tou/getGatewayTouListV2",
  88. strings.NewReader(form.Encode()))
  89. if err != nil {
  90. fmt.Println(err.Error())
  91. return nil, err
  92. }
  93. // 设置 Content-Type 和 Authorization
  94. req.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
  95. req.Header.Set("Logintoken", token)
  96. // fmt.Println(req.Header)
  97. // 发送请求
  98. client := &http.Client{Timeout: 5 * time.Second}
  99. resp, err := client.Do(req)
  100. if err != nil {
  101. fmt.Println(err.Error())
  102. return nil, err
  103. }
  104. defer resp.Body.Close()
  105. body, _ := io.ReadAll(resp.Body)
  106. // fmt.Printf("Status: %s\nBody: %s\n", resp.Status, body)
  107. return body, nil
  108. }