getPdo(); // owner 存在性校验 if ($data['owner_type'] === 'person') { $chk = $pdo->prepare("SELECT COUNT(*) FROM persons WHERE id = ?"); } else { $chk = $pdo->prepare("SELECT COUNT(*) FROM companies WHERE id = ?"); } $chk->execute([$data['owner_id']]); if ((int)$chk->fetchColumn() === 0) { Response::error('归属对象不存在', 400); } // platform + account_id 唯一 $chk = $pdo->prepare("SELECT COUNT(*) FROM social_accounts WHERE platform = ? AND account_id = ?"); $chk->execute([$data['platform'], $data['account_id']]); if ((int)$chk->fetchColumn() > 0) { Response::error('该平台账号已存在', 400); } [$sql, $params] = buildInsert($data); $pdo->prepare("INSERT INTO social_accounts $sql")->execute($params); $newId = (int)$pdo->lastInsertId(); // 写入商业属性 $attr = extractFields(MEDIA_ATTR_FIELDS); if (!empty($attr)) { $attr['social_account_id'] = $newId; [$attrSql, $attrParams] = buildInsert($attr); $pdo->prepare("INSERT INTO media_commercial_attributes $attrSql")->execute($attrParams); } logCurrent('add', 'media', 'social_accounts', $newId, ['data' => $data, 'attr' => $attr]); Response::success(['id' => $newId], '新增成功');