319 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			319 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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();
 | ||
|     }
 | ||
| 
 | ||
| 
 | ||
| } | 
