using System.Text.Json.Serialization;
using System.Collections.Generic;
using Topsdk.Util;
using Topsdk.Top.Ability3197.Domain;

namespace Topsdk.Top.Ability3197.Request;

public class TaobaoTbkRtaConsumerMatchRequest : AbstractTopApiRequest
{

    /*
        mm_xxx_xxx_xxx的第3段数字
            */
    private long? adzoneId;


    /*
        活动列表
            */
    private IList<TaobaoTbkRtaConsumerMatchOfferList>? offerList;


    /*
        消费者对应的会员ID（会员ID或设备信息同时填时，优先使用会员ID）
            */
    private string? specialId;


    /*
        设备信息，加密后的值(IMEI,IDFA,OAID,MOBILE需要加密)，需用MD5加密，32位小写
            */
    private string? deviceValue;


    /*
        设备信息，入参类型(该模式下返回的结果为模糊匹配结果，和实际情况可能存在误差)：IMEI, 或者IDFA, 或者OAID, 或者MOBILE, 或者ALIPAY_ID
            */
    private string? deviceType;


    /*
        策略ID，与活动列表二选一传入
            */
    private IList<string>? strategyIdList;


    [JsonPropertyName("adzone_id")]
    public long? AdzoneId
    {
        get => adzoneId;
        set => this.adzoneId = value;
    }

    [JsonPropertyName("offer_list")]
    public IList<TaobaoTbkRtaConsumerMatchOfferList>? OfferList
    {
        get => offerList;
        set => this.offerList = value;
    }

    [JsonPropertyName("special_id")]
    public string? SpecialId
    {
        get => specialId;
        set => this.specialId = value;
    }

    [JsonPropertyName("device_value")]
    public string? DeviceValue
    {
        get => deviceValue;
        set => this.deviceValue = value;
    }

    [JsonPropertyName("device_type")]
    public string? DeviceType
    {
        get => deviceType;
        set => this.deviceType = value;
    }

    [JsonPropertyName("strategy_id_list")]
    public IList<string>? StrategyIdList
    {
        get => strategyIdList;
        set => this.strategyIdList = value;
    }



    public override IDictionary<string, string> ToRequestParam()
    {
        IDictionary<string, string> requestParam = new Dictionary<string, string>();
        if(this.adzoneId != null)
        {
            requestParam.Add("adzone_id",TopUtils.ConvertBasicType(this.adzoneId));
        }
        if(this.offerList != null)
        {
            requestParam.Add("offer_list",TopUtils.ConvertStructList(this.offerList));
        }
        if(this.specialId != null)
        {
            requestParam.Add("special_id",TopUtils.ConvertBasicType(this.specialId));
        }
        if(this.deviceValue != null)
        {
            requestParam.Add("device_value",TopUtils.ConvertBasicType(this.deviceValue));
        }
        if(this.deviceType != null)
        {
            requestParam.Add("device_type",TopUtils.ConvertBasicType(this.deviceType));
        }
        if(this.strategyIdList != null)
        {
            requestParam.Add("strategy_id_list",TopUtils.ConvertBasicList(this.strategyIdList));
        }
        return requestParam;
    }

    public override IDictionary<string, TopFileItem> ToFileParam()
    {
        IDictionary<string, TopFileItem> fileParam = new Dictionary<string, TopFileItem>();
        return fileParam;
    }

    public override string GetApiCode()
    {
        return "taobao.tbk.rta.consumer.match";
    }

}

