package com.zanxiang.game.back.serve.pojo;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 腾讯 APP 回传 API
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class TencentAppReport implements Serializable {
    private static final long serialVersionUID = 1L;

    private List<Action> actions;

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class Action implements Serializable {
        private static final long serialVersionUID = 1L;
        /**
         * 选填，若上报可能有重复请填写该id，系统会根据该ID进行去重，详见FAQ
         */
        private String outer_action_id;
        /**
         * 转化发生时间（单位 秒）
         */
        private Long action_time;

        private UserId userr_id;

        private String action_type;

        private String trace;

        private Map<String, Object> action_param;
    }

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class UserId implements Serializable {
        private static final long serialVersionUID = 1L;
        /**
         * Android能获取到时必填，IMEI小写进行MD5编码，字段长度为32字节
         */
        private String hash_imei;
        /**
         * Android能获取到时必填，OAID原值进行MD5编码，字段长度为32字节
         */
        private String hash_oaid;
        /**
         * Android能获取到时必填，Android ID原值进行MD5编码，字段长度为32字节
         */
        private String hash_android_id;
        /**
         * iOS能获取到时必填，IDFA大写进行MD5编码，字段长度为32字节
         */
        private String hash_idfa;

        /**
         * 中国广告协会互联网广告标(CAA Advertising id)；iOS能获取到时必填，建议上报最新的 caid 版本
         */
        private String caid;
        /**
         * iOS能获取到时必填，上报 CAID 时 caid_version 为必填项，建议上报最新的 CAID 版本。
         * CAID版本对应关系：
         * ○腾讯版本1004 对应 中广协版本20211207
         * ○腾讯版本1005 对应 中广协版本20220111
         */
        private String caid_version;
        /**
         * IP地址原文，能获取到时强烈建议填写，支持IPV4和IPV6
         */
        private String ip;
        /**
         * User Agent原文，能获取到时强烈建议填写，支持IPV4和IPV6
         */
        private String user_agent;

    }
}
