Commit 7142b28e by chenmingyang

modify ad plan api name and dto field and dto name

parent 5c25f563
package io.better.toutiao.api.delivery; package io.better.toutiao.api.delivery;
import io.better.toutiao.dto.TouTiaoRespDTO; import io.better.toutiao.dto.TouTiaoRespDTO;
import io.better.toutiao.dto.delivery.plan.AdvertisingPlanRespDTO; import io.better.toutiao.dto.delivery.plan.AdPlanRespDTO;
import io.better.toutiao.dto.budget.UpdateBidDTO; import io.better.toutiao.dto.delivery.plan.AdvertisingPlanInfoDTO;
import io.better.toutiao.dto.budget.UpdateBudgetDTO; import io.better.toutiao.dto.delivery.plan.PlanBidDTO;
import io.better.toutiao.dto.delivery.plan.AdvertisingPlanReqDTO; import io.better.toutiao.dto.delivery.plan.PlanBudgetDTO;
import io.better.toutiao.dto.status.UpdateStatusDTO; import io.better.toutiao.dto.status.UpdateStatusDTO;
import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
...@@ -17,14 +16,14 @@ import java.util.Map; ...@@ -17,14 +16,14 @@ import java.util.Map;
* *
* @author better create in 2019-04-28 16:27 * @author better create in 2019-04-28 16:27
*/ */
@FeignClient(value = "https://ad.toutiao.com/open_api/2", url = "/ad") @FeignClient(value = "${toutiao.api.advertiser-url}", url = "/ad")
public interface AdvertisingPlanApi { public interface AdPlanApi {
/** /**
* 广告投放-获取某广告主的广告计划 * 广告投放-获取广告计划
* *
* @param accessToken 访问凭证 * @param accessToken 访问凭证
* @param advertiserId the advertiser id * @param advertiserId 广告主ID
* @param page 当前页 * @param page 当前页
* @param pageSize 每页记录数 * @param pageSize 每页记录数
* @param filtering 过滤字段 * @param filtering 过滤字段
...@@ -32,48 +31,49 @@ public interface AdvertisingPlanApi { ...@@ -32,48 +31,49 @@ public interface AdvertisingPlanApi {
* @return advertising plan * @return advertising plan
*/ */
@GetMapping(value = "/get") @GetMapping(value = "/get")
TouTiaoRespDTO<List<AdvertisingPlanRespDTO>> getAdvertisingPlan(@RequestHeader("Access-Token") String accessToken, TouTiaoRespDTO<AdPlanRespDTO> getAdvertisingPlan(@RequestHeader("Access-Token") String accessToken,
@RequestParam("advertiser_id") Long advertiserId, @RequestParam("advertiser_id") Long advertiserId,
@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 = "filtering", required = false) Map<String, Object> filtering, @RequestParam(value = "filtering", required = false) Map<String, Object> filtering,
@RequestParam(value = "fields", required = false) String[] fields); @RequestParam(value = "fields", required = false) String[] fields
);
/** /**
* 广告投放-为某广告主创建广告计划 * 广告投放-创建广告计划
* *
* @param accessToken 访问凭证 * @param accessToken 访问凭证
* @param advertisingPlanIn 更新对象 * @param advertisingPlanIn 更新对象
* @return 广告计划ID * @return 广告计划ID
*/ */
@PostMapping(value = "/create") @PostMapping(value = "/create")
TouTiaoRespDTO<Integer> createAdvertisingPlan(@RequestHeader("Access-Token") String accessToken, TouTiaoRespDTO<AdPlanRespDTO> createAdvertisingPlan(@RequestHeader("Access-Token") String accessToken,
@RequestBody AdvertisingPlanRespDTO advertisingPlanIn @RequestBody AdvertisingPlanInfoDTO advertisingPlanIn
); );
/** /**
* 广告投放-更新某广告主的广告计划 * 广告投放-更新广告计划
* *
* @param accessToken 访问凭证 * @param accessToken 访问凭证
* @param advertisingPlanOut 更新信息 * @param advertisingPlanInfo 更新信息
* @return 广告计划ID * @return 广告计划ID
*/ */
@PostMapping(value = "/update") @PostMapping(value = "/update")
TouTiaoRespDTO<Integer> updateAdvertisingPlan(@RequestHeader("Access-Token") String accessToken, TouTiaoRespDTO<AdPlanRespDTO> updateAdvertisingPlan(@RequestHeader("Access-Token") String accessToken,
@RequestBody AdvertisingPlanReqDTO advertisingPlanOut @RequestBody AdvertisingPlanInfoDTO advertisingPlanInfo
); );
/** /**
* 广告投放-更新某广告主下广告计划状态,可以批量更新 * 广告投放-更新广告计划状态,可以批量更新
* *
* @param accessToken 访问凭证 * @param accessToken 访问凭证
* @param updateStatusDTO 更新状态信息 * @param updateStatus 更新状态信息
* @return 广告计划ID集合 * @return 广告计划ID集合
*/ */
@PostMapping(value = "/update/status") @PostMapping(value = "/update/status")
TouTiaoRespDTO<List<Integer>> updateAdvertisingPlanStatus(@RequestHeader("Access-Token") String accessToken, TouTiaoRespDTO<AdPlanRespDTO> updateAdvertisingPlanStatus(@RequestHeader("Access-Token") String accessToken,
@RequestBody UpdateStatusDTO updateStatusDTO); @RequestBody UpdateStatusDTO updateStatus);
/** /**
* 广告投放-更新某广告主下广告计划预算,可以批量更新 * 广告投放-更新某广告主下广告计划预算,可以批量更新
...@@ -83,8 +83,8 @@ public interface AdvertisingPlanApi { ...@@ -83,8 +83,8 @@ public interface AdvertisingPlanApi {
* @return 广告计划ID集合 * @return 广告计划ID集合
*/ */
@PostMapping(value = "/update/budget") @PostMapping(value = "/update/budget")
TouTiaoRespDTO<List<Integer>> updateAdvertisingPlanBudget(@RequestHeader("Access-Token") String accessToken, TouTiaoRespDTO<AdPlanRespDTO> updateAdvertisingPlanBudget(@RequestHeader("Access-Token") String accessToken,
@RequestBody UpdateBudgetDTO updateBudget); @RequestBody PlanBudgetDTO.UpdateBudgetDTO updateBudget);
/** /**
* 广告投放-更新某广告主下广告计划出价,可以批量更新 * 广告投放-更新某广告主下广告计划出价,可以批量更新
...@@ -94,6 +94,6 @@ public interface AdvertisingPlanApi { ...@@ -94,6 +94,6 @@ public interface AdvertisingPlanApi {
* @return 广告计划ID集合 * @return 广告计划ID集合
*/ */
@PostMapping(value = "/update/bid") @PostMapping(value = "/update/bid")
TouTiaoRespDTO<List<Integer>> updateAdvertisingPlanBid(@RequestHeader("Access-Token") String accessToken, TouTiaoRespDTO<AdPlanRespDTO> updateAdvertisingPlanBid(@RequestHeader("Access-Token") String accessToken,
@RequestBody UpdateBidDTO updateBid); @RequestBody PlanBidDTO.UpdateBidDTO updateBid);
} }
package io.better.toutiao.dto.delivery.plan;
import io.better.toutiao.dto.PageDTO;
import lombok.Data;
import java.util.List;
/**
* @author better create in 2019-05-07 18:33
*/
@Data
public class AdPlanRespDTO {
/**
* 广告计划ID,接收创建、更新返回参数
*/
private Long adId;
/**
* 此次修改是否触发进入待审状态,接收更新返回参数
* (1表示进入待审状态,0表示不进入待审状态)
*/
private Integer needAudit;
/**
* 广告计划ID集合, 接收更新计划状态返回参数
*/
private List<Long> adIds;
/**
* 广告计划信息计划, 接收查询返回参数
*/
private List<AdvertisingPlanInfoDTO> list;
/**
* 分页信息,接收查询返回参数
*/
private PageDTO pageInfo;
}
package io.better.toutiao.dto.delivery.plan; package io.better.toutiao.dto.delivery.plan;
import io.better.toutiao.dto.AudienceDTO;
import io.better.toutiao.dto.PageDTO;
import lombok.Data; import lombok.Data;
/** /**
* @author better create in 2019-04-29 10:23 * @author better create in 2019-04-29 10:23
*/ */
@Data @Data
public class AdvertisingPlanRespDTO { public class AdvertisingPlanInfoDTO extends AudienceInfoDTO {
/** /**
* 广告组ID * 广告组ID
...@@ -37,6 +35,8 @@ public class AdvertisingPlanRespDTO { ...@@ -37,6 +35,8 @@ public class AdvertisingPlanRespDTO {
/** /**
* 投放范围 * 投放范围
*
* @see io.better.toutiao.enums.delivery.AdDeliveryRange
*/ */
private String deliveryRange; private String deliveryRange;
...@@ -63,12 +63,14 @@ public class AdvertisingPlanRespDTO { ...@@ -63,12 +63,14 @@ public class AdvertisingPlanRespDTO {
/** /**
* 广告计划投放状态 * 广告计划投放状态
* *
* @see io.better.toutiao.enums.AdvertisingPlanDeliveryStatus * @see io.better.toutiao.enums.delivery.AdPlanDeliveryStatus
*/ */
private String status; private String status;
/** /**
* 广告计划操作状态 * 广告计划操作状态
*
* @see io.better.toutiao.enums.delivery.AdPlanOptionStatus
*/ */
private String optStatus; private String optStatus;
...@@ -104,6 +106,8 @@ public class AdvertisingPlanRespDTO { ...@@ -104,6 +106,8 @@ public class AdvertisingPlanRespDTO {
/** /**
* 广告投放速度类型 * 广告投放速度类型
*
* @see io.better.toutiao.enums.delivery.AdPlanDeliverySpeedType
*/ */
private String flowControlMode; private String flowControlMode;
...@@ -114,6 +118,8 @@ public class AdvertisingPlanRespDTO { ...@@ -114,6 +118,8 @@ public class AdvertisingPlanRespDTO {
/** /**
* 应用下载方式 * 应用下载方式
* <p>
* DOWNLOAD_URL(下载链接,默认),EXTERNAL_URL(落地页链接)
*/ */
private String downloadType; private String downloadType;
...@@ -164,24 +170,59 @@ public class AdvertisingPlanRespDTO { ...@@ -164,24 +170,59 @@ public class AdvertisingPlanRespDTO {
private String hideIfConverted; private String hideIfConverted;
/** /**
* 过滤已安装,当推广目标为安卓应用下载时可填,0表示不过滤,1表示过滤,默认为不过滤 * 过滤已安装,当推广目标为安卓应用下载时可填,
* 0表示不过滤,1表示过滤,默认为不过滤
*/ */
private Integer hideIfExists; private Integer hideIfExists;
/** /**
* 广告受众 * 广告受众
*/ */
private AudienceDTO audience; private AudienceInfoDTO audience;
/** /**
* 分页信息 * 第三方唯一键
*/ */
private PageDTO pageInfo; private String uniqueFk;
/** /**
* 第三方唯一键 * 自动出价类型
*
* @see io.better.toutiao.enums.delivery.AutoBidType
*/ */
private String uniqueFk; private String smartBidType;
/**
* 是否调整自动出价
*/
private Integer adjustCpa;
// 创建
/**
* 穿山甲视频创意类型
*/
private String unionVideoType;
/**
* 深度优化方式
*
* @see io.better.toutiao.enums.delivery.DeepBidType
*/
private String deepBidType;
/**
* 深度优化出价,deep_bid_type=DEEP_BID_MIN时必填
*/
private Long deepCpabid;
// 更新
/**
* 计划ID
*/
private String adId;
/** /**
* 设置package属性 * 设置package属性
......
package io.better.toutiao.dto.delivery.plan;
import io.better.toutiao.dto.AudienceDTO;
import io.better.toutiao.enums.AppType;
import lombok.Data;
/**
* @author better create in 2019-04-29 10:23
*/
@Data
public class AdvertisingPlanReqDTO extends AudienceDTO {
/**
* 广告主ID
*/
private Integer advertiserId;
/**
* 广告组ID
*/
private String campaignId;
/**
* 投放范围
*/
private String deliveryRange;
/**
* 广告预算类型
*/
private String budgetMode;
/**
* 广告预算
*/
private Long budget;
/**
* 广告投放起始时间
*/
private String startTime;
/**
* 广告投放结束时间
*/
private String endTime;
/**
* 广告出价
*/
private Long bid;
/**
* 计划出价类型
*/
private String pricing;
/**
* 广告投放时间类型
*
* @see io.better.toutiao.enums.ScheduleType
*/
private String scheduleType;
/**
* 广告投放时段
*/
private String scheduleTime;
/**
* 广告投放速度类型
*
* @see io.better.toutiao.enums.FlowControlMode
*/
private String flowControlMode;
/**
* 应用直达链接
*/
private String openUrl;
/**
* 应用下载方式
*/
private String downloadType;
/**
* 广告落地页链接
*/
private String externalUrl;
/**
* 应用下载方式
*/
private String downloadUrl;
/**
* 广告名称
*/
private String name;
/**
* 应用广告下载类型
*
* @see AppType
*/
private String appType;
/**
* 广告应用下载包名
*/
private String packageName;
/**
* 过滤已转化用户类型的字段,只有转化为目标时可填
*
* @see io.better.toutiao.enums.HideIfConverted
*/
private String hideIfConverted;
/**
* 过滤已安装,允许值: 0, 1
*/
private Long hideIfExists;
/**
* ocpm广告转化出价
*/
private Long cpaBid;
/**
* 转换ID
*/
private Long convertId;
/**
* 穿山甲视频创意类型,允许值:ORIGINAL_VIDEO,REWARDED_VIDEO
*
* @see io.better.toutiao.enums.UnionVideoType
*/
private String unionVideoType;
/**
* 深度优化方式
*
* @see io.better.toutiao.enums.DeepBidType
*/
private String deepBidType;
/**
* 深度优化出价,deep_bid_type=DEEP_BID_MIN时必填
*/
private Long deepCpabid;
/**
* 第三方唯一键
*/
private String uniqueFk;
// 更新所需属性==============================
/**
* 计划ID
*/
private String adId;
/**
* 修改时间
*/
private String modifyTime;
}
package io.better.toutiao.dto; package io.better.toutiao.dto.delivery.plan;
import io.better.toutiao.enums.audience.*;
import lombok.Data; import lombok.Data;
/** /**
...@@ -9,27 +8,13 @@ import lombok.Data; ...@@ -9,27 +8,13 @@ import lombok.Data;
* @author better create in 2019-04-29 15:26 * @author better create in 2019-04-29 15:26
*/ */
@Data @Data
public class AudienceDTO { public class AudienceInfoDTO {
/**
* 定向人群包类型,前者为定向人群包,后者为排除人群包
* 允许值: "RETARGETING_INCLUDE", "RETARGETING_EXCLUDE"
*
* @see RetargetingType
*/
private String retargetingType;
/**
* 当选择使用人群包定向时填写,内容为人群包id
*/
private Integer[] retargetingTags;
/** /**
* 定向人群包列表,内容为人群包id.(新增字段,使用新增字段支持同时选择定向和排除) * 定向人群包列表,内容为人群包id.(新增字段,使用新增字段支持同时选择定向和排除)
*/ */
private Integer[] retargetingTagsInclude; private Integer[] retargetingTagsInclude;
/** /**
* 排除人群包列表,内容为人群包id.(新增字段,使用新增字段支持同时选择定向和排除) * 排除人群包列表,内容为人群包id.(新增字段,使用新增字段支持同时选择定向和排除)
*/ */
...@@ -38,65 +23,70 @@ public class AudienceDTO { ...@@ -38,65 +23,70 @@ public class AudienceDTO {
/** /**
* 受众性别 * 受众性别
* *
* @see Gender * @see io.better.toutiao.enums.common.Gender
*/ */
private String gender; private String gender;
/** /**
* 受众年龄区间 * 受众年龄区间
* *
* @see Age * @see io.better.toutiao.enums.common.Age
*/ */
private String[] age; private String[] age;
/** /**
* 受众最低android版本 * 受众最低android版本
* *
* @see AndroidOsv * @see io.better.toutiao.enums.common.AndroidOsv
*/ */
private String androidOsv; private String androidOsv;
/** /**
* 受众最低ios版本 * 受众最低ios版本
* *
* @see IosOsv * @see io.better.toutiao.enums.common.IosOsv
*/ */
private String iosOsv; private String iosOsv;
/** /**
* 受众网络类型 * 受众网络类型
* *
* @see Ac * @see io.better.toutiao.enums.common.Ac
*/ */
private String[] ac; private String[] ac;
/** /**
* 受众手机品牌 * 受众手机品牌
*
* @see io.better.toutiao.enums.common.DeviceBrand
*/ */
private String[] deviceBrand; private String[] deviceBrand;
/** /**
* 受众文章分类 * 受众文章分类
* *
* @see ArticleCategory * @see io.better.toutiao.enums.audience.ArticleCategory
*/ */
private String[] articleCategory; private String[] articleCategory;
/** /**
* 用户首次激活时间 * 用户首次激活时间
*
* @see io.better.toutiao.enums.UserFirstActiveTime
*/ */
private String[] activateType; private String[] activateType;
/** /**
* 受众平台 * 受众平台
* *
* @see io.better.toutiao.enums.Platform * @see io.better.toutiao.enums.common.Platform
*/ */
private String[] platform; private String[] platform;
/** /**
* 受众运营商 * 受众运营商
*
* @see io.better.toutiao.enums.audience.Carrier
*/ */
private String[] carrier; private String[] carrier;
......
package io.better.toutiao.dto.budget; package io.better.toutiao.dto.delivery.plan;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List; import java.util.List;
/** /**
* @author better create in 2019-04-29 14:48 * 计划出价
*
* @author better create in 2019-05-07 20:03
*/ */
@Data @Data
public class UpdateBidDTO { public class PlanBidDTO {
/** /**
* 广告主ID * 出价
*/ */
private Long advertiserId; private Integer bid;
/** /**
* 计划ID集合 * 计划ID
*/ */
private List<Integer> adIds; private Integer adId;
/** /**
* 出价 * 更新计划出价DTO
*/ */
private Integer bid; @Data
@EqualsAndHashCode(callSuper = true)
public static class UpdateBidDTO extends PlanBidDTO {
/**
* 广告主ID
*/
private Long advertiserId;
/**
* 计划ID集合
*/
private List<Integer> adIds;
/**
* ID集合
*/
private List<PlanBidDTO> data;
}
/**
* ID集合
*/
private List<Integer> data;
} }
package io.better.toutiao.dto.budget; package io.better.toutiao.dto.delivery.plan;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List; import java.util.List;
/** /**
* 计划预算
*
* @author better create in 2019-04-29 14:48 * @author better create in 2019-04-29 14:48
*/ */
@Data @Data
public class UpdateBudgetDTO { public class PlanBudgetDTO {
/**
* 广告主ID
*/
private Long advertiserId;
/** /**
* 计划ID * 计划ID
...@@ -26,7 +24,20 @@ public class UpdateBudgetDTO { ...@@ -26,7 +24,20 @@ public class UpdateBudgetDTO {
private Integer budget; private Integer budget;
/** /**
* ID集合 * 更新计划预算DTO
*/ */
private List<Integer> data; @Data
} @EqualsAndHashCode(callSuper = true)
public static class UpdateBudgetDTO extends PlanBudgetDTO {
/**
* 广告主ID
*/
private Long advertiserId;
/**
* ID集合
*/
private List<PlanBudgetDTO> data;
}
}
\ No newline at end of file
...@@ -16,7 +16,7 @@ public class UpdateStatusDTO extends BaseDTO { ...@@ -16,7 +16,7 @@ public class UpdateStatusDTO extends BaseDTO {
/** /**
* 计划ID集合 * 计划ID集合
*/ */
private Integer[] adIds; private List<Long> adIds;
/** /**
* 广告组ID集合 * 广告组ID集合
......
package io.better.toutiao.enums;
import lombok.Getter;
/**
* @author better create in 2019-05-07 18:55
*/
@Getter
public enum UserFirstActiveTime {
/**
* 一个月以内
*/
WITH_IN_A_MONTH,
/**
* 一个月到三个月
*/
ONE_MONTH_2_THREE_MONTH,
/**
* 三个月或更早
*/
THREE_MONTH_EAILIER
}
package io.better.toutiao.enums.audience; package io.better.toutiao.enums.common;
import lombok.Getter; import lombok.Getter;
......
package io.better.toutiao.enums.audience; package io.better.toutiao.enums.common;
import lombok.Getter; import lombok.Getter;
......
package io.better.toutiao.enums.audience; package io.better.toutiao.enums.common;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
......
package io.better.toutiao.enums.audience; package io.better.toutiao.enums.common;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
......
package io.better.toutiao.enums.audience; package io.better.toutiao.enums.common;
import lombok.Getter; import lombok.Getter;
......
package io.better.toutiao.enums.audience; package io.better.toutiao.enums.common;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
......
package io.better.toutiao.enums; package io.better.toutiao.enums.common;
import lombok.Getter; import lombok.Getter;
......
package io.better.toutiao.enums; package io.better.toutiao.enums.delivery;
import lombok.Getter; import lombok.Getter;
...@@ -8,7 +8,7 @@ import lombok.Getter; ...@@ -8,7 +8,7 @@ import lombok.Getter;
* @author better create in 2019-05-06 16:53 * @author better create in 2019-05-06 16:53
*/ */
@Getter @Getter
public enum AdvertisingDeliveryRange { public enum AdDeliveryRange {
/** /**
* 默认 * 默认
......
package io.better.toutiao.enums.delivery;
import lombok.Getter;
/**
* 广告计划投放速度类型
*
* @author better create in 2019-05-07 18:39
*/
@Getter
public enum AdPlanDeliverySpeedType {
/**
* 快速投放(原名:尽快投放)
*/
FLOW_CONTROL_MODE_FAST,
/**
* 优先低成本(原名:平均投放,标准投放)
*/
FLOW_CONTROL_MODE_SMOOTH,
/**
* 均衡投放(新增字段)
*/
FLOW_CONTROL_MODE_BALANCE
}
package io.better.toutiao.enums; package io.better.toutiao.enums.delivery;
import lombok.Getter; import lombok.Getter;
...@@ -8,7 +8,7 @@ import lombok.Getter; ...@@ -8,7 +8,7 @@ import lombok.Getter;
* @author better create in 2019-04-29 15:07 * @author better create in 2019-04-29 15:07
*/ */
@Getter @Getter
public enum AdvertisingPlanDeliveryStatus { public enum AdPlanDeliveryStatus {
/** /**
* 投放中 * 投放中
......
package io.better.toutiao.enums; package io.better.toutiao.enums.delivery;
import lombok.Getter; import lombok.Getter;
...@@ -8,7 +8,7 @@ import lombok.Getter; ...@@ -8,7 +8,7 @@ import lombok.Getter;
* @author better create in 2019-04-29 14:30 * @author better create in 2019-04-29 14:30
*/ */
@Getter @Getter
public enum AdvertisingGroupOptionStatus { public enum AdPlanOptionStatus {
/** /**
* 启用 * 启用
......
package io.better.toutiao.enums.audience; package io.better.toutiao.enums.delivery;
import lombok.Getter; import lombok.Getter;
/** /**
* 受众人群包类型 * 自动出价类型
* *
* @author better create in 2019-05-06 17:14 * @author better create in 2019-05-07 19:37
*/ */
@Getter @Getter
public enum RetargetingType { public enum AutoBidType {
/** /**
* 包含人群包 * 手动出价,即不使用自动出价
*/ */
RETARGETING_INCLUDE, SMART_BID_CUSTOM,
/** /**
* 排除人群包 * 自动出价
*/ */
RETARGETING_EXCLUDE SMART_BID_CONSERVATIVE
} }
package io.better.toutiao.enums; package io.better.toutiao.enums.delivery;
import lombok.Getter; import lombok.Getter;
......
package io.better.toutiao.enums; package io.better.toutiao.enums.delivery;
import lombok.Getter; import lombok.Getter;
......
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