feat(app): 添加多模板关于我们页面及相关路由和404页面

- 新增404页面,优化未找到页面体验,避免被搜索引擎索引
- 增加文件代理接口,隐藏真实文件服务器地址,支持文件请求代理
- 实现/article、/case、/product及/page动态路由兼容列表与详情展示
- 添加动态CMS页面兼容入口处理旧式路径,统一路由与SEO设置
- 新增模板1、模板7、模板2、模板3关于我们页面,实现多模板支持
- 模板增强支持CMS单页内容加载及SEO信息动态设置
- 配置环境变量及Git忽略文件规则辅助开发和构建环境管理
This commit is contained in:
2026-09-08 12:13:44 +08:00
commit 2b69686795
381 changed files with 59891 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
# 首页优势模块 - 后端对接说明
前端(website-template)与后台(website-admin)已改造完成,数据通过 `cms_website_setting.features` 字段贯通。
本文件说明 **Java 后端** 需要补齐的两处改动,否则后台配置无法真正持久化 / 下发给前台。
## 1. 数据库
执行 `database/add-website-setting-features.sql`
```sql
ALTER TABLE cms_website_setting
ADD COLUMN features TEXT NULL
COMMENT '首页优势模块配置(JSON)';
```
## 2. 实体 `CmsWebsiteSetting`
`com.gxwebsoft.cms.entity.CmsWebsiteSetting` 增加字段(MyBatis-Plus 自动建表/映射):
```java
@TableField("features")
private String features; // 首页优势模块配置 JSON 字符串
```
并在对应的 VO / 返回对象中保留该字段。
## 3. `getSiteInfo` 合并 features 到 setting
`getSiteInfo` 当前已把 `cms_website_setting``searchBtn / loginBtn / ...` 合并进返回体的 `setting`
(前台 `siteInfo.setting` 即来源)。**新增**:把 `features` 也合并进去。
伪代码:
```java
// 在组装 setting 对象处,追加
setting.put("features", websiteSetting != null ? websiteSetting.getFeatures() : null);
```
前端 `useFeatures()` 读取 `siteInfo.setting.features``JSON.parse`
若后端未合并,前台拿不到 `features` → 自动回退各模板默认数据(不影响页面展示,仅配置不生效)。
## 4. 数据格式约定
`features` 为 JSON 字符串,结构:
```json
{
"enabled": true,
"title": "我们的优势",
"subtitle": "为企业提供从品牌展示到客户转化的全链路官网解决方案",
"items": [
{ "title": "企业优势", "desc": "...", "icon": "building" },
{ "title": "核心产品", "desc": "...", "icon": "box" },
{ "title": "客户案例", "desc": "...", "icon": "case" },
{ "title": "在线留言", "desc": "...", "icon": "message" }
]
}
```
- `icon` 为图标名,取值范围为前台 `FeatureIcon.vue` 的 36 个名称,后台下拉已内置。
- `items` 最多 4 个(前后台均做了截断)。
- `enabled=false` 时前台隐藏整块。
## 5. 验证清单
1. 后台「网站设置 → 功能开关 → 首页优势模块」修改标题 / 卡片并保存;
2.`GET /api/cms/cms-website/getSiteInfo` 确认返回 `setting.features` 非空;
3. 前台对应租户首页「优势卡片区」内容随之变化;关闭「启用模块」后整块消失。