fwh_siteInfo.go 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  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 SiteBaseInfoListPayload 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 SiteInfoListPayload struct {
  26. Search *string `json:"search,omitempty"` // 只能搜索单条SN
  27. CountryId *int `json:"countryId,omitempty"`
  28. ProvinceId *int `json:"provinceId,omitempty"`
  29. CityId *int `json:"cityId,omitempty"`
  30. PageSize uint `json:"pageSize"`
  31. PageNum uint `json:"pageNum"`
  32. Lang string `json:"lang"`
  33. }
  34. type SiteModeInfoPayload struct {
  35. GatewayId string `json:"gatewayId"`
  36. ShowType int `json:"showType"`
  37. Lang string `json:"lang"`
  38. }
  39. // 查询站点基本信息
  40. func QuerySiteBaseInfoList(sn []string, pageSize uint, pageNum uint) ([]byte, error) {
  41. snList := strings.Join(sn, ",")
  42. token := getLoginToken()
  43. // 要发送的 JSON
  44. payload := SiteBaseInfoListPayload{
  45. Serials: &snList,
  46. PageSize: pageSize,
  47. PageNum: pageNum,
  48. Lang: "ZH_CN",
  49. }
  50. // 要发送的表单数据
  51. form := url.Values{}
  52. form.Set("serials", *payload.Serials) // *string 转 string
  53. form.Set("pageSize", fmt.Sprintf("%d", payload.PageSize))
  54. form.Set("pageNum", fmt.Sprintf("%d", payload.PageNum))
  55. form.Set("lang", payload.Lang)
  56. // 创建请求
  57. req, err := http.NewRequest(
  58. http.MethodPost,
  59. "https://energy.franklinwh.com/hes-gateway/manage/selectIotFirmwareGatewayList",
  60. strings.NewReader(form.Encode()))
  61. if err != nil {
  62. zap.L().Error("NewRequest failed.", zap.String("err", err.Error()))
  63. return nil, err
  64. }
  65. // 设置 Content-Type 和 Authorization
  66. req.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
  67. req.Header.Set("Logintoken", token)
  68. // 发送请求
  69. client := &http.Client{Timeout: 30 * time.Second}
  70. resp, err := client.Do(req)
  71. if err != nil {
  72. zap.L().Error("Do Send failed.", zap.String("err", err.Error()))
  73. return nil, err
  74. }
  75. defer resp.Body.Close()
  76. body, _ := io.ReadAll(resp.Body)
  77. // logger.Std.Printf("Status: %s\nBody: %s\n", resp.Status, body)
  78. return body, nil
  79. }
  80. // 查询站点信息
  81. func QuerySiteInfoList(sn *string, pageSize uint, pageNum uint) ([]byte, error) {
  82. token := getLoginToken()
  83. // 构造 query 参数
  84. params := url.Values{}
  85. if sn != nil {
  86. params.Add("search", *sn)
  87. }
  88. params.Add("searchFlag", fmt.Sprintf("%d", 0)) // 0-全部 1-aGate名称 11-aGate序列号 2-aPower序列号 7-EMS_MAIN版本 8-EMS_DSP版本 10-aPower子版本号 13-协议版本 14-硬件版本 16-备注
  89. params.Add("pageSize", fmt.Sprintf("%d", pageSize))
  90. params.Add("pageNum", fmt.Sprintf("%d", pageNum))
  91. params.Add("lang", "ZH_CN")
  92. // 拼接到 URL
  93. baseURL := "https://energy.franklinwh.com/hes-gateway/manage/selectIotGatewayList"
  94. finalURL := baseURL + "?" + params.Encode()
  95. // 创建请求
  96. req, err := http.NewRequest(
  97. http.MethodGet,
  98. finalURL,
  99. nil)
  100. if err != nil {
  101. zap.L().Error("NewRequest failed.", zap.String("err", err.Error()))
  102. return nil, err
  103. }
  104. // 设置 Content-Type 和 Authorization
  105. req.Header.Set("Content-Type", "application/json")
  106. req.Header.Set("Logintoken", token)
  107. // 发送请求
  108. client := &http.Client{Timeout: 30 * time.Second}
  109. resp, err := client.Do(req)
  110. if err != nil {
  111. zap.L().Error("Do Send failed.", zap.String("err", err.Error()))
  112. return nil, err
  113. }
  114. defer resp.Body.Close()
  115. body, _ := io.ReadAll(resp.Body)
  116. // logger.Std.Printf("Status: %s\nBody: %s\n", resp.Status, body)
  117. return body, nil
  118. }
  119. // 查询站点工作模式信息
  120. func QuerySiteModeInfo(sn string) ([]byte, error) {
  121. token := getLoginToken()
  122. // 要发送的 JSON
  123. payload := SiteModeInfoPayload{
  124. GatewayId: sn,
  125. ShowType: 1,
  126. Lang: "ZH_CN",
  127. }
  128. // 要发送的表单数据
  129. form := url.Values{}
  130. form.Set("gatewayId", payload.GatewayId)
  131. form.Set("showType", strconv.Itoa(payload.ShowType))
  132. form.Set("lang", payload.Lang)
  133. // 创建请求
  134. req, err := http.NewRequest(
  135. http.MethodPost,
  136. "https://energy.franklinwh.com/hes-gateway/manage/tou/getGatewayTouListV2",
  137. strings.NewReader(form.Encode()))
  138. if err != nil {
  139. zap.L().Error("NewRequest failed.", zap.String("err", err.Error()))
  140. return nil, err
  141. }
  142. // 设置 Content-Type 和 Authorization
  143. req.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
  144. req.Header.Set("Logintoken", token)
  145. // 发送请求
  146. client := &http.Client{Timeout: 30 * time.Second}
  147. resp, err := client.Do(req)
  148. if err != nil {
  149. zap.L().Error("Do Send failed.", zap.String("err", err.Error()))
  150. return nil, err
  151. }
  152. defer resp.Body.Close()
  153. body, _ := io.ReadAll(resp.Body)
  154. // logger.Std.Printf("Status: %s\nBody: %s\n", resp.Status, body)
  155. return body, nil
  156. }