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

@@ -195,6 +195,7 @@ CREATE TABLE IF NOT EXISTS f_product_category (
product_category_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
name_zh VARCHAR(100) NOT NULL COMMENT '分类名称(中文)',
name_en VARCHAR(100) NOT NULL COMMENT '分类名称(英文)',
module_type VARCHAR(20) NOT NULL DEFAULT 'product_line' COMMENT '模块类型 product_line/equipment/spare_part',
parent_id BIGINT NULL COMMENT '父分类ID',
icon_class VARCHAR(100) COMMENT '图标类名',
sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
@@ -280,6 +281,19 @@ CREATE TABLE IF NOT EXISTS f_single_equipment (
KEY idx_f_single_equipment_category (category_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='单体设备';
-- ================================================================
-- 成套机组与单体设备关联表(多对多)
-- ================================================================
CREATE TABLE IF NOT EXISTS f_product_line_equipment (
product_line_equipment_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
product_line_id BIGINT NOT NULL COMMENT '成套机组ID',
equipment_id BIGINT NOT NULL COMMENT '单体设备IDf_single_equipment',
sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
PRIMARY KEY (product_line_equipment_id),
UNIQUE KEY uk_f_ple_line_equipment (product_line_id, equipment_id),
KEY idx_f_ple_equipment (equipment_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='成套机组关联单体设备';
-- ================================================================
-- 备品备件表
-- ================================================================
@@ -366,6 +380,7 @@ CREATE TABLE IF NOT EXISTS f_case_study (
-- ================================================================
CREATE TABLE IF NOT EXISTS f_news_category (
category_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
site_code VARCHAR(32) NOT NULL DEFAULT 'wuhansaga' COMMENT '站点编码:小写英文短码,与 f_news.site_code 取值域一致',
name_zh VARCHAR(100) NOT NULL COMMENT '分类名称(中文)',
name_en VARCHAR(100) NOT NULL COMMENT '分类名称(英文)',
sort_order INT NOT NULL DEFAULT 0 COMMENT '排序',
@@ -376,7 +391,8 @@ CREATE TABLE IF NOT EXISTS f_news_category (
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志0正常 1删除',
PRIMARY KEY (category_id)
PRIMARY KEY (category_id),
KEY idx_f_news_category_site (site_code, del_flag, is_published, sort_order)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='新闻分类';
-- ================================================================
@@ -385,6 +401,7 @@ CREATE TABLE IF NOT EXISTS f_news_category (
CREATE TABLE IF NOT EXISTS f_news (
news_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
category_id BIGINT NOT NULL COMMENT '所属分类',
site_code VARCHAR(32) NOT NULL DEFAULT 'wuhansaga' COMMENT '站点编码:与分类 site_code 一致,用于多站点数据隔离',
title_zh VARCHAR(200) NOT NULL COMMENT '标题(中文)',
title_en VARCHAR(200) NOT NULL COMMENT '标题(英文)',
excerpt_zh TEXT COMMENT '摘要(中文)',
@@ -408,6 +425,8 @@ CREATE TABLE IF NOT EXISTS f_news (
remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志0正常 1删除',
PRIMARY KEY (news_id),
KEY idx_f_news_site_list (site_code, del_flag, is_published, category_id),
KEY idx_f_news_site_time (site_code, del_flag, is_published, create_time),
KEY idx_f_news_category (category_id),
KEY idx_f_news_create_time (create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='新闻文章';
@@ -534,6 +553,14 @@ ALTER TABLE f_single_equipment
FOREIGN KEY (category_id) REFERENCES f_product_category (product_category_id)
ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE f_product_line_equipment
ADD CONSTRAINT fk_f_ple_product_line
FOREIGN KEY (product_line_id) REFERENCES f_product_line (product_line_id)
ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT fk_f_ple_single_equipment
FOREIGN KEY (equipment_id) REFERENCES f_single_equipment (single_equipment_id)
ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE f_spare_part
ADD CONSTRAINT fk_f_spare_part_category
FOREIGN KEY (category_id) REFERENCES f_product_category (product_category_id)