Files
toolbox/app/Http/Controllers/SqlGeneratorController.php

67 lines
2.2 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Validation\ValidationException;
class SqlGeneratorController extends Controller
{
/**
* 查询 agentslave.case_extras 中已存在的 OB 外部 ID 记录。
*/
public function checkObExternalId(Request $request): JsonResponse
{
try {
$request->validate([
'case_codes' => 'required|array|min:1',
'case_codes.*' => 'required|string|max:255',
]);
$caseCodes = array_values(array_unique(array_filter(array_map('trim', $request->input('case_codes')))));
if (empty($caseCodes)) {
return response()->json([
'success' => false,
'message' => '请提供有效的 case_id 列表'
], 400);
}
$existingCaseCodes = [];
foreach (array_chunk($caseCodes, 1000) as $chunk) {
$results = DB::connection('agentslave')
->table('case_extras')
->where('source', 'ob')
->where('field', 'OB Case ID')
->whereIn('case_code', $chunk)
->pluck('case_code')
->all();
$existingCaseCodes = array_merge($existingCaseCodes, $results);
}
$existingCaseCodes = array_values(array_unique(array_map('strval', $existingCaseCodes)));
return response()->json([
'success' => true,
'data' => [
'existing_case_codes' => $existingCaseCodes,
],
]);
} catch (ValidationException $e) {
return response()->json([
'success' => false,
'message' => '请求参数验证失败',
'errors' => $e->errors(),
], 422);
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => '查询 case_extras 失败: ' . $e->getMessage(),
], 500);
}
}
}