This commit is contained in:
nanguaboss
2026-08-03 00:07:01 +08:00
commit 71c6e8d9c1
112 changed files with 7815 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
<?php
/**
* 人员新增接口 POST /api/person/add.php
* 必填:full_name;union_id 为空时自动生成。
* 可选:contacts(JSON 数组,如 [{"platform":"email","account_id":"a@b.com","is_primary":1}])
*/
require_once __DIR__ . '/../common/db.php';
require_once __DIR__ . '/../common/response.php';
require_once __DIR__ . '/../common/auth.php';
require_once __DIR__ . '/../common/logger.php';
require_once __DIR__ . '/../common/helpers.php';
checkAjax();
checkPermission('person');
$data = extractFields(PERSON_FIELDS);
if (empty($data['full_name'])) {
Response::error('姓名(full_name)为必填项', 400);
}
if (empty($data['union_id'])) {
$data['union_id'] = 'P' . date('YmdHis') . substr(uniqid(), -6);
}
$pdo = DB::getInstance()->getPdo();
// union_id 唯一性
$chk = $pdo->prepare("SELECT COUNT(*) FROM persons WHERE union_id = ?");
$chk->execute([$data['union_id']]);
if ((int)$chk->fetchColumn() > 0) {
Response::error('union_id 已存在,请更换');
}
[$sql, $params] = buildInsert($data);
$pdo->prepare("INSERT INTO persons $sql")->execute($params);
$newId = (int)$pdo->lastInsertId();
// 写入联系方式
$contacts = json_decode($_POST['contacts'] ?? '[]', true);
if (is_array($contacts)) {
$ins = $pdo->prepare(
"INSERT INTO social_accounts (owner_type, owner_id, platform, account_id, profile_url, remark, is_primary)
VALUES ('person', ?, ?, ?, ?, ?, ?)"
);
foreach ($contacts as $c) {
$platform = trim($c['platform'] ?? '');
$accountId = trim($c['account_id'] ?? '');
if ($platform === '' || $accountId === '') continue;
$ins->execute([$newId, $platform, $accountId, $c['profile_url'] ?? null, $c['remark'] ?? null, !empty($c['is_primary']) ? 1 : 0]);
}
}
logCurrent('add', 'person', 'persons', $newId, ['data' => $data, 'contacts' => $contacts]);
Response::success(['id' => $newId], '新增成功');