feat(cms): 添加自定义链接地址支持
- 在CmsNavigation实体中新增url字段,支持导航外链和自定义地址 - 在CmsNavigationImportParam中增加url导入字段,支持Excel导入 - 在CmsNavigationController中设置url值,实现自定义链接路径优先跳转
This commit is contained in:
32
docs/sql/2026-07-21_cms_navigation_add_url.sql
Normal file
32
docs/sql/2026-07-21_cms_navigation_add_url.sql
Normal file
@@ -0,0 +1,32 @@
|
||||
-- ============================================================
|
||||
-- 新增 cms_navigation.url 字段
|
||||
-- 用途: 存储栏目/导航的自定义链接地址, 与 path(路由地址) 相互独立。
|
||||
-- 后台保存时写入该字段; 网站端导航优先使用 url, 未设置则回退 path。
|
||||
-- 配合代码侧改动:
|
||||
-- - CmsNavigation 实体新增 url 字段 (MyBatis-Plus 自动映射列 url)
|
||||
-- - 网站端 getNavLink 优先使用 url; 外链原样返回, 不追加 navId
|
||||
-- 执行环境: 各租户业务库 (cms_navigation 为全局表)
|
||||
-- 执行方式: 幂等, 可重复执行 (已存在 url 列则跳过)
|
||||
-- ============================================================
|
||||
|
||||
-- 1. 幂等新增 url 列
|
||||
SET @db = DATABASE();
|
||||
SET @exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = @db
|
||||
AND table_name = 'cms_navigation'
|
||||
AND column_name = 'url'
|
||||
);
|
||||
SET @sql = IF(
|
||||
@exists = 0,
|
||||
'ALTER TABLE cms_navigation ADD COLUMN url VARCHAR(500) DEFAULT NULL COMMENT ''自定义链接地址(优先级高于path)''',
|
||||
'SELECT 1 AS skipped'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 2. 验证字段已存在
|
||||
-- 预期: url VARCHAR(500) DEFAULT NULL
|
||||
SHOW COLUMNS FROM cms_navigation LIKE 'url';
|
||||
@@ -322,6 +322,7 @@ public class CmsNavigationController extends BaseController {
|
||||
nav.setModel(StrUtil.isBlank(param.getModel()) ? "page" : param.getModel());
|
||||
nav.setCode(param.getCode());
|
||||
nav.setPath(param.getPath());
|
||||
nav.setUrl(param.getUrl());
|
||||
nav.setComponent(param.getComponent());
|
||||
nav.setTarget(param.getTarget());
|
||||
nav.setIcon(param.getIcon());
|
||||
|
||||
@@ -53,6 +53,9 @@ public class CmsNavigation implements Serializable {
|
||||
@Schema(description = "菜单路由地址")
|
||||
private String path;
|
||||
|
||||
@Schema(description = "自定义链接地址(优先级高于path, 用于导航跳转外链/自定义地址)")
|
||||
private String url;
|
||||
|
||||
@Schema(description = "菜单组件地址, 目录可为空")
|
||||
private String component;
|
||||
|
||||
|
||||
@@ -33,6 +33,9 @@ public class CmsNavigationImportParam implements Serializable {
|
||||
@Excel(name = "菜单路由地址")
|
||||
private String path;
|
||||
|
||||
@Excel(name = "自定义链接地址")
|
||||
private String url;
|
||||
|
||||
@Excel(name = "菜单组件地址")
|
||||
private String component;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user