#add jira & message sync
This commit is contained in:
207
app/Http/Controllers/MessageDispatchController.php
Normal file
207
app/Http/Controllers/MessageDispatchController.php
Normal file
@@ -0,0 +1,207 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Services\MessageDispatchService;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
|
||||
class MessageDispatchController extends Controller
|
||||
{
|
||||
private MessageDispatchService $messageDispatchService;
|
||||
|
||||
public function __construct(MessageDispatchService $messageDispatchService)
|
||||
{
|
||||
$this->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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user