fwh_touTemplate.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package fwh_test
  2. import (
  3. "fmt"
  4. "fwh-toolbox-server/domain"
  5. "fwh-toolbox-server/dto"
  6. "net/url"
  7. "go.uber.org/zap"
  8. )
  9. type SelectTouTemplateListPayload struct {
  10. SourceType *int `json:"sourceType,omitempty"` // 模板类型 0-系统模板 1-API模板 2-用户推荐
  11. CountryId *int `json:"countryId,omitempty"` // 国家ID
  12. ProvinceId *int `json:"provinceId,omitempty"` // 州ID
  13. Status *int `json:"status,omitempty"` // 发表状态 0-未发布 2-已发布
  14. StartUpdateTime *string `json:"startUpdateTime"` // 开始时间(更新时间) 格式:YYYY-MM-DD HH:mm:SS
  15. EndUpdateTime *string `json:"endUpdateTime"` // 结束时间(更新时间) 格式:YYYY-MM-DD HH:mm:SS
  16. Search string `json:"search"`
  17. PageSize uint `json:"pageSize"`
  18. PageNum uint `json:"pageNum"`
  19. Lang string `json:"lang"` // 语言 - ZH_CN
  20. }
  21. // 查询模板列表
  22. func QueryTouTemplateInfoList(search string, pageSize uint, pageNum uint, sourceType *int, status *int) (*dto.ResPage[interface{}], error) {
  23. // 要发送的表单数据
  24. form := url.Values{}
  25. form.Set("search", search)
  26. if sourceType != nil {
  27. form.Set("sourceType", fmt.Sprintf("%d", *sourceType))
  28. }
  29. if status != nil {
  30. form.Set("status", fmt.Sprintf("%d", *status))
  31. }
  32. form.Set("pageSize", fmt.Sprintf("%d", pageSize))
  33. form.Set("pageNum", fmt.Sprintf("%d", pageNum))
  34. form.Set("lang", "ZH_CN")
  35. zap.L().Info("QueryTouTemplateInfoList form", zap.Any("form", form))
  36. response, err := FwhHttpPostUnmarshalPage[[]interface{}](getFullEnergyUrl("/hes-gateway/manage/selectIotTouTemplateList"), form)
  37. if err != nil {
  38. return nil, err
  39. }
  40. var data []interface{}
  41. if response.Result != nil {
  42. data = *response.Result
  43. }
  44. res := dto.ResPage[interface{}]{
  45. Data: data,
  46. PageSize: pageSize,
  47. PageNum: pageNum,
  48. Total: uint(response.Total),
  49. }
  50. return &res, nil
  51. }
  52. // 查询模板列表
  53. func QueryTouTemplateDetailInfo(id uint) (*interface{}, error) {
  54. // 要发送的表单数据
  55. form := url.Values{}
  56. form.Set("id", fmt.Sprintf("%d", id))
  57. form.Set("lang", "ZH_CN")
  58. response, err := FwhHttpPostUnmarshal[interface{}](getFullEnergyUrl("/hes-gateway/manage/getIotTouTemplateDetailById"), form)
  59. if err != nil {
  60. return nil, err
  61. }
  62. return response.Result, nil
  63. }
  64. /************ updateOrSaveIotTouTemplate(新增/更新模板) ************/
  65. // updateOrSaveIotTouTemplate 新增/更新TOU模板(JSON body)
  66. func updateOrSaveIotTouTemplate(payload dto.FwhTestUpdateOrSaveTouTemplatePayload) (*domain.FwhResponse[int64], error) {
  67. if payload.Lang == "" {
  68. payload.Lang = "ZH_CN"
  69. }
  70. // struct 会被 httpClient 自动序列化为 application/json
  71. response, err := FwhHttpPostUnmarshal[int64](getFullEnergyUrl("/hes-gateway/manage/updateOrSaveIotTouTemplate"), payload)
  72. if err != nil {
  73. return nil, err
  74. }
  75. return response, nil
  76. }
  77. // UpdateOrSaveTouTemplate 新增/更新TOU模板,返回模板ID
  78. func UpdateOrSaveTouTemplate(payload dto.FwhTestUpdateOrSaveTouTemplatePayload) (int64, error) {
  79. res, err := updateOrSaveIotTouTemplate(payload)
  80. if err != nil {
  81. return 0, err
  82. }
  83. if res.Code != 200 {
  84. return 0, fmt.Errorf("[UpdateOrSaveTouTemplate] 操作失败 code: %d, message: %s", res.Code, res.Message)
  85. }
  86. var templateId int64
  87. if res.Result != nil {
  88. templateId = *res.Result
  89. }
  90. return templateId, nil
  91. }
  92. /************ selectCitesList(查询国家下的省/市列表) ************/
  93. // selectCitesList 查询国家/省/市列表
  94. // countryId 为 nil:不传 countryId,用于查询国家信息。
  95. // cityType 为 nil:不传 type。TOU 模板页面查询城市/省时必须传 1。
  96. func selectCitesList(countryId *int, cityType *int) (*domain.FwhResponse[dto.FwhTestCitesListData], error) {
  97. params := url.Values{}
  98. if countryId != nil {
  99. params.Add("countryId", fmt.Sprintf("%d", *countryId))
  100. }
  101. if cityType != nil {
  102. params.Add("type", fmt.Sprintf("%d", *cityType))
  103. }
  104. params.Add("lang", "ZH_CN")
  105. response, err := FwhHttpGetUnmarshal[dto.FwhTestCitesListData](getFullEnergyUrl("/hes-gateway/manage/selectCitesList"), params)
  106. if err != nil {
  107. return nil, err
  108. }
  109. return response, nil
  110. }
  111. // SelectCitesList 查询国家/省/市列表
  112. // countryId 为 nil 且 cityType 为 nil 时,查询国家信息。
  113. func SelectCitesList(countryId *int, cityType *int) (*dto.FwhTestCitesListData, error) {
  114. res, err := selectCitesList(countryId, cityType)
  115. if err != nil {
  116. return nil, err
  117. }
  118. if res.Code != 200 {
  119. return nil, fmt.Errorf("[SelectCitesList] 查询失败 code: %d, message: %s", res.Code, res.Message)
  120. }
  121. return res.Result, nil
  122. }