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