Commit 76902708 by BetterXT

add advertiser put client

add some data report client add some service class
parent 9b17616f
......@@ -28,3 +28,5 @@ HELP.md
### VS Code ###
.vscode/
logs
\ No newline at end of file
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 AdvertisingCreativeApi {
}
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;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
/**
* The interface Data report api.
*
* @author better create in 2019-04-28 11:18
*/
@FeignClient(value = "${toutiao.api.oauth-url}", url = "/report")
public interface DataReportApi {
/**
* The constant STAT_TIME_GRANULARITY_DAILY.
*/
String STAT_TIME_GRANULARITY_DAILY = "STAT_TIME_GRANULARITY_DAILY";
/**
* The constant STAT_TIME_GRANULARITY_HOURLY.
*/
String STAT_TIME_GRANULARITY_HOURLY = "STAT_TIME_GRANULARITY_HOURLY";
/**
* 获取广告主报表数据
*
* @param accessToken 访问凭证
* @param advertiserId 广告主id
* @param startDate 开始时间
* @param endDate 结束时间
* @param page 当前页
* @param pageSize 页数量
* @param timeGranularity 时间粒度,STAT_TIME_GRANULARITY_DAILY, STAT_TIME_GRANULARITY_HOURLY 两个取值
* @return advertisers report data
*/
@GetMapping(value = "/advertiser/get/", consumes = "application/json")
List<Object> getAdvertisersReportData(@RequestHeader("Access-Token") String accessToken,
@RequestParam("advertiser_id") Long advertiserId,
@RequestParam("start_date") String startDate,
@RequestParam("end_date") String endDate,
@RequestParam(value = "page", defaultValue = "1", required = false) Integer page,
@RequestParam(value = "page_size", defaultValue = "20", required = false) Integer pageSize,
@RequestParam(value = "time_granularity", defaultValue = STAT_TIME_GRANULARITY_DAILY, required = false) String timeGranularity);
/**
* 获取广告组报表数据
*
* @param accessToken 访问凭证
* @param advertiserId 广告主id
* @param startDate 开始时间
* @param endDate 结束时间
* @param page 当前页
* @param pageSize 页数量
* @param timeGranularity 时间粒度,STAT_TIME_GRANULARITY_DAILY, STAT_TIME_GRANULARITY_HOURLY 两个取值
* @param filtering 过滤字段
* @return advertising group report data
*/
@GetMapping(value = "/campaign/get/", consumes = "application/json")
List<Object> getAdvertisingGroupReportData(@RequestHeader("Access-Token") String accessToken,
@RequestParam("advertiser_id") Long advertiserId,
@RequestParam("start_date") String startDate,
@RequestParam("end_date") String endDate,
@RequestParam(value = "page", defaultValue = "1", required = false) Integer page,
@RequestParam(value = "page_size", defaultValue = "20", required = false) Integer pageSize,
@RequestParam(value = "group_by", required = false) String[] groupBy,
@RequestParam(value = "time_granularity", defaultValue = STAT_TIME_GRANULARITY_DAILY, required = false) String timeGranularity,
@RequestParam(value = "filtering", required = false) Map<String, Object> filtering);
/**
* 获取广告计划报表数据
*
* @param accessToken 访问凭证
* @param advertiserId 广告主id
* @param startDate 开始时间
* @param endDate 结束时间
* @param page 当前页
* @param pageSize 页数量
* @param timeGranularity 时间粒度,STAT_TIME_GRANULARITY_DAILY, STAT_TIME_GRANULARITY_HOURLY 两个取值
* @param filtering 过滤字段
* @return advertising plan report data
*/
@GetMapping(value = "/ad/get/", consumes = "application/json")
List<Object> getAdvertisingPlanReportData(@RequestHeader("Access-Token") String accessToken,
@RequestParam("advertiser_id") Long advertiserId,
@RequestParam("start_date") String startDate,
@RequestParam("end_date") String endDate,
@RequestParam(value = "page", defaultValue = "1", required = false) Integer page,
@RequestParam(value = "page_size", defaultValue = "20", required = false) Integer pageSize,
@RequestParam(value = "group_by", required = false) String[] groupBy,
@RequestParam(value = "time_granularity", defaultValue = STAT_TIME_GRANULARITY_DAILY, required = false) String timeGranularity,
@RequestParam(value = "filtering", required = false) Map<String, Object> filtering);
/**
* 获取广告创意报表数据
*
* @param accessToken 访问凭证
* @param advertiserId 广告主id
* @param startDate 开始时间
* @param endDate 结束时间
* @param page 当前页
* @param pageSize 页数量
* @param timeGranularity 时间粒度,STAT_TIME_GRANULARITY_DAILY, STAT_TIME_GRANULARITY_HOURLY 两个取值
* @param filtering 过滤字段
* @return advertising creative report data
*/
@GetMapping(value = "/creative/get/", consumes = "application/json")
List<Object> getAdvertisingCreativeReportData(@RequestHeader("Access-Token") String accessToken,
@RequestParam("advertiser_id") Long advertiserId,
@RequestParam("start_date") String startDate,
@RequestParam("end_date") String endDate,
@RequestParam(value = "page", defaultValue = "1", required = false) Integer page,
@RequestParam(value = "page_size", defaultValue = "20", required = false) Integer pageSize,
@RequestParam(value = "group_by", required = false) String[] groupBy,
@RequestParam(value = "time_granularity", defaultValue = STAT_TIME_GRANULARITY_DAILY, required = false) String timeGranularity,
@RequestParam(value = "filtering", required = false) Map<String, Object> filtering);
}
package io.better.toutiao.dto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Map;
/**
* 广告投放DTO
*
* @author better create in 2019-04-28 17:58
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class AdvertisingPutDTO extends PageDTO {
/**
* 过滤字段
*/
private Map<String, Object> filtering;
/**
* 查询字段集合
*/
private String[] fields;
}
package io.better.toutiao.dto;
import lombok.Data;
/**
* @author better create in 2019-04-28 16:01
*/
@Data
public class BaseDTO {
/**
* 访问凭证
*/
private String accessToken;
/**
* 广告主ID
*/
private String advertiserId;
}
package io.better.toutiao.dto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Map;
/**
* @author better create in 2019-04-28 15:58
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class DataReportDTO extends PageDTO {
/**
* 广告主ID
*/
private Long advertiserId;
/**
* 开始时间
*/
private String startDate;
/**
* 结束时间
*/
private String endDate;
/**
* 分组
*/
private String[] groupBy;
/**
* 时间粒度,STAT_TIME_GRANULARITY_DAILY: 每天;STAT_TIME_GRANULARITY_HOURLY: 每小时
*/
private String timeGranularity;
/**
* 过滤字段
*/
private Map<String, Object> filtering;
}
package io.better.toutiao.dto;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author better create in 2019-04-28 16:01
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class PageDTO extends BaseDTO {
/**
* 当前页
*/
private Integer page;
/**
* 每页数量
*/
private Integer pageSize;
}
package io.better.toutiao.excel;
import java.util.List;
/**
* excel处理接口
*
* @param <T> 写入数据类型
* @author better create in 2019-04-28 15:31
*/
public interface ExcelHandle<T> {
/**
* 生成excel
*
* @param fileName excel名称
* @param outPath 输出路径
* @param writeData 写入数据
*/
void generateExcel(String fileName, String outPath, List<T> writeData);
/**
* 获取文件名
*
* @return 文件名
*/
String getFileName();
/**
* 生成文件名
*
* @return 文件名
*/
String generateFileName();
}
package io.better.toutiao.service.advertisingput;
/**
* @author better create in 2019-04-28 16:28
*/
public interface AdvertisingCreativeService {
}
package io.better.toutiao.service.advertisingput;
/**
* @author better create in 2019-04-28 16:28
*/
public interface AdvertisingGroupService {
}
package io.better.toutiao.service.advertisingput;
/**
* @author better create in 2019-04-28 16:28
*/
public interface AdvertisingPlanService {
Long createAdvertisingPlan();
}
package io.better.toutiao.service.datareport;
import io.better.toutiao.dto.DataReportDTO;
import java.util.List;
/**
* The interface Data report service.
*
* @author better create in 2019-04-28 15:54
*/
public interface DataReportService {
/**
* 获取广告主报表信息
*
* @param dataReportDTO the data report dto
* @return the advertisers report data
*/
List<Object> getAdvertisersReportData(DataReportDTO dataReportDTO);
/**
* 获取某广告主的广告组报表信息
*
* @param dataReportDTO the data report dto
* @return the advertising group report data
*/
List<Object> getAdvertisingGroupReportData(DataReportDTO dataReportDTO);
/**
* 获取某广告主的广告计划报表信息
*
* @param dataReportDTO the data report dto
* @return the advertising plan report data
*/
List<Object> getAdvertisingPlanReportData(DataReportDTO dataReportDTO);
/**
* 获取某广告主的广告创意报表信息
*
* @param dataReportDTO the data report dto
* @return the advertising creative report data
*/
List<Object> getAdvertisingCreativeReportData(DataReportDTO dataReportDTO);
}
package io.better.toutiao.service.datareport.impl;
import io.better.toutiao.api.datareport.DataReportApi;
import io.better.toutiao.dto.DataReportDTO;
import io.better.toutiao.service.datareport.DataReportService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* The type Data report service.
*
* @author better create in 2019-04-28 16:12
*/
@Service
public class DataReportServiceImpl implements DataReportService {
private DataReportApi dataReportApi;
/**
* Instantiates a new Data report service.
*
* @param dataReportApi the data report api
*/
@Autowired
public DataReportServiceImpl(DataReportApi dataReportApi) {
this.dataReportApi = dataReportApi;
}
/**
* 获取广告主报表信息
*
* @param dataReportDTO the data report dto
* @return the advertisers report data
*/
@Override
public List<Object> getAdvertisersReportData(DataReportDTO dataReportDTO) {
return dataReportApi.getAdvertisersReportData(dataReportDTO.getAccessToken(), dataReportDTO.getAdvertiserId(),
dataReportDTO.getStartDate(), dataReportDTO.getEndDate(), dataReportDTO.getPage(), dataReportDTO.getPageSize(), dataReportDTO.getTimeGranularity());
}
/**
* 获取某广告主的广告组报表信息
*
* @param dataReportDTO the data report dto
* @return the advertising group report data
*/
@Override
public List<Object> getAdvertisingGroupReportData(DataReportDTO dataReportDTO) {
return dataReportApi.getAdvertisingGroupReportData(dataReportDTO.getAccessToken(), dataReportDTO.getAdvertiserId(),
dataReportDTO.getStartDate(), dataReportDTO.getEndDate(), dataReportDTO.getPage(), dataReportDTO.getPageSize(),
dataReportDTO.getGroupBy(), dataReportDTO.getTimeGranularity(), dataReportDTO.getFiltering());
}
/**
* 获取某广告主的广告计划报表信息
*
* @param dataReportDTO the data report dto
* @return the advertising plan report data
*/
@Override
public List<Object> getAdvertisingPlanReportData(DataReportDTO dataReportDTO) {
return dataReportApi.getAdvertisingPlanReportData(dataReportDTO.getAccessToken(), dataReportDTO.getAdvertiserId(),
dataReportDTO.getStartDate(), dataReportDTO.getEndDate(), dataReportDTO.getPage(), dataReportDTO.getPageSize(),
dataReportDTO.getGroupBy(), dataReportDTO.getTimeGranularity(), dataReportDTO.getFiltering());
}
/**
* 获取某广告主的广告创意报表信息
*
* @param dataReportDTO the data report dto
* @return the advertising creative report data
*/
@Override
public List<Object> getAdvertisingCreativeReportData(DataReportDTO dataReportDTO) {
return dataReportApi.getAdvertisingCreativeReportData(dataReportDTO.getAccessToken(), dataReportDTO.getAdvertiserId(),
dataReportDTO.getStartDate(), dataReportDTO.getEndDate(), dataReportDTO.getPage(), dataReportDTO.getPageSize(),
dataReportDTO.getGroupBy(), dataReportDTO.getTimeGranularity(), dataReportDTO.getFiltering());
}
}
toutiao:
api:
advertiser-url: ad.toutiao.com/open_api/2
oauth-url: https://ad.toutiao.com/open_api
oauth-url: ad.toutiao.com/open_api/2
server:
port: 9004
......@@ -17,12 +17,17 @@ logging:
level:
feign=debug
ribbon:
http:
client:
enabled: true
xxl:
job:
admin-addresses: http://127.0.0.1:9001/xxl-job-admin
ip: 127.0.0.1
app-name: toutiao-api-job
port: 9003
log-path: Users/better/data/applogs/xxl-job/jobhandler
log-path: logs/xxl-job/jobhandler
access-token:
log-retention-days: 1
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