package com.moka.gdtauto.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.tencent.ads.model.v3.AgeStruct;
import com.tencent.ads.model.v3.ExcludedConvertedAudience;
import com.tencent.ads.model.v3.ExcludedDay;
import com.tencent.ads.model.v3.ExcludedDimension;
import com.tencent.ads.model.v3.GeoLocations;
import com.tencent.ads.model.v3.WriteTargetingSetting;


public class TargetConfUtil {

    
    private static final Map<Integer, WriteTargetingSetting> targetingSettingCache = new HashMap<>();

    static {
        targetingSettingCache.put(1, build1());
        targetingSettingCache.put(2, build2());
    }

    public static WriteTargetingSetting getTargetingSetting(Integer id) {
        return targetingSettingCache.get(id);
    }

    /**
     * 广告定向设置：
    地域：中国（常住地）
    年龄：大于等于42岁
    性别：男性
    排除已转化用户：同集团（自定义转化行为：指定页面曝光,加企业微信客服）（转化时间区间：1个月）
    排除人群：44106830，44107982，43712084，44241932
    不限：学历，婚恋育儿状态，用户消费能力，应用安装，设备品牌型号，操作系统版本，联网方式，移动运营商，定向人群，设备价格，微信再营销
     */

    private static WriteTargetingSetting build1() {
        WriteTargetingSetting targeting = new WriteTargetingSetting();

        // 地域定向
        GeoLocations geoLocation = new GeoLocations();
        List<String> locationTypes = new ArrayList<>();
        locationTypes.add("LIVE_IN"); // 居住地
        geoLocation.setLocationTypes(locationTypes);
        List<Long> regions = new ArrayList<>();
        regions.add(1156L); // 地域ID：1156（中国）
        geoLocation.setRegions(regions);
        targeting.setGeoLocation(geoLocation);

        // 性别定向
        List<String> gender = new ArrayList<>();
        gender.add("MALE"); // 男性
        targeting.setGender(gender);

        // 年龄定向
        List<AgeStruct> age = new ArrayList<>();
        AgeStruct ageRange = new AgeStruct();
        ageRange.setMin(42L);
        ageRange.setMax(66L);
        age.add(ageRange);
        targeting.setAge(age);

        // 指定页面曝光 =？ 品牌转化
        //排除已转化用户：同集团（自定义转化行为：指定页面曝光,加企业微信客服）（转化时间区间：1个月）
        // 排除已转化人群行为定向，排除已转化用户定向范围
        ExcludedConvertedAudience excludedConverted = new ExcludedConvertedAudience();
        // 排除已转化人群行为定向 EXCLUDED_DIMENSION_GROUP 集团
        excludedConverted.setExcludedDimension(ExcludedDimension.EXCLUDED_DIMENSION_GROUP);
        
        //转化行为
        List<String> conversionBehaviorList = new ArrayList<>();
        conversionBehaviorList.add("OPTIMIZATIONGOAL_BRAND_CONVERSION"); //品牌转化
        conversionBehaviorList.add("OPTIMIZATIONGOAL_PAGE_SCAN_CODE"); //加企业微信客服
        excludedConverted.setConversionBehaviorList(conversionBehaviorList);
        
        // 转化时间区间：1个月
        //排除天数 EXCLUDED_DAY_ONE_MONTH 1 个月
        excludedConverted.setExcludedDay(ExcludedDay.ONE_MONTH);
        // 排除已转化人群行为定向，排除已转化用户定向范围
        targeting.setExcludedConvertedAudience(excludedConverted);

        // 排除自定义人群
        List<Long> excludedCustomAudience = new ArrayList<>();
        excludedCustomAudience.add(44106830L);
        excludedCustomAudience.add(44107982L);
        excludedCustomAudience.add(43712084L);
        excludedCustomAudience.add(44241932L);
        targeting.setExcludedCustomAudience(excludedCustomAudience);

        return targeting;
    }

    private static WriteTargetingSetting build2() {
        WriteTargetingSetting targeting = new WriteTargetingSetting();

        // 地域定向
        GeoLocations geoLocation = new GeoLocations();
        List<String> locationTypes = new ArrayList<>();
        locationTypes.add("LIVE_IN"); // 居住地
        geoLocation.setLocationTypes(locationTypes);
        List<Long> regions = new ArrayList<>();
        regions.add(1156L); // 地域ID：1156（中国）
        geoLocation.setRegions(regions);
        targeting.setGeoLocation(geoLocation);

        // 性别定向
        List<String> gender = new ArrayList<>();
        gender.add("MALE"); // 男性
        targeting.setGender(gender);

        // 年龄定向
        List<AgeStruct> age = new ArrayList<>();
        AgeStruct ageRange = new AgeStruct();
        ageRange.setMin(50L);
        ageRange.setMax(66L);
        age.add(ageRange);
        targeting.setAge(age);

        // 指定页面曝光 =？ 品牌转化
        //排除已转化用户：同集团（自定义转化行为：指定页面曝光,加企业微信客服）（转化时间区间：1个月）
        // 排除已转化人群行为定向，排除已转化用户定向范围
        ExcludedConvertedAudience excludedConverted = new ExcludedConvertedAudience();
        // 排除已转化人群行为定向 EXCLUDED_DIMENSION_GROUP 集团
        excludedConverted.setExcludedDimension(ExcludedDimension.EXCLUDED_DIMENSION_GROUP);
        
        //转化行为
        List<String> conversionBehaviorList = new ArrayList<>();
        conversionBehaviorList.add("OPTIMIZATIONGOAL_BRAND_CONVERSION"); //品牌转化
        conversionBehaviorList.add("OPTIMIZATIONGOAL_PAGE_SCAN_CODE"); //加企业微信客服
        excludedConverted.setConversionBehaviorList(conversionBehaviorList);
        
        // 转化时间区间：1个月
        //排除天数 EXCLUDED_DAY_ONE_MONTH 1 个月
        excludedConverted.setExcludedDay(ExcludedDay.ONE_MONTH);
        // 排除已转化人群行为定向，排除已转化用户定向范围
        targeting.setExcludedConvertedAudience(excludedConverted);

        // 排除自定义人群
        List<Long> excludedCustomAudience = new ArrayList<>();
        excludedCustomAudience.add(44106830L);
        excludedCustomAudience.add(44107982L);
        excludedCustomAudience.add(43712084L);
        excludedCustomAudience.add(44241932L);
        targeting.setExcludedCustomAudience(excludedCustomAudience);

        return targeting;
    }
}
