package com.fs.baidu.vo;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.Getter;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;

@Data
public class ReportDataVo {
    // 基础字段
    private Integer type; // 根据时间单位可能需要调整格式（如String或LocalDateTime）
    private String date; // 根据时间单位可能需要调整格式（如String或LocalDateTime）

    private String userName;

    private Long userId;

    // 推广计划相关字段
    private Long campaignId;

    private String campaignName;

    private CampaignStatusEnum campaignStatus;

    private String campaignNameStatus;

    // 推广单元相关字段
    private Long adGroupId;

    private String adGroupName;
    // 创意ID
    private String ideaId;
    // 视频ID
    private String videoId;
    // 视屏名称
    private String videoNameStatus;
    // 视频信息
    private VideoInfo videoInfo;
    // 图片地址
    private String imageUrl;
    // 图片ID
    private String imageId;
    // 创意名称
    private String ideaNameStatus;

    private AdGroupStatusEnum adGroupStatus;

    private String adGroupNameStatus;


    // 地区
    private Prov prov;
    // 地区
    private City city;
    // 性别
    private String genderName;
    // 年龄
    private String ageName;
    // 意图词
    private String showWord;
    private String feedWord;

    // 效果指标
    private Long impression;

    private Long click;

    private BigDecimal cost;

    private BigDecimal ctr;

    private BigDecimal cpc;

    private BigDecimal cpm;
    private Integer weixinFollowSuccessConversions;
    private BigDecimal weixinFollowSuccessConversionsCost;
    private Integer feedOCPCConversionsDetail133;
    private BigDecimal feedOCPCConversionsDetail133Cost;

    // --- 嵌套对象定义 ---
    @Data
    public static class Prov {
        private String provinceId;

        private String provinceName;

        // Getters & Setters
    }
    @Data
    public static class City {
        @JSONField(name = "cityId")
        private String cityId;

        @JSONField(name = "cityName")
        private String cityName;

        // Getters & Setters
    }

    // --- 枚举定义 ---
    @Getter
    public enum CampaignStatusEnum {
        @JSONField(name = "0")
        NOT_DELETED(0),
        @JSONField(name = "1")
        DELETED(1);

        private final int code;
        CampaignStatusEnum(int code) { this.code = code; }
    }

    @Getter
    public enum AdGroupStatusEnum {
        @JSONField(name = "0")
        NOT_DELETED(0),
        @JSONField(name = "1")
        DELETED(1);

        private final int code;
        AdGroupStatusEnum(int code) { this.code = code; }
    }

    @Data
    public static class VideoInfo{
        private String videoThumbnail;
        private String videoURL;
    }

    // --- Getters & Setters（此处省略，实际需生成）---
}