feat(news): 支持新闻中心多站点隔离功能

新增站点编码配置,支持新闻分类与文章按站点隔离。主要变更包括:
- 数据库表增加 site_code 字段及索引
- 后台管理界面支持按站点筛选
- 前台接口支持通过查询参数或请求头指定站点
- 新增站点配置与解析逻辑
This commit is contained in:
2026-05-05 15:09:49 +08:00
parent d129d64ebd
commit 3daa0273a4
76 changed files with 592 additions and 114 deletions

View File

@@ -60,26 +60,33 @@ INSERT INTO f_company_info (
-- ================================================================
-- 产品分类
-- ================================================================
INSERT INTO f_product_category (product_category_id, name_zh, name_en, parent_id, sort_order) VALUES
(1, '连续涂镀机组', 'Continuous Coating Lines', NULL, 10),
(2, '连续热处理机组', 'Continuous Heat Treatment Lines', NULL, 20),
(3, '表面处理机组', 'Surface Treatment Lines', NULL, 30),
(4, '后处理及辅机', 'Post-processing & Auxiliary', NULL, 40),
(5, '单体设备', 'Single Equipment', NULL, 50),
(6, '备品备件', 'Spare Parts', NULL, 60),
(11, '热镀锌/镀铝锌机组', 'Hot Dipped Galvanizing / Galvalume Line', 1, 11),
(12, '锌铝镁机组', 'Zinc Aluminum Magnesium (ZAM) Line', 1, 12),
(13, '彩涂机组', 'Color Coating Line (CCL)', 1, 13),
(21, '普碳钢连续退火线', 'Plain Carbon Steel Continuous Annealing Line', 2, 21),
(22, '冷轧退火镀锌两用机组', 'Annealing & Galvanizing Combo Line', 2, 22),
(23, '硅钢连续处理机组', 'Silicon Steel Processing Line', 2, 23),
(31, '碳钢酸洗机组', 'Carbon Steel Pickling Line', 3, 31),
(32, '不锈钢退火酸洗机组', 'Stainless Steel Annealing & Pickling Line', 3, 32),
(41, '拉矫/脱脂/重卷线', 'Tension Leveling, Degreasing, Re-coiling', 4, 41)
INSERT INTO f_product_category (product_category_id, name_zh, name_en, module_type, parent_id, sort_order) VALUES
(1, '连续涂镀机组', 'Continuous Coating Lines', 'product_line', NULL, 10),
(2, '连续热处理机组', 'Continuous Heat Treatment Lines', 'product_line', NULL, 20),
(3, '表面处理机组', 'Surface Treatment Lines', 'product_line', NULL, 30),
(4, '后处理及辅机', 'Post-processing & Auxiliary', 'product_line', NULL, 40),
(5, '单体设备', 'Single Equipment', 'equipment', NULL, 50),
(6, '备品备件', 'Spare Parts', 'spare_part', NULL, 60),
(11, '热镀锌/镀铝锌机组', 'Hot Dipped Galvanizing / Galvalume Line', 'product_line', 1, 11),
(12, '锌铝镁机组', 'Zinc Aluminum Magnesium (ZAM) Line', 'product_line', 1, 12),
(13, '彩涂机组', 'Color Coating Line (CCL)', 'product_line', 1, 13),
(21, '普碳钢连续退火线', 'Plain Carbon Steel Continuous Annealing Line', 'product_line', 2, 21),
(22, '冷轧退火镀锌两用机组', 'Annealing & Galvanizing Combo Line', 'product_line', 2, 22),
(23, '硅钢连续处理机组', 'Silicon Steel Processing Line', 'product_line', 2, 23),
(31, '碳钢酸洗机组', 'Carbon Steel Pickling Line', 'product_line', 3, 31),
(32, '不锈钢退火酸洗机组', 'Stainless Steel Annealing & Pickling Line', 'product_line', 3, 32),
(41, '拉矫/脱脂/重卷线', 'Tension Leveling, Degreasing, Re-coiling', 'product_line', 4, 41),
(200, '卷取设备', 'Reeling & Coiling Equipment', 'equipment', 5, 200),
(201, '炉类设备', 'Furnace Equipment', 'equipment', 5, 201),
(202, '涂布与焊接设备', 'Coating & Welding Equipment', 'equipment', 5, 202),
(203, '破鳞设备', 'Scale Breaking Equipment', 'equipment', 5, 203),
(204, '拉矫矫直设备', 'Leveling & Straightening Equipment', 'equipment', 5, 204),
(205, '剪切修边设备', 'Shearing & Trimming Equipment', 'equipment', 5, 205)
ON DUPLICATE KEY UPDATE
name_zh = VALUES(name_zh), name_en = VALUES(name_en), parent_id = VALUES(parent_id), sort_order = VALUES(sort_order);
name_zh = VALUES(name_zh), name_en = VALUES(name_en), module_type = VALUES(module_type),
parent_id = VALUES(parent_id), sort_order = VALUES(sort_order);
ALTER TABLE f_product_category AUTO_INCREMENT = 100;
ALTER TABLE f_product_category AUTO_INCREMENT = 210;
-- ================================================================
-- 案例分类
@@ -99,13 +106,37 @@ ON DUPLICATE KEY UPDATE
-- ================================================================
-- 新闻分类
-- ================================================================
INSERT INTO f_news_category (name_zh, name_en, sort_order) VALUES
('公司新闻', 'Company News', 10),
('行业动态', 'Industry News', 20),
('技术文章', 'Technical Articles', 30)
INSERT INTO f_news_category (site_code, name_zh, name_en, sort_order) VALUES
('wuhansaga', '公司新闻', 'Company News', 10),
('wuhansaga', '行业动态', 'Industry News', 20),
('wuhansaga', '技术文章', 'Technical Articles', 30)
ON DUPLICATE KEY UPDATE
site_code = VALUES(site_code),
name_zh = VALUES(name_zh), name_en = VALUES(name_en), sort_order = VALUES(sort_order);
-- ================================================================
-- 新闻文章(示例;生产环境可替换为正式稿件)
-- ================================================================
INSERT INTO f_news (category_id, site_code, title_zh, title_en, excerpt_zh, excerpt_en, content_zh, content_en, is_featured, is_published, sort_order) VALUES
(1, 'wuhansaga', '武汉萨格官网更新上线', 'Wuhan Saga Website Refresh',
'集中展示连续板带处理产线、单体设备及工程案例。',
'Highlighting strip processing lines, equipment and engineering cases.',
'<p>武汉萨格工程技术有限公司官网已升级,客户可通过产品中心了解热镀锌、退火、酸洗及感应加热等成套装备与单体设备,并查阅成功案例与新闻资讯。</p>',
'<p>Wuhan Saga Engineering has refreshed its website for strip galvanizing, annealing, pickling, induction heating solutions, case studies and news.</p>',
1, 1, 10),
(2, 'wuhansaga', '板带处理装备市场观察', 'Strip Processing Equipment Market Notes',
'节能与智能化连续处理机组需求持续增长。',
'Growing demand for energy-efficient intelligent continuous lines.',
'<p>国内外钢铁及加工企业持续投资连续镀锌、退火与酸洗机组。武汉萨格团队在设计与改造项目中注重节能环保与自动化控制。</p>',
'<p>Steel and processing firms continue to invest in continuous galvanizing, annealing and pickling lines with emphasis on energy saving and automation.</p>',
0, 1, 20),
(3, 'wuhansaga', '感应加热在涂层干燥中的应用', 'Induction Heating in Coating Drying',
'非接触加热可提高涂层烘干效率并降低能耗。',
'Non-contact heating can improve drying efficiency and save energy.',
'<p>感应加热适用于涂层干燥等工艺环节,可与产线控制深度集成,实现分区温控与节能运行。</p>',
'<p>Induction heating suits coating drying processes and integrates with line control for zoned temperature and energy saving.</p>',
0, 1, 30);
-- ================================================================
-- 关于我们
-- ================================================================
@@ -278,28 +309,69 @@ ON DUPLICATE KEY UPDATE
-- ================================================================
-- 单体设备
-- ================================================================
INSERT INTO f_single_equipment (category_id, name_zh, name_en, technical_highlights_zh, technical_highlights_en, sort_order) VALUES
(5, '感应加热系统', 'Induction Heating System', '焊缝退火、硅钢轧前加热、涂层干燥', 'Weld annealing, Si-steel preheat, coating drying', 10),
(5, '镀后冷却系统', 'Post-plating Cooling System', '喷气冷却、气雾冷却BLADE喷嘴', 'Jet and air-mist cooling (BLADE nozzles)', 20),
(5, '电磁驱渣器', 'Electromagnetic Slag Drive', '替代人工除渣,自动化锌锅', 'Automated zinc pot skimming', 30),
(5, '红外辐射炉', 'Infrared Radiation Furnace', '涂层干燥,非接触加热', 'Non-contact coating drying', 40),
(5, '氢气回收装置', 'Hydrogen Recovery Unit', '回收率>75%2-3年回本', 'Recovery rate >75%, typical payback 23 years', 50),
(5, '合金化炉', 'Alloy Coating Furnace', '直接火焰加热FLOX/MILDNOx降50-70%', 'FLOX/MILD firing, NOx reduction 50-70%', 60),
(5, '燃烧系统改造', 'Combustion System Revamp', '双燃料切换LPG/NG/COG', 'Dual-fuel switching (LPG/NG/COG)', 70)
ON DUPLICATE KEY UPDATE
name_zh = VALUES(name_zh), name_en = VALUES(name_en), technical_highlights_zh = VALUES(technical_highlights_zh),
INSERT INTO f_single_equipment (category_id, name_zh, name_en, technical_highlights_zh, technical_highlights_en, sort_order, is_published) VALUES
(5, '感应加热系统', 'Induction Heating System', '焊缝退火、硅钢轧前加热、涂层干燥', 'Weld annealing, Si-steel preheat, coating drying', 10, 1),
(5, '镀后冷却系统', 'Post-plating Cooling System', '喷气冷却、气雾冷却BLADE喷嘴', 'Jet and air-mist cooling (BLADE nozzles)', 20, 1),
(5, '电磁驱渣器', 'Electromagnetic Slag Drive', '替代人工除渣,自动化锌锅', 'Automated zinc pot skimming', 30, 1),
(5, '红外辐射炉', 'Infrared Radiation Furnace', '涂层干燥,非接触加热', 'Non-contact coating drying', 40, 1),
(5, '氢气回收装置', 'Hydrogen Recovery Unit', '回收率>75%2-3年回本', 'Recovery rate >75%, typical payback 23 years', 50, 1),
(5, '合金化炉', 'Alloy Coating Furnace', '直接火焰加热FLOX/MILDNOx降50-70%', 'FLOX/MILD firing, NOx reduction 50-70%', 60, 1),
(5, '燃烧系统改造', 'Combustion System Revamp', '双燃料切换LPG/NG/COG', 'Dual-fuel switching (LPG/NG/COG)', 70, 1),
(200, '开收卷机(机型一)', 'Payoff / Tension Reel (Type A)', '板材开卷、张力卷取与收卷', 'Strip payoff, tension reel and recoiling', 200, 1),
(200, '开收卷机(机型二)', 'Payoff / Tension Reel (Type B)', '重载卷取与张力控制', 'Heavy-duty recoiling with tension control', 210, 1),
(201, '立式炉', 'Vertical Furnace', '立式布置热处理炉', 'Vertically arranged heat-treatment furnace', 220, 1),
(201, '卧式炉', 'Horizontal Furnace', '卧式连续热处理炉', 'Horizontal continuous heat-treatment furnace', 230, 1),
(202, '焊机', 'Welder', '带钢闪光焊、搭接焊等', 'Flash welding, lap welding for strip joining', 240, 1),
(202, '立式涂机', 'Vertical Coating Machine', '立式辊涂、涂层施加', 'Vertical roll coater / film application', 250, 1),
(202, '卧式涂机', 'Horizontal Coating Machine', '水平涂覆与烘干前道工序', 'Horizontal coating application', 260, 1),
(203, '破鳞机(机型一)', 'Scale Breaker (Type I)', '热轧氧化铁皮破碎与疏松', 'Breaking and loosening hot-rolled scale', 270, 1),
(203, '破鳞机(机型二)', 'Scale Breaker (Type II)', '另一型式破鳞与延伸', 'Alternative scale breaking configuration', 280, 1),
(204, '拉矫机', 'Tension Leveler', '带钢拉伸弯曲矫直', 'Tension leveling / stretch leveling', 290, 1),
(204, '两弯两矫拉弯矫直机', 'Two-bend Two-straight Stretch-bend Leveler', '多辊拉弯矫直改善板形', 'Multi-roll stretch-bend leveling for strip shape', 300, 1),
(205, '圆盘剪', 'Side Trimmer', '两侧碎边裁剪宽度', 'Side trimming for strip width', 310, 1),
(205, '碎边剪', 'Edge Chop Shear', '碎边切断与收集', 'Chopping and handling of edge trim', 320, 1),
(205, '圆盘剪(双刀头)', 'Side Trimmer (Twin Knife Head)', '双刀头提高修边效率', 'Twin knife heads for trimming efficiency', 330, 1),
(205, '双刀头碎边圆盘剪', 'Twin-head Edge-chop Disc Shear', '碎边与圆盘剪组合结构', 'Combined edge chop and disc shear', 340, 1)
ON DUPLICATE KEY UPDATE
name_zh = VALUES(name_zh), name_en = VALUES(name_en), technical_highlights_zh = VALUES(technical_highlights_zh),
technical_highlights_en = VALUES(technical_highlights_en), sort_order = VALUES(sort_order);
-- ================================================================
-- 备品备件
-- 成套机组与单体设备关联(与 f_single_equipment 自增 ID 顺序一致,可后台调整)
-- ================================================================
INSERT INTO f_spare_part (category_id, name_zh, name_en, description_zh, description_en, sort_order) VALUES
(6, '辐射管W/I/U型', 'Radiant Tubes (W/I/U)', '工业炉用辐射管', 'Radiant tubes for industrial furnaces', 10),
(6, '换热器', 'Heat Exchangers', '翅片管换热器、RJC换热器等', 'Finned tube and RJC-type exchangers', 20),
(6, '炉辊与张力辊', 'Hearth & Tension Rolls', '炉辊、大炉辊、张力辊、转向辊等', 'Hearth rolls, tension rolls, deflector rolls', 30)
ON DUPLICATE KEY UPDATE
name_zh = VALUES(name_zh), name_en = VALUES(name_en), description_zh = VALUES(description_zh),
description_en = VALUES(description_en), sort_order = VALUES(sort_order);
INSERT INTO f_product_line_equipment (product_line_id, equipment_id, sort_order) VALUES
(1, 3, 10), (1, 6, 20), (1, 2, 30), (1, 5, 40), (1, 1, 50), (1, 7, 60),
(2, 2, 10), (2, 5, 20), (2, 6, 30), (2, 7, 40),
(3, 10, 10), (3, 11, 20), (3, 4, 30), (3, 17, 40),
(4, 10, 10), (4, 11, 20), (4, 8, 30), (4, 9, 40), (4, 2, 50), (4, 6, 60),
(5, 4, 10), (5, 1, 20), (5, 13, 30), (5, 14, 40),
(6, 1, 10), (6, 10, 20), (6, 11, 30), (6, 5, 40),
(7, 15, 10), (7, 16, 20), (7, 17, 30), (7, 19, 40),
(8, 10, 10), (8, 11, 20), (8, 12, 30),
(9, 17, 10), (9, 18, 20), (9, 19, 30), (9, 20, 40), (9, 8, 50)
ON DUPLICATE KEY UPDATE sort_order = VALUES(sort_order);
-- ================================================================
-- 备品备件(产品目录单品,与官网图册一致;封面请在后台上传 cover_image
-- ================================================================
INSERT INTO f_spare_part (category_id, name_zh, name_en, description_zh, description_en, sort_order, is_published) VALUES
(6, '翅片管换热器', 'Finned Tube Heat Exchanger', '备品备件', 'Spare parts', 10, 1),
(6, 'RJC 换热器', 'RJC Heat exchanger', '备品备件', 'Spare parts', 20, 1),
(6, 'W 型辐射管', 'W-radiant tube', '备品备件', 'Spare parts', 30, 1),
(6, 'I 型辐射管', 'I-type Radiant Tube', '备品备件', 'Spare parts', 40, 1),
(6, 'U 型辐射管', 'U-Radiant Tube', '备品备件', 'Spare parts', 50, 1),
(6, '滑块', 'Slide Block', '备品备件', 'Spare parts', 60, 1),
(6, '轴套衬套', 'Bush and Sleeve', '备品备件', 'Spare parts', 70, 1),
(6, '支臂', 'Support Arm', '备品备件', 'Spare parts', 80, 1),
(6, '炉辊', 'Hearth Roll', '备品备件', 'Spare parts', 90, 1),
(6, '大炉辊', 'Big Hearth Roll', '备品备件', 'Spare parts', 100, 1),
(6, '镀铬辊', 'Chromed Roll', '备品备件', 'Spare parts', 110, 1),
(6, '氯丁胶转向辊', 'Rubber Turning Roll', '备品备件', 'Spare parts', 120, 1),
(6, '聚氨酯辊', 'PU Roll', '备品备件', 'Spare parts', 130, 1),
(6, '汲料辊', 'Pick Up Roll', '备品备件', 'Spare parts', 140, 1),
(6, '托辊', 'Support Roll', '备品备件', 'Spare parts', 150, 1),
(6, '水淬辊', 'Water Quenching Roll', '备品备件', 'Spare parts', 160, 1),
(6, '张力辊', 'Bridle Roll', '备品备件', 'Spare parts', 170, 1);
-- ================================================================
-- 成功案例
@@ -321,4 +393,5 @@ ON DUPLICATE KEY UPDATE
ALTER TABLE f_company_info AUTO_INCREMENT = 2;
ALTER TABLE f_case_category AUTO_INCREMENT = 9;
ALTER TABLE f_news_category AUTO_INCREMENT = 4;
ALTER TABLE f_news AUTO_INCREMENT = 4;
ALTER TABLE f_media_library AUTO_INCREMENT = 500;