# 首页优势模块 - 后端对接说明 前端(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. 前台对应租户首页「优势卡片区」内容随之变化;关闭「启用模块」后整块消失。