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->errorResponse(1, 'no data'); } // 获取客户 ID 数组,并去重 $userIds = array_unique(array_column($users, 'id')); // 调用 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; // 平台类型 $startDate = $options['conditions']['startDate'] ?? null; // 开始日期 $endDate = $options['conditions']['endDate'] ?? null; // 结束日期 // $dateRange = 'Last Week'; // 默认日期范围 // 根据 platformType 获取广告账户 if ($platformType === 1) { $accounts = $this->bpsAdAccountService->getMetaAdAccounts(['refresh_token' => $request->refresh_token]); } elseif ($platformType === 2) { $accounts = $this->bpsAdAccountService->getGoogleAdAccounts(['refresh_token' => $request->refresh_token]); } elseif ($platformType === 3) { $accounts = $this->bpsAdAccountService->getTiktokAdAccounts(['refresh_token' => $request->refresh_token]); } else { // TODO: 匹配jwt的商户id还是登录用户id $accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]); } if (empty($accounts)) { return $this->errorResponse(1, 'no data'); } // 获取客户ID数组 $accountIds = array_column($accounts, 'account_id'); // 调用 Service 层查询广告列表 $result = $this->adsInsightService::getAdList( $platformType, // 平台类型 $accountIds, // 客户 ID 数组 $page, // 页码 $pageSize, // 每页数量 $keyword, // 关键字 $startDate, // 开始日期 $endDate // 结束日期 ); // 返回结果 return $this->successResponse($result, $request); } public function listAssets(Request $request) { $options = $request->all(); // 获取请求参数 $page = $options['pageNo'] ?? 1; // 页码 $pageSize = $options['pageSize'] ?? 10; // 每页数量 $keyword = $options['conditions']['keyword'] ?? ''; // 关键字搜索 $startDate = $options['conditions']['startDate'] ?? null; // 开始日期 $endDate = $options['conditions']['endDate'] ?? null; // 结束日期 $dateRange = 'Last Week'; // 默认日期范围 // $customerId = 4060397299; $customers = $this->googleOAuthService->getGoogleAdCustomers(['refresh_token' => $request->refresh_token]); $customerIds = array_column($customers, 'customer_id'); //dump( $customerIds, // 客户 ID 数组 // $page, // 页码 // $pageSize, // 每页数量 // $keyword, // 关键字 // $dateRange, // $startDate, // 开始日期 // $endDate); // 调用 Service 层查询 $result = $this->googleAdsReportService->getAssetConversionData( $customerIds, // 客户 ID 数组 $page, // 页码 $pageSize, // 每页数量 $keyword, // 关键字 $dateRange, $startDate, // 开始日期 $endDate); 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; // 关键字搜索 $startDate = $options['conditions']['startDate'] ?? null; // 开始日期 $endDate = $options['conditions']['endDate'] ?? null; // 结束日期 // $dateRange = 'Last Week'; // 默认日期范围 // 根据 platformType 获取广告账户 if ($platformType === 1) { $accounts = $this->bpsAdAccountService->getMetaAdAccounts(['refresh_token' => $request->refresh_token]); } elseif ($platformType === 2) { $accounts = $this->bpsAdAccountService->getGoogleAdAccounts(['refresh_token' => $request->refresh_token]); } elseif ($platformType === 3) { $accounts = $this->bpsAdAccountService->getTiktokAdAccounts(['refresh_token' => $request->refresh_token]); } else { // TODO: 匹配jwt的商户id还是登录用户id $accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]); } if (empty($accounts)) { return $this->errorResponse(1, 'no data'); } // 获取客户ID数组 $accountIds = array_column($accounts, 'account_id'); // 调用 Service 层查询 $result = $this->adsInsightService::getCampaignList( $platformType, $accountIds, // 客户 ID 数组 $page, // 页码 $pageSize, // 每页数量 $keyword, // 关键字 $startDate, // 开始日期 $endDate // 结束日期 ); return $this->successResponse($result, $request); // return $this->errorResponse(300,'授权失败'); } 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; // 平台类型 $startDate = $options['conditions']['startDate'] ?? null; // 开始日期 $endDate = $options['conditions']['endDate'] ?? null; // 结束日期 // $dateRange = 'Last Week'; // 默认日期范围 // 根据 platformType 获取广告账户 if ($platformType === 1) { $accounts = $this->bpsAdAccountService->getMetaAdAccounts(['refresh_token' => $request->refresh_token]); } elseif ($platformType === 2) { $accounts = $this->bpsAdAccountService->getGoogleAdAccounts(['refresh_token' => $request->refresh_token]); } elseif ($platformType === 3) { $accounts = $this->bpsAdAccountService->getTiktokAdAccounts(['refresh_token' => $request->refresh_token]); } else { // TODO: 匹配jwt的商户id还是登录用户id $accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]); } if (empty($accounts)) { return $this->errorResponse(1, 'no data'); } // 获取客户ID数组 $accountIds = array_column($accounts, 'account_id'); // dump($accountIds); // 调用 Service 层查询广告组列表 $result = $this->adsInsightService::getAdsetList( $platformType, $accountIds, // 客户 ID 数组 $page, // 页码 $pageSize, // 每页数量 $keyword, // 关键字 $startDate, // 开始日期 $endDate // 结束日期 ); // 返回结果 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) { $accounts = $this->bpsAdAccountService->getMetaAdAccounts(['refresh_token' => $request->refresh_token]); } elseif ($platformType === 2) { $accounts = $this->bpsAdAccountService->getGoogleAdAccounts(['refresh_token' => $request->refresh_token]); } elseif ($platformType === 3) { $accounts = $this->bpsAdAccountService->getTiktokAdAccounts(['refresh_token' => $request->refresh_token]); } else { // TODO: 匹配jwt的商户id还是登录用户id $accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]); } if (empty($accounts)) { return $this->errorResponse(1, 'no data'); } // 获取客户ID数组 $accountIds = 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) { $accounts = $this->bpsAdAccountService->getMetaAdAccounts(['refresh_token' => $request->refresh_token]); } elseif ($platformType === 2) { $accounts = $this->bpsAdAccountService->getGoogleAdAccounts(['refresh_token' => $request->refresh_token]); } elseif ($platformType === 3) { $accounts = $this->bpsAdAccountService->getTiktokAdAccounts(['refresh_token' => $request->refresh_token]); } else { // TODO: 匹配jwt的商户id还是登录用户id $accounts = $this->bpsAdAccountService->getAllAdAccounts(['uid' => $options['jwtClaims']['uid']]); } if (empty($accounts)) { return $this->errorResponse(1, 'no data'); } // 获取客户ID数组 $accountIds = 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 ]); } }