781 lines
34 KiB
PHP
781 lines
34 KiB
PHP
<?php
|
|
|
|
namespace app\controller;
|
|
|
|
use app\service\GoogleAdsAdService;
|
|
use app\service\GoogleAdsCampaignService;
|
|
use app\service\GoogleAdsGroupService;
|
|
|
|
//use app\service\GoogleAdsReportService;
|
|
use app\service\AdsInsightService;
|
|
use app\service\GoogleOAuthService;
|
|
use app\service\BpsAdAccountService;
|
|
use DI\Annotation\Inject;
|
|
use support\Request;
|
|
use support\Response;
|
|
|
|
|
|
class BpsAdController
|
|
{
|
|
|
|
/**
|
|
* @Inject
|
|
* @var AdsInsightService
|
|
*/
|
|
private $adsInsightService;
|
|
|
|
/**
|
|
* @Inject
|
|
* @var GoogleAdsGroupService
|
|
*/
|
|
private $googleAdsGroupService;
|
|
|
|
/**
|
|
* @Inject
|
|
* @var GoogleAdsAdService
|
|
*/
|
|
private $googleAdsAdService;
|
|
|
|
/**
|
|
* @Inject
|
|
* @var GoogleAdsCampaignService
|
|
*/
|
|
private $googleAdsCampaignService;
|
|
|
|
/**
|
|
* @Inject
|
|
* @var GoogleOAuthService
|
|
*/
|
|
private $googleOAuthService;
|
|
/**
|
|
* @Inject
|
|
* @var BpsAdAccountService
|
|
*/
|
|
private $bpsAdAccountService;
|
|
|
|
/*
|
|
* 返回标签页角标数字接口
|
|
*
|
|
*/
|
|
public function listAdBadges(Request $request)
|
|
{
|
|
$options = $request->all();
|
|
$options['jwtClaims'] = $request->jwtClaims;
|
|
|
|
// 获取请求参数
|
|
// $startDate = $options['conditions']['startDate'] ?? null; // 开始日期
|
|
// $endDate = $options['conditions']['endDate'] ?? null; // 结束日期
|
|
$accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]);
|
|
if (empty($accounts)) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accountIds = array_unique(array_column($accounts, 'account_id'));
|
|
$endDateLastWeek = (int)date('Ymd');
|
|
$startDateLastWeek = (int)date('Ymd', strtotime('-6 days'));
|
|
// dump($startDateLastWeek, $endDateLastWeek);
|
|
// if ($startDateLastWeek === $startDate && $endDateLastWeek === $endDate) {
|
|
$ad_data_count = $this->adsInsightService::getAdCountData($accountIds, $startDateLastWeek, $endDateLastWeek);
|
|
// } else {
|
|
// $ad_data_count = [];
|
|
// }
|
|
// 返回结果
|
|
return $this->successResponse($ad_data_count, $request);
|
|
}
|
|
|
|
public function listThirdUsers(Request $request)
|
|
{
|
|
$options = $request->all();
|
|
$options['jwtClaims'] = $request->jwtClaims;
|
|
|
|
// 获取请求参数
|
|
$page = $options['pageNo'] ?? 1; // 页码
|
|
$pageSize = $options['pageSize'] ?? 1000; // 每页数量
|
|
$keyword = $options['conditions']['keyword'] ?? ''; // 关键字搜索
|
|
$platformType = $options['conditions']['platformType'] ?? 0; // 平台类型
|
|
// $status = $options['conditions']['status'] ?? 0; // 平台类型
|
|
$startDate = $options['conditions']['startDate'] ?? null; // 开始日期
|
|
$endDate = $options['conditions']['endDate'] ?? null; // 结束日期
|
|
// $dateRange = 'Last Week'; // 默认日期范围
|
|
|
|
// 根据 platformType 获取广告账户
|
|
if ($platformType === 1) {
|
|
if (!$request->refresh_token_facebook) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getMetaAdAccounts(['refresh_token' => $request->refresh_token_facebook]);
|
|
} elseif ($platformType === 2) {
|
|
if (!$request->refresh_token_google) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getGoogleAdAccounts(['refresh_token' => $request->refresh_token_google]);
|
|
} elseif ($platformType === 3) {
|
|
if (!$request->refresh_token_tiktok) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getTiktokAdAccounts(['refresh_token' => $request->refresh_token_tiktok]);
|
|
} else {
|
|
// TODO: 匹配jwt的商户id还是登录用户id
|
|
$accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]);
|
|
}
|
|
|
|
if (empty($accounts)) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
// dump($accounts);
|
|
// 获取客户ID数组
|
|
$accountIds = array_unique(array_column($accounts, 'account_id'));
|
|
|
|
|
|
// 调用 Service 层查询广告列表
|
|
$result = $this->adsInsightService::getAccountList(
|
|
$platformType, // 平台类型
|
|
$accountIds, // 客户 ID 数组
|
|
$page, // 页码
|
|
$pageSize, // 每页数量
|
|
$keyword, // 关键字
|
|
$startDate, // 开始日期
|
|
$endDate, // 结束日期
|
|
);
|
|
|
|
|
|
// 返回结果
|
|
return $this->successResponse($result, $request);
|
|
}
|
|
|
|
//旧原型方法 作废 2025-1-14
|
|
public function listThirdUsers2222(Request $request)
|
|
{
|
|
$options = $request->all();
|
|
$options['jwtClaims'] = $request->jwtClaims;
|
|
|
|
// 获取请求参数
|
|
$page = $options['pageNo'] ?? 1; // 页码
|
|
$pageSize = $options['pageSize'] ?? 1000; // 每页数量
|
|
$keyword = $options['conditions']['keyword'] ?? ''; // 关键字搜索
|
|
$platformType = $options['conditions']['platformType'] ?? 0; // 平台类型
|
|
$startDate = $options['conditions']['startDate'] ?? null; // 开始日期
|
|
$endDate = $options['conditions']['endDate'] ?? null; // 结束日期
|
|
// dump($options);
|
|
// 根据 platformType 获取第三方用户数据
|
|
if ($platformType === 1) {
|
|
// 获取 Facebook 第三方用户数据
|
|
$users = $this->bpsAdAccountService->getMetaThirdUsers(['uid' => $options['jwtClaims']['uid']]);
|
|
} elseif ($platformType === 2) {
|
|
// 获取 Google 第三方用户数据
|
|
$users = $this->bpsAdAccountService->getGoogleThirdUsers(['uid' => $options['jwtClaims']['uid']]);
|
|
} elseif ($platformType === 3) {
|
|
// 获取 TikTok 第三方用户数据
|
|
$users = $this->bpsAdAccountService->getTiktokThirdUsers(['uid' => $options['jwtClaims']['uid']]);
|
|
} else {
|
|
// 根据 JWT claims 获取所有平台的第三方用户
|
|
$users = $this->bpsAdAccountService->getAllThirdUsers(['uid' => $options['jwtClaims']['uid']]);
|
|
}
|
|
|
|
if (empty($users)) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
|
|
// 获取客户 ID 数组,并去重
|
|
$userIds = array_unique(array_column($users, 'id'));
|
|
// dump($userIds);
|
|
|
|
// 调用 Service 层查询第三方用户数据列表
|
|
$result = $this->adsInsightService::getThirdUserList(
|
|
$platformType, // 平台类型
|
|
$userIds, // 第三方用户 ID 数组
|
|
$page, // 页码
|
|
$pageSize, // 每页数量
|
|
$keyword, // 关键字
|
|
$startDate, // 开始日期
|
|
$endDate // 结束日期
|
|
);
|
|
|
|
// 返回结果
|
|
return $this->successResponse($result, $request);
|
|
}
|
|
|
|
|
|
public function listAds(Request $request)
|
|
{
|
|
$options = $request->all();
|
|
$options['jwtClaims'] = $request->jwtClaims;
|
|
|
|
// 获取请求参数
|
|
$page = $options['pageNo'] ?? 1; // 页码
|
|
$pageSize = $options['pageSize'] ?? 1000; // 每页数量
|
|
$keyword = $options['conditions']['keyword'] ?? ''; // 关键字搜索
|
|
$platformType = $options['conditions']['platformType'] ?? 0; // 平台类型
|
|
$status = $options['conditions']['status'] ?? 0; // 平台类型
|
|
$startDate = $options['conditions']['startDate'] ?? null; // 开始日期
|
|
$endDate = $options['conditions']['endDate'] ?? null; // 结束日期
|
|
// $dateRange = 'Last Week'; // 默认日期范围
|
|
|
|
// 根据 platformType 获取广告账户
|
|
if ($platformType === 1) {
|
|
if (!$request->refresh_token_facebook) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getMetaAdAccounts(['refresh_token' => $request->refresh_token_facebook]);
|
|
} elseif ($platformType === 2) {
|
|
if (!$request->refresh_token_google) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getGoogleAdAccounts(['refresh_token' => $request->refresh_token_google]);
|
|
} elseif ($platformType === 3) {
|
|
if (!$request->refresh_token_tiktok) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getTiktokAdAccounts(['refresh_token' => $request->refresh_token_tiktok]);
|
|
} else {
|
|
// TODO: 匹配jwt的商户id还是登录用户id
|
|
$accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]);
|
|
}
|
|
|
|
if (empty($accounts)) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
|
|
// 获取客户ID数组
|
|
$accountIds = array_unique(array_column($accounts, 'account_id'));
|
|
|
|
// 调用 Service 层查询广告列表
|
|
$result = $this->adsInsightService::getAdList(
|
|
$platformType, // 平台类型
|
|
$accountIds, // 客户 ID 数组
|
|
$page, // 页码
|
|
$pageSize, // 每页数量
|
|
$keyword, // 关键字
|
|
$startDate, // 开始日期
|
|
$endDate, // 结束日期
|
|
$status
|
|
);
|
|
|
|
// 返回结果
|
|
return $this->successResponse($result, $request);
|
|
}
|
|
|
|
public function listCampaigns(Request $request)
|
|
{
|
|
$options = $request->all();
|
|
$options['jwtClaims'] = $request->jwtClaims;
|
|
|
|
// 获取请求参数
|
|
$page = $options['pageNo'] ?? 1; // 页码
|
|
$pageSize = $options['pageSize'] ?? 1000; // 每页数量
|
|
$keyword = $options['conditions']['keyword'] ?? ''; // 关键字搜索
|
|
$platformType = $options['conditions']['platformType'] ?? 0; // 关键字搜索
|
|
$status = $options['conditions']['status'] ?? 0; // 平台类型
|
|
$startDate = $options['conditions']['startDate'] ?? null; // 开始日期
|
|
$endDate = $options['conditions']['endDate'] ?? null; // 结束日期
|
|
// $dateRange = 'Last Week'; // 默认日期范围
|
|
// 根据 platformType 获取广告账户
|
|
if ($platformType === 1) {
|
|
if (!$request->refresh_token_facebook) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getMetaAdAccounts(['refresh_token' => $request->refresh_token_facebook]);
|
|
} elseif ($platformType === 2) {
|
|
if (!$request->refresh_token_google) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getGoogleAdAccounts(['refresh_token' => $request->refresh_token_google]);
|
|
} elseif ($platformType === 3) {
|
|
if (!$request->refresh_token_tiktok) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getTiktokAdAccounts(['refresh_token' => $request->refresh_token_tiktok]);
|
|
} else {
|
|
// TODO: 匹配jwt的商户id还是登录用户id
|
|
$accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]);
|
|
}
|
|
|
|
if (empty($accounts)) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
|
|
// 获取客户ID数组
|
|
$accountIds = array_column($accounts, 'account_id');
|
|
// 调用 Service 层查询
|
|
$result = $this->adsInsightService::getCampaignList(
|
|
$platformType,
|
|
$accountIds, // 客户 ID 数组
|
|
$page, // 页码
|
|
$pageSize, // 每页数量
|
|
$keyword, // 关键字
|
|
$startDate, // 开始日期
|
|
$endDate, // 结束日期
|
|
$status
|
|
);
|
|
return $this->successResponse($result, $request);
|
|
// return $this->errorResponse(300,'授权失败');
|
|
}
|
|
|
|
public function exportCampaignsToExcel(Request $request)
|
|
{
|
|
$options = $request->all();
|
|
$options['jwtClaims'] = $request->jwtClaims;
|
|
|
|
// 获取请求参数
|
|
$page = $options['pageNo'] ?? 1; // 页码
|
|
$pageSize = 10000; // 每页数量
|
|
$keyword = $options['conditions']['keyword'] ?? ''; // 关键字搜索
|
|
$platformType = $options['conditions']['platformType'] ?? 0; // 关键字搜索
|
|
$status = $options['conditions']['status'] ?? 0; // 平台类型
|
|
$startDate = $options['conditions']['startDate'] ?? null; // 开始日期
|
|
$endDate = $options['conditions']['endDate'] ?? null; // 结束日期
|
|
// $dateRange = 'Last Week'; // 默认日期范围
|
|
// 根据 platformType 获取广告账户
|
|
if ($platformType === 1) {
|
|
if (!$request->refresh_token_facebook) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getMetaAdAccounts(['refresh_token' => $request->refresh_token_facebook]);
|
|
} elseif ($platformType === 2) {
|
|
if (!$request->refresh_token_google) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getGoogleAdAccounts(['refresh_token' => $request->refresh_token_google]);
|
|
} elseif ($platformType === 3) {
|
|
if (!$request->refresh_token_tiktok) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getTiktokAdAccounts(['refresh_token' => $request->refresh_token_tiktok]);
|
|
} else {
|
|
// TODO: 匹配jwt的商户id还是登录用户id
|
|
$accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]);
|
|
}
|
|
|
|
if (empty($accounts)) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
|
|
// 获取客户ID数组
|
|
$accountIds = array_column($accounts, 'account_id');
|
|
// 调用 Service 层查询
|
|
return $this->adsInsightService::exportCampaignsToExcel(
|
|
$platformType,
|
|
$accountIds, // 客户 ID 数组
|
|
$page, // 页码
|
|
$pageSize, // 每页数量
|
|
$keyword, // 关键字
|
|
$startDate, // 开始日期
|
|
$endDate, // 结束日期
|
|
$status
|
|
);
|
|
}
|
|
|
|
public function exportAccountsToExcel(Request $request)
|
|
{
|
|
$options = $request->all();
|
|
$options['jwtClaims'] = $request->jwtClaims;
|
|
|
|
// 获取请求参数
|
|
$page = $options['pageNo'] ?? 1; // 页码
|
|
$pageSize = 10000; // 每页数量
|
|
$keyword = $options['conditions']['keyword'] ?? ''; // 关键字搜索
|
|
$platformType = $options['conditions']['platformType'] ?? 0; // 关键字搜索
|
|
// $status = $options['conditions']['status'] ?? 0; // 平台类型
|
|
$startDate = $options['conditions']['startDate'] ?? null; // 开始日期
|
|
$endDate = $options['conditions']['endDate'] ?? null; // 结束日期
|
|
// $dateRange = 'Last Week'; // 默认日期范围
|
|
// 根据 platformType 获取广告账户
|
|
if ($platformType === 1) {
|
|
if (!$request->refresh_token_facebook) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getMetaAdAccounts(['refresh_token' => $request->refresh_token_facebook]);
|
|
} elseif ($platformType === 2) {
|
|
if (!$request->refresh_token_google) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getGoogleAdAccounts(['refresh_token' => $request->refresh_token_google]);
|
|
} elseif ($platformType === 3) {
|
|
if (!$request->refresh_token_tiktok) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getTiktokAdAccounts(['refresh_token' => $request->refresh_token_tiktok]);
|
|
} else {
|
|
// TODO: 匹配jwt的商户id还是登录用户id
|
|
$accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]);
|
|
}
|
|
|
|
if (empty($accounts)) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
|
|
// 获取客户ID数组
|
|
$accountIds = array_column($accounts, 'account_id');
|
|
// 调用 Service 层查询
|
|
return $this->adsInsightService::exportAccountsToExcel(
|
|
$platformType,
|
|
$accountIds, // 客户 ID 数组
|
|
$page, // 页码
|
|
$pageSize, // 每页数量
|
|
$keyword, // 关键字
|
|
$startDate, // 开始日期
|
|
$endDate // 结束日期
|
|
);
|
|
}
|
|
|
|
public function exportCreativesToExcel(Request $request)
|
|
{
|
|
$options = $request->all();
|
|
$options['jwtClaims'] = $request->jwtClaims;
|
|
|
|
// 获取请求参数
|
|
$page = $options['pageNo'] ?? 1; // 页码
|
|
$pageSize = 10000; // 每页数量
|
|
$keyword = $options['conditions']['keyword'] ?? ''; // 关键字搜索
|
|
$platformType = $options['conditions']['platformType'] ?? 0; // 关键字搜索
|
|
// $status = $options['conditions']['status'] ?? 0; // 平台类型
|
|
$startDate = $options['conditions']['startDate'] ?? null; // 开始日期
|
|
$endDate = $options['conditions']['endDate'] ?? null; // 结束日期
|
|
// $dateRange = 'Last Week'; // 默认日期范围
|
|
// 根据 platformType 获取广告账户
|
|
if ($platformType === 1) {
|
|
if (!$request->refresh_token_facebook) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getMetaAdAccounts(['refresh_token' => $request->refresh_token_facebook]);
|
|
} elseif ($platformType === 2) {
|
|
if (!$request->refresh_token_google) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getGoogleAdAccounts(['refresh_token' => $request->refresh_token_google]);
|
|
} elseif ($platformType === 3) {
|
|
if (!$request->refresh_token_tiktok) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getTiktokAdAccounts(['refresh_token' => $request->refresh_token_tiktok]);
|
|
} else {
|
|
// TODO: 匹配jwt的商户id还是登录用户id
|
|
$accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]);
|
|
}
|
|
|
|
if (empty($accounts)) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
|
|
// 获取客户ID数组
|
|
$accountIds = array_column($accounts, 'account_id');
|
|
// 调用 Service 层查询
|
|
return $this->adsInsightService::exportCreativesToExcel(
|
|
$platformType,
|
|
$accountIds, // 客户 ID 数组
|
|
$page, // 页码
|
|
$pageSize, // 每页数量
|
|
$keyword, // 关键字
|
|
$startDate, // 开始日期
|
|
$endDate // 结束日期
|
|
);
|
|
}
|
|
|
|
public function exportAdsetsToExcel(Request $request)
|
|
{
|
|
$options = $request->all();
|
|
$options['jwtClaims'] = $request->jwtClaims;
|
|
|
|
// 获取请求参数
|
|
$page = $options['pageNo'] ?? 1; // 页码
|
|
$pageSize = 10000; // 每页数量
|
|
$keyword = $options['conditions']['keyword'] ?? ''; // 关键字搜索
|
|
$platformType = $options['conditions']['platformType'] ?? 0; // 关键字搜索
|
|
$status = $options['conditions']['status'] ?? 0; // 平台类型
|
|
$startDate = $options['conditions']['startDate'] ?? null; // 开始日期
|
|
$endDate = $options['conditions']['endDate'] ?? null; // 结束日期
|
|
// $dateRange = 'Last Week'; // 默认日期范围
|
|
// 根据 platformType 获取广告账户
|
|
if ($platformType === 1) {
|
|
if (!$request->refresh_token_facebook) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getMetaAdAccounts(['refresh_token' => $request->refresh_token_facebook]);
|
|
} elseif ($platformType === 2) {
|
|
if (!$request->refresh_token_google) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getGoogleAdAccounts(['refresh_token' => $request->refresh_token_google]);
|
|
} elseif ($platformType === 3) {
|
|
if (!$request->refresh_token_tiktok) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getTiktokAdAccounts(['refresh_token' => $request->refresh_token_tiktok]);
|
|
} else {
|
|
// TODO: 匹配jwt的商户id还是登录用户id
|
|
$accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]);
|
|
}
|
|
|
|
if (empty($accounts)) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
|
|
// 获取客户ID数组
|
|
$accountIds = array_column($accounts, 'account_id');
|
|
// 调用 Service 层查询
|
|
return $this->adsInsightService::exportAdsetsToExcel(
|
|
$platformType,
|
|
$accountIds, // 客户 ID 数组
|
|
$page, // 页码
|
|
$pageSize, // 每页数量
|
|
$keyword, // 关键字
|
|
$startDate, // 开始日期
|
|
$endDate, // 结束日期
|
|
$status
|
|
);
|
|
}
|
|
public function exportAdsToExcel(Request $request)
|
|
{
|
|
$options = $request->all();
|
|
$options['jwtClaims'] = $request->jwtClaims;
|
|
|
|
// 获取请求参数
|
|
$page = $options['pageNo'] ?? 1; // 页码
|
|
$pageSize = 10000; // 每页数量
|
|
$keyword = $options['conditions']['keyword'] ?? ''; // 关键字搜索
|
|
$platformType = $options['conditions']['platformType'] ?? 0; // 关键字搜索
|
|
$status = $options['conditions']['status'] ?? 0; // 平台类型
|
|
$startDate = $options['conditions']['startDate'] ?? null; // 开始日期
|
|
$endDate = $options['conditions']['endDate'] ?? null; // 结束日期
|
|
// $dateRange = 'Last Week'; // 默认日期范围
|
|
// 根据 platformType 获取广告账户
|
|
if ($platformType === 1) {
|
|
if (!$request->refresh_token_facebook) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getMetaAdAccounts(['refresh_token' => $request->refresh_token_facebook]);
|
|
} elseif ($platformType === 2) {
|
|
if (!$request->refresh_token_google) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getGoogleAdAccounts(['refresh_token' => $request->refresh_token_google]);
|
|
} elseif ($platformType === 3) {
|
|
if (!$request->refresh_token_tiktok) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getTiktokAdAccounts(['refresh_token' => $request->refresh_token_tiktok]);
|
|
} else {
|
|
// TODO: 匹配jwt的商户id还是登录用户id
|
|
$accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]);
|
|
}
|
|
|
|
if (empty($accounts)) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
|
|
// 获取客户ID数组
|
|
$accountIds = array_column($accounts, 'account_id');
|
|
// 调用 Service 层查询
|
|
return $this->adsInsightService::exportAdsToExcel(
|
|
$platformType,
|
|
$accountIds, // 客户 ID 数组
|
|
$page, // 页码
|
|
$pageSize, // 每页数量
|
|
$keyword, // 关键字
|
|
$startDate, // 开始日期
|
|
$endDate, // 结束日期
|
|
$status
|
|
);
|
|
}
|
|
|
|
public function listAdsets(Request $request)
|
|
{
|
|
$options = $request->all();
|
|
$options['jwtClaims'] = $request->jwtClaims;
|
|
|
|
// 获取请求参数
|
|
$page = $options['pageNo'] ?? 1; // 页码
|
|
$pageSize = $options['pageSize'] ?? 1000; // 每页数量
|
|
$keyword = $options['conditions']['keyword'] ?? ''; // 关键字搜索
|
|
$platformType = $options['conditions']['platformType'] ?? 0; // 平台类型
|
|
$status = $options['conditions']['status'] ?? 0; // 平台类型
|
|
$startDate = $options['conditions']['startDate'] ?? null; // 开始日期
|
|
$endDate = $options['conditions']['endDate'] ?? null; // 结束日期
|
|
// $dateRange = 'Last Week'; // 默认日期范围
|
|
|
|
// 根据 platformType 获取广告账户
|
|
if ($platformType === 1) {
|
|
if (!$request->refresh_token_facebook) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getMetaAdAccounts(['refresh_token' => $request->refresh_token_facebook]);
|
|
} elseif ($platformType === 2) {
|
|
if (!$request->refresh_token_google) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getGoogleAdAccounts(['refresh_token' => $request->refresh_token_google]);
|
|
} elseif ($platformType === 3) {
|
|
if (!$request->refresh_token_tiktok) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getTiktokAdAccounts(['refresh_token' => $request->refresh_token_tiktok]);
|
|
} else {
|
|
// TODO: 匹配jwt的商户id还是登录用户id
|
|
$accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]);
|
|
}
|
|
|
|
if (empty($accounts)) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
|
|
// 获取客户ID数组
|
|
$accountIds = array_unique(array_column($accounts, 'account_id'));
|
|
// dump($accountIds);
|
|
// 调用 Service 层查询广告组列表
|
|
$result = $this->adsInsightService::getAdsetList(
|
|
$platformType,
|
|
$accountIds, // 客户 ID 数组
|
|
$page, // 页码
|
|
$pageSize, // 每页数量
|
|
$keyword, // 关键字
|
|
$startDate, // 开始日期
|
|
$endDate, // 结束日期
|
|
$status
|
|
);
|
|
|
|
// 返回结果
|
|
return $this->successResponse($result, $request);
|
|
}
|
|
|
|
public function listCreatives(Request $request)
|
|
{
|
|
$options = $request->all();
|
|
$options['jwtClaims'] = $request->jwtClaims;
|
|
|
|
// 获取请求参数
|
|
$page = $options['pageNo'] ?? 1; // 页码
|
|
$pageSize = $options['pageSize'] ?? 1000; // 每页数量
|
|
$keyword = $options['conditions']['keyword'] ?? ''; // 关键字搜索
|
|
$platformType = $options['conditions']['platformType'] ?? 0; // 平台类型
|
|
$startDate = $options['conditions']['startDate'] ?? null; // 开始日期
|
|
$endDate = $options['conditions']['endDate'] ?? null; // 结束日期
|
|
// $dateRange = 'Last Week'; // 默认日期范围
|
|
|
|
// 根据 platformType 获取广告账户
|
|
if ($platformType === 1) {
|
|
if (!$request->refresh_token_facebook) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getMetaAdAccounts(['refresh_token' => $request->refresh_token_facebook]);
|
|
} elseif ($platformType === 2) {
|
|
if (!$request->refresh_token_google) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getGoogleAdAccounts(['refresh_token' => $request->refresh_token_google]);
|
|
} elseif ($platformType === 3) {
|
|
if (!$request->refresh_token_tiktok) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getTiktokAdAccounts(['refresh_token' => $request->refresh_token_tiktok]);
|
|
} else {
|
|
// TODO: 匹配jwt的商户id还是登录用户id
|
|
$accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]);
|
|
}
|
|
|
|
if (empty($accounts)) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
|
|
// 获取客户ID数组
|
|
$accountIds = array_unique(array_column($accounts, 'account_id'));
|
|
// dump($accountIds);
|
|
// 调用 Service 层查询广告组列表
|
|
$result = $this->adsInsightService::getCreativeInsightData(
|
|
$platformType,
|
|
$accountIds, // 客户 ID 数组
|
|
$page, // 页码
|
|
$pageSize, // 每页数量
|
|
$keyword, // 关键字
|
|
$startDate, // 开始日期
|
|
$endDate // 结束日期
|
|
);
|
|
|
|
// 返回结果
|
|
return $this->successResponse($result, $request);
|
|
}
|
|
|
|
public function listCharts(Request $request)
|
|
{
|
|
$options = $request->all();
|
|
$options['jwtClaims'] = $request->jwtClaims;
|
|
|
|
// 获取请求参数
|
|
$cycle = $options['conditions']['cycle'] ?? 3; // 页码
|
|
$platformType = $options['conditions']['platformType'] ?? 0; // 平台类型
|
|
$startDate = $options['conditions']['startDate'] ?? null; // 开始日期
|
|
$endDate = $options['conditions']['endDate'] ?? null; // 结束日期
|
|
// $dateRange = 'Last Week'; // 默认日期范围
|
|
|
|
// 根据 platformType 获取广告账户
|
|
if ($platformType === 1) {
|
|
if (!$request->refresh_token_facebook) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getMetaAdAccounts(['refresh_token' => $request->refresh_token_facebook]);
|
|
} elseif ($platformType === 2) {
|
|
if (!$request->refresh_token_google) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getGoogleAdAccounts(['refresh_token' => $request->refresh_token_google]);
|
|
} elseif ($platformType === 3) {
|
|
if (!$request->refresh_token_tiktok) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
$accounts = $this->bpsAdAccountService->getTiktokAdAccounts(['refresh_token' => $request->refresh_token_tiktok]);
|
|
} else {
|
|
// TODO: 匹配jwt的商户id还是登录用户id
|
|
$accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]);
|
|
}
|
|
|
|
if (empty($accounts)) {
|
|
return $this->successResponse(['data' => []], $request);
|
|
}
|
|
|
|
// 获取客户ID数组
|
|
$accountIds = array_unique(array_column($accounts, 'account_id'));
|
|
// dump($accountIds);
|
|
// 调用 Service 层查询广告组列表
|
|
$result = $this->adsInsightService->getAdCycleInsight(
|
|
$platformType,
|
|
$accountIds, // 客户 ID 数组
|
|
$cycle, // 页码
|
|
$startDate, // 开始日期
|
|
$endDate // 结束日期
|
|
);
|
|
|
|
// 返回结果
|
|
return $this->successResponse($result, $request);
|
|
}
|
|
|
|
|
|
// 可以加入一些公共方法
|
|
protected function successResponse($data, Request $request): Response
|
|
{
|
|
if ($request->jwtNewToken) {
|
|
return new Response(200,
|
|
[
|
|
'Content-Type' => 'application/json',
|
|
'X-New-Token' => $request->jwtNewToken
|
|
],
|
|
json_encode($data, JSON_UNESCAPED_UNICODE));
|
|
} else {
|
|
return Json([
|
|
'code' => 0,
|
|
'msg' => 'ok',
|
|
'data' => $data,
|
|
]);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
protected function errorResponse($code, $message, $data = []): Response
|
|
{
|
|
return Json([
|
|
'code' => $code,
|
|
'msg' => $message ?: 'error',
|
|
'data' => $data
|
|
]);
|
|
}
|
|
|
|
}
|