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'; // 默认日期范围 $customers = $this->googleOAuthService->getGoogleAdCustomers(['refresh_token' => $request->refresh_token]); $customerIds = array_column($customers, 'customer_id'); // dump($customers); // 调用 Service 层查询 $result = $this->googleAdsReportService::getAdList( $customerIds, // 客户 ID 数组 $page, // 页码 $pageSize, // 每页数量 $keyword, // 关键字 $dateRange, $startDate, // 开始日期 $endDate ); // 结束日期); return $this->successResponse($result); } 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'); // 你可以进一步验证日期格式(可选) // if ($startDate && !strtotime($startDate)) { // return response()->json(['error' => 'Invalid start date format'], 400); // } // if ($endDate && !strtotime($endDate)) { // return response()->json(['error' => 'Invalid end date format'], 400); // } // 调用 Service 层查询 $result = $this->googleAdsReportService->getAssetConversionData( $customerIds, // 客户 ID 数组 $page, // 页码 $pageSize, // 每页数量 $keyword, // 关键字 $dateRange, $startDate, // 开始日期 $endDate); return $this->successResponse($result); } public function listCampaigns(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'; // 默认日期范围 $customers = $this->googleOAuthService->getGoogleAdCustomers(['refresh_token' => $request->refresh_token]); $customerIds = array_column($customers, 'customer_id'); // 调用 Service 层查询 $result = $this->googleAdsReportService::getCampaignList( $customerIds, // 客户 ID 数组 $page, // 页码 $pageSize, // 每页数量 $keyword, // 关键字 $dateRange, $startDate, // 开始日期 $endDate // 结束日期 ); return $this->successResponse($result); // return $this->errorResponse(300,'授权失败'); } public function exportAdsToExcel(Request $request) { $options = $request->all(); // 获取请求参数 $keyword = $options['conditions']['keyword'] ?? ''; // 关键字搜索 $startDate = $options['conditions']['startDate'] ?? null; // 开始日期 $endDate = $options['conditions']['endDate'] ?? null; // 结束日期 $dateRange = 'Last Week'; // 默认日期范围 $customers = $this->googleOAuthService->getGoogleAdCustomers(['refresh_token' => $request->refresh_token]); $customerIds = array_column($customers, 'customer_id'); // 调用 service 层导出数据 return $this->googleAdsReportService::exportAdListToExcel($customerIds, $keyword, $dateRange, $startDate, $endDate); } public function exportCampaignsToExcel(Request $request) { $options = $request->all(); // 获取请求参数 $keyword = $options['conditions']['keyword'] ?? ''; // 关键字搜索 $startDate = $options['conditions']['startDate'] ?? null; // 开始日期 $endDate = $options['conditions']['endDate'] ?? null; // 结束日期 $dateRange = 'Last Week'; // 默认日期范围 $customers = $this->googleOAuthService->getGoogleAdCustomers(['refresh_token' => $request->refresh_token]); $customerIds = array_column($customers, 'customer_id'); // dump($customerIds); // 调用 service 层导出数据 return $this->googleAdsReportService->exportCampaignsToExcel($customerIds, $keyword, $dateRange, $startDate, $endDate); } public function exportGroupsToExcel(Request $request) { $options = $request->all(); // 获取请求参数 $keyword = $options['conditions']['keyword'] ?? ''; // 关键字搜索 $startDate = $options['conditions']['startDate'] ?? null; // 开始日期 $endDate = $options['conditions']['endDate'] ?? null; // 结束日期 $dateRange = 'Last Week'; // 默认日期范围 $customers = $this->googleOAuthService->getGoogleAdCustomers(['refresh_token' => $request->refresh_token]); $customerIds = array_column($customers, 'customer_id'); // 你可以进一步验证日期格式(可选) // if ($startDate && !strtotime($startDate)) { // return response()->json(['error' => 'Invalid start date format'], 400); // } // if ($endDate && !strtotime($endDate)) { // return response()->json(['error' => 'Invalid end date format'], 400); // } // 调用 service 层导出数据 return $this->googleAdsReportService->exportAdGroupsToExcel($customerIds, $keyword, $dateRange, $startDate, $endDate); } public function listGroups(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'; // 默认日期范围 $customers = $this->googleOAuthService->getGoogleAdCustomers(['refresh_token' => $request->refresh_token]); $customerIds = array_column($customers, 'customer_id'); // 调用 Service 层查询 $result = $this->googleAdsReportService::getAdGroupList( $customerIds, // 客户 ID 数组 $page, // 页码 $pageSize, // 每页数量 $keyword, // 关键字 $dateRange, $startDate, // 开始日期 $endDate ); return $this->successResponse($result); } /** * 获取广告系列的状态 备用 */ // public function getCampaignStatus(int $campaignId): Response // { // try { // $status = $this->googleAdsCampaignService->getCampaignStatus($campaignId); // return $this->successResponse(['status' => $status]); // } catch (ValidateException $e) { // return $this->errorResponse(400, $e->getMessage()); // } // } /** * 更新广告系列的状态 */ public function updateCampaignStatus(Request $request): Response { $campaignStatus = [ 0, // UNSPECIFIED 1, // UNKNOWN 2, // ENABLED 3, // PAUSED 4, // REMOVED ]; $requestData = $request->all(); // 获取请求数据 $requestData['refresh_token'] = $request->refresh_token; $requestData['login_customer_id'] = $request->login_customer_id; // dump($requestData); $status = $requestData['status']; if (!in_array($status, $campaignStatus)) { return $this->errorResponse(101, 'status参数错误'); } // try { $reslut = $this->googleAdsCampaignService->updateCampaignStatus($requestData); if (!$reslut) { return $this->errorResponse(101, 'Status update failed'); } return $this->successResponse(['message' => 'Status updated successfully']); // } catch (ValidateException $e) { // return $this->errorResponse(400, $e->getMessage()); // } } /** * 判断广告系列是否启用 */ // public function isEnabled(int $campaignId): Json // { // try { // $isEnabled = $this->campaignService->isCampaignEnabled($campaignId); // return json(['enabled' => $isEnabled], 200); // } catch (ValidateException $e) { // return json(['error' => $e->getMessage()], 400); // } // } /** * 判断广告系列是否暂停 */ // public function isPaused(int $campaignId): Json // { // try { // $isPaused = $this->campaignService->isCampaignPaused($campaignId); // return json(['paused' => $isPaused], 200); // } catch (ValidateException $e) { // return json(['error' => $e->getMessage()], 400); // } // } /** * 判断广告系列是否停止 */ // public function isStopped(int $campaignId): Json // { // try { // $isStopped = $this->campaignService->isCampaignStopped($campaignId); // return json(['stopped' => $isStopped], 200); // } catch (ValidateException $e) { // return json(['error' => $e->getMessage()], 400); // } // } // /** * 更新广告组的状态 */ public function updateGroupStatus(Request $request): Response { $adGroupStatus = [ 0, // UNSPECIFIED 1, // UNKNOWN 2, // ENABLED 3, // PAUSED 4 // REMOVED ]; $requestData = $request->all(); // 获取请求数据 $requestData['refresh_token'] = $request->refresh_token; $requestData['login_customer_id'] = $request->login_customer_id; // dump($requestData); $status = $requestData['status']; // $options['bid_micro_amount'] = $options['amount'] * 1000000 < 0 ? 0 : $options['amount'] * 1000000; if (!in_array($status, $adGroupStatus)) { return $this->errorResponse(101, 'status参数错误'); } // try { $result = $this->googleAdsGroupService->updateGroupStatus($requestData); if (!$result) { return $this->errorResponse(101, 'Status update failed'); } return $this->successResponse(['message' => 'Status updated successfully']); // } catch (ValidateException $e) { // return $this->errorResponse(400, $e->getMessage()); // } } /** * 更新广告的状态 */ public function updateAdStatus(Request $request): Response { $adStatus = [ 0, // UNSPECIFIED 1, // UNKNOWN 2, // ENABLED 3, // PAUSED 4 // REMOVED ]; $requestData = $request->all(); // 获取请求数据 $requestData['refresh_token'] = $request->refresh_token; $requestData['login_customer_id'] = $request->login_customer_id; // dump($requestData); $status = $requestData['status']; if (!in_array($status, $adStatus)) { return $this->errorResponse(101, 'status参数错误'); } // try { $result = $this->googleAdsAdService->updateAdStatus($requestData); if (!$result) { return $this->errorResponse(101, 'Status update failed'); } return $this->successResponse(['message' => 'Status updated successfully']); // } catch (ValidateException $e) { // return $this->errorResponse(400, $e->getMessage()); // } } // 可以加入一些公共方法 protected function successResponse($data): Response { return Json([ 'code' => 0, 'msg' => 'ok', 'data' => $data, ]); } protected function errorResponse($code, $message, $data = []): Response { return Json([ 'code' => $code, 'msg' => $message ?: 'error', 'data' => $data ]); } }