v1.0.35: 重复校验支持多字段同时提示 - 校验引擎改收集模式返回全部重复,Response::duplicates单弹窗列出,前端遍历展示所有重复项

This commit is contained in:
nanguaboss
2026-08-09 22:38:35 +08:00
parent 5179a51967
commit 2587c55ab6
12 changed files with 72 additions and 57 deletions
+6 -5
View File
@@ -30,21 +30,22 @@ if ((int)($data['is_listed'] ?? 0) !== 1) {
$pdo = DB::getInstance()->getPdo();
// 唯一性校验:企业名称 / 注册号 / 联系方式(手机/邮箱/社媒账号/主页链接)
// 唯一性校验:企业名称 / 注册号 / 联系方式,收集全部重复
$dups = [];
$dup = findDuplicate($pdo, 'company_name', $data['name_zh'] ?? $data['display_name'] ?? '');
if ($dup) Response::duplicate($dup);
if ($dup) $dups[] = $dup;
if (!empty($data['registration_number'])) {
$dup = findDuplicate($pdo, 'registration_number', $data['registration_number']);
if ($dup) Response::duplicate($dup);
if ($dup) $dups[] = $dup;
}
if (isset($_POST['accounts'])) {
$accounts = json_decode($_POST['accounts'], true);
if (!is_array($accounts)) {
Response::error('联系方式格式错误', 400);
}
$dup = checkAccountsDuplicates($pdo, $accounts);
if ($dup) Response::duplicate($dup);
$dups = array_merge($dups, checkAccountsDuplicates($pdo, $accounts));
}
if (!empty($dups)) Response::duplicates($dups);
[$sql, $params] = buildInsert($data);
$pdo->prepare("INSERT INTO companies $sql")->execute($params);