v1.0.35: 重复校验支持多字段同时提示 - 校验引擎改收集模式返回全部重复,Response::duplicates单弹窗列出,前端遍历展示所有重复项
This commit is contained in:
@@ -177,16 +177,17 @@ function findDuplicate(PDO $pdo, $type, $value, $excludeIds = [], $platform = nu
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验单条账号(媒体模块扁平字段)
|
||||
* 校验单条账号(媒体模块扁平字段),返回所有重复项数组(空=无重复)
|
||||
* @param PDO $pdo
|
||||
* @param string $platform
|
||||
* @param string $accountId
|
||||
* @param string $profileUrl
|
||||
* @param array $excludeIds
|
||||
* @return array|null
|
||||
* @return array
|
||||
*/
|
||||
function checkSingleAccountDuplicate(PDO $pdo, $platform, $accountId, $profileUrl = '', $excludeIds = [])
|
||||
{
|
||||
$dups = [];
|
||||
$platform = trim((string)$platform);
|
||||
$accountId = trim((string)$accountId);
|
||||
if ($platform !== '' && $accountId !== '') {
|
||||
@@ -196,45 +197,43 @@ function checkSingleAccountDuplicate(PDO $pdo, $platform, $accountId, $profileUr
|
||||
$dup = findDuplicate($pdo, 'account_id', $accountId, $excludeIds, $platform);
|
||||
}
|
||||
if ($dup) {
|
||||
return $dup;
|
||||
$dups[] = $dup;
|
||||
}
|
||||
}
|
||||
$profileUrl = trim((string)$profileUrl);
|
||||
if ($profileUrl !== '') {
|
||||
$dup = findDuplicate($pdo, 'profile_url', $profileUrl, $excludeIds);
|
||||
if ($dup) {
|
||||
return $dup;
|
||||
$dups[] = $dup;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return $dups;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验联系方式数组(persons/companies 的 contacts/accounts JSON)
|
||||
* 校验联系方式数组(persons/companies 的 contacts/accounts JSON),返回所有重复项数组(空=无重复)
|
||||
* @param PDO $pdo
|
||||
* @param array $accounts [{platform,account_id,profile_url,...}]
|
||||
* @param array $excludeIds 整表替换时排除自身既有账号ID
|
||||
* @return array|null
|
||||
* @return array
|
||||
*/
|
||||
function checkAccountsDuplicates(PDO $pdo, $accounts, $excludeIds = [])
|
||||
{
|
||||
$dups = [];
|
||||
if (!is_array($accounts)) {
|
||||
return null;
|
||||
return $dups;
|
||||
}
|
||||
foreach ($accounts as $a) {
|
||||
if (!is_array($a)) {
|
||||
continue;
|
||||
}
|
||||
$dup = checkSingleAccountDuplicate(
|
||||
$dups = array_merge($dups, checkSingleAccountDuplicate(
|
||||
$pdo,
|
||||
$a['platform'] ?? '',
|
||||
$a['account_id'] ?? '',
|
||||
$a['profile_url'] ?? '',
|
||||
$excludeIds
|
||||
);
|
||||
if ($dup) {
|
||||
return $dup;
|
||||
}
|
||||
));
|
||||
}
|
||||
return null;
|
||||
return $dups;
|
||||
}
|
||||
|
||||
+12
-2
@@ -31,10 +31,20 @@ class Response
|
||||
*/
|
||||
public static function duplicate($dup)
|
||||
{
|
||||
self::duplicates([$dup]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 多条重复数据错误(一次录入多个字段均重复时,单弹窗全部列出)
|
||||
* @param array $dups 重复记录数组
|
||||
*/
|
||||
public static function duplicates($dups)
|
||||
{
|
||||
$dups = array_values((array)$dups);
|
||||
self::json([
|
||||
'code' => 1001,
|
||||
'msg' => ($dup['label'] ?? '字段') . '「' . ($dup['value'] ?? '') . '」出现重复',
|
||||
'data' => $dup,
|
||||
'msg' => count($dups) . ' 个字段出现重复',
|
||||
'data' => $dups,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user