fwh_siteInfo.go 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. package fwh_pro
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "fmt"
  6. "fwh-toolbox-server/config"
  7. "fwh-toolbox-server/dto"
  8. "net/url"
  9. "strconv"
  10. "strings"
  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. // 要发送的 JSON
  43. payload := SiteBaseInfoListPayload{
  44. Serials: &snList,
  45. PageSize: pageSize,
  46. PageNum: pageNum,
  47. Lang: "ZH_CN",
  48. }
  49. // 要发送的表单数据
  50. form := url.Values{}
  51. form.Set("serials", *payload.Serials) // *string 转 string
  52. form.Set("pageSize", fmt.Sprintf("%d", payload.PageSize))
  53. form.Set("pageNum", fmt.Sprintf("%d", payload.PageNum))
  54. form.Set("lang", payload.Lang)
  55. url := fmt.Sprintf("https://%s/hes-gateway/manage/selectIotFirmwareGatewayList", config.FWH_ENERGY)
  56. response, err := FwhHttpPost(url, form)
  57. if err != nil {
  58. return nil, err
  59. }
  60. return response.Body, nil
  61. }
  62. // 从fwh_pro获取站点基本信息表
  63. func QuerySiteBaseInfoList(para dto.SiteBaseInfoPara) (dto.SiteBaseInfoResponse, error) {
  64. resByte, err := querySiteBaseInfoList(para.SiteList, para.PageSize, para.PageNum)
  65. if err != nil {
  66. return dto.SiteBaseInfoResponse{}, err
  67. }
  68. var siteInfoRes dto.SiteBaseInfoResponse
  69. // 反序列化(unmarshal)
  70. jsonErr := json.Unmarshal(resByte, &siteInfoRes)
  71. if jsonErr != nil {
  72. return dto.SiteBaseInfoResponse{}, jsonErr
  73. }
  74. if siteInfoRes.Code == 401 {
  75. // TODO 尝试重新登录
  76. return dto.SiteBaseInfoResponse{}, errors.New("certification expired")
  77. }
  78. return siteInfoRes, nil
  79. }
  80. // 查询站点信息
  81. func querySiteInfoList(sn *string, pageSize uint, pageNum uint) ([]byte, error) {
  82. // 构造 query 参数
  83. params := url.Values{}
  84. if sn != nil {
  85. params.Add("search", *sn)
  86. }
  87. 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-备注
  88. params.Add("pageSize", fmt.Sprintf("%d", pageSize))
  89. params.Add("pageNum", fmt.Sprintf("%d", pageNum))
  90. params.Add("lang", "ZH_CN")
  91. reqUrl := fmt.Sprintf("https://%s/hes-gateway/manage/selectIotGatewayList", config.FWH_ENERGY)
  92. response, err := FwhHttpGet(reqUrl, params)
  93. if err != nil {
  94. return nil, err
  95. }
  96. return response.Body, nil
  97. }
  98. // 从fwh_pro获取站点基本信息表
  99. func QuerySiteInfoList(para dto.SiteInfoPara) (dto.SiteInfoResponse, error) {
  100. resByte, err := querySiteInfoList(para.SN, para.PageSize, para.PageNum)
  101. if err != nil {
  102. return dto.SiteInfoResponse{}, err
  103. }
  104. var siteInfoRes dto.SiteInfoResponse
  105. // 反序列化(unmarshal)
  106. jsonErr := json.Unmarshal(resByte, &siteInfoRes)
  107. if jsonErr != nil {
  108. return dto.SiteInfoResponse{}, jsonErr
  109. }
  110. if siteInfoRes.Code == 401 {
  111. // TODO 尝试重新登录
  112. return dto.SiteInfoResponse{}, errors.New("certification expired")
  113. }
  114. return siteInfoRes, nil
  115. }
  116. // 查询站点列表(通用)
  117. func querySiteList(
  118. search string,
  119. searchFlag int,
  120. pageSize uint,
  121. pageNum uint,
  122. ) ([]byte, error) {
  123. // 构造 query 参数
  124. params := url.Values{}
  125. params.Add("search", search)
  126. params.Add("searchFlag", fmt.Sprintf("%d", searchFlag)) // 0-全部 1-aGate名称 11-aGate序列号 2-aPower序列号 7-EMS_MAIN版本 8-EMS_DSP版本 10-aPower子版本号 13-协议版本 14-硬件版本 16-备注
  127. params.Add("pageSize", fmt.Sprintf("%d", pageSize))
  128. params.Add("pageNum", fmt.Sprintf("%d", pageNum))
  129. params.Add("lang", "ZH_CN")
  130. reqUrl := fmt.Sprintf("https://%s/hes-gateway/manage/selectIotGatewayList", config.FWH_ENERGY)
  131. response, err := FwhHttpGet(reqUrl, params)
  132. if err != nil {
  133. return nil, err
  134. }
  135. return response.Body, nil
  136. }
  137. // 从fwh_pro获取站点列表
  138. func QuerySiteList(
  139. search string,
  140. searchFlag int,
  141. pageSize uint,
  142. pageNum uint,
  143. ) (dto.SiteInfoResponse, error) {
  144. resByte, err := querySiteList(search, searchFlag, pageSize, pageNum)
  145. if err != nil {
  146. return dto.SiteInfoResponse{}, err
  147. }
  148. var siteInfoRes dto.SiteInfoResponse
  149. // 反序列化(unmarshal)
  150. jsonErr := json.Unmarshal(resByte, &siteInfoRes)
  151. if jsonErr != nil {
  152. return dto.SiteInfoResponse{}, jsonErr
  153. }
  154. if siteInfoRes.Code == 401 {
  155. // TODO 尝试重新登录
  156. return dto.SiteInfoResponse{}, errors.New("certification expired")
  157. }
  158. return siteInfoRes, nil
  159. }
  160. // 查询站点工作模式信息
  161. func querySiteModeInfo(sn string) ([]byte, error) {
  162. // 要发送的 JSON
  163. payload := SiteModeInfoPayload{
  164. GatewayId: sn,
  165. ShowType: 1,
  166. Lang: "ZH_CN",
  167. }
  168. // 要发送的表单数据
  169. form := url.Values{}
  170. form.Set("gatewayId", payload.GatewayId)
  171. form.Set("showType", strconv.Itoa(payload.ShowType))
  172. form.Set("lang", payload.Lang)
  173. url := fmt.Sprintf("https://%s/hes-gateway/manage/tou/getGatewayTouListV2", config.FWH_ENERGY)
  174. response, err := FwhHttpPost(url, form)
  175. if err != nil {
  176. return nil, err
  177. }
  178. return response.Body, nil
  179. }
  180. // 从fwh_pro获取站点工作模式信息
  181. func QuerySiteModeInfo(site string) (dto.SiteModeInfoResponse, error) {
  182. resByte, err := querySiteModeInfo(site)
  183. if err != nil {
  184. return dto.SiteModeInfoResponse{}, err
  185. }
  186. var siteModeInfoRes dto.SiteModeInfoResponse
  187. // 反序列化(unmarshal)
  188. jsonErr := json.Unmarshal(resByte, &siteModeInfoRes)
  189. if jsonErr != nil {
  190. return dto.SiteModeInfoResponse{}, jsonErr
  191. }
  192. if siteModeInfoRes.Code == 401 {
  193. // TODO 尝试重新登录
  194. return dto.SiteModeInfoResponse{}, errors.New("certification expired")
  195. }
  196. return siteModeInfoRes, nil
  197. }