fwh_siteInfo.go 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. package fwh_pro
  2. import (
  3. "fmt"
  4. "fwh-toolbox-server/config"
  5. "fwh-toolbox-server/domain"
  6. "fwh-toolbox-server/dto"
  7. "net/url"
  8. "strconv"
  9. "strings"
  10. )
  11. type SiteBaseInfoListPayload 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 SiteInfoListPayload struct {
  25. Search *string `json:"search,omitempty"` // 只能搜索单条SN
  26. CountryId *int `json:"countryId,omitempty"`
  27. ProvinceId *int `json:"provinceId,omitempty"`
  28. CityId *int `json:"cityId,omitempty"`
  29. PageSize uint `json:"pageSize"`
  30. PageNum uint `json:"pageNum"`
  31. Lang string `json:"lang"`
  32. }
  33. type SiteModeInfoPayload struct {
  34. GatewayId string `json:"gatewayId"`
  35. ShowType int `json:"showType"`
  36. Lang string `json:"lang"`
  37. }
  38. // 查询站点基本信息
  39. func querySiteBaseInfoList(sn []string, pageSize uint, pageNum uint) (*domain.FwhResponse[[]dto.SiteBaseInfo], error) {
  40. snList := strings.Join(sn, ",")
  41. // 要发送的 JSON
  42. payload := SiteBaseInfoListPayload{
  43. Serials: &snList,
  44. PageSize: pageSize,
  45. PageNum: pageNum,
  46. Lang: "ZH_CN",
  47. }
  48. // 要发送的表单数据
  49. form := url.Values{}
  50. form.Set("serials", *payload.Serials) // *string 转 string
  51. form.Set("pageSize", fmt.Sprintf("%d", payload.PageSize))
  52. form.Set("pageNum", fmt.Sprintf("%d", payload.PageNum))
  53. form.Set("lang", payload.Lang)
  54. url := fmt.Sprintf("https://%s/hes-gateway/manage/selectIotFirmwareGatewayList", config.FWH_ENERGY)
  55. response, err := FwhHttpPostUnmarshal[[]dto.SiteBaseInfo](url, form)
  56. if err != nil {
  57. return nil, err
  58. }
  59. return response, nil
  60. }
  61. // 从fwh_pro获取站点基本信息表
  62. func QuerySiteBaseInfoList(para dto.SiteBaseInfoPara) (*domain.FwhResponse[[]dto.SiteBaseInfo], error) {
  63. siteInfoRes, err := querySiteBaseInfoList(para.SiteList, para.PageSize, para.PageNum)
  64. if err != nil {
  65. return nil, err
  66. }
  67. if siteInfoRes.Code != 200 {
  68. return nil, fmt.Errorf("[QuerySiteBaseInfoList] 查询失败 code: %d, message: %s", siteInfoRes.Code, siteInfoRes.Message)
  69. }
  70. return siteInfoRes, nil
  71. }
  72. // 查询站点信息
  73. func querySiteInfoList(sn *string, pageSize uint, pageNum uint) (*domain.FwhPageResponse[[]dto.SiteInfo], error) {
  74. // 构造 query 参数
  75. params := url.Values{}
  76. if sn != nil {
  77. params.Add("search", *sn)
  78. }
  79. 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-备注
  80. params.Add("pageSize", fmt.Sprintf("%d", pageSize))
  81. params.Add("pageNum", fmt.Sprintf("%d", pageNum))
  82. params.Add("lang", "ZH_CN")
  83. reqUrl := fmt.Sprintf("https://%s/hes-gateway/manage/selectIotGatewayList", config.FWH_ENERGY)
  84. response, err := FwhHttpGetUnmarshalPage[[]dto.SiteInfo](reqUrl, params)
  85. if err != nil {
  86. return nil, err
  87. }
  88. return response, nil
  89. }
  90. // 从fwh_pro获取站点基本信息表
  91. func QuerySiteInfoList(para dto.SiteInfoPara) (*domain.FwhPageResponse[[]dto.SiteInfo], error) {
  92. siteInfoRes, err := querySiteInfoList(para.SN, para.PageSize, para.PageNum)
  93. if err != nil {
  94. return nil, err
  95. }
  96. if siteInfoRes.Code != 200 {
  97. return nil, fmt.Errorf("[QuerySiteInfoList] 查询失败 code: %d, message: %s", siteInfoRes.Code, siteInfoRes.Message)
  98. }
  99. return siteInfoRes, nil
  100. }
  101. // 查询站点列表(通用)
  102. func querySiteList(
  103. search string,
  104. searchFlag int,
  105. pageSize uint,
  106. pageNum uint,
  107. ) (*domain.FwhPageResponse[[]dto.SiteInfo], error) {
  108. // 构造 query 参数
  109. params := url.Values{}
  110. params.Add("search", search)
  111. 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-备注
  112. params.Add("pageSize", fmt.Sprintf("%d", pageSize))
  113. params.Add("pageNum", fmt.Sprintf("%d", pageNum))
  114. params.Add("lang", "ZH_CN")
  115. reqUrl := fmt.Sprintf("https://%s/hes-gateway/manage/selectIotGatewayList", config.FWH_ENERGY)
  116. response, err := FwhHttpGetUnmarshalPage[[]dto.SiteInfo](reqUrl, params)
  117. if err != nil {
  118. return nil, err
  119. }
  120. return response, nil
  121. }
  122. // 从fwh_pro获取站点列表
  123. func QuerySiteList(
  124. search string,
  125. searchFlag int,
  126. pageSize uint,
  127. pageNum uint,
  128. ) (*domain.FwhPageResponse[[]dto.SiteInfo], error) {
  129. siteInfoRes, err := querySiteList(search, searchFlag, pageSize, pageNum)
  130. if err != nil {
  131. return nil, err
  132. }
  133. if siteInfoRes.Code != 200 {
  134. return nil, fmt.Errorf("[QuerySiteInfoList] 查询失败 code: %d, message: %s", siteInfoRes.Code, siteInfoRes.Message)
  135. }
  136. return siteInfoRes, nil
  137. }
  138. // 查询站点工作模式信息
  139. func querySiteModeInfo(sn string) (*domain.FwhResponse[dto.SiteModeInfo], error) {
  140. // 要发送的 JSON
  141. payload := SiteModeInfoPayload{
  142. GatewayId: sn,
  143. ShowType: 1,
  144. Lang: "ZH_CN",
  145. }
  146. // 要发送的表单数据
  147. form := url.Values{}
  148. form.Set("gatewayId", payload.GatewayId)
  149. form.Set("showType", strconv.Itoa(payload.ShowType))
  150. form.Set("lang", payload.Lang)
  151. url := fmt.Sprintf("https://%s/hes-gateway/manage/tou/getGatewayTouListV2", config.FWH_ENERGY)
  152. response, err := FwhHttpPostUnmarshal[dto.SiteModeInfo](url, form)
  153. if err != nil {
  154. return nil, err
  155. }
  156. return response, nil
  157. }
  158. // 从fwh_pro获取站点工作模式信息
  159. func QuerySiteModeInfo(site string) (*domain.FwhResponse[dto.SiteModeInfo], error) {
  160. siteModeInfoRes, err := querySiteModeInfo(site)
  161. if err != nil {
  162. return nil, err
  163. }
  164. if siteModeInfoRes.Code != 200 {
  165. return nil, fmt.Errorf("[QuerySiteModeInfo] 查询失败 code: %d, message: %s", siteModeInfoRes.Code, siteModeInfoRes.Message)
  166. }
  167. return siteModeInfoRes, nil
  168. }