feat: 路由支持动态参数

This commit is contained in:
hxr
2024-05-25 23:59:12 +08:00
parent 5d36a7cec9
commit 558c0a7e6e
5 changed files with 61 additions and 4 deletions

View File

@@ -0,0 +1,32 @@
package com.youlai.system.common.model;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 下拉选项对象
*
* @author haoxr
* @since 2024/5/25
*/
@Schema(description ="键值对")
@Data
@NoArgsConstructor
public class KeyValue{
public KeyValue(String key, String value) {
this.key = key;
this.value = value;
}
@Schema(description="选项的值")
private String key;
@Schema(description="选项的标签")
private String value;
}

View File

@@ -16,8 +16,8 @@ public interface MenuConverter {
MenuVO entity2Vo(SysMenu entity);
MenuForm entity2Form(SysMenu entity);
MenuForm convertToForm(SysMenu entity);
SysMenu form2Entity(MenuForm menuForm);
SysMenu convertToEntity(MenuForm menuForm);
}

View File

@@ -88,5 +88,10 @@ public class SysMenu extends BaseEntity {
*/
private Integer alwaysShow;
/**
* 路由参数
*/
private String params;
}

View File

@@ -2,9 +2,12 @@ package com.youlai.system.model.form;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.youlai.system.common.enums.MenuTypeEnum;
import com.youlai.system.common.model.KeyValue;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Schema(description = "菜单表单对象")
@Data
public class MenuForm {
@@ -48,5 +51,7 @@ public class MenuForm {
@Schema(description = "【目录】只有一个子路由是否始终显示", example = "1")
private Integer alwaysShow;
@Schema(description = "路由参数")
private List<KeyValue> paramList;
}

View File

@@ -1,14 +1,17 @@
package com.youlai.system.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.common.enums.MenuTypeEnum;
import com.youlai.system.common.enums.StatusEnum;
import com.youlai.system.common.model.KeyValue;
import com.youlai.system.common.model.Option;
import com.youlai.system.converter.MenuConverter;
import com.youlai.system.mapper.SysMenuMapper;
@@ -212,10 +215,15 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
menuForm.setComponent(null);
}
SysMenu entity = menuConverter.form2Entity(menuForm);
SysMenu entity = menuConverter.convertToEntity(menuForm);
String treePath = generateMenuTreePath(menuForm.getParentId());
entity.setTreePath(treePath);
List<KeyValue> paramList = menuForm.getParamList();
if (CollectionUtil.isNotEmpty(paramList)) {
entity.setParams(JSONUtil.toJsonStr(paramList));
}
boolean result = this.saveOrUpdate(entity);
if (result) {
// 编辑刷新角色权限缓存
@@ -278,7 +286,14 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
@Override
public MenuForm getMenuForm(Long id) {
SysMenu entity = this.getById(id);
return menuConverter.entity2Form(entity);
Assert.isTrue(entity != null, "菜单不存在");
MenuForm formData = menuConverter.convertToForm(entity);
if(StrUtil.isNotBlank(entity.getParams())){
List<KeyValue> params = JSONUtil.toList(JSONUtil.parseArray(entity.getParams()), KeyValue.class);
formData.setParamList(params);
}
return formData;
}
/**