package fwh_test import ( "fmt" "fwh-toolbox-server/domain" "fwh-toolbox-server/dto" "net/url" "go.uber.org/zap" ) type SelectTouTemplateListPayload struct { SourceType *int `json:"sourceType,omitempty"` // 模板类型 0-系统模板 1-API模板 2-用户推荐 CountryId *int `json:"countryId,omitempty"` // 国家ID ProvinceId *int `json:"provinceId,omitempty"` // 州ID Status *int `json:"status,omitempty"` // 发表状态 0-未发布 2-已发布 StartUpdateTime *string `json:"startUpdateTime"` // 开始时间(更新时间) 格式:YYYY-MM-DD HH:mm:SS EndUpdateTime *string `json:"endUpdateTime"` // 结束时间(更新时间) 格式:YYYY-MM-DD HH:mm:SS Search string `json:"search"` PageSize uint `json:"pageSize"` PageNum uint `json:"pageNum"` Lang string `json:"lang"` // 语言 - ZH_CN } // 查询模板列表 func QueryTouTemplateInfoList(search string, pageSize uint, pageNum uint, sourceType *int, status *int) (*dto.ResPage[interface{}], error) { // 要发送的表单数据 form := url.Values{} form.Set("search", search) if sourceType != nil { form.Set("sourceType", fmt.Sprintf("%d", *sourceType)) } if status != nil { form.Set("status", fmt.Sprintf("%d", *status)) } form.Set("pageSize", fmt.Sprintf("%d", pageSize)) form.Set("pageNum", fmt.Sprintf("%d", pageNum)) form.Set("lang", "ZH_CN") zap.L().Info("QueryTouTemplateInfoList form", zap.Any("form", form)) response, err := FwhHttpPostUnmarshalPage[[]interface{}](getFullEnergyUrl("/hes-gateway/manage/selectIotTouTemplateList"), form) if err != nil { return nil, err } var data []interface{} if response.Result != nil { data = *response.Result } res := dto.ResPage[interface{}]{ Data: data, PageSize: pageSize, PageNum: pageNum, Total: uint(response.Total), } return &res, nil } // 查询模板列表 func QueryTouTemplateDetailInfo(id uint) (*interface{}, error) { // 要发送的表单数据 form := url.Values{} form.Set("id", fmt.Sprintf("%d", id)) form.Set("lang", "ZH_CN") response, err := FwhHttpPostUnmarshal[interface{}](getFullEnergyUrl("/hes-gateway/manage/getIotTouTemplateDetailById"), form) if err != nil { return nil, err } return response.Result, nil } /************ updateOrSaveIotTouTemplate(新增/更新模板) ************/ // updateOrSaveIotTouTemplate 新增/更新TOU模板(JSON body) func updateOrSaveIotTouTemplate(payload dto.FwhTestUpdateOrSaveTouTemplatePayload) (*domain.FwhResponse[int64], error) { if payload.Lang == "" { payload.Lang = "ZH_CN" } // struct 会被 httpClient 自动序列化为 application/json response, err := FwhHttpPostUnmarshal[int64](getFullEnergyUrl("/hes-gateway/manage/updateOrSaveIotTouTemplate"), payload) if err != nil { return nil, err } return response, nil } // UpdateOrSaveTouTemplate 新增/更新TOU模板,返回模板ID func UpdateOrSaveTouTemplate(payload dto.FwhTestUpdateOrSaveTouTemplatePayload) (int64, error) { res, err := updateOrSaveIotTouTemplate(payload) if err != nil { return 0, err } if res.Code != 200 { return 0, fmt.Errorf("[UpdateOrSaveTouTemplate] 操作失败 code: %d, message: %s", res.Code, res.Message) } var templateId int64 if res.Result != nil { templateId = *res.Result } return templateId, nil } /************ selectCitesList(查询国家下的省/市列表) ************/ // selectCitesList 查询国家/省/市列表 // countryId 为 nil:不传 countryId,用于查询国家信息。 // cityType 为 nil:不传 type。TOU 模板页面查询城市/省时必须传 1。 func selectCitesList(countryId *int, cityType *int) (*domain.FwhResponse[dto.FwhTestCitesListData], error) { params := url.Values{} if countryId != nil { params.Add("countryId", fmt.Sprintf("%d", *countryId)) } if cityType != nil { params.Add("type", fmt.Sprintf("%d", *cityType)) } params.Add("lang", "ZH_CN") response, err := FwhHttpGetUnmarshal[dto.FwhTestCitesListData](getFullEnergyUrl("/hes-gateway/manage/selectCitesList"), params) if err != nil { return nil, err } return response, nil } // SelectCitesList 查询国家/省/市列表 // countryId 为 nil 且 cityType 为 nil 时,查询国家信息。 func SelectCitesList(countryId *int, cityType *int) (*dto.FwhTestCitesListData, error) { res, err := selectCitesList(countryId, cityType) if err != nil { return nil, err } if res.Code != 200 { return nil, fmt.Errorf("[SelectCitesList] 查询失败 code: %d, message: %s", res.Code, res.Message) } return res.Result, nil }