v1.0.35: 重复校验支持多字段同时提示 - 校验引擎改收集模式返回全部重复,Response::duplicates单弹窗列出,前端遍历展示所有重复项
This commit is contained in:
+6
-5
@@ -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);
|
||||
|
||||
@@ -31,9 +31,9 @@ if ((int)$chk->fetchColumn() === 0) {
|
||||
Response::error('企业不存在');
|
||||
}
|
||||
|
||||
// 唯一性校验:社媒账号ID(同平台)/ 手机 / 邮箱 / 主页链接
|
||||
$dup = checkSingleAccountDuplicate($pdo, $platform, $accountId, $_POST['profile_url'] ?? '');
|
||||
if ($dup) Response::duplicate($dup);
|
||||
// 唯一性校验:社媒账号ID(同平台)/ 手机 / 邮箱 / 主页链接,收集全部重复
|
||||
$dups = checkSingleAccountDuplicate($pdo, $platform, $accountId, $_POST['profile_url'] ?? '');
|
||||
if (!empty($dups)) Response::duplicates($dups);
|
||||
|
||||
$ins = $pdo->prepare(
|
||||
"INSERT INTO social_accounts (owner_type, owner_id, platform, account_id, profile_url, remark, is_primary, is_defult, is_active)
|
||||
|
||||
@@ -41,12 +41,13 @@ if (!$old) {
|
||||
Response::error('企业不存在');
|
||||
}
|
||||
|
||||
// 唯一性校验(排除自身):企业名称 / 注册号 / 联系方式
|
||||
// 唯一性校验(排除自身):企业名称 / 注册号 / 联系方式,收集全部重复
|
||||
$dups = [];
|
||||
$dup = findDuplicate($pdo, 'company_name', $data['name_zh'] ?? $old['display_name'] ?? '', [$id]);
|
||||
if ($dup) Response::duplicate($dup);
|
||||
if ($dup) $dups[] = $dup;
|
||||
if (!empty($data['registration_number'])) {
|
||||
$dup = findDuplicate($pdo, 'registration_number', $data['registration_number'], [$id]);
|
||||
if ($dup) Response::duplicate($dup);
|
||||
if ($dup) $dups[] = $dup;
|
||||
}
|
||||
$accounts = null;
|
||||
if ($hasAccounts) {
|
||||
@@ -56,9 +57,9 @@ if ($hasAccounts) {
|
||||
}
|
||||
// 整表替换:排除企业自身既有联系方式ID
|
||||
$ownIds = $pdo->query("SELECT id FROM social_accounts WHERE owner_type = 'company' AND owner_id = $id")->fetchAll(PDO::FETCH_COLUMN);
|
||||
$dup = checkAccountsDuplicates($pdo, $accounts, $ownIds);
|
||||
if ($dup) Response::duplicate($dup);
|
||||
$dups = array_merge($dups, checkAccountsDuplicates($pdo, $accounts, $ownIds));
|
||||
}
|
||||
if (!empty($dups)) Response::duplicates($dups);
|
||||
|
||||
if (!empty($data)) {
|
||||
[$sets, $params] = buildUpdate($data);
|
||||
|
||||
Reference in New Issue
Block a user