diff --git a/src/main/java/com/youlai/system/common/model/KeyValue.java b/src/main/java/com/youlai/system/common/model/KeyValue.java new file mode 100644 index 00000000..772dd7a5 --- /dev/null +++ b/src/main/java/com/youlai/system/common/model/KeyValue.java @@ -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; + +} \ No newline at end of file diff --git a/src/main/java/com/youlai/system/converter/MenuConverter.java b/src/main/java/com/youlai/system/converter/MenuConverter.java index eb411bf7..20c4f44b 100644 --- a/src/main/java/com/youlai/system/converter/MenuConverter.java +++ b/src/main/java/com/youlai/system/converter/MenuConverter.java @@ -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); } \ No newline at end of file diff --git a/src/main/java/com/youlai/system/model/entity/SysMenu.java b/src/main/java/com/youlai/system/model/entity/SysMenu.java index 0f0a3862..21545234 100644 --- a/src/main/java/com/youlai/system/model/entity/SysMenu.java +++ b/src/main/java/com/youlai/system/model/entity/SysMenu.java @@ -88,5 +88,10 @@ public class SysMenu extends BaseEntity { */ private Integer alwaysShow; + /** + * 路由参数 + */ + private String params; + } \ No newline at end of file diff --git a/src/main/java/com/youlai/system/model/form/MenuForm.java b/src/main/java/com/youlai/system/model/form/MenuForm.java index 7b16f6d0..be051ac2 100644 --- a/src/main/java/com/youlai/system/model/form/MenuForm.java +++ b/src/main/java/com/youlai/system/model/form/MenuForm.java @@ -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 paramList; } diff --git a/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java b/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java index 13e93b47..f0815cef 100644 --- a/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java +++ b/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java @@ -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 impl menuForm.setComponent(null); } - SysMenu entity = menuConverter.form2Entity(menuForm); + SysMenu entity = menuConverter.convertToEntity(menuForm); String treePath = generateMenuTreePath(menuForm.getParentId()); entity.setTreePath(treePath); + List 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 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 params = JSONUtil.toList(JSONUtil.parseArray(entity.getParams()), KeyValue.class); + formData.setParamList(params); + } + return formData; } /**