messageDispatchService = $messageDispatchService; } /** * 获取可用的服务列表 */ public function getAvailableServices(): JsonResponse { try { $services = $this->messageDispatchService->getAvailableServices(); return response()->json([ 'success' => true, 'data' => $services, ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => '获取服务列表失败', 'error' => $e->getMessage() ], 500); } } /** * 获取可用的国家代码列表 */ public function getAvailableCountryCodes(): JsonResponse { try { $codes = $this->messageDispatchService->getAvailableCountryCodes(); return response()->json([ 'success' => true, 'data' => $codes, ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => '获取国家代码列表失败', 'error' => $e->getMessage() ], 500); } } /** * 获取可用的域名列表 */ public function getAvailableDomains(): JsonResponse { try { $domains = $this->messageDispatchService->getAvailableDomains(); return response()->json([ 'success' => true, 'data' => $domains, ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => '获取域名列表失败', 'error' => $e->getMessage() ], 500); } } /** * 查询异常的消息分发数据 */ public function getAbnormalDispatches(Request $request): JsonResponse { try { $request->validate([ 'msg_ids' => 'nullable|array', 'msg_ids.*' => 'string', 'request_status' => 'nullable|integer', 'business_status' => 'nullable|integer', 'target_services' => 'nullable|array', 'target_services.*' => 'integer', 'country_codes' => 'nullable|array', 'domains' => 'nullable|array', ]); $msgIds = $request->input('msg_ids'); $requestStatus = $request->input('request_status'); $businessStatus = $request->input('business_status'); $targetServices = $request->input('target_services'); $countryCodes = $request->input('country_codes'); $domains = $request->input('domains'); $results = $this->messageDispatchService->getAbnormalDispatches( $msgIds, $requestStatus, $businessStatus, $targetServices, $countryCodes, $domains ); return response()->json([ 'success' => true, 'data' => $results, 'total' => count($results), ]); } catch (ValidationException $e) { return response()->json([ 'success' => false, 'message' => '请求参数验证失败', 'errors' => $e->errors() ], 422); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => '查询异常消息失败: ' . $e->getMessage() ], 500); } } /** * 获取服务路由列表 */ public function getServiceRoutes(): JsonResponse { try { $routes = $this->messageDispatchService->getServiceRoutes(); return response()->json([ 'success' => true, 'data' => $routes ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => $e->getMessage() ], 500); } } /** * 批量更新消息分发状态 */ public function batchUpdateDispatch(Request $request): JsonResponse { try { $request->validate([ 'updates' => 'required|array|min:1', 'updates.*.id' => 'required', 'updates.*.request_status' => 'nullable|in:0,1,2,3,4,5', 'updates.*.business_status' => 'nullable|in:0,1,2', 'updates.*.retry_count' => 'nullable|numeric|min:0', 'updates.*.request_error_message' => 'nullable|string|max:1000', 'updates.*.request_error_code' => 'nullable|string|max:50', 'updates.*.business_error_message' => 'nullable|string|max:1000', 'updates.*.business_error_code' => 'nullable|string|max:50', 'updates.*.processing_time_ms' => 'nullable|numeric|min:0', 'updates.*.country_code' => 'nullable|string|max:10', 'updates.*.target_service' => 'nullable', ]); $updates = $request->input('updates'); $results = $this->messageDispatchService->batchUpdateDispatch($updates); $successCount = count(array_filter($results, fn($r) => $r['success'])); $failureCount = count($results) - $successCount; return response()->json([ 'success' => true, 'data' => [ 'results' => $results, 'summary' => [ 'total' => count($results), 'success' => $successCount, 'failure' => $failureCount, ] ] ]); } catch (ValidationException $e) { return response()->json([ 'success' => false, 'message' => '请求参数验证失败', 'errors' => $e->errors() ], 422); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => '批量更新失败: ' . $e->getMessage() ], 500); } } }