category_id = #{categoryId},
+ site_code = #{siteCode},
title_zh = #{titleZh},
title_en = #{titleEn},
excerpt_zh = #{excerptZh},
@@ -80,6 +106,11 @@
content_zh = #{contentZh},
content_en = #{contentEn},
cover_image = #{coverImage},
+ meta_title_zh = #{metaTitleZh},
+ meta_title_en = #{metaTitleEn},
+ meta_description_zh = #{metaDescriptionZh},
+ meta_description_en = #{metaDescriptionEn},
+ meta_keywords = #{metaKeywords},
is_featured = #{isFeatured},
is_published = #{isPublished},
sort_order = #{sortOrder},
diff --git a/server/src/main/resources/schema.sql b/server/src/main/resources/schema.sql
index cd9ab816..3dd85322 100644
--- a/server/src/main/resources/schema.sql
+++ b/server/src/main/resources/schema.sql
@@ -380,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 '排序',
@@ -390,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='新闻分类';
-- ================================================================
@@ -399,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 '摘要(中文)',
@@ -422,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='新闻文章';
diff --git a/server/target/classes/application.yml b/server/target/classes/application.yml
index c5ca9bbf..838b6190 100644
--- a/server/target/classes/application.yml
+++ b/server/target/classes/application.yml
@@ -60,3 +60,9 @@ upload:
path: uploads/
allowed-types: image/jpeg,image/png,image/gif,image/webp,image/svg+xml,video/mp4,video/webm
max-size: 52428800
+
+# 新闻中心多站点:单部署实例默认站点;扩展编码时改 allowed-site-codes 与库内数据
+app:
+ portal:
+ site-code: wuhansaga
+ allowed-site-codes: wuhansaga,saga-secondary
diff --git a/server/target/classes/com/wuhansaga/server/WuhanSagaApplication.class b/server/target/classes/com/wuhansaga/server/WuhanSagaApplication.class
index a23e5826..67441d3d 100644
Binary files a/server/target/classes/com/wuhansaga/server/WuhanSagaApplication.class and b/server/target/classes/com/wuhansaga/server/WuhanSagaApplication.class differ
diff --git a/server/target/classes/com/wuhansaga/server/common/BizException.class b/server/target/classes/com/wuhansaga/server/common/BizException.class
index 1b546489..b5c17f4a 100644
Binary files a/server/target/classes/com/wuhansaga/server/common/BizException.class and b/server/target/classes/com/wuhansaga/server/common/BizException.class differ
diff --git a/server/target/classes/com/wuhansaga/server/common/PageQuery.class b/server/target/classes/com/wuhansaga/server/common/PageQuery.class
index 3d9324ca..63067bec 100644
Binary files a/server/target/classes/com/wuhansaga/server/common/PageQuery.class and b/server/target/classes/com/wuhansaga/server/common/PageQuery.class differ
diff --git a/server/target/classes/com/wuhansaga/server/common/PageResult.class b/server/target/classes/com/wuhansaga/server/common/PageResult.class
index a05ecffb..76bc18a9 100644
Binary files a/server/target/classes/com/wuhansaga/server/common/PageResult.class and b/server/target/classes/com/wuhansaga/server/common/PageResult.class differ
diff --git a/server/target/classes/com/wuhansaga/server/config/OpenApiConfig.class b/server/target/classes/com/wuhansaga/server/config/OpenApiConfig.class
index 265d7ff5..db9d4720 100644
Binary files a/server/target/classes/com/wuhansaga/server/config/OpenApiConfig.class and b/server/target/classes/com/wuhansaga/server/config/OpenApiConfig.class differ
diff --git a/server/target/classes/com/wuhansaga/server/config/PortalSiteProperties.class b/server/target/classes/com/wuhansaga/server/config/PortalSiteProperties.class
new file mode 100644
index 00000000..016eaee3
Binary files /dev/null and b/server/target/classes/com/wuhansaga/server/config/PortalSiteProperties.class differ
diff --git a/server/target/classes/com/wuhansaga/server/config/PortalSiteResolver.class b/server/target/classes/com/wuhansaga/server/config/PortalSiteResolver.class
new file mode 100644
index 00000000..c9129e37
Binary files /dev/null and b/server/target/classes/com/wuhansaga/server/config/PortalSiteResolver.class differ
diff --git a/server/target/classes/com/wuhansaga/server/config/RedisConfig.class b/server/target/classes/com/wuhansaga/server/config/RedisConfig.class
index a1fdbae5..d8ca2d0b 100644
Binary files a/server/target/classes/com/wuhansaga/server/config/RedisConfig.class and b/server/target/classes/com/wuhansaga/server/config/RedisConfig.class differ
diff --git a/server/target/classes/com/wuhansaga/server/config/SaTokenConfig.class b/server/target/classes/com/wuhansaga/server/config/SaTokenConfig.class
index b2432942..84f76de4 100644
Binary files a/server/target/classes/com/wuhansaga/server/config/SaTokenConfig.class and b/server/target/classes/com/wuhansaga/server/config/SaTokenConfig.class differ
diff --git a/server/target/classes/com/wuhansaga/server/config/WebMvcConfig.class b/server/target/classes/com/wuhansaga/server/config/WebMvcConfig.class
index 7ff84fef..765b61d7 100644
Binary files a/server/target/classes/com/wuhansaga/server/config/WebMvcConfig.class and b/server/target/classes/com/wuhansaga/server/config/WebMvcConfig.class differ
diff --git a/server/target/classes/com/wuhansaga/server/constant/SiteCodes.class b/server/target/classes/com/wuhansaga/server/constant/SiteCodes.class
new file mode 100644
index 00000000..1f331a17
Binary files /dev/null and b/server/target/classes/com/wuhansaga/server/constant/SiteCodes.class differ
diff --git a/server/target/classes/com/wuhansaga/server/controller/admin/AdminNewsController.class b/server/target/classes/com/wuhansaga/server/controller/admin/AdminNewsController.class
index 93bdf597..2ba8543e 100644
Binary files a/server/target/classes/com/wuhansaga/server/controller/admin/AdminNewsController.class and b/server/target/classes/com/wuhansaga/server/controller/admin/AdminNewsController.class differ
diff --git a/server/target/classes/com/wuhansaga/server/controller/admin/AdminProductLineController.class b/server/target/classes/com/wuhansaga/server/controller/admin/AdminProductLineController.class
index 4954035d..27b79356 100644
Binary files a/server/target/classes/com/wuhansaga/server/controller/admin/AdminProductLineController.class and b/server/target/classes/com/wuhansaga/server/controller/admin/AdminProductLineController.class differ
diff --git a/server/target/classes/com/wuhansaga/server/controller/portal/PortalNewsController.class b/server/target/classes/com/wuhansaga/server/controller/portal/PortalNewsController.class
index b95e686c..d2accee0 100644
Binary files a/server/target/classes/com/wuhansaga/server/controller/portal/PortalNewsController.class and b/server/target/classes/com/wuhansaga/server/controller/portal/PortalNewsController.class differ
diff --git a/server/target/classes/com/wuhansaga/server/controller/portal/PortalProductController.class b/server/target/classes/com/wuhansaga/server/controller/portal/PortalProductController.class
index c9a5f397..f3fe82e0 100644
Binary files a/server/target/classes/com/wuhansaga/server/controller/portal/PortalProductController.class and b/server/target/classes/com/wuhansaga/server/controller/portal/PortalProductController.class differ
diff --git a/server/target/classes/com/wuhansaga/server/entity/MediaLibrary.class b/server/target/classes/com/wuhansaga/server/entity/MediaLibrary.class
index 7ba4dc54..8fb2772e 100644
Binary files a/server/target/classes/com/wuhansaga/server/entity/MediaLibrary.class and b/server/target/classes/com/wuhansaga/server/entity/MediaLibrary.class differ
diff --git a/server/target/classes/com/wuhansaga/server/entity/News.class b/server/target/classes/com/wuhansaga/server/entity/News.class
index 65cc530f..af0abdcc 100644
Binary files a/server/target/classes/com/wuhansaga/server/entity/News.class and b/server/target/classes/com/wuhansaga/server/entity/News.class differ
diff --git a/server/target/classes/com/wuhansaga/server/entity/NewsCategory.class b/server/target/classes/com/wuhansaga/server/entity/NewsCategory.class
index 306a9ce7..00ee26b7 100644
Binary files a/server/target/classes/com/wuhansaga/server/entity/NewsCategory.class and b/server/target/classes/com/wuhansaga/server/entity/NewsCategory.class differ
diff --git a/server/target/classes/com/wuhansaga/server/entity/ProductCategory.class b/server/target/classes/com/wuhansaga/server/entity/ProductCategory.class
index 18f2692c..f7b39202 100644
Binary files a/server/target/classes/com/wuhansaga/server/entity/ProductCategory.class and b/server/target/classes/com/wuhansaga/server/entity/ProductCategory.class differ
diff --git a/server/target/classes/com/wuhansaga/server/entity/ProductLine.class b/server/target/classes/com/wuhansaga/server/entity/ProductLine.class
index 479065c3..b893108f 100644
Binary files a/server/target/classes/com/wuhansaga/server/entity/ProductLine.class and b/server/target/classes/com/wuhansaga/server/entity/ProductLine.class differ
diff --git a/server/target/classes/com/wuhansaga/server/entity/SingleEquipment.class b/server/target/classes/com/wuhansaga/server/entity/SingleEquipment.class
index 9214ad43..81f48732 100644
Binary files a/server/target/classes/com/wuhansaga/server/entity/SingleEquipment.class and b/server/target/classes/com/wuhansaga/server/entity/SingleEquipment.class differ
diff --git a/server/target/classes/com/wuhansaga/server/entity/SparePart.class b/server/target/classes/com/wuhansaga/server/entity/SparePart.class
index 3b163198..7e114c4a 100644
Binary files a/server/target/classes/com/wuhansaga/server/entity/SparePart.class and b/server/target/classes/com/wuhansaga/server/entity/SparePart.class differ
diff --git a/server/target/classes/com/wuhansaga/server/mapper/CaseCategoryMapper.class b/server/target/classes/com/wuhansaga/server/mapper/CaseCategoryMapper.class
index 05b10e80..a375f6a1 100644
Binary files a/server/target/classes/com/wuhansaga/server/mapper/CaseCategoryMapper.class and b/server/target/classes/com/wuhansaga/server/mapper/CaseCategoryMapper.class differ
diff --git a/server/target/classes/com/wuhansaga/server/mapper/CompanyInfoMapper.class b/server/target/classes/com/wuhansaga/server/mapper/CompanyInfoMapper.class
index 56382dae..9dd0c256 100644
Binary files a/server/target/classes/com/wuhansaga/server/mapper/CompanyInfoMapper.class and b/server/target/classes/com/wuhansaga/server/mapper/CompanyInfoMapper.class differ
diff --git a/server/target/classes/com/wuhansaga/server/mapper/ContactMapper.class b/server/target/classes/com/wuhansaga/server/mapper/ContactMapper.class
index 6a8c17bc..cd782075 100644
Binary files a/server/target/classes/com/wuhansaga/server/mapper/ContactMapper.class and b/server/target/classes/com/wuhansaga/server/mapper/ContactMapper.class differ
diff --git a/server/target/classes/com/wuhansaga/server/mapper/CoreTechnologyMapper.class b/server/target/classes/com/wuhansaga/server/mapper/CoreTechnologyMapper.class
index 399f1061..6293b69a 100644
Binary files a/server/target/classes/com/wuhansaga/server/mapper/CoreTechnologyMapper.class and b/server/target/classes/com/wuhansaga/server/mapper/CoreTechnologyMapper.class differ
diff --git a/server/target/classes/com/wuhansaga/server/mapper/NewsCategoryMapper.class b/server/target/classes/com/wuhansaga/server/mapper/NewsCategoryMapper.class
index 170b5f37..bf5b04ab 100644
Binary files a/server/target/classes/com/wuhansaga/server/mapper/NewsCategoryMapper.class and b/server/target/classes/com/wuhansaga/server/mapper/NewsCategoryMapper.class differ
diff --git a/server/target/classes/com/wuhansaga/server/mapper/NewsMapper.class b/server/target/classes/com/wuhansaga/server/mapper/NewsMapper.class
index cc2884ed..e808518d 100644
Binary files a/server/target/classes/com/wuhansaga/server/mapper/NewsMapper.class and b/server/target/classes/com/wuhansaga/server/mapper/NewsMapper.class differ
diff --git a/server/target/classes/com/wuhansaga/server/mapper/ProductCategoryMapper.class b/server/target/classes/com/wuhansaga/server/mapper/ProductCategoryMapper.class
index fa83f437..fad989a8 100644
Binary files a/server/target/classes/com/wuhansaga/server/mapper/ProductCategoryMapper.class and b/server/target/classes/com/wuhansaga/server/mapper/ProductCategoryMapper.class differ
diff --git a/server/target/classes/com/wuhansaga/server/mapper/ProductLineEquipmentMapper.class b/server/target/classes/com/wuhansaga/server/mapper/ProductLineEquipmentMapper.class
index 73662ba3..83813a9c 100644
Binary files a/server/target/classes/com/wuhansaga/server/mapper/ProductLineEquipmentMapper.class and b/server/target/classes/com/wuhansaga/server/mapper/ProductLineEquipmentMapper.class differ
diff --git a/server/target/classes/com/wuhansaga/server/mapper/SingleEquipmentMapper.class b/server/target/classes/com/wuhansaga/server/mapper/SingleEquipmentMapper.class
index d391a110..8a43999c 100644
Binary files a/server/target/classes/com/wuhansaga/server/mapper/SingleEquipmentMapper.class and b/server/target/classes/com/wuhansaga/server/mapper/SingleEquipmentMapper.class differ
diff --git a/server/target/classes/com/wuhansaga/server/service/AboutService.class b/server/target/classes/com/wuhansaga/server/service/AboutService.class
index 76b3d616..f3063c1f 100644
Binary files a/server/target/classes/com/wuhansaga/server/service/AboutService.class and b/server/target/classes/com/wuhansaga/server/service/AboutService.class differ
diff --git a/server/target/classes/com/wuhansaga/server/service/AuthService.class b/server/target/classes/com/wuhansaga/server/service/AuthService.class
index dda9d2c8..aaa6fcdc 100644
Binary files a/server/target/classes/com/wuhansaga/server/service/AuthService.class and b/server/target/classes/com/wuhansaga/server/service/AuthService.class differ
diff --git a/server/target/classes/com/wuhansaga/server/service/BannerService.class b/server/target/classes/com/wuhansaga/server/service/BannerService.class
index 08654da1..7eb3ebd5 100644
Binary files a/server/target/classes/com/wuhansaga/server/service/BannerService.class and b/server/target/classes/com/wuhansaga/server/service/BannerService.class differ
diff --git a/server/target/classes/com/wuhansaga/server/service/CaseCategoryService.class b/server/target/classes/com/wuhansaga/server/service/CaseCategoryService.class
index 6209f1d3..0c109064 100644
Binary files a/server/target/classes/com/wuhansaga/server/service/CaseCategoryService.class and b/server/target/classes/com/wuhansaga/server/service/CaseCategoryService.class differ
diff --git a/server/target/classes/com/wuhansaga/server/service/CaseStudyService.class b/server/target/classes/com/wuhansaga/server/service/CaseStudyService.class
index 8dc84efc..53293da4 100644
Binary files a/server/target/classes/com/wuhansaga/server/service/CaseStudyService.class and b/server/target/classes/com/wuhansaga/server/service/CaseStudyService.class differ
diff --git a/server/target/classes/com/wuhansaga/server/service/CompanyInfoService.class b/server/target/classes/com/wuhansaga/server/service/CompanyInfoService.class
index 733e32f7..172820d3 100644
Binary files a/server/target/classes/com/wuhansaga/server/service/CompanyInfoService.class and b/server/target/classes/com/wuhansaga/server/service/CompanyInfoService.class differ
diff --git a/server/target/classes/com/wuhansaga/server/service/CoreTechnologyService.class b/server/target/classes/com/wuhansaga/server/service/CoreTechnologyService.class
index 331799f5..8cf1fc99 100644
Binary files a/server/target/classes/com/wuhansaga/server/service/CoreTechnologyService.class and b/server/target/classes/com/wuhansaga/server/service/CoreTechnologyService.class differ
diff --git a/server/target/classes/com/wuhansaga/server/service/MediaLibraryService.class b/server/target/classes/com/wuhansaga/server/service/MediaLibraryService.class
index 25134934..c1a06642 100644
Binary files a/server/target/classes/com/wuhansaga/server/service/MediaLibraryService.class and b/server/target/classes/com/wuhansaga/server/service/MediaLibraryService.class differ
diff --git a/server/target/classes/com/wuhansaga/server/service/NewsCategoryService.class b/server/target/classes/com/wuhansaga/server/service/NewsCategoryService.class
index 479d115f..2931e821 100644
Binary files a/server/target/classes/com/wuhansaga/server/service/NewsCategoryService.class and b/server/target/classes/com/wuhansaga/server/service/NewsCategoryService.class differ
diff --git a/server/target/classes/com/wuhansaga/server/service/NewsService.class b/server/target/classes/com/wuhansaga/server/service/NewsService.class
index e4f78c25..b84ff8cb 100644
Binary files a/server/target/classes/com/wuhansaga/server/service/NewsService.class and b/server/target/classes/com/wuhansaga/server/service/NewsService.class differ
diff --git a/server/target/classes/com/wuhansaga/server/service/ProductCategoryService.class b/server/target/classes/com/wuhansaga/server/service/ProductCategoryService.class
index b313ecbd..527fbefc 100644
Binary files a/server/target/classes/com/wuhansaga/server/service/ProductCategoryService.class and b/server/target/classes/com/wuhansaga/server/service/ProductCategoryService.class differ
diff --git a/server/target/classes/com/wuhansaga/server/service/ProductLineService.class b/server/target/classes/com/wuhansaga/server/service/ProductLineService.class
index 6469f8ca..65e2b022 100644
Binary files a/server/target/classes/com/wuhansaga/server/service/ProductLineService.class and b/server/target/classes/com/wuhansaga/server/service/ProductLineService.class differ
diff --git a/server/target/classes/com/wuhansaga/server/service/SingleEquipmentService.class b/server/target/classes/com/wuhansaga/server/service/SingleEquipmentService.class
index 4b5a045e..e846500f 100644
Binary files a/server/target/classes/com/wuhansaga/server/service/SingleEquipmentService.class and b/server/target/classes/com/wuhansaga/server/service/SingleEquipmentService.class differ
diff --git a/server/target/classes/com/wuhansaga/server/service/SparePartService.class b/server/target/classes/com/wuhansaga/server/service/SparePartService.class
index 550a3872..b70caad1 100644
Binary files a/server/target/classes/com/wuhansaga/server/service/SparePartService.class and b/server/target/classes/com/wuhansaga/server/service/SparePartService.class differ
diff --git a/server/target/classes/com/wuhansaga/server/service/WorkshopService.class b/server/target/classes/com/wuhansaga/server/service/WorkshopService.class
index d103977c..68244cf0 100644
Binary files a/server/target/classes/com/wuhansaga/server/service/WorkshopService.class and b/server/target/classes/com/wuhansaga/server/service/WorkshopService.class differ
diff --git a/server/target/classes/data.sql b/server/target/classes/data.sql
index 102a72f6..3bc6b3d6 100644
--- a/server/target/classes/data.sql
+++ b/server/target/classes/data.sql
@@ -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.',
+ '武汉萨格工程技术有限公司官网已升级,客户可通过产品中心了解热镀锌、退火、酸洗及感应加热等成套装备与单体设备,并查阅成功案例与新闻资讯。
',
+ 'Wuhan Saga Engineering has refreshed its website for strip galvanizing, annealing, pickling, induction heating solutions, case studies and news.
',
+ 1, 1, 10),
+ (2, 'wuhansaga', '板带处理装备市场观察', 'Strip Processing Equipment Market Notes',
+ '节能与智能化连续处理机组需求持续增长。',
+ 'Growing demand for energy-efficient intelligent continuous lines.',
+ '国内外钢铁及加工企业持续投资连续镀锌、退火与酸洗机组。武汉萨格团队在设计与改造项目中注重节能环保与自动化控制。
',
+ 'Steel and processing firms continue to invest in continuous galvanizing, annealing and pickling lines with emphasis on energy saving and automation.
',
+ 0, 1, 20),
+ (3, 'wuhansaga', '感应加热在涂层干燥中的应用', 'Induction Heating in Coating Drying',
+ '非接触加热可提高涂层烘干效率并降低能耗。',
+ 'Non-contact heating can improve drying efficiency and save energy.',
+ '感应加热适用于涂层干燥等工艺环节,可与产线控制深度集成,实现分区温控与节能运行。
',
+ 'Induction heating suits coating drying processes and integrates with line control for zoned temperature and energy saving.
',
+ 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 2–3 years', 50),
- (5, '合金化炉', 'Alloy Coating Furnace', '直接火焰加热(FLOX/MILD),NOx降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 2–3 years', 50, 1),
+ (5, '合金化炉', 'Alloy Coating Furnace', '直接火焰加热(FLOX/MILD),NOx降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;
\ No newline at end of file
diff --git a/server/target/classes/mapper/NewsCategoryMapper.xml b/server/target/classes/mapper/NewsCategoryMapper.xml
index 125430ff..57bb83bb 100644
--- a/server/target/classes/mapper/NewsCategoryMapper.xml
+++ b/server/target/classes/mapper/NewsCategoryMapper.xml
@@ -7,11 +7,15 @@
- INSERT INTO f_news_category (name_zh, name_en, sort_order, is_published, create_by, remark)
- VALUES (#{nameZh}, #{nameEn}, #{sortOrder}, #{isPublished}, #{createBy}, #{remark})
+ INSERT INTO f_news_category (site_code, name_zh, name_en, sort_order, is_published, create_by, remark)
+ VALUES (#{siteCode}, #{nameZh}, #{nameEn}, #{sortOrder}, #{isPublished}, #{createBy}, #{remark})
UPDATE f_news_category
+ site_code = #{siteCode},
name_zh = #{nameZh},
name_en = #{nameEn},
sort_order = #{sortOrder},
diff --git a/server/target/classes/mapper/NewsMapper.xml b/server/target/classes/mapper/NewsMapper.xml
index 065a5653..3927f612 100644
--- a/server/target/classes/mapper/NewsMapper.xml
+++ b/server/target/classes/mapper/NewsMapper.xml
@@ -5,6 +5,7 @@
+
@@ -12,11 +13,21 @@
+
+
+
+
+
+
+
+
+
+
@@ -26,8 +37,10 @@
FROM f_news n
LEFT JOIN f_news_category nc ON n.category_id = nc.category_id
WHERE n.del_flag = 0
+ AND n.site_code = #{siteCode}
AND n.category_id = #{categoryId}
AND n.is_featured = #{isFeatured}
+ AND n.is_published = #{isPublished}
AND (n.title_zh LIKE CONCAT('%',#{keyword},'%') OR n.title_en LIKE CONCAT('%',#{keyword},'%'))
@@ -35,11 +48,14 @@
@@ -48,6 +64,7 @@
FROM f_news n
LEFT JOIN f_news_category nc ON n.category_id = nc.category_id
WHERE n.del_flag = 0 AND n.is_published = 1
+ AND n.site_code = #{siteCode}
AND n.category_id = #{categoryId}
AND n.is_featured = #{isFeatured}
ORDER BY n.sort_order ASC, n.create_time DESC
@@ -60,11 +77,19 @@
WHERE n.news_id = #{id} AND n.del_flag = 0
+
+
- INSERT INTO f_news (category_id, title_zh, title_en, excerpt_zh, excerpt_en, content_zh, content_en,
+ INSERT INTO f_news (category_id, site_code, title_zh, title_en, excerpt_zh, excerpt_en, content_zh, content_en,
cover_image, meta_title_zh, meta_title_en, meta_description_zh, meta_description_en,
meta_keywords, is_featured, is_published, sort_order, create_by, remark)
- VALUES (#{categoryId}, #{titleZh}, #{titleEn}, #{excerptZh}, #{excerptEn}, #{contentZh}, #{contentEn},
+ VALUES (#{categoryId}, #{siteCode}, #{titleZh}, #{titleEn}, #{excerptZh}, #{excerptEn}, #{contentZh}, #{contentEn},
#{coverImage}, #{metaTitleZh}, #{metaTitleEn}, #{metaDescriptionZh}, #{metaDescriptionEn},
#{metaKeywords}, #{isFeatured}, #{isPublished}, #{sortOrder}, #{createBy}, #{remark})
@@ -73,6 +98,7 @@
UPDATE f_news
category_id = #{categoryId},
+ site_code = #{siteCode},
title_zh = #{titleZh},
title_en = #{titleEn},
excerpt_zh = #{excerptZh},
@@ -80,6 +106,11 @@
content_zh = #{contentZh},
content_en = #{contentEn},
cover_image = #{coverImage},
+ meta_title_zh = #{metaTitleZh},
+ meta_title_en = #{metaTitleEn},
+ meta_description_zh = #{metaDescriptionZh},
+ meta_description_en = #{metaDescriptionEn},
+ meta_keywords = #{metaKeywords},
is_featured = #{isFeatured},
is_published = #{isPublished},
sort_order = #{sortOrder},
diff --git a/server/target/classes/schema.sql b/server/target/classes/schema.sql
index c13244ce..3dd85322 100644
--- a/server/target/classes/schema.sql
+++ b/server/target/classes/schema.sql
@@ -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 '单体设备ID(f_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)
diff --git a/server/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/server/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index 913d31a4..bfd4da2c 100644
--- a/server/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/server/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -2,6 +2,7 @@ com\wuhansaga\server\entity\CaseStudy.class
com\wuhansaga\server\WuhanSagaApplication.class
com\wuhansaga\server\entity\CompanyInfo.class
com\wuhansaga\server\controller\portal\PortalAboutController.class
+com\wuhansaga\server\constant\SiteCodes.class
com\wuhansaga\server\mapper\SingleEquipmentMapper.class
com\wuhansaga\server\mapper\ProductCategoryMapper.class
com\wuhansaga\server\service\WorkshopService.class
@@ -33,6 +34,7 @@ com\wuhansaga\server\common\GlobalExceptionHandler.class
com\wuhansaga\server\mapper\NewsCategoryMapper.class
com\wuhansaga\server\controller\admin\AdminMediaController.class
com\wuhansaga\server\mapper\ProductMediaMapper.class
+com\wuhansaga\server\config\PortalSiteResolver.class
com\wuhansaga\server\service\CaseCategoryService.class
com\wuhansaga\server\service\ProductLineService.class
com\wuhansaga\server\service\SingleEquipmentService.class
@@ -65,6 +67,7 @@ com\wuhansaga\server\service\SparePartService.class
com\wuhansaga\server\mapper\CoreTechnologyMapper.class
com\wuhansaga\server\mapper\ProductLineMapper.class
com\wuhansaga\server\controller\admin\AdminNewsController.class
+com\wuhansaga\server\config\PortalSiteProperties.class
com\wuhansaga\server\controller\admin\AdminSparePartController.class
com\wuhansaga\server\service\NewsService.class
com\wuhansaga\server\controller\admin\AdminCoreTechnologyController.class
diff --git a/server/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/server/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index 9bc2abb8..db7fbce4 100644
--- a/server/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/server/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -4,9 +4,12 @@ D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com
D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\common\PageResult.java
D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\common\R.java
D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\config\OpenApiConfig.java
+D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\config\PortalSiteProperties.java
+D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\config\PortalSiteResolver.java
D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\config\RedisConfig.java
D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\config\SaTokenConfig.java
D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\config\WebMvcConfig.java
+D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\constant\SiteCodes.java
D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\controller\admin\AdminAboutController.java
D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\controller\admin\AdminAuthController.java
D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\controller\admin\AdminBannerController.java
@@ -58,6 +61,7 @@ D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com
D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\mapper\NewsCategoryMapper.java
D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\mapper\NewsMapper.java
D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\mapper\ProductCategoryMapper.java
+D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\mapper\ProductLineEquipmentMapper.java
D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\mapper\ProductLineMapper.java
D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\mapper\ProductMediaMapper.java
D:\DeXun_workspace\projects\wuhan-saga-official-website\server\src\main\java\com\wuhansaga\server\mapper\SingleEquipmentMapper.java