webman_ad/app/service/BpsAdAccountService.php

271 lines
11 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\service;
use GuzzleHttp\Client;
use think\facade\Db as ThinkDb;
use app\model\ThirdUserAdvertiser;
use app\model\ThirdUser;
//use Webman\RedisQueue\Redis;
use Webman\RedisQueue\Client as QueueClient;
use app\event\GoogleAdsCustomers;
class BpsAdAccountService
{
public function getCustomerList($third_user_id = 0)
{
$tableName = 'bps_third_user_advertiser';
$tableName = getenv('DB_PG_SCHEMA') ? getenv('DB_PG_SCHEMA') . '.' . $tableName : 'bps' . $tableName;
$sql = "SELECT * FROM {$tableName} WHERE doc_ = :third_user_id";
$data = ['third_user_id' => $third_user_id];
return ThinkDb::query($sql, $data);
}
/**
* 批量获取全部Google广告账号数据
*
*/
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('CAST(tua.advertiser_id AS BIGINT) 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('CAST(tua.advertiser_id AS BIGINT) 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(); // 执行查询
}
// 如果没有找到符合条件的广告主,抛出异常
if ($customers->isEmpty()) {
return [];
// throw new ApiException('No customers found for google third type');
}
// 转换为简单的数组(提取 advertiser_id
return $customers->toArray();
}
/**
* 批量获取全部meta广告账号数据
*
*/
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('CAST(tua.advertiser_id AS BIGINT) 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('CAST(tua.advertiser_id AS BIGINT) 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广告账号数据
*
*/
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('CAST(tua.advertiser_id AS BIGINT) 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('CAST(tua.advertiser_id AS BIGINT) 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广告账号数据
*
*/
public function getAllAdAccounts($options = [])
{
// 获取符合条件的客户ID数组
$customers = ThirdUserAdvertiser::alias('tua')
->join('bps.bps_third_user tu', 'tua.doc_ = tu.id') // 连接 bps_third_user 表
->where('tu.user_id', $options['uid']) // 筛选 third_type 为 google 的记录
->field('CAST(tua.advertiser_id AS BIGINT) 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();
}
// 获取 Facebook 第三方用户数据
public function getMetaThirdUsers($options = [])
{
$uid = $options['uid'] ?? null;
if ($uid) {
// 根据 UID 获取符合条件的用户数据
$users = ThirdUserAdvertiser::alias('tua')
->join('bps.bps_third_user tu', 'tua.doc_ = tu.id') // 连接 bps_third_user 表
->where('tu.third_type', 'facebook') // 筛选 third_type 为 facebook 的记录
->where('tu.user_id', $uid) // 使用 UID 筛选用户
->field('tu.id, tu.access_token as refresh_token') // 获取相关字段
->select();
} else {
// 获取符合条件的用户数据(如果没有 UID
$users = ThirdUserAdvertiser::alias('tua')
->join('bps.bps_third_user tu', 'tua.doc_ = tu.id') // 连接 bps.bps_third_user 表
->where('tu.third_type', 'facebook') // 筛选 third_type 为 facebook 的记录
->field('tu.id, tu.access_token as refresh_token') // 获取相关字段
->select();
}
// 如果没有找到符合条件的用户,返回空数组
if ($users->isEmpty()) {
return [];
}
return $users->toArray();
}
// 获取 Google 第三方用户数据
public function getGoogleThirdUsers($options = [])
{
if (!empty($options)) {
$refreshToken = $options['refresh_token'];
// 获取符合条件的用户数据
$users = 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('tu.id, tu.access_token as refresh_token') // 获取相关字段
->select();
} else {
// 获取符合条件的用户数据
$users = 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('tu.id, tu.access_token as refresh_token') // 获取相关字段
->select();
}
// 如果没有找到符合条件的用户,返回空数组
if ($users->isEmpty()) {
return [];
}
return $users->toArray();
}
// 获取 TikTok 第三方用户数据
public function getTiktokThirdUsers($options = [])
{
if (!empty($options)) {
$refreshToken = $options['refresh_token'];
// 获取符合条件的用户数据
$users = ThirdUserAdvertiser::alias('tua')
->join('bps.bps_third_user tu', 'tua.doc_ = tu.id') // 连接 bps_third_user 表
->where('tu.third_type', 'tiktok') // 筛选 third_type 为 tiktok 的记录
->where('tu.access_token', $refreshToken) // 筛选 third_type 为 tiktok 的记录
->field('tu.id, tu.access_token as refresh_token') // 获取相关字段
->select();
} else {
// 获取符合条件的用户数据
$users = ThirdUserAdvertiser::alias('tua')
->join('bps.bps_third_user tu', 'tua.doc_ = tu.id') // 连接 bps_third_user 表
->where('tu.third_type', 'tiktok') // 筛选 third_type 为 tiktok 的记录
->field('tu.id, tu.access_token as refresh_token') // 获取相关字段
->select();
}
// 如果没有找到符合条件的用户,返回空数组
if ($users->isEmpty()) {
return [];
}
return $users->toArray();
}
// 获取所有平台的第三方用户数据
public function getAllThirdUsers($options = [])
{
$userId = $options['uid']; // 获取用户ID
// 获取符合条件的用户数据
$users = ThirdUserAdvertiser::alias('tua')
->join('bps.bps_third_user tu', 'tua.doc_ = tu.id') // 连接 bps_third_user 表
->where('tu.user_id', $userId) // 筛选 user_id 的记录
->field('tu.id, tu.access_token as refresh_token') // 获取相关字段
->select();
// 如果没有找到符合条件的用户,返回空数组
if ($users->isEmpty()) {
return [];
}
//dump($users->toArray());
return $users->toArray();
}
}