package com.fs.ad.dy.vo;

import lombok.*;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DyDataVo {
    // 回传的事件，例如”激活“、”付费“。详细列表见附录
    @NonNull
    private String event_type;
    // 广告主可以针对每一次转化，回传一个这次转化的价值，单位是 RMB。
    private Double event_weight;
    // 包含一些关键的上下文信息
    @NonNull
    private DyContext context;
    // 对于上报事件的附加属性，详情请见自定义属性的介绍。
    private String properties;
    // 时间戳
    private long timestamp;
    // 若上报有重复且需要去重，请填写该id，系统会根据该ID进行去重
    private String outer_event_id;


    @Data
    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    public static class DyContext{
        @NonNull
        private DyAd ad;
        // 传递一些归因的设备信息
        private DyDevice device;




        @Data
        @Builder
        @AllArgsConstructor
        @NoArgsConstructor
        public static class DyAd{
            // callback 字段有两个获取途径，对于监测链接归因的方式，
            // 需要从监测链接的__CALLBACK_PARAM__这个宏获取这个字段值；
            // 对于落地页或小程序归因的方式，需要从 url 中的 clickid 参数获取值。
            @NonNull
            private String callback;
            //这个参数可以帮助广告主标识是通过哪种渠道进行的归因，如果不传，就会默认为点击归因。
            //0：点击归因
            //1：展示归因
            //2：有效播放归因
            private Integer match_type;
        }

        @Data
        @Builder
        @AllArgsConstructor
        @NoArgsConstructor
        public static class DyDevice{
            private String platform;
            private String imei;
            private String idfa;
            private String oaid;
            @NonNull
            private String android_id;
            @NonNull
            private String idfv;
        }
    }
}
