67 lines
2.2 KiB
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);
|
|
}
|
|
}
|
|
}
|