Commit 6a68a574 by BetterXT

add some dto

parent 76902708
package io.better.toutiao.api.advertisingput; package io.better.toutiao.api.advertisingdelivery;
import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.cloud.netflix.feign.FeignClient;
......
package io.better.toutiao.api.advertisingdelivery;
import io.better.toutiao.dto.BaseRespDTO;
import io.better.toutiao.dto.resp.AdvertisingGroupReqDTO;
import io.better.toutiao.dto.resp.AdvertisingGroupRespDTO;
import io.better.toutiao.dto.status.UpdateStatusDTO;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* The interface Advertising group api.
*
* @author better create in 2019-04-28 16:27
*/
@FeignClient(value = "https://ad.toutiao.com/open_api/2", url = "/campaign")
public interface AdvertisingGroupApi {
/**
* The constant BUDGET_MODE_INFINITE.
*/
String BUDGET_MODE_INFINITE = "BUDGET_MODE_INFINITE";
/**
* The constant BUDGET_MODE_DAY.
*/
String BUDGET_MODE_DAY = "BUDGET_MODE_DAY";
/**
* 广告投放-获取某广告主的广告组信息
*
* @param accessToken 访问凭证
* @param advertiserId 广告主ID
* @param page 当前页
* @param pageSize 每页记录数
* @param filtering 过滤字段
* @param fields 查询字段
* @return advertising group
*/
@GetMapping(value = "/get")
BaseRespDTO<AdvertisingGroupRespDTO> getAdvertisingGroup(@RequestHeader("Access-Token") String accessToken,
@RequestParam("advertiser_id") Long advertiserId,
@RequestParam(value = "page", defaultValue = "1", required = false) Integer page,
@RequestParam(value = "page_size", defaultValue = "20", required = false) Integer pageSize,
@RequestParam(value = "filtering", required = false) Map<String, Object> filtering,
@RequestParam(value = "fields", required = false) String[] fields);
/**
* 广告投放-为某广告主创建广告组信息
*
* @param accessToken 访问凭证
* @param advertisingGroupReqDTO 创建信息
* @return the list
*/
@PostMapping(value = "/create")
BaseRespDTO<Long> createAdvertisingGroup(@RequestHeader("Access-Token") String accessToken,
@RequestBody AdvertisingGroupReqDTO advertisingGroupReqDTO);
/**
* 广告投放-修改某广告主的广告组信息
*
* @param accessToken 访问凭证
* @param advertisingGroupReqDTO 更新信息
* @return the list
*/
@PostMapping(value = "/update")
BaseRespDTO<Long> updateAdvertisingGroup(@RequestHeader("Access-Token") String accessToken,
@RequestBody AdvertisingGroupReqDTO advertisingGroupReqDTO);
/**
* 广告投放-修改某广告主的广告组状态信息
*
* @param accessToken 访问凭证
* @param updateStatusDTO 更新状态信息
* @return list list
*/
@PostMapping(value = "/update/status")
BaseRespDTO<Long> updateAdvertisingGroupStatus(@RequestHeader("Access-Token") String accessToken,
@RequestBody UpdateStatusDTO updateStatusDTO);
}
package io.better.toutiao.api.advertisingdelivery;
import io.better.toutiao.dto.advertisingdelivery.plan.AdvertisingPlanDTO;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* @author better create in 2019-04-28 16:27
*/
@FeignClient(value = "https://ad.toutiao.com/open_api/2", url = "/ad")
public interface AdvertisingPlanApi {
/**
* 广告投放-获取某广告的广告计划
*
* @param accessToken 访问凭证
* @param page 当前页
* @param pageSize 每页记录数
* @param filtering 过滤字段
* @param fields 查询字段
* @return
*/
@GetMapping(value = "/get")
List<Object> getAdvertisingPlan(@RequestHeader("Access-Token") String accessToken,
@RequestParam("advertiser_id") Long advertiserId,
@RequestParam(value = "page", defaultValue = "1", required = false) Integer page,
@RequestParam(value = "page_size", defaultValue = "20", required = false) Integer pageSize,
@RequestParam(value = "filtering", required = false) Map<String, Object> filtering,
@RequestParam(value = "fields", required = false) String[] fields);
/**
* 广告投放-为某广告创建广告计划
*
* @param accessToken 访问凭证
* @param advertisingPlanDTO 更新对象
* @return
*/
@PostMapping(value = "https://ad.toutiao.com/open_api/2/ad/create/")
List<Object> createAdvertisingPlan(@RequestHeader("Access-Token") String accessToken,
@RequestBody AdvertisingPlanDTO advertisingPlanDTO
);
}
package io.better.toutiao.api.advertisingput;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
/**
* The interface Advertising group api.
*
* @author better create in 2019-04-28 16:27
*/
@FeignClient(value = "", url = "")
public interface AdvertisingGroupApi {
/**
* The constant BUDGET_MODE_INFINITE.
*/
String BUDGET_MODE_INFINITE = "BUDGET_MODE_INFINITE";
/**
* The constant BUDGET_MODE_DAY.
*/
String BUDGET_MODE_DAY = "BUDGET_MODE_DAY";
/**
* 广告投放-获取某广告主的广告组信息
*
* @param accessToken 访问凭证
* @param advertiserId 广告主ID
* @param page 当前页
* @param pageSize 每页记录数
* @param filtering 过滤字段
* @param fields 查询字段
* @return advertising group
*/
@GetMapping(value = "https://ad.toutiao.com/open_api/2/campaign/get/")
List<Object> getAdvertisingGroup(@RequestHeader("Access-Token") String accessToken,
@RequestParam("advertiser_id") Long advertiserId,
@RequestParam(value = "page", defaultValue = "1", required = false) Integer page,
@RequestParam(value = "page_size", defaultValue = "20", required = false) Integer pageSize,
@RequestParam(value = "filtering", required = false) Map<String, Object> filtering,
@RequestParam(value = "fields", required = false) String[] fields);
/**
* 广告投放-为某广告主创建广告组信息
*
* @param accessToken 访问凭证
* @param advertiserId 广告主ID
* @param campaignName 广告组名称
* @param budgetMode 广告组预算类型
* @param budget 广告组预算
* @param landingType 广告组推广目的
* @param uniqueFk 第三方唯一键,保证幂等性
* @return the list
*/
@PostMapping(value = "https://ad.toutiao.com/open_api/2/campaign/create/")
List<Object> createAdvertisingGroup(@RequestHeader("Access-Token") String accessToken,
@RequestParam("advertiser_id") String advertiserId,
@RequestParam("campaign_name") String campaignName,
@RequestParam("budget_mode") String budgetMode,
@RequestParam(value = "budget", required = false) Long budget,
@RequestParam(value = "landing_type") String landingType,
@RequestParam(value = "unique_fk", required = false) String uniqueFk);
/**
* 广告投放-修改某广告主的广告组信息
*
* @param accessToken 访问凭证
* @param advertiserId 广告主ID
* @param campaignId 广告组ID
* @param campaignName 广告组名称
* @param modifyTime 修改时间
* @param budgetMode 广告组预算类型
* @param budget 广告组预算
* @return the list
*/
@PostMapping(value = "https://ad.toutiao.com/open_api/2/campaign/update/")
List<Object> updateAdvertisingGroup(@RequestHeader("Access-Token") String accessToken,
@RequestParam("advertiser_id") String advertiserId,
@RequestParam("campaign_id") Long campaignId,
@RequestParam(value = "campaign_name", required = false) String campaignName,
@RequestParam("modify_time") String modifyTime,
@RequestParam(value = "budget_mode", required = false) String budgetMode,
@RequestParam(value = "budget", required = false) Long budget);
/**
* 广告投放-修改某广告主的广告组状态信息
*
* @param accessToken 访问凭证
* @param advertiserId 广告主ID
* @param campaignIds 广告组ID集合
* @param optStatus 更新状态
* @return
*/
List<Object> updateAdvertisingGroupStatus(@RequestHeader("Access-Token") String accessToken,
@RequestParam("advertiser_id") String advertiserId,
@RequestParam("campaign_ids") Long[] campaignIds,
@RequestParam("opt_status") String optStatus);
/**
* 广告组推广目的枚举
*/
@Getter
@AllArgsConstructor
enum LandingType {
/**
* 销售线索收集
*/
LINK("LINK"),
/**
* 推广应用下载
*/
APP("APP"),
/**
* 产品目录
*/
DPA("DPA"),
/**
* 商品推广(鲁班)
*/
GOODS("GOODS");
private String landingType;
}
}
package io.better.toutiao.api.advertisingput;
import org.springframework.cloud.netflix.feign.FeignClient;
/**
* @author better create in 2019-04-28 16:27
*/
@FeignClient(value = "", url = "")
public interface AdvertisingPlanApi {
}
package io.better.toutiao.api.datareport; package io.better.toutiao.api.datareport;
import io.better.toutiao.dto.BaseRespDTO;
import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestHeader;
...@@ -55,6 +56,7 @@ public interface DataReportApi { ...@@ -55,6 +56,7 @@ public interface DataReportApi {
* @param endDate 结束时间 * @param endDate 结束时间
* @param page 当前页 * @param page 当前页
* @param pageSize 页数量 * @param pageSize 页数量
* @param groupBy the group by
* @param timeGranularity 时间粒度,STAT_TIME_GRANULARITY_DAILY, STAT_TIME_GRANULARITY_HOURLY 两个取值 * @param timeGranularity 时间粒度,STAT_TIME_GRANULARITY_DAILY, STAT_TIME_GRANULARITY_HOURLY 两个取值
* @param filtering 过滤字段 * @param filtering 过滤字段
* @return advertising group report data * @return advertising group report data
...@@ -79,20 +81,21 @@ public interface DataReportApi { ...@@ -79,20 +81,21 @@ public interface DataReportApi {
* @param endDate 结束时间 * @param endDate 结束时间
* @param page 当前页 * @param page 当前页
* @param pageSize 页数量 * @param pageSize 页数量
* @param groupBy the group by
* @param timeGranularity 时间粒度,STAT_TIME_GRANULARITY_DAILY, STAT_TIME_GRANULARITY_HOURLY 两个取值 * @param timeGranularity 时间粒度,STAT_TIME_GRANULARITY_DAILY, STAT_TIME_GRANULARITY_HOURLY 两个取值
* @param filtering 过滤字段 * @param filtering 过滤字段
* @return advertising plan report data * @return advertising plan report data
*/ */
@GetMapping(value = "/ad/get/", consumes = "application/json") @GetMapping(value = "/ad/get/", consumes = "application/json")
List<Object> getAdvertisingPlanReportData(@RequestHeader("Access-Token") String accessToken, BaseRespDTO<?> getAdvertisingPlanReportData(@RequestHeader("Access-Token") String accessToken,
@RequestParam("advertiser_id") Long advertiserId, @RequestParam("advertiser_id") Long advertiserId,
@RequestParam("start_date") String startDate, @RequestParam("start_date") String startDate,
@RequestParam("end_date") String endDate, @RequestParam("end_date") String endDate,
@RequestParam(value = "page", defaultValue = "1", required = false) Integer page, @RequestParam(value = "page", defaultValue = "1", required = false) Integer page,
@RequestParam(value = "page_size", defaultValue = "20", required = false) Integer pageSize, @RequestParam(value = "page_size", defaultValue = "20", required = false) Integer pageSize,
@RequestParam(value = "group_by", required = false) String[] groupBy, @RequestParam(value = "group_by", required = false) String[] groupBy,
@RequestParam(value = "time_granularity", defaultValue = STAT_TIME_GRANULARITY_DAILY, required = false) String timeGranularity, @RequestParam(value = "time_granularity", defaultValue = STAT_TIME_GRANULARITY_DAILY, required = false) String timeGranularity,
@RequestParam(value = "filtering", required = false) Map<String, Object> filtering); @RequestParam(value = "filtering", required = false) Map<String, Object> filtering);
/** /**
* 获取广告创意报表数据 * 获取广告创意报表数据
...@@ -103,6 +106,7 @@ public interface DataReportApi { ...@@ -103,6 +106,7 @@ public interface DataReportApi {
* @param endDate 结束时间 * @param endDate 结束时间
* @param page 当前页 * @param page 当前页
* @param pageSize 页数量 * @param pageSize 页数量
* @param groupBy the group by
* @param timeGranularity 时间粒度,STAT_TIME_GRANULARITY_DAILY, STAT_TIME_GRANULARITY_HOURLY 两个取值 * @param timeGranularity 时间粒度,STAT_TIME_GRANULARITY_DAILY, STAT_TIME_GRANULARITY_HOURLY 两个取值
* @param filtering 过滤字段 * @param filtering 过滤字段
* @return advertising creative report data * @return advertising creative report data
......
package io.better.toutiao.dto;
import lombok.Data;
/**
* @author better create in 2019-04-29 15:26
*/
@Data
public class AudienceDTO {
/**
* 定向人群包类型,前者为定向人群包,后者为排除人群包
* 允许值: "RETARGETING_INCLUDE", "RETARGETING_EXCLUDE"
*/
private String retargetingType;
/**
* 当选择使用人群包定向时填写,内容为人群包id
*/
private Integer[] retargetingTags;
/**
* 定向人群包列表,内容为人群包id.(新增字段,使用新增字段支持同时选择定向和排除)
*/
private Integer[] retargetingTagsInclude;
/**
* 排除人群包列表,内容为人群包id.(新增字段,使用新增字段支持同时选择定向和排除)
*/
private Integer[] retargetingTagsExclude;
/**
* 受众性别
*/
private String gender;
/**
* 受众年龄区间
*/
private String[] age;
/**
* 受众最低android版本
*/
private String androidOsv;
/**
* 受众最低ios版本
*/
private String iosOsv;
/**
* 受众网络类型
*/
private String[] ac;
/**
* 受众手机品牌
*/
private String[] deviceBrand;
/**
* 受众文章分类
*/
private String[] articleCategory;
/**
* 用户首次激活时间
*/
private String[] activateType;
/**
* 受众平台
*/
private String[] platform;
/**
* 受众运营商
*/
private String[] carrier;
/**
* 兴趣分类,如果传空数组 [] 表示不限,如果只传[0]表示系统推荐,如果按兴趣类型传表示自定义
*/
private Integer[] adTag;
/**
* 兴趣关键词, 返回值为词id,非兴趣词包id,可通过兴趣词包接口id2word获取具体词
*/
private Integer[] interestTags;
/**
* 地域类型,前者为省市,后者为区县。当city有数据时,必填。
* 允许值: "CITY", "COUNTY" , "BUSINESS_DISTRICT","NONE"
*/
private String district;
/**
* 地域定向城市列表(当传递省份ID时,旗下市县ID可省略不传)
*/
private Integer[] city;
/**
* 受众位置类型
*/
private String locationType;
/**
* 商圈ID数组
*/
private Integer[] businessIds;
/**
* APP行为定向, (请注意如果投放的是应用下载-IOS不支持设置APP行为定向,请勿传值)
*/
private String appBehaviorTarget;
/**
* APP行为定向,分类集合,(请注意如果投放的是应用下载-IOS不支持设置APP行为定向,请勿传值)
*/
private Integer[] appCategory;
/**
* APP行为定向,APP集合(请注意如果投放的是应用下载-IOS不支持设置APP行为定向,请勿传值)
*/
private Integer[] appIds;
/**
* 产品目录ID(ID由查询产品目录接口得到), 当推广目的landing_type=DPA时存在
*/
private Integer productPlatformId;
/**
* dpa广告类型
* 取值范围:DPA_LINK(dpa落地页)DPA_APP(dpa应用下载)
*/
private String[] dpaAdType;
/**
* DPA落地页类型广告落地页链接
*/
private String[] dpaExternalUrls;
/**
* DPA直达链接
*/
private String[] dpaOpenUrls;
/**
* DPA投放范围
* 取值范围:NONE(不限)CATEGORY(指定类别)PRODUCT(指定商品)
*/
private String[] dpaCategoryType;
/**
* dpa_category_type取值范围为CATEGORY时必填,表示类别
*/
private Integer[] dpaCategories;
/**
* dpa_category_type为PRODUCT时必填,表示商品列表
*/
private Integer[] dpaProducts;
/**
* H5地址参数(DPA推广目的特有,在填写的参数后面添加"=urlencode(开放平台提供的h5链接地址)",
* 其中urlencode(开放平台提供的h5链接地址)替换为商品库中的h5地址encode的结果)
*/
private String externalUrlParams;
/**
* DPA直达链接参数(DPA推广目的特有,在“产品库中提取的scheme地址"后面追加填写的参数)
*/
private String openUrlParams;
/**
* DPA人群定向(DPA推广目的特有)
* 取值范围:NONE(不限)CUSTOM(自定义)
*/
private Integer dpaLocalAudience;
/**
* 包含人群包,格式为Json字符串
*/
private String[] includeCustomActions;
/**
* 排除人群包,格式为Json字符串
*/
private String[] excludeCustomActions;
/**
* 穿山甲视频创意类型
* 默认值: ORIGINAL_VIDEO
* <p>
* 允许值: "ORIGINAL_VIDEO", "REWARDED_VIDEO"
*/
private String unionVideoType;
/**
* 精选流量包
*/
private String superiorPopularityType;
/**
* 定向流量包ID数组
*/
private Integer[] flowPackage;
/**
* 排除流量包ID数组
*/
private Integer[] excludeFlowPackage;
/**
* 深度优化方式
*/
private String deepBidType;
/**
* 深度优化出价
*/
private Integer deepCpabid;
/**
* 创意投放位置
*/
private String[] inventoryType;
}
...@@ -16,5 +16,5 @@ public class BaseDTO { ...@@ -16,5 +16,5 @@ public class BaseDTO {
/** /**
* 广告主ID * 广告主ID
*/ */
private String advertiserId; private Long advertiserId;
} }
package io.better.toutiao.dto;
import lombok.Data;
import java.util.List;
/**
* @author better create in 2019-04-29 14:06
*/
@Data
public class BaseRespDTO<T> {
/**
* 成功响应码
*/
private static final int SUCCESS_CODE = 0;
/**
* 响应状态码
*/
private Integer code;
/**
* 响应消息
*/
private String message;
/**
* 响应数据
*/
private List<T> data;
/**
* 是否成功
*
* @return true: 表示成功,false: 表示失败
*/
public Boolean isSuccess() {
return SUCCESS_CODE == code;
}
}
package io.better.toutiao.dto; package io.better.toutiao.dto.advertisingdelivery;
import io.better.toutiao.dto.PageDTO;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.Map; import java.util.Map;
/** /**
* 广告投放DTO * 广告投放查询DTO
* *
* @author better create in 2019-04-28 17:58 * @author better create in 2019-04-29 11:07
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class AdvertisingPutDTO extends PageDTO { public class AdvertisingDeliveryQueryDTO extends PageDTO {
/** /**
* 过滤字段 * 过滤字段
......
package io.better.toutiao.dto.advertisingdelivery.budget;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author better create in 2019-04-29 14:03
*/
@Data
public class AccountBudgetDTO {
}
package io.better.toutiao.dto.advertisingdelivery.creative;
import lombok.Data;
/**
* @author better create in 2019-04-29 11:16
*/
@Data
public class AdvertisingCreativeDTO {
}
package io.better.toutiao.dto.advertisingdelivery.group;
/**
* @author better create in 2019-04-29 11:15
*/
public class AdvertisingGroupDTO {
}
package io.better.toutiao.dto.advertisingdelivery.plan;
import lombok.Data;
/**
* @author better create in 2019-04-29 10:23
*/
@Data
public class AdvertisingPlanDTO {
/**
* 投放范围
*/
private String deliveryRange;
/**
*
*/
private String budgetMode;
/**
*
*/
private Long budget;
/**
*
*/
private String startTime;
/**
*
*/
private String endTime;
/**
*
*/
private Long bid;
/**
* 计划出价类型
*/
private String pricing;
/**
* 广告投放时间类型
*/
private String scheduleType;
/**
* 广告投放时段
*/
private String scheduleTime;
/**
* 广告投放速度类型
*/
private String flowControlMode;
/**
* 应用直达链接
*/
private String openUrl;
/**
* 应用下载方式
*/
private String downloadType;
/**
* 广告落地页链接
*/
private String externalUrl;
/**
*
*/
private String downloadUrl;
/**
* 广告名称
*/
private String name;
/**
* 应用广告下载类型
*/
private String appType;
/**
* 广告应用下载包名
*/
private String packageName;
/**
* 过滤已转化用户类型的字段,只有转化为目标时可填
*/
private String hideIfConverted;
/**
* 过滤已安装,允许值: 0, 1
*/
private Long hideIfExists;
/**
* ocpm广告转化出价
*/
private Long cpaBid;
/**
* 转换ID
*/
private Long convertId;
/**
* 穿山甲视频创意类型,允许值:ORIGINAL_VIDEO,REWARDED_VIDEO
*/
private String unionVideoType;
/**
* 深度优化方式
*/
private String deepBidType;
/**
* 深度优化出价,deep_bid_type=DEEP_BID_MIN时必填
*/
private Long deepCpabid;
/**
* 第三方唯一键
*/
private String uniqueFk;
}
package io.better.toutiao.dto; package io.better.toutiao.dto.datareport;
import io.better.toutiao.dto.PageDTO;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
...@@ -10,12 +11,7 @@ import java.util.Map; ...@@ -10,12 +11,7 @@ import java.util.Map;
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class DataReportDTO extends PageDTO { public class DataReportQueryDTO extends PageDTO {
/**
* 广告主ID
*/
private Long advertiserId;
/** /**
* 开始时间 * 开始时间
......
package io.better.toutiao.dto.resp;
import io.better.toutiao.dto.BaseDTO;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author better create in 2019-04-29 14:38
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class AdvertisingGroupReqDTO extends BaseDTO {
/**
* 广告组名称
*/
private String campaignName;
/**
* 广告组预算
*/
private Integer budget;
/**
* 广告组预算类型
*/
private String budgetMode;
/**
* 广告组推广目的
*/
private String landingType;
/**
* 第三方唯一键
*/
private String uniqueFk;
}
package io.better.toutiao.dto.resp;
import lombok.Data;
/**
* @author better create in 2019-04-29 14:21
*/
@Data
public class AdvertisingGroupRespDTO {
/**
* 广告组ID
*/
private Long id;
/**
* 广告组名称
*/
private String name;
/**
* 广告组预算
*/
private Integer budget;
/**
* 广告组预算类型
*/
private String budgetMode;
/**
* 广告组推广目的
*
* @see io.better.toutiao.enums.LandingType
*/
private String landingType;
/**
* 广告组时间戳,用于更新时提交,服务端判断是否基于最新信息修改
*/
private String modifyTime;
/**
* 广告组状态
*
* @see io.better.toutiao.enums.AdvertisingGroupStatus
*/
private String status;
/**
* 广告组创建时间
*/
private String campaignCreateTime;
/**
* 广告组修改时间
*/
private String campaignModifyTime;
/**
* 分页信息
*/
private PageRespDTO pageInfo;
/**
* 第三方唯一键
*/
private String uniqueFk;
}
package io.better.toutiao.dto.resp;
import io.better.toutiao.dto.AudienceDTO;
import lombok.Data;
/**
* @author better create in 2019-04-29 14:21
*/
@Data
public class AdvertisingPlanRespDTO {
/**
* 广告组ID
*/
private Long id;
/**
* 广告组名称
*/
private String name;
/**
* 广告主ID
*/
private Long advertiserId;
/**
* 广告组ID
*/
private Long campaignId;
/**
* 广告组时间戳,用于更新时提交,服务端判断是否基于最新信息修改
*/
private String modifyTime;
/**
* 投放范围
*/
private String deliveryRange;
/**
* 计划上次修改时间
*/
private String adModifyTime;
/**
* 计划创建时间
*/
private String adCreateTime;
/**
* 广告组预算
*/
private Integer budget;
/**
* 广告组预算类型
*/
private String budgetMode;
/**
* 广告组推广目的
*
* @see io.better.toutiao.enums.LandingType
*/
private String landingType;
/**
* 广告计划投放状态
*
* @see io.better.toutiao.enums.AdvertisingPlanDeliveryStatus
*/
private String status;
/**
* 广告计划操作状态
*/
private String optStatus;
/**
* 广告投放起始时间
*/
private String startTime;
/**
* 广告投放结束时间
*/
private String endTime;
/**
* 广告出价
*/
private Integer bid;
/**
* 广告出价类型
*/
private String pricing;
/**
* 广告投放时间类型
*/
private String scheduleType;
/**
* 广告投放时段
*/
private String scheduleTime;
/**
* 广告投放速度类型
*/
private String flowControlMode;
/**
* 应用直达链接
*/
private String openUrl;
/**
* 应用下载方式
*/
private String downloadType;
/**
* 广告落地页链接
*/
private String externalUrl;
/**
* 广告应用下载链接
*/
private String downloadUrl;
/**
* 广告应用下载类型
*/
private String appType;
/**
* 广告应用下载包名
*/
private String packageName;
/**
* 广告计划审核不通过原因
*/
private String auditRejectReason;
/**
* ocpc广告转化出价,如果是cpc或cpm出价方式则使用bid字段
*/
private Integer cpaBid;
/**
* ocpc广告是否跳过第一阶段,0表示不跳过,1表示跳过
* (此参数将于2018年7月13日下线,ocpc将与ocpm保持一致,ocpc会默认进入第二阶段)
*/
private Integer cpaSkipFirstPhrase;
/**
* 转化类型广告的转化工具id
*/
private Integer convertId;
/**
* 过滤已转化用户类型字段,只有转化为目标时可填
*/
private String hideIfConverted;
/**
* 过滤已安装,当推广目标为安卓应用下载时可填,0表示不过滤,1表示过滤,默认为不过滤
*/
private Integer hideIfExists;
/**
* 广告受众
*/
private AudienceDTO audience;
/**
* 分页信息
*/
private PageRespDTO pageInfo;
/**
* 第三方唯一键
*/
private String uniqueFk;
/**
* 设置package属性
*
* @param packageName
*/
public void setPackage(String packageName) {
this.packageName = packageName;
}
}
package io.better.toutiao.dto.resp;
import lombok.Data;
/**
* @author better create in 2019-04-29 14:27
*/
@Data
public class PageRespDTO {
/**
* 页数
*/
private String page;
/**
* 页面大小
*/
private String pageSize;
/**
* 总数
*/
private String totalNumber;
/**
* 总页数
*/
private String totalPage;
}
package io.better.toutiao.dto.status;
import lombok.Data;
/**
* @author better create in 2019-04-29 14:48
*/
@Data
public class UpdateStatusDTO {
private Long advertiserId;
private Integer[] campaignIds;
private String optStatus;
}
package io.better.toutiao.enums;
import lombok.Getter;
/**
* 广告投放-广告组状态
*
* @author better create in 2019-04-29 14:30
*/
@Getter
public enum AdvertisingGroupStatus {
/**
* 启用
*/
CAMPAIGN_STATUS_ENABLE,
/**
* 暂停
*/
CAMPAIGN_STATUS_DISABLE,
/**
* 删除
*/
CAMPAIGN_STATUS_DELETE,
/**
* 所有包含已删除
*/
CAMPAIGN_STATUS_ALL,
/**
* 所有不包含已删除(状态过滤默认值)
*/
CAMPAIGN_STATUS_NOT_DELETE,
/**
* 超出账户日预算
*/
CAMPAIGN_STATUS_ADVERTISER_BUDGET_EXCEED;
}
package io.better.toutiao.enums;
import lombok.Getter;
/**
* 广告计划投放状态
*
* @author better create in 2019-04-29 15:07
*/
@Getter
public enum AdvertisingPlanDeliveryStatus {
/**
* 投放中
*/
AD_STATUS_DELIVERY_OK,
/**
* 数据错误
*/
AD_STATUS_DATA_ERROR,
/**
* 计划暂停
*/
AD_STATUS_DISABLE,
/**
* 新建审核中
*/
AD_STATUS_AUDIT,
/**
* 修改审核中
*/
AD_STATUS_REAUDIT,
/**
* 已完成(投放达到结束时间)
*/
AD_STATUS_DONE,
/**
* 计划新建
*/
AD_STATUS_CREATE,
/**
* 审核不通过
*/
AD_STATUS_AUDIT_DENY,
/**
* 账户余额不足
*/
AD_STATUS_BALANCE_EXCEED,
/**
* 超出预算
*/
AD_STATUS_BUDGET_EXCEED,
/**
* 未到达投放时间
*/
AD_STATUS_NOT_START,
/**
* 不在投放时段
*/
AD_STATUS_NO_SCHEDULE,
/**
* 已被广告组暂停
*/
AD_STATUS_CAMPAIGN_DISABLE,
/**
* 广告组超出预算
*/
AD_STATUS_CAMPAIGN_EXCEED,
/**
* 已删除
*/
AD_STATUS_DELETE,
/**
* 已冻结
*/
AD_STATUS_FROZEN,
/**
* 部分投放中
*/
AD_STATUS_SOME_DELIVERY_OK,
/**
* 所有包含已删除
*/
AD_STATUS_ALL,
/**
* 所有不包含已删除(状态过滤默认值)
*/
AD_STATUS_NOT_DELETE,
/**
* 超出账户日预算
*/
AD_STATUS_ADVERTISER_BUDGET_EXCEED;
}
package io.better.toutiao.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author better create in 2019-04-28 16:27
*/
@Getter
@AllArgsConstructor
public enum LandingType {
/**
* 销售线索收集
*/
LINK("LINK"),
/**
* 推广应用下载
*/
APP("APP"),
/**
* 产品目录
*/
DPA("DPA"),
/**
* 商品推广(鲁班)
*/
GOODS("GOODS");
private String landingType;
}
\ No newline at end of file
package io.better.toutiao.service.advertisingput; package io.better.toutiao.service.advertisingput;
import java.util.List;
/** /**
* @author better create in 2019-04-28 16:28 * @author better create in 2019-04-28 16:28
*/ */
public interface AdvertisingCreativeService { public interface AdvertisingCreativeService {
List<Object> getAdvertisingCreatives();
} }
package io.better.toutiao.service.datareport; package io.better.toutiao.service.datareport;
import io.better.toutiao.dto.DataReportDTO; import io.better.toutiao.dto.datareport.DataReportQueryDTO;
import java.util.List; import java.util.List;
...@@ -14,32 +14,32 @@ public interface DataReportService { ...@@ -14,32 +14,32 @@ public interface DataReportService {
/** /**
* 获取广告主报表信息 * 获取广告主报表信息
* *
* @param dataReportDTO the data report dto * @param dataReportQueryDTO the data report dto
* @return the advertisers report data * @return the advertisers report data
*/ */
List<Object> getAdvertisersReportData(DataReportDTO dataReportDTO); List<Object> getAdvertisersReportData(DataReportQueryDTO dataReportQueryDTO);
/** /**
* 获取某广告主的广告组报表信息 * 获取某广告主的广告组报表信息
* *
* @param dataReportDTO the data report dto * @param dataReportQueryDTO the data report dto
* @return the advertising group report data * @return the advertising group report data
*/ */
List<Object> getAdvertisingGroupReportData(DataReportDTO dataReportDTO); List<Object> getAdvertisingGroupReportData(DataReportQueryDTO dataReportQueryDTO);
/** /**
* 获取某广告主的广告计划报表信息 * 获取某广告主的广告计划报表信息
* *
* @param dataReportDTO the data report dto * @param dataReportQueryDTO the data report dto
* @return the advertising plan report data * @return the advertising plan report data
*/ */
List<Object> getAdvertisingPlanReportData(DataReportDTO dataReportDTO); List<Object> getAdvertisingPlanReportData(DataReportQueryDTO dataReportQueryDTO);
/** /**
* 获取某广告主的广告创意报表信息 * 获取某广告主的广告创意报表信息
* *
* @param dataReportDTO the data report dto * @param dataReportQueryDTO the data report dto
* @return the advertising creative report data * @return the advertising creative report data
*/ */
List<Object> getAdvertisingCreativeReportData(DataReportDTO dataReportDTO); List<Object> getAdvertisingCreativeReportData(DataReportQueryDTO dataReportQueryDTO);
} }
package io.better.toutiao.service.datareport.impl; package io.better.toutiao.service.datareport.impl;
import io.better.toutiao.api.datareport.DataReportApi; import io.better.toutiao.api.datareport.DataReportApi;
import io.better.toutiao.dto.DataReportDTO; import io.better.toutiao.dto.datareport.DataReportQueryDTO;
import io.better.toutiao.service.datareport.DataReportService; import io.better.toutiao.service.datareport.DataReportService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -31,51 +31,51 @@ public class DataReportServiceImpl implements DataReportService { ...@@ -31,51 +31,51 @@ public class DataReportServiceImpl implements DataReportService {
/** /**
* 获取广告主报表信息 * 获取广告主报表信息
* *
* @param dataReportDTO the data report dto * @param dataReportQueryDTO the data report dto
* @return the advertisers report data * @return the advertisers report data
*/ */
@Override @Override
public List<Object> getAdvertisersReportData(DataReportDTO dataReportDTO) { public List<Object> getAdvertisersReportData(DataReportQueryDTO dataReportQueryDTO) {
return dataReportApi.getAdvertisersReportData(dataReportDTO.getAccessToken(), dataReportDTO.getAdvertiserId(), return dataReportApi.getAdvertisersReportData(dataReportQueryDTO.getAccessToken(), dataReportQueryDTO.getAdvertiserId(),
dataReportDTO.getStartDate(), dataReportDTO.getEndDate(), dataReportDTO.getPage(), dataReportDTO.getPageSize(), dataReportDTO.getTimeGranularity()); dataReportQueryDTO.getStartDate(), dataReportQueryDTO.getEndDate(), dataReportQueryDTO.getPage(), dataReportQueryDTO.getPageSize(), dataReportQueryDTO.getTimeGranularity());
} }
/** /**
* 获取某广告主的广告组报表信息 * 获取某广告主的广告组报表信息
* *
* @param dataReportDTO the data report dto * @param dataReportQueryDTO the data report dto
* @return the advertising group report data * @return the advertising group report data
*/ */
@Override @Override
public List<Object> getAdvertisingGroupReportData(DataReportDTO dataReportDTO) { public List<Object> getAdvertisingGroupReportData(DataReportQueryDTO dataReportQueryDTO) {
return dataReportApi.getAdvertisingGroupReportData(dataReportDTO.getAccessToken(), dataReportDTO.getAdvertiserId(), return dataReportApi.getAdvertisingGroupReportData(dataReportQueryDTO.getAccessToken(), dataReportQueryDTO.getAdvertiserId(),
dataReportDTO.getStartDate(), dataReportDTO.getEndDate(), dataReportDTO.getPage(), dataReportDTO.getPageSize(), dataReportQueryDTO.getStartDate(), dataReportQueryDTO.getEndDate(), dataReportQueryDTO.getPage(), dataReportQueryDTO.getPageSize(),
dataReportDTO.getGroupBy(), dataReportDTO.getTimeGranularity(), dataReportDTO.getFiltering()); dataReportQueryDTO.getGroupBy(), dataReportQueryDTO.getTimeGranularity(), dataReportQueryDTO.getFiltering());
} }
/** /**
* 获取某广告主的广告计划报表信息 * 获取某广告主的广告计划报表信息
* *
* @param dataReportDTO the data report dto * @param dataReportQueryDTO the data report dto
* @return the advertising plan report data * @return the advertising plan report data
*/ */
@Override @Override
public List<Object> getAdvertisingPlanReportData(DataReportDTO dataReportDTO) { public List<Object> getAdvertisingPlanReportData(DataReportQueryDTO dataReportQueryDTO) {
return dataReportApi.getAdvertisingPlanReportData(dataReportDTO.getAccessToken(), dataReportDTO.getAdvertiserId(), return dataReportApi.getAdvertisingPlanReportData(dataReportQueryDTO.getAccessToken(), dataReportQueryDTO.getAdvertiserId(),
dataReportDTO.getStartDate(), dataReportDTO.getEndDate(), dataReportDTO.getPage(), dataReportDTO.getPageSize(), dataReportQueryDTO.getStartDate(), dataReportQueryDTO.getEndDate(), dataReportQueryDTO.getPage(), dataReportQueryDTO.getPageSize(),
dataReportDTO.getGroupBy(), dataReportDTO.getTimeGranularity(), dataReportDTO.getFiltering()); dataReportQueryDTO.getGroupBy(), dataReportQueryDTO.getTimeGranularity(), dataReportQueryDTO.getFiltering());
} }
/** /**
* 获取某广告主的广告创意报表信息 * 获取某广告主的广告创意报表信息
* *
* @param dataReportDTO the data report dto * @param dataReportQueryDTO the data report dto
* @return the advertising creative report data * @return the advertising creative report data
*/ */
@Override @Override
public List<Object> getAdvertisingCreativeReportData(DataReportDTO dataReportDTO) { public List<Object> getAdvertisingCreativeReportData(DataReportQueryDTO dataReportQueryDTO) {
return dataReportApi.getAdvertisingCreativeReportData(dataReportDTO.getAccessToken(), dataReportDTO.getAdvertiserId(), return dataReportApi.getAdvertisingCreativeReportData(dataReportQueryDTO.getAccessToken(), dataReportQueryDTO.getAdvertiserId(),
dataReportDTO.getStartDate(), dataReportDTO.getEndDate(), dataReportDTO.getPage(), dataReportDTO.getPageSize(), dataReportQueryDTO.getStartDate(), dataReportQueryDTO.getEndDate(), dataReportQueryDTO.getPage(), dataReportQueryDTO.getPageSize(),
dataReportDTO.getGroupBy(), dataReportDTO.getTimeGranularity(), dataReportDTO.getFiltering()); dataReportQueryDTO.getGroupBy(), dataReportQueryDTO.getTimeGranularity(), dataReportQueryDTO.getFiltering());
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment