v1.0.30: companies 表删除 name_en(英文名称)字段及全部关联 - 迁移SQL+helpers白名单+add/import/export/list+person关联查询(companies/company_options/products)+completeness核心层与标签+company.js搜索/筛选/列表/详情
This commit is contained in:
+3
-3
@@ -14,12 +14,12 @@ checkAjax();
|
||||
checkPermission('company');
|
||||
|
||||
$data = extractFields(COMPANY_FIELDS);
|
||||
// 显示名称不再单独录入:优先取中文名称,其次英文名称(数据库 display_name 为 NOT NULL)
|
||||
// 显示名称不再单独录入:取中文名称(数据库 display_name 为 NOT NULL)
|
||||
if (empty($data['display_name'])) {
|
||||
$data['display_name'] = $data['name_zh'] ?? ($data['name_en'] ?? '');
|
||||
$data['display_name'] = $data['name_zh'] ?? '';
|
||||
}
|
||||
if (empty($data['display_name'])) {
|
||||
Response::error('企业名称(中文名称或英文名称)为必填项', 400);
|
||||
Response::error('企业名称(中文名称)为必填项', 400);
|
||||
}
|
||||
|
||||
$pdo = DB::getInstance()->getPdo();
|
||||
|
||||
@@ -29,7 +29,7 @@ if (!$idList) {
|
||||
$pdo = DB::getInstance()->getPdo();
|
||||
$in = implode(',', array_fill(0, count($idList), '?'));
|
||||
$stmt = $pdo->prepare(
|
||||
"SELECT id, name_zh, name_en, business_role, country, registration_number,
|
||||
"SELECT id, name_zh, business_role, country, registration_number,
|
||||
address, legal_representative, industry, industry_subdivision, website,
|
||||
registered_capital, established_date, latest_employee_count, latest_annual_revenue,
|
||||
is_listed, stock_code, source_channel, source_detail, created_at
|
||||
@@ -44,10 +44,10 @@ header('Content-Type: text/csv; charset=utf-8');
|
||||
header('Content-Disposition: attachment; filename="companies_' . date('Ymd_His') . '.csv"');
|
||||
echo "\xEF\xBB\xBF"; // UTF-8 BOM,便于 Excel 直接打开
|
||||
$out = fopen('php://output', 'w');
|
||||
fputcsv($out, ['ID', '公司名称', '英文名称', '业务角色', '国家/地区', '注册号', '地址', '法人', '行业', '行业细分', '官网', '注册资本', '成立日期', '员工数', '年营收', '是否上市', '股票代码', '来源渠道', '来源详情', '创建时间']);
|
||||
fputcsv($out, ['ID', '公司名称', '业务角色', '国家/地区', '注册号', '地址', '法人', '行业', '行业细分', '官网', '注册资本', '成立日期', '员工数', '年营收', '是否上市', '股票代码', '来源渠道', '来源详情', '创建时间']);
|
||||
foreach ($list as $r) {
|
||||
fputcsv($out, [
|
||||
$r['id'], $r['name_zh'], $r['name_en'], $r['business_role'],
|
||||
$r['id'], $r['name_zh'], $r['business_role'],
|
||||
$r['country'], $r['registration_number'], $r['address'], $r['legal_representative'],
|
||||
$r['industry'], $r['industry_subdivision'], $r['website'], $r['registered_capital'],
|
||||
$r['established_date'], $r['latest_employee_count'], $r['latest_annual_revenue'],
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* 企业 CSV 导入接口 POST /api/company/import.php (multipart/form-data, 字段名 file)
|
||||
* CSV 表头:name_zh,name_en,display_name,business_role,country,registration_number,address,
|
||||
* CSV 表头:name_zh,display_name,business_role,country,registration_number,address,
|
||||
* legal_form,legal_representative,industry,industry_subdivision,website,
|
||||
* registered_capital,established_date,is_listed,stock_code
|
||||
* 仅 display_name 为必填。
|
||||
@@ -31,7 +31,7 @@ $first = preg_replace('/^\xEF\xBB\xBF/', '', $first);
|
||||
$header = str_getcsv(trim($first));
|
||||
|
||||
$map = [
|
||||
'name_zh' => 'name_zh', 'name_en' => 'name_en', 'display_name' => 'display_name',
|
||||
'name_zh' => 'name_zh', 'display_name' => 'display_name',
|
||||
'business_role' => 'business_role', 'country' => 'country', 'registration_number' => 'registration_number',
|
||||
'address' => 'address', 'legal_form' => 'legal_form', 'legal_representative' => 'legal_representative',
|
||||
'industry' => 'industry', 'industry_subdivision' => 'industry_subdivision', 'website' => 'website',
|
||||
@@ -46,7 +46,7 @@ $failed = 0;
|
||||
|
||||
$stmt = $pdo->prepare(
|
||||
"INSERT INTO companies
|
||||
(name_zh, name_en, display_name, business_role, country, registration_number,
|
||||
(name_zh, display_name, business_role, country, registration_number,
|
||||
address, legal_form, legal_representative, industry, industry_subdivision, website,
|
||||
registered_capital, established_date, is_listed, stock_code, source_channel, source_detail)
|
||||
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
|
||||
@@ -68,7 +68,7 @@ while (($row = fgetcsv($handle)) !== false) {
|
||||
$rec['established_date'] = ($rec['established_date'] ?? '') !== '' ? date('Y-m-d', strtotime($rec['established_date'])) : null;
|
||||
try {
|
||||
$stmt->execute([
|
||||
$rec['name_zh'] ?? null, $rec['name_en'] ?? null, $rec['display_name'],
|
||||
$rec['name_zh'] ?? null, $rec['display_name'],
|
||||
$rec['business_role'] ?? null, $rec['country'] ?? null, $rec['registration_number'] ?? null,
|
||||
$rec['address'] ?? null, $rec['legal_form'] ?? null, $rec['legal_representative'] ?? null,
|
||||
$rec['industry'] ?? null, $rec['industry_subdivision'] ?? null, $rec['website'] ?? null,
|
||||
|
||||
@@ -23,7 +23,7 @@ $active = isset($_REQUEST['is_active']) && $_REQUEST['is_active'] !== '' ? (int
|
||||
|
||||
// 可指定筛选的字段白名单(下拉选项来自前端「筛选」)
|
||||
$searchableFields = [
|
||||
'name_zh', 'name_en', 'registration_number', 'legal_representative',
|
||||
'name_zh', 'registration_number', 'legal_representative',
|
||||
'address', 'industry', 'industry_subdivision', 'website',
|
||||
'source_channel', 'source_detail', 'business_scope', 'stock_code',
|
||||
];
|
||||
@@ -109,7 +109,7 @@ if ($keyword !== '') {
|
||||
$params[] = "%$keyword%";
|
||||
} else {
|
||||
// 全部字段:匹配常用字段
|
||||
$where[] = '(name_zh LIKE ? OR name_en LIKE ? OR display_name LIKE ? OR registration_number LIKE ? OR legal_representative LIKE ? OR industry LIKE ? OR industry_subdivision LIKE ? OR website LIKE ? OR source_detail LIKE ? OR stock_code LIKE ?)';
|
||||
$where[] = '(name_zh LIKE ? OR display_name LIKE ? OR registration_number LIKE ? OR legal_representative LIKE ? OR industry LIKE ? OR industry_subdivision LIKE ? OR website LIKE ? OR source_detail LIKE ? OR stock_code LIKE ?)';
|
||||
$like = "%$keyword%";
|
||||
array_push($params, $like, $like, $like, $like, $like, $like, $like, $like, $like, $like);
|
||||
}
|
||||
@@ -132,7 +132,7 @@ $total = (int)$stmt->fetchColumn();
|
||||
|
||||
$offset = ($page - 1) * $limit;
|
||||
$stmt = $pdo->prepare(
|
||||
"SELECT id, name_zh, name_en, display_name, business_role, legal_form, country, registration_number,
|
||||
"SELECT id, name_zh, display_name, business_role, legal_form, country, registration_number,
|
||||
address, legal_representative, industry, industry_subdivision, website,
|
||||
latest_employee_count, latest_annual_revenue, is_listed, stock_code,
|
||||
source_channel, source_detail, is_active, created_at, updated_at
|
||||
|
||||
Reference in New Issue
Block a user