webman_ad/app/controller/BpsAdController.php

895 lines
38 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\controller;
use app\service\GoogleAdsAdService;
use app\service\GoogleAdsCampaignService;
use app\service\GoogleAdsGroupService;
//use app\service\GoogleAdsReportService;
use app\service\AdsInsightService;
use app\service\AdsDashboardService;
use app\service\LandingUrlInsightService;
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 AdsDashboardService
*/
private $adsDashboardService;
/**
* @Inject
* @var LandingUrlInsightService
*/
private $landingUrlInsightService;
/**
* @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(['merchant_id' => $options['jwtClaims']['merchant_id']]);
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(['merchant_id' => $options['jwtClaims']['merchant_id']]);
}
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(['merchant_id' => $options['jwtClaims']['merchant_id']]);
} elseif ($platformType === 2) {
// 获取 Google 第三方用户数据
$users = $this->bpsAdAccountService->getGoogleThirdUsers(['merchant_id' => $options['jwtClaims']['merchant_id']]);
} elseif ($platformType === 3) {
// 获取 TikTok 第三方用户数据
$users = $this->bpsAdAccountService->getTiktokThirdUsers(['merchant_id' => $options['jwtClaims']['merchant_id']]);
} else {
// 根据 JWT claims 获取所有平台的第三方用户
$users = $this->bpsAdAccountService->getAllThirdUsers(['merchant_id' => $options['jwtClaims']['merchant_id']]);
}
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(['merchant_id' => $options['jwtClaims']['merchant_id']]);
}
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(['merchant_id' => $options['jwtClaims']['merchant_id']]);
}
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(['merchant_id' => $options['jwtClaims']['merchant_id']]);
}
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(['merchant_id' => $options['jwtClaims']['merchant_id']]);
}
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(['merchant_id' => $options['jwtClaims']['merchant_id']]);
}
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(['merchant_id' => $options['jwtClaims']['merchant_id']]);
}
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(['merchant_id' => $options['jwtClaims']['merchant_id']]);
}
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(['merchant_id' => $options['jwtClaims']['merchant_id']]);
}
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(['merchant_id' => $options['jwtClaims']['merchant_id']]);
}
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 listLandingUrls(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(['merchant_id' => $options['jwtClaims']['merchant_id']]);
}
if (empty($accounts)) {
return $this->successResponse(['data' => []], $request);
}
// 获取客户ID数组
$accountIds = array_unique(array_column($accounts, 'account_id'));
// dump($accountIds);
// 调用 Service 层查询广告组列表
$result = $this->landingUrlInsightService::getLandingUrlInsightData(
$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(['merchant_id' => $options['jwtClaims']['merchant_id']]);
}
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);
}
public function listCards(Request $request)
{
$options = $request->all();
$options['jwtClaims'] = $request->jwtClaims;
// 获取请求参数
$cycle = $options['conditions']['dateType'] ?? 'today'; //默认today || today yesterday、month、year 、custom
// $platformType = $options['conditions']['platformType'] ?? 0; // 平台类型
$startDate = $options['conditions']['startDate'] ?? null; // 开始日期
$endDate = $options['conditions']['endDate'] ?? null; // 结束日期
// $dateRange = 'Last Week'; // 默认日期范围
// TODO: 匹配jwt的商户id还是登录用户id
$accounts = $this->bpsAdAccountService->getAllAdAccounts(['merchant_id' => $options['jwtClaims']['merchant_id']]);
if (empty($accounts)) {
return $this->successResponse(['data' => []], $request);
}
// 获取客户ID数组
$accountIds = array_unique(array_column($accounts, 'account_id'));
// dump($accountIds);
// 调用 Service 层查询广告组列表
$result = $this->adsDashboardService->getAdCycleCard(
$accountIds, // 客户 ID 数组
$cycle, // 页码
$startDate, // 开始日期
$endDate // 结束日期
);
// 返回结果
return $this->successResponse($result, $request);
}
// 可以加入一些公共方法
protected function successResponse($data, Request $request): Response
{
$responseData = [
'code' => 0,
'msg' => 'ok',
'data' => $data,
];
// 如果 data 是空数组,转换为空对象
if (is_array($data) && empty($data)) {
$responseData['data'] = new \stdClass();
}
// 如果有新 token添加到 header
if ($request->jwtNewToken) {
return new Response(200, [
'Content-Type' => 'application/json',
'X-New-Token' => $request->jwtNewToken,
], json_encode($responseData, JSON_UNESCAPED_UNICODE));
}
return Json($responseData);
}
protected
function errorResponse($code, $message, $data = []): Response
{
return Json([
'code' => $code,
'msg' => $message ?: 'error',
'data' => $data
]);
}
}