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

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDate;

/**
 * @author : lingfeng
 * @time : 2025-01-10
 * @description : 头条游戏 小游戏 监测链接回传数据(文档：https://open.oceanengine.com/labels/7/docs/1696710655781900)
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName(GameOceanengineCallback.TABLE_NAME)
public class GameOceanengineCallback implements Serializable {

    private static final long serialVersionUID = 1L;
    public static final String TABLE_NAME = "t_game_oceanengine_callback";

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    private String agentKey;

    private Long gameId;

    /**
     * 时间发生日期
     */
    private LocalDate day;

    /**
     * 巨量广告体验版中特有的宏参，代表巨量广告体验版的广告ID, ex: ID: 7074140945750507528, 宏: PROMOTION_ID
     */
    private Long promotionId;

    /**
     * 巨量广告体验版中特有的宏参，代表巨量广告体验版的项目ID, ex: ID: 7074140945750507528, 宏: PROJECT_ID
     */
    private Long projectId;

    /**
     * 针对巨量广告体验版，图片素材宏参数（下发原始素材id）, 宏: MID1
     */
    private String mid1;

    /**
     * 针对巨量广告体验版，标题素材宏参数（下发原始素材id）, 宏: MID2
     */
    private String mid2;

    /**
     * 针对巨量广告体验版，视频素材宏参数（下发原始素材id）, 宏: MID3
     */
    private String mid3;

    /**
     * 针对巨量广告体验版，搭配试玩素材宏参数（下发原始素材id）, 宏: MID4
     */
    private String mid4;

    /**
     * 针对巨量广告体验版，落地页素材宏参数（下发原始素材id）, 宏: MID5
     */
    private String mid5;

    /**
     * 针对巨量广告体验版，安卓下载详情页素材宏参数（下发原始素材id）, 宏: MID6
     */
    private String mid6;

    /**
     * 广告计划id, ex: 1645988237525045, 宏: AID
     */
    private Long aid;

    /**
     * 广告创意 id, ex: 1650703686054530, 宏: CID
     */
    private Long cid;

    /**
     * 广告组 id, ex: 1651688272934434, 宏: CAMPAIGN_ID
     */
    private Long campaignId;

    /**
     * 创意样式, 2=小图模式、3=大图模式、4=组图模式、5=视频, 宏: CTYPE
     */
    private Integer ctype;

    /**
     * 广告主id, ex: 1631857582073864, 宏: ADVERTISER_ID
     */
    private Long advertiserId;

    /**
     * 广告投放位置, 今日头条：1-10000，80000-110001、西瓜视频：10001-10099、火山小视频：30001-30099、抖音：40001-40099、番茄小说：26001-26099、穿山甲开屏广告：800000000、穿山甲网盟非开屏广告：900000000、通投广告位：33013、搜索：38016, 宏: CSITE
     */
    private Integer csite;

    /**
     * 转化id, ex: 1681681272671401, 宏: CONVERT_ID
     */
    private Long convertId;

    /**
     * 请求下发的id, ex: 20191202180607010026077068090BA60A, 宏: REQUEST_ID
     */
    private String requestId;

    /**
     * 请求下发的id&创意id的md5,16位, ex: b2f97be5b363764d, 宏: TRACK_ID
     */
    private String trackId;

    /**
     * 这次请求的语言, ex: zh, 宏: SL
     */
    private String sl;

    /**
     * 安卓的设备 ID 的 md5 摘要，32位, 假设原始的 imei 是 868823031739689我们最终发送的是 imei 的 md5 摘要：0c2bd03c39f19845bf54ea0abafae70e，会存在部分无法获取imei的情况，则imei会回传空字符串或者0的md5摘要, 宏: IMEI
     */
    private String imei;

    /**
     * IOS 6+的设备id字段，32位, ex: 4FCFEFA1-096D-4176-B352-1870ED6DB777注意，一些例外00000000-0000-0000-0000-000000000000, 如果用户关闭里读取idfa的权限，会导致idfa全部是0, 宏: IDFA
     */
    private String idfa;

    /**
     * IOS 6+的设备id的md5摘要，32位, ex: 09c593c62a6074ae5f859e97a222c0e8，注意，用户关闭读取idfa权限，0值也会进行MD5加密, 宏: IDFA_MD5
     */
    private String idfaMd5;

    /**
     * 安卓id原值的md5，32位, ex: androidId的原值是： 7b5ca2d57178d2f1我们进行md5摘要，最终结果是：873541edf36da9170af47d5b69e82193, 宏: ANDROIDID
     */
    private String androidid;

    /**
     * Android Q及更高版本的设备号，32位, ex: 97e7ef3f-e5f2-d0b8-ccfc-f79bbeaf4841注意，一些例外如果无法获取oaid，oaid会传空字符串, 宏: OAID
     */
    private String oaid;

    /**
     * Android Q及更高版本的设备号的md5摘要，32位, ex: 87f8274c36eb73fabcbf143a10eca6a4，会存在部分无法获取oaid的情况，则该字段会回传空字符串, 宏: OAID_MD5
     */
    private String oaidMd5;

    /**
     * 操作系统平台, 安卓：0、IOS：1、其它：3, 宏: OS
     */
    private Integer os;

    /**
     * 移动设备mac地址,转换成大写字母,去掉“:”，并且取md5摘要后的结果, 假设原始的mac地址是34:d7:12:9b:3a:89去掉“：”后变成 34d7129b3a89变成大写字母34D7129B3A89取MD5摘要，最后变成如下结果:df97bc5021e14256e141b2f036df5a3c, 宏: MAC
     */
    private String mac;

    /**
     * 移动设备 mac 地址,转换成大写字母,并且取md5摘要后的结果，32位, 假设原始的mac地址是 34:d7:12:9b:3a:89变成大写字母： 34:D7:12:9B:3A:89进行MD5摘要，最后变成如下结果：4d0433eb614f5d5ad409a65395426cbe, 宏: MAC1
     */
    private String mac1;

    /**
     * 优先使用上报请求的对端 IP 地址。如果该IP为 IPv6, 则使用客户端获取的 client_ipv4 地址, ex: 61.168.146.195或为空, 宏: IPV4
     */
    private String ipv4;

    /**
     * 优先使用上报请求的对端 IP 地址。如果该IP为 IPv4, 则使用客户端获取的 client_ipv6 地址, ex: 240e:498:1c90:9d00:5513:b9c9:650a:d9d2或为空, 宏: IPV6
     */
    private String ipv6;

    /**
     * [下发逻辑修改 - 0727生效]正常情况下，全量下发IPv4地址。极少数情况如IPV4无法取数，则下发 IPv6, ex: 61.158.146.195或240e:398:1c90:9d00:5513:b9c9:650a:d9d2, 宏: IP
     */
    private String ip;

    /**
     * 用户代理(User Agent)，一个特殊字符串头，使得服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。经过url encode, ex: News+7.4.5+rv%3A7.4.5.23%5C%28iPhone%3B+iOS+12.4.1%3B+zh_CN%5C%29Cronet, 宏: UA
     */
    private String ua;

    /**
     * 位置信息，包含三部分:latitude（纬度），longitude（经度）以及precise（确切信息,精度）十进制保留1位小数，西经南纬保留负数，用字母 x 分 割纬度与精度 (先纬后经，最后精度）, ex: 35.7x122.4x100.0, 宏: GEO
     */
    private String geo;

    /**
     * 客户端发生广告点击事件的时间，以毫秒为单位时间戳, ex: 1575194434000, 宏: TS
     */
    private Long ts;

    /**
     * 一些跟广告信息相关的回调参数，内容是一个加密字符串，在调用事件回传接口的时候会用到, ex: EJiw267wvfQCGKf2g74ZIPD89-vIATAMOAFCIjIwMTkxMTI3MTQxMTEzMDEwMDI2MDc3MjE1MTUwNTczNTBIAQ==, 宏: CALLBACK_PARAM
     */
    private String callbackParam;

    /**
     * 直接把调用事件回传接口的url生成出来，广告主可以直接使用, ex: https://ad.toutiao.com/track/activate/?callback=EJiw267wvfQCGKf2g74ZIPD89-vIATAMOAFCIjIwMTkxMTI3MTQxMTEzMDEwMDI2MDc3MjE1MTUwNTczNTBIAQ==&os=0&muid=db94e6a60a9c6661e3e03a7d301c25b6, 宏: CALLBACK_URL
     */
    private String callbackUrl;

    /**
     * 手机型号, 包含多种格式, ex: iPhone12,2 (urlencode之后为iPhone12%2c2)，iPhone X (urlencode之后为iPhone+X)，SM-A750GN (urlencode之后为SM-A750GN), 宏: MODEL
     */
    private String model;

    /**
     * 对外广告位编码, ex: 2045891290, 宏: UNION_SITE
     */
    private String unionSite;

    /**
     * 中国广告协会互联网广告标识，包含最新两个版本的CAID和版本号，url encode之后的json字符串。(【CAID】和【CAID1、CAID2】的信息一致，使用一种即可；建议使用【CAID】，参数中包含多个信息，后续维护成本低）, ex: %5B%7B%22version%22%3A%2220220111%22%2C%22caid%22%3A%22912ec803b2ce49e4a541068d495ab570%22%7D%2C%7B%22version%22%3A%2220211207%22%2C%22caid%22%3A%22e332a76c29654fcb7f6e6b31ced090c7%22%7D%5D, 宏: CAID
     */
    private String caid;

    /**
     * 商品id，仅支持站内（不支持穿山甲）, 宏: PRODUCTID
     */
    private String productid;

    /**
     * 商品id，同时支持站内和穿山甲, 宏: OUTERID
     */
    private String outerid;
}
