Compare commits

...

5 Commits

Author SHA1 Message Date
dylan 4d92809b1d feat:新增小时级报表接口 2024-09-10 15:17:18 +08:00
dylan 1c0b28db1f fix: 2024-09-05 14:59:51 +08:00
dylan 6e0325a7ec fix: 2024-09-04 16:00:04 +08:00
dylan e97c542081 feat:异步任务相关接口 2024-09-03 17:13:52 +08:00
dylan f32b0019a2 fix:报表请求 2024-09-03 11:31:16 +08:00
13 changed files with 481 additions and 1 deletions

View File

@ -167,3 +167,54 @@ func (ability *Defaultability) TaobaoUnideskRtaReportDailyGet(req *request.Taoba
err = util.HandleJsonResponse(jsonStr, &respStruct)
return &respStruct, err
}
/*
UD报表-创建异步任务接口
*/
func (ability *Defaultability) TaobaoUnideskRtaReportAsynctaskAdd(req *request.TaobaoUnideskRtaReportAsynctaskAddRequest, accessToken string) (*response.TaobaoUnideskRtaReportAsynctaskAddResponse, error) {
if ability.Client == nil {
return nil, errors.New("Defaultability topClient is nil")
}
var jsonStr, err = ability.Client.ExecuteWithSession("taobao.unidesk.rta.report.asynctask.add", req.ToMap(), req.ToFileMap(), accessToken)
var respStruct = response.TaobaoUnideskRtaReportAsynctaskAddResponse{}
if err != nil {
log.Println("taobaoUnideskRtaReportAsynctaskAdd error", err)
return &respStruct, err
}
err = util.HandleJsonResponse(jsonStr, &respStruct)
return &respStruct, err
}
/*
UD报表-异步任务结果查询接口
*/
func (ability *Defaultability) TaobaoUnideskRtaReportAsynctaskResultGet(req *request.TaobaoUnideskRtaReportAsynctaskResultGetRequest, accessToken string) (*response.TaobaoUnideskRtaReportAsynctaskResultGetResponse, error) {
if ability.Client == nil {
return nil, errors.New("Defaultability topClient is nil")
}
var jsonStr, err = ability.Client.ExecuteWithSession("taobao.unidesk.rta.report.asynctask.result.get", req.ToMap(), req.ToFileMap(), accessToken)
var respStruct = response.TaobaoUnideskRtaReportAsynctaskResultGetResponse{}
if err != nil {
log.Println("taobaoUnideskRtaReportAsynctaskResultGet error", err)
return &respStruct, err
}
err = util.HandleJsonResponse(jsonStr, &respStruct)
return &respStruct, err
}
/*
UD报表-小时数据报表查询接口
*/
func (ability *Defaultability) TaobaoUnideskRtaReportHourlyGet(req *request.TaobaoUnideskRtaReportHourlyGetRequest, accessToken string) (*response.TaobaoUnideskRtaReportHourlyGetResponse, error) {
if ability.Client == nil {
return nil, errors.New("Defaultability topClient is nil")
}
var jsonStr, err = ability.Client.ExecuteWithSession("taobao.unidesk.rta.report.hourly.get", req.ToMap(), req.ToFileMap(), accessToken)
var respStruct = response.TaobaoUnideskRtaReportHourlyGetResponse{}
if err != nil {
log.Println("taobaoUnideskRtaReportHourlyGet error", err)
return &respStruct, err
}
err = util.HandleJsonResponse(jsonStr, &respStruct)
return &respStruct, err
}

View File

@ -0,0 +1,24 @@
package domain
type AsyncTaskResultGetTopDTO struct {
/*
报表数据文件地址excel格式有效期5分钟文件过期可重新调此接口获取
*/
Result *string `json:"result"`
/*
任务id
*/
Id *int64 `json:"id"`
/*
任务名称
*/
Name *string `json:"name"`
/*
任务状态1待运行2运行中3运行成功4运行失败
*/
Status *int `json:"status"`
}

View File

@ -0,0 +1,8 @@
package domain
type AsyncTaskTopDTO struct {
/*
任务id
*/
Id *int64 `json:"id"`
}

View File

@ -0,0 +1,19 @@
package domain
type AsyncTaskTopQueryDTO struct {
/*
任务ids
*/
Id *int64 `json:"id,omitempty" required:"true"`
/*
广告主id
*/
AdvertiserId *int64 `json:"advertiser_id,omitempty" required:"true"`
/*
平台版本9999升级版API仅巨量2.0API需传入
*/
Version *int `json:"version" required:"false"`
}

View File

@ -0,0 +1,103 @@
package domain
type ReportTopHourlyQueryDTO struct {
/*
排序字段
*/
OrderByField *string `json:"order_by_field,omitempty" required:"false" `
/*
第几页
*/
PageNo *int `json:"page_no,omitempty" required:"false"`
/*
排序方式ASC正序DESC倒序
*/
OrderByType *string `json:"order_by_type,omitempty" required:"false"`
/*
每页多少条
*/
PageSize *int `json:"page_size,omitempty" required:"false"`
/*
分组条件素材分组仅头条2.0支持STAT_GROUP_BY_ADVERTISER_ID按照广告主分组STAT_GROUP_BY_CAMPAIGN_ID按照计划组分组STAT_GROUP_BY_ADGROUP_ID按照计划分组STAT_GROUP_BY_CREATIVE_ID按照创意分组STAT_GROUP_BY_TIME_DAY按照天分组STAT_GROUP_BY_MATERIAL_ID按照素材分组STAT_GROUP_BY_MATERIAL_X_ADGROUP_ID按照素材X计划分组STAT_GROUP_BY_COMBINATION_MATERIAL_ID按照素材组合分组STAT_GROUP_BY_COMBINATION_MATERIALX_CAMPAIGN_ID按照素材组合X项目分组
*/
GroupBy *[]string `json:"group_by" required:"true"`
/*
需要返回的指标不指定则返回默认指标
*/
Fields *[]string `json:"fields,omitempty" required:"false"`
/*
过滤条件
*/
Filtering *ReportFilterTopQueryDTO `json:"filtering,omitempty" required:"false"`
/*
查询时间,只支持今天和昨天,格式:yyyy-MM-dd
*/
TheDate *string `json:"the_date,omitempty" required:"false"`
/*
广告主id
*/
AdvertiserId *int64 `json:"advertiser_id" required:"true"`
/*
平台版本9999升级版API仅巨量2.0API需传入
*/
Version *int `json:"version,omitempty" required:"false"`
}
func (s *ReportTopHourlyQueryDTO) SetOrderByField(v string) *ReportTopHourlyQueryDTO {
s.OrderByField = &v
return s
}
func (s *ReportTopHourlyQueryDTO) SetPageNo(v int) *ReportTopHourlyQueryDTO {
s.PageNo = &v
return s
}
func (s *ReportTopHourlyQueryDTO) SetOrderByType(v string) *ReportTopHourlyQueryDTO {
s.OrderByType = &v
return s
}
func (s *ReportTopHourlyQueryDTO) SetPageSize(v int) *ReportTopHourlyQueryDTO {
s.PageSize = &v
return s
}
func (s *ReportTopHourlyQueryDTO) SetGroupBy(v []string) *ReportTopHourlyQueryDTO {
s.GroupBy = &v
return s
}
func (s *ReportTopHourlyQueryDTO) SetFields(v []string) *ReportTopHourlyQueryDTO {
s.Fields = &v
return s
}
func (s *ReportTopHourlyQueryDTO) SetFiltering(v ReportFilterTopQueryDTO) *ReportTopHourlyQueryDTO {
s.Filtering = &v
return s
}
func (s *ReportTopHourlyQueryDTO) SetTheDate(v string) *ReportTopHourlyQueryDTO {
s.TheDate = &v
return s
}
func (s *ReportTopHourlyQueryDTO) SetAdvertiserId(v int64) *ReportTopHourlyQueryDTO {
s.AdvertiserId = &v
return s
}
func (s *ReportTopHourlyQueryDTO) SetVersion(v int) *ReportTopHourlyQueryDTO {
s.Version = &v
return s
}

View File

@ -0,0 +1,157 @@
package domain
type RtaReportTaskTopDTO struct {
/*
报表任务参数
*/
Params *ReportTaskParamTopDTO `json:"params,omitempty" required:"true"`
/*
广告主id
*/
AdvertiserId *int64 `json:"advertiser_id,omitempty" required:"true"`
/*
任务名称
*/
Name *string `json:"name,omitempty" required:"true"`
/*
强制生成新的任务参数相同会复用之前的任务10
*/
Force *int `json:"force" required:"false"`
/*
平台版本9999升级版API仅巨量2.0API需传入
*/
Version *int `json:"version" required:"false"`
}
func (s *RtaReportTaskTopDTO) SetParams(v ReportTaskParamTopDTO) *RtaReportTaskTopDTO {
s.Params = &v
return s
}
func (s *RtaReportTaskTopDTO) SetAdvertiserId(v int64) *RtaReportTaskTopDTO {
s.AdvertiserId = &v
return s
}
func (s *RtaReportTaskTopDTO) SetName(v string) *RtaReportTaskTopDTO {
s.Name = &v
return s
}
func (s *RtaReportTaskTopDTO) SetForce(v int) *RtaReportTaskTopDTO {
s.Force = &v
return s
}
func (s *RtaReportTaskTopDTO) SetVersion(v int) *RtaReportTaskTopDTO {
s.Version = &v
return s
}
type ReportTaskParamTopDTO struct {
/*
排序字段
*/
OrderByField *string `json:"order_by_field" required:"false"`
/*
结束日期, 格式yyyy-MM-dd按天分组时间区间不能超过一个月按小时分组只支持查询当天数据
*/
EndDate *string `json:"end_date,omitempty" required:"true"`
/*
排序方式ASC正序DESC倒序
*/
OrderByType *string `json:"order_by_type" required:"false"`
/*
分组条件素材分组仅头条2.0支持STAT_GROUP_BY_ADVERTISER_ID按照广告主分组STAT_GROUP_BY_CAMPAIGN_ID按照计划组分组STAT_GROUP_BY_ADGROUP_ID按照计划分组STAT_GROUP_BY_CREATIVE_ID按照创意分组STAT_GROUP_BY_TIME_DAY按照天分组STAT_GROUP_BY_TIME_HOUR按照小时分组STAT_GROUP_BY_MATERIAL_ID按照素材分组STAT_GROUP_BY_MATERIAL_X_ADGROUP_ID按照素材X计划分组STAT_GROUP_BY_COMBINATION_MATERIAL_ID按照素材组合分组STAT_GROUP_BY_COMBINATION_MATERIALX_CAMPAIGN_ID按照素材组合X项目分组
*/
GroupBy *[]string `json:"group_by,omitempty" required:"true"`
/*
需要返回的指标不指定则返回默认指标具体字段名称参考日报表小时报表数据查询接口
*/
Fields *[]string `json:"fields" required:"false"`
/*
过滤条件
*/
Filtering *ReportTaskFilterTopDTO `json:"filtering" required:"false"`
/*
开始日期, 格式yyyy-MM-dd
*/
StartDate *string `json:"start_date,omitempty" required:"true"`
}
func (s *ReportTaskParamTopDTO) SetOrderByField(v string) *ReportTaskParamTopDTO {
s.OrderByField = &v
return s
}
func (s *ReportTaskParamTopDTO) SetEndDate(v string) *ReportTaskParamTopDTO {
s.EndDate = &v
return s
}
func (s *ReportTaskParamTopDTO) SetOrderByType(v string) *ReportTaskParamTopDTO {
s.OrderByType = &v
return s
}
func (s *ReportTaskParamTopDTO) SetGroupBy(v []string) *ReportTaskParamTopDTO {
s.GroupBy = &v
return s
}
func (s *ReportTaskParamTopDTO) SetFields(v []string) *ReportTaskParamTopDTO {
s.Fields = &v
return s
}
func (s *ReportTaskParamTopDTO) SetFiltering(v ReportTaskFilterTopDTO) *ReportTaskParamTopDTO {
s.Filtering = &v
return s
}
func (s *ReportTaskParamTopDTO) SetStartDate(v string) *ReportTaskParamTopDTO {
s.StartDate = &v
return s
}
type ReportTaskFilterTopDTO struct {
/*
按照计划过滤
*/
AdgroupIds *[]int64 `json:"adgroup_ids" required:"false"`
/*
转化效果周期771515
*/
Effect *int `json:"effect" required:"false"`
/*
按照计划组过滤
*/
CampaignIds *[]int64 `json:"campaign_ids" required:"false"`
/*
按照创意过滤
*/
CreativeIds *[]int64 `json:"creative_ids" required:"false"`
/*
归因逻辑1点击效果0展示效果
*/
EffectType *int `json:"effect_type" required:"false"`
/*
按照素材过滤素材id从adgroup查询接口获取素材组合报表只支持根据标题素材id筛选
*/
MaterialId *int64 `json:"material_id" required:"false"`
}

View File

@ -0,0 +1,28 @@
package request
import (
"git.sunqdl.cn/fgqj/topsdk/defaultability/domain"
"git.sunqdl.cn/fgqj/topsdk/util"
)
type TaobaoUnideskRtaReportAsynctaskAddRequest struct {
ReportTaskTopDto *domain.RtaReportTaskTopDTO `json:"report_task_top_dto" required:"true" `
}
func (s *TaobaoUnideskRtaReportAsynctaskAddRequest) SetReportTaskTopDto(v domain.RtaReportTaskTopDTO) *TaobaoUnideskRtaReportAsynctaskAddRequest {
s.ReportTaskTopDto = &v
return s
}
func (req *TaobaoUnideskRtaReportAsynctaskAddRequest) ToMap() map[string]interface{} {
paramMap := make(map[string]interface{})
if req.ReportTaskTopDto != nil {
paramMap["report_task_top_dto"] = util.ConvertStructList(*req.ReportTaskTopDto)
}
return paramMap
}
func (req *TaobaoUnideskRtaReportAsynctaskAddRequest) ToFileMap() map[string]interface{} {
fileMap := make(map[string]interface{})
return fileMap
}

View File

@ -0,0 +1,28 @@
package request
import (
"git.sunqdl.cn/fgqj/topsdk/defaultability/domain"
"git.sunqdl.cn/fgqj/topsdk/util"
)
type TaobaoUnideskRtaReportAsynctaskResultGetRequest struct {
AsyncTaskTopQueryDto *domain.AsyncTaskTopQueryDTO `json:"async_task_top_query_dto" required:"true" `
}
func (s *TaobaoUnideskRtaReportAsynctaskResultGetRequest) SetReportTaskTopDto(v domain.AsyncTaskTopQueryDTO) *TaobaoUnideskRtaReportAsynctaskResultGetRequest {
s.AsyncTaskTopQueryDto = &v
return s
}
func (req *TaobaoUnideskRtaReportAsynctaskResultGetRequest) ToMap() map[string]interface{} {
paramMap := make(map[string]interface{})
if req.AsyncTaskTopQueryDto != nil {
paramMap["async_task_top_query_dto"] = util.ConvertStructList(*req.AsyncTaskTopQueryDto)
}
return paramMap
}
func (req *TaobaoUnideskRtaReportAsynctaskResultGetRequest) ToFileMap() map[string]interface{} {
fileMap := make(map[string]interface{})
return fileMap
}

View File

@ -17,7 +17,7 @@ func (s *TaobaoUnideskRtaReportDailyGetRequest) SetAdvertiserTopQueryDTO(v domai
func (req *TaobaoUnideskRtaReportDailyGetRequest) ToMap() map[string]interface{} {
paramMap := make(map[string]interface{})
if req.ReportTopQueryDTO != nil {
paramMap["advertiser_top_query_dto"] = util.ConvertStructList(*req.ReportTopQueryDTO)
paramMap["report_top_query_dto"] = util.ConvertStructList(*req.ReportTopQueryDTO)
}
return paramMap
}

View File

@ -0,0 +1,28 @@
package request
import (
"git.sunqdl.cn/fgqj/topsdk/defaultability/domain"
"git.sunqdl.cn/fgqj/topsdk/util"
)
type TaobaoUnideskRtaReportHourlyGetRequest struct {
ReportTopQueryDto *domain.ReportTopHourlyQueryDTO `json:"report_top_query_dto" required:"true" `
}
func (s *TaobaoUnideskRtaReportHourlyGetRequest) SetReportTopQueryDto(v domain.ReportTopHourlyQueryDTO) *TaobaoUnideskRtaReportHourlyGetRequest {
s.ReportTopQueryDto = &v
return s
}
func (req *TaobaoUnideskRtaReportHourlyGetRequest) ToMap() map[string]interface{} {
paramMap := make(map[string]interface{})
if req.ReportTopQueryDto != nil {
paramMap["report_top_query_dto"] = util.ConvertStructList(*req.ReportTopQueryDto)
}
return paramMap
}
func (req *TaobaoUnideskRtaReportHourlyGetRequest) ToFileMap() map[string]interface{} {
fileMap := make(map[string]interface{})
return fileMap
}

View File

@ -0,0 +1,10 @@
package response
import "git.sunqdl.cn/fgqj/topsdk/defaultability/domain"
type TaobaoUnideskRtaReportAsynctaskAddResponse struct {
/*
返回结果
*/
Result domain.AsyncTaskTopDTO `json:"result"`
}

View File

@ -0,0 +1,10 @@
package response
import "git.sunqdl.cn/fgqj/topsdk/defaultability/domain"
type TaobaoUnideskRtaReportAsynctaskResultGetResponse struct {
/*
任务信息
*/
Result domain.AsyncTaskResultGetTopDTO `json:"result"`
}

View File

@ -0,0 +1,14 @@
package response
import "git.sunqdl.cn/fgqj/topsdk/defaultability/domain"
type TaobaoUnideskRtaReportHourlyGetResponse struct {
/*
报表数据
*/
Result []domain.ReportTopDto `json:"result"`
/*
总条数
*/
Total int `json:"total"`
}