<?php

namespace app\service;

use think\facade\Db as ThinkDb;
use app\model\ThirdUserAdvertiser;

//作废2025-2-13
use app\model\BpsAdsMerchantRelation;

//use Webman\RedisQueue\Redis;
use Webman\RedisQueue\Client as QueueClient;
use app\event\GoogleAdsCustomers;

class BpsAdAccountService
{


    /**
     * 批量获取全部Google广告账号数据
     * 作废2025-2-13
     */
//    public function getGoogleAdAccounts($options = [])
//    {
//        if (!empty($options)) {
//            $refreshToken = $options['refresh_token'];
//            // 获取符合条件的客户ID数组
//            $customers = ThirdUserAdvertiser::alias('tua')
//                ->join('bps.bps_third_user tu', 'tua.doc_ = tu.id')  // 连接 bps_third_user 表
//                ->where('tu.third_type', 'google')  // 筛选 third_type 为 google 的记录
//                ->where('tu.access_token', $refreshToken)  // 筛选 third_type 为 google 的记录
//                ->field('tua.advertiser_id as account_id,tua.google_login_customer_id as login_customer_id,tua.google_test_account as test_account,tua.google_manager as manager, tu.access_token as refresh_token')  // 获取 advertiser_id 字段
//                ->select();  // 执行查询
//        } else {
//            // 获取符合条件的客户ID数组
//            $customers = ThirdUserAdvertiser::alias('tua')
//                ->join('bps.bps_third_user tu', 'tua.doc_ = tu.id')  // 连接 bps_third_user 表
//                ->where('tu.third_type', 'google')  // 筛选 third_type 为 google 的记录
//                ->field('tua.advertiser_id as account_id,tua.google_login_customer_id as login_customer_id,tua.google_test_account as test_account,tua.google_manager as manager, tu.access_token as refresh_token')  // 获取 advertiser_id 字段
//                ->select();  // 执行查询
//        }
//    }

    /**
     * 批量获取全部Google广告账号数据
     *作废2025-2-13
     */
    public function getGoogleAdAccounts($options = [])
    {
        if (!empty($options)) {
            $merchant_id = $options['merchant_id'];
            $account_id = $options['account_id'] ?? null; // 从 $options 中获取 account_id,如果没有则默认为 null
            $query   = BpsAdsMerchantRelation::alias('bamr')
                ->where('bamr.platform', 2)
                ->where('bamr.merchant_id', $merchant_id)
                ->where('bamr.is_unbind', 'f')
                ->where('bamr.is_del', 'f');
                    // 如果传入了 account_id,则增加 account_id 的过滤条件
                if (!empty($account_id)) {
                    $query->where('bamr.account_id', $account_id);
                }
            // 选择需要的字段
            $customers = $query->field('bamr.account_id, bamr.refresh_token, bamr.ext_info->>\'login_customer_id\' as login_customer_id')
                ->select(); // 执行查询
        } else {
            // 获取符合条件的客户ID数组
            $customers = BpsAdsMerchantRelation::alias('bamr')
                ->where('bamr.platform', 2)
                ->where('bamr.is_unbind', 'f')
                ->where('bamr.is_del', 'f')
//                ->field('bamr.account_id, bamr.refresh_token')
                ->field('bamr.account_id, bamr.refresh_token, bamr.ext_info->>\'login_customer_id\' as login_customer_id') // 提取 ext_info 中的 login_customer_id
                ->select();  // 执行查询
        }


        // 如果没有找到符合条件的广告主,抛出异常
        if ($customers->isEmpty()) {
            return [];
//            throw new ApiException('No customers found for google third type');
        }

        // 转换为简单的数组(提取 advertiser_id)
        return $customers->toArray();

    }

    /**
     * 批量获取全部meta广告账号数据
     * 作废2025-2-13
     */
//    public function getMetaAdAccounts($options = [])
//    {
//        if (!empty($options)) {
//            $refreshToken = $options['refresh_token'];
//            // 获取符合条件的客户ID数组
//            $customers = ThirdUserAdvertiser::alias('tua')
//                ->join('bps.bps_third_user tu', 'tua.doc_ = tu.id')  // 连接 bps_third_user 表
//                ->where('tu.third_type', 'facebook')  // 筛选 third_type 为 google 的记录
//                ->where('tu.access_token', $refreshToken)  // 筛选 third_type 为 google 的记录
//                ->field('tua.advertiser_id as account_id, tu.access_token as refresh_token')  // 获取 advertiser_id 字段
//                ->select();  // 执行查询
//        } else {
//            // 获取符合条件的客户ID数组
//            $customers = ThirdUserAdvertiser::alias('tua')
//                ->join('bps.bps_third_user tu', 'tua.doc_ = tu.id')  // 连接 bps_third_user 表
//                ->where('tu.third_type', 'facebook')  // 筛选 third_type 为 google 的记录
//                ->field('tua.advertiser_id as account_id, tu.access_token as refresh_token')  // 获取 advertiser_id 字段
//                ->select();  // 执行查询
//        }
//
//
//        // 如果没有找到符合条件的广告主,抛出异常
//        if ($customers->isEmpty()) {
//            return [];
////            throw new ApiException('No customers found for google third type');
//        }
//
//        // 转换为简单的数组(提取 advertiser_id)
//        return $customers->toArray();
//
//    }

    /**
     * 批量获取全部meta广告账号数据
     *作废2025-2-13
     */
    public function getMetaAdAccounts($options = [])
    {
        if (!empty($options)) {
            $merchant_id = $options['merchant_id'];
            // 获取符合条件的客户ID数组
            $customers = BpsAdsMerchantRelation::alias('bamr')
                ->where('bamr.platform', 1)
                ->where('bamr.merchant_id', $merchant_id)
                ->field('bamr.account_id, bamr.access_token as refresh_token')
                ->select();  // 执行查询
        } else {
            // 获取符合条件的客户ID数组
            $customers = BpsAdsMerchantRelation::alias('bamr')
                ->where('bamr.platform', 1)
                ->where('bamr.is_unbind', 'f')
                ->where('bamr.is_del', 'f')
                ->field('bamr.account_id, bamr.access_token as refresh_token')
                ->select();  // 执行查询
        }


        // 如果没有找到符合条件的广告主,抛出异常
        if ($customers->isEmpty()) {
            return [];
//            throw new ApiException('No customers found for google third type');
        }

        // 转换为简单的数组(提取 advertiser_id)
        return $customers->toArray();

    }

    /**
     * 批量获取全部meta广告账号数据
     * 作废2025-2-13
     */
//    public function getTiktokAdAccounts($options = [])
//    {
//        if (!empty($options)) {
//            $refreshToken = $options['refresh_token'];
//            // 获取符合条件的客户ID数组
//            $customers = ThirdUserAdvertiser::alias('tua')
//                ->join('bps.bps_third_user tu', 'tua.doc_ = tu.id')  // 连接 bps_third_user 表
//                ->where('tu.third_type', 'tiktok')  // 筛选 third_type 为 google 的记录
//                ->where('tu.access_token', $refreshToken)  // 筛选 third_type 为 google 的记录
//                ->field('tua.advertiser_id as account_id, tu.access_token as refresh_token')  // 获取 advertiser_id 字段
//                ->select();  // 执行查询
//        } else {
//            // 获取符合条件的客户ID数组
//            $customers = ThirdUserAdvertiser::alias('tua')
//                ->join('bps.bps_third_user tu', 'tua.doc_ = tu.id')  // 连接 bps_third_user 表
//                ->where('tu.third_type', 'tiktok')  // 筛选 third_type 为 google 的记录
//                ->field('tua.advertiser_id as account_id, tu.access_token as refresh_token')  // 获取 advertiser_id 字段
//                ->select();  // 执行查询
//        }
//
//
//        // 如果没有找到符合条件的广告主,抛出异常
//        if ($customers->isEmpty()) {
//            return [];
////            throw new ApiException('No customers found for google third type');
//        }
//
//        // 转换为简单的数组(提取 advertiser_id)
//        return $customers->toArray();
//
//    }

    /**
     * 批量获取全部tiktok广告账号数据
     *作废2025-2-13
     */
    public function getTiktokAdAccounts($options = [])
    {
        if (!empty($options)) {
            // 获取符合条件的客户ID数组
            $merchant_id = $options['merchant_id'];
            $customers   = BpsAdsMerchantRelation::alias('bamr')
                ->where('bamr.platform', 3)
                ->where('bamr.merchant_id', $merchant_id)
                ->where('bamr.is_unbind', 'f')
                ->where('bamr.is_del', 'f')
                ->field('bamr.account_id, bamr.refresh_token')
                ->select();  // 执行查询
        } else {
            // 获取符合条件的客户ID数组
            $customers = BpsAdsMerchantRelation::alias('bamr')
                ->where('bamr.platform', 3)
                ->where('bamr.is_unbind', 'f')
                ->where('bamr.is_del', 'f')
                ->field('bamr.account_id, bamr.access_token as refresh_token')
                ->select();  // 执行查询
        }

        // 如果没有找到符合条件的广告主,抛出异常
        if ($customers->isEmpty()) {
            return [];
//            throw new ApiException('No customers found for google third type');
        }

        // 转换为简单的数组(提取 advertiser_id)
        return $customers->toArray();

    }

    /**
     * 批量获取全部广告账号数据
     * 作废2025-2-13
     */
//    public function getAllAdAccounts($options = [])
//    {
//        // 获取符合条件的客户ID数组
//        $customers = ThirdUserAdvertiser::alias('tua')
//            ->join('bps.bps_third_user tu', 'tua.doc_ = tu.id')  // 连接 bps_third_user 表
//            ->where('tu.merchant_id', $options['merchant_id'])  // 筛选 third_type 为 google 的记录
//            ->where('tu.access_token', '<>', '')  // 筛选 access_token 不为空的记录
//            ->field('tua.advertiser_id as account_id, tu.access_token as refresh_token')  // 获取 advertiser_id 字段
//            ->order('tu.third_type', 'asc')  // 获取 advertiser_id 字段
//            ->select();  // 执行查询
//
//
//        // 如果没有找到符合条件的广告主,抛出异常
//        if ($customers->isEmpty()) {
//            return [];
////            throw new ApiException('No customers found for google third type');
//        }
//
//        // 转换为简单的数组(提取 advertiser_id)
//        return $customers->toArray();
//
//    }

    /**
     * 批量获取全部广告账号数据
     * TODO 增加fields入参
     */
    public function getAllAdAccounts($options = [])
    {
        $merchant_id = $options['merchant_id'];
        $platform    = $options['platform'] ?? 0;
        if ($platform > 0) {
            // 获取某广告平台符合条件的客户ID数组
            $customers = BpsAdsMerchantRelation::alias('bamr')
                ->where('bamr.platform', $platform)
                ->where('bamr.merchant_id', $merchant_id)
                ->where('bamr.is_unbind', 'f')
                ->where('bamr.is_del', 'f')
                ->field('bamr.account_id, bamr.access_token as refresh_token')
                ->select();  // 执行查询
        } else {
            // 获取全部广告平台符合条件的客户ID数组
            $customers = BpsAdsMerchantRelation::alias('bamr')
                ->where('bamr.merchant_id', $merchant_id)
                ->where('bamr.is_unbind', 'f')
                ->where('bamr.is_del', 'f')
                ->field('bamr.account_id, bamr.access_token as refresh_token')
                ->select();  // 执行查询
        }
        // 如果没有找到符合条件的广告主,抛出异常
        if ($customers->isEmpty()) {
            return [];
//            throw new ApiException('No customers found for google third type');
        }

        // 转换为简单的数组(提取 advertiser_id)
        return $customers->toArray();

    }


    // 获取所有平台的第三方用户数据
    public function getAllThirdUsers($options = [])
    {
//        $userId = $options['uid'];  // 获取用户ID
        $merchant_id = $options['merchant_id'];  // 获取用户ID
        $customers   = BpsAdsMerchantRelation::alias('bamr')
            ->where('bamr.merchant_id', $merchant_id)
            ->where('bamr.is_unbind', 'f')
            ->where('bamr.is_del', 'f')
            ->field('bamr.account_id, bamr.access_token as refresh_token')
            ->select();  // 执行查询

        // 如果没有找到符合条件的用户,返回空数组
        if ($customers->isEmpty()) {
            return [];
        }
        //dump($customers->toArray());
        return $customers->toArray();
    }


}