feat: 路由支持动态参数
This commit is contained in:
32
src/main/java/com/youlai/system/common/model/KeyValue.java
Normal file
32
src/main/java/com/youlai/system/common/model/KeyValue.java
Normal 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;
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -88,5 +88,10 @@ public class SysMenu extends BaseEntity {
|
||||
*/
|
||||
private Integer alwaysShow;
|
||||
|
||||
/**
|
||||
* 路由参数
|
||||
*/
|
||||
private String params;
|
||||
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user