From 00687e6718be7572e04c3b074e5aa51e8972582c Mon Sep 17 00:00:00 2001 From: sdy Date: Wed, 24 Jun 2026 15:02:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8F=9C=E5=8D=95=E5=A2=9E=E5=8A=A0=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E8=8F=9C=E5=8D=95=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/controller/SysMenuController.java | 20 ++-- .../multictrl/modules/sys/dao/SysMenuDao.java | 60 ++++++----- .../multictrl/modules/sys/dto/SysMenuDTO.java | 101 +++++++++--------- .../modules/sys/entity/SysMenuEntity.java | 96 +++++++++-------- .../modules/sys/service/SysMenuService.java | 47 ++++---- .../sys/service/impl/SysMenuServiceImpl.java | 10 +- .../main/resources/mapper/sys/SysMenuDao.xml | 22 ++-- prj-deploy/file/pgsql/init.sql | 8 +- 8 files changed, 196 insertions(+), 168 deletions(-) diff --git a/admin/src/main/java/com/multictrl/modules/sys/controller/SysMenuController.java b/admin/src/main/java/com/multictrl/modules/sys/controller/SysMenuController.java index 22ab043..a114585 100644 --- a/admin/src/main/java/com/multictrl/modules/sys/controller/SysMenuController.java +++ b/admin/src/main/java/com/multictrl/modules/sys/controller/SysMenuController.java @@ -14,6 +14,7 @@ import com.multictrl.modules.sys.enums.MenuTypeEnum; import com.multictrl.modules.sys.service.SysMenuService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.enums.ParameterIn; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; @@ -37,10 +38,11 @@ public class SysMenuController { private final ShiroService shiroService; @GetMapping("nav") + @Parameter(name = "openWith", description = "打开方式 1内部打开 2外部打开") @Operation(summary = "导航") - public Result> nav() { + public Result> nav(Integer openWith) { UserDetail user = SecurityUser.getUser(); - List list = sysMenuService.getUserMenuList(user, MenuTypeEnum.MENU.value()); + List list = sysMenuService.getUserMenuList(user, openWith, MenuTypeEnum.MENU.value()); return new Result>().ok(list); } @@ -56,10 +58,13 @@ public class SysMenuController { @GetMapping("list") @Operation(summary = "列表") - @Parameter(name = "type", description = "菜单类型 0:菜单 1:按钮 null:全部") + @Parameters({ + @Parameter(name = "openWith", description = "打开方式 1内部打开 2外部打开"), + @Parameter(name = "type", description = "菜单类型 0:菜单 1:按钮 null:全部") + }) @RequiresPermissions("sys:menu:list") - public Result> list(Integer type) { - List list = sysMenuService.getAllMenuList(type); + public Result> list(Integer openWith, Integer type) { + List list = sysMenuService.getAllMenuList(openWith, type); return new Result>().ok(list); } @@ -119,11 +124,12 @@ public class SysMenuController { } @GetMapping("select") + @Parameter(name = "openWith", description = "打开方式 1内部打开 2外部打开") @Operation(summary = "角色菜单权限") @RequiresPermissions("sys:menu:select") - public Result> select() { + public Result> select(Integer openWith) { UserDetail user = SecurityUser.getUser(); - List list = sysMenuService.getUserMenuList(user, null); + List list = sysMenuService.getUserMenuList(user, openWith, null); return new Result>().ok(list); } diff --git a/admin/src/main/java/com/multictrl/modules/sys/dao/SysMenuDao.java b/admin/src/main/java/com/multictrl/modules/sys/dao/SysMenuDao.java index 0f0de7a..dceb0bd 100644 --- a/admin/src/main/java/com/multictrl/modules/sys/dao/SysMenuDao.java +++ b/admin/src/main/java/com/multictrl/modules/sys/dao/SysMenuDao.java @@ -9,44 +9,46 @@ import java.util.List; /** * 菜单管理 - * + * * @author Sdy */ @Mapper public interface SysMenuDao extends BaseDao { - SysMenuEntity getById(@Param("id") Long id); + SysMenuEntity getById(@Param("id") Long id); - /** - * 查询所有菜单列表 - * - * @param menuType 菜单类型 - */ - List getMenuList(@Param("menuType") Integer menuType); + /** + * 查询所有菜单列表 + * + * @param menuType 菜单类型 + */ + List getMenuList(@Param("openWith") Integer openWith, @Param("menuType") Integer menuType); - /** - * 查询用户菜单列表 - * - * @param userId 用户ID - * @param menuType 菜单类型 - */ - List getUserMenuList(@Param("userId") Long userId, @Param("menuType") Integer menuType); + /** + * 查询用户菜单列表 + * + * @param userId 用户ID + * @param menuType 菜单类型 + */ + List getUserMenuList(@Param("userId") Long userId, @Param("openWith") Integer openWith, @Param("menuType") Integer menuType); - /** - * 查询用户权限列表 - * @param userId 用户ID - */ - List getUserPermissionsList(Long userId); + /** + * 查询用户权限列表 + * + * @param userId 用户ID + */ + List getUserPermissionsList(Long userId); - /** - * 查询所有权限列表 - */ - List getPermissionsList(); + /** + * 查询所有权限列表 + */ + List getPermissionsList(); - /** - * 根据父菜单,查询子菜单 - * @param pid 父菜单ID - */ - List getListPid(Long pid); + /** + * 根据父菜单,查询子菜单 + * + * @param pid 父菜单ID + */ + List getListPid(Long pid); } diff --git a/admin/src/main/java/com/multictrl/modules/sys/dto/SysMenuDTO.java b/admin/src/main/java/com/multictrl/modules/sys/dto/SysMenuDTO.java index a1ed64e..d28523f 100644 --- a/admin/src/main/java/com/multictrl/modules/sys/dto/SysMenuDTO.java +++ b/admin/src/main/java/com/multictrl/modules/sys/dto/SysMenuDTO.java @@ -6,10 +6,7 @@ import com.multictrl.common.validator.group.AddGroup; import com.multictrl.common.validator.group.DefaultGroup; import com.multictrl.common.validator.group.UpdateGroup; import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Min; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Null; +import jakarta.validation.constraints.*; import lombok.Data; import lombok.EqualsAndHashCode; import org.hibernate.validator.constraints.Range; @@ -26,66 +23,72 @@ import java.util.Date; */ @Data @EqualsAndHashCode(callSuper = true) -@Schema(title = "菜单管理") +@Schema(name = "菜单管理") public class SysMenuDTO extends TreeNode implements Serializable { @Serial - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - @Schema(title = "id") - @Null(message="{id.null}", groups = AddGroup.class) - @NotNull(message="{id.require}", groups = UpdateGroup.class) - private Long id; + @Schema(description = "id") + @Null(message = "{id.null}", groups = AddGroup.class) + @NotNull(message = "{id.require}", groups = UpdateGroup.class) + private Long id; - @Schema(title = "上级ID") - @NotNull(message="{sysmenu.pid.require}", groups = DefaultGroup.class) - private Long pid; + @Schema(description = "上级ID") + @NotNull(message = "{sysmenu.pid.require}", groups = DefaultGroup.class) + private Long pid; - @Schema(title = "菜单名称") - @NotBlank(message="sysmenu.name.require", groups = DefaultGroup.class) - private String name; + @Schema(description = "菜单名称") + @NotBlank(message = "sysmenu.name.require", groups = DefaultGroup.class) + private String name; - @Schema(title = "菜单URL") - private String url; + @Schema(description = "菜单URL") + private String url; - @Schema(title = "类型 0:菜单 1:按钮") - @Range(min=0, max=1, message = "{sysmenu.type.range}", groups = DefaultGroup.class) - private Integer menuType; + @Schema(description = "类型 0:菜单 1:按钮") + @Range(min = 0, max = 1, message = "{sysmenu.type.range}", groups = DefaultGroup.class) + private Integer menuType; - @Schema(title = "菜单图标") - private String icon; + @Schema(description = "菜单图标") + private String icon; - @Schema(title = "授权(多个用逗号分隔,如:sys:user:list,sys:user:save)") - private String permissions; + @Schema(description = "授权(多个用逗号分隔,如:sys:user:list,sys:user:save)") + private String permissions; - @Schema(title = "排序") - @Min(value = 0, message = "{sort.number}", groups = DefaultGroup.class) - private Integer sort; + @Schema(description = "排序") + @Min(value = 0, message = "{sort.number}", groups = DefaultGroup.class) + private Integer sort; - @Schema(title = "创建时间") - @JsonProperty(access = JsonProperty.Access.READ_ONLY) - private Date createDate; + @NotNull(message = "打开方式不能为空", groups = DefaultGroup.class) + @Min(value = 1, message = "打开方式参数越界", groups = DefaultGroup.class) + @Max(value = 2, message = "打开方式参数越界", groups = DefaultGroup.class) + @Schema(description = "打开方式 1内部菜单 2外部菜单") + private Integer openWith; - @Schema(title = "上级菜单名称") - private String parentName; + @Schema(description = "创建时间") + @JsonProperty(access = JsonProperty.Access.READ_ONLY) + private Date createDate; - @Override - public Long getId() { - return id; - } + @Schema(description = "上级菜单名称") + private String parentName; - @Override - public void setId(Long id) { - this.id = id; - } + @Override + public Long getId() { + return id; + } - @Override - public Long getPid() { - return pid; - } + @Override + public void setId(Long id) { + this.id = id; + } - @Override - public void setPid(Long pid) { - this.pid = pid; - } + @Override + public Long getPid() { + return pid; + } + + @Override + public void setPid(Long pid) { + this.pid = pid; + } } diff --git a/admin/src/main/java/com/multictrl/modules/sys/entity/SysMenuEntity.java b/admin/src/main/java/com/multictrl/modules/sys/entity/SysMenuEntity.java index 310e82c..794c24e 100644 --- a/admin/src/main/java/com/multictrl/modules/sys/entity/SysMenuEntity.java +++ b/admin/src/main/java/com/multictrl/modules/sys/entity/SysMenuEntity.java @@ -16,54 +16,58 @@ import java.util.Date; * @author Sdy */ @Data -@EqualsAndHashCode(callSuper=false) +@EqualsAndHashCode(callSuper = false) @TableName("sys_menu") public class SysMenuEntity extends BaseEntity { - @Serial - private static final long serialVersionUID = 1L; + @Serial + private static final long serialVersionUID = 1L; - /** - * 父菜单ID,一级菜单为0 - */ - private Long pid; - /** - * 菜单名称 - */ - private String name; - /** - * 菜单URL - */ - private String url; - /** - * 授权(多个用逗号分隔,如:sys:user:list,sys:user:save) - */ - private String permissions; - /** - * 类型 0:菜单 1:按钮 - */ - private Integer menuType; - /** - * 菜单图标 - */ - private String icon; - /** - * 排序 - */ - private Integer sort; - /** - * 更新者 - */ - @TableField(fill = FieldFill.INSERT_UPDATE) - private Long updater; - /** - * 更新时间 - */ - @TableField(fill = FieldFill.INSERT_UPDATE) - private Date updateDate; - /** - * 上级菜单名称 - */ - @TableField(exist = false) - private String parentName; + /** + * 父菜单ID,一级菜单为0 + */ + private Long pid; + /** + * 菜单名称 + */ + private String name; + /** + * 菜单URL + */ + private String url; + /** + * 授权(多个用逗号分隔,如:sys:user:list,sys:user:save) + */ + private String permissions; + /** + * 类型 0:菜单 1:按钮 + */ + private Integer menuType; + /** + * 菜单图标 + */ + private String icon; + /** + * 排序 + */ + private Integer sort; + /** + * 打开方式 1内部菜单 2外部菜单 + */ + private Integer openWith; + /** + * 更新者 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Long updater; + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateDate; + /** + * 上级菜单名称 + */ + @TableField(exist = false) + private String parentName; } \ No newline at end of file diff --git a/admin/src/main/java/com/multictrl/modules/sys/service/SysMenuService.java b/admin/src/main/java/com/multictrl/modules/sys/service/SysMenuService.java index 59d1a92..14475ed 100644 --- a/admin/src/main/java/com/multictrl/modules/sys/service/SysMenuService.java +++ b/admin/src/main/java/com/multictrl/modules/sys/service/SysMenuService.java @@ -10,37 +10,38 @@ import java.util.List; /** * 菜单管理 - * + * * @author Sdy */ public interface SysMenuService extends BaseService { - SysMenuDTO get(Long id); + SysMenuDTO get(Long id); - void save(SysMenuDTO dto); + void save(SysMenuDTO dto); - void update(SysMenuDTO dto); + void update(SysMenuDTO dto); - void delete(Long id); + void delete(Long id); - /** - * 菜单列表 - * - * @param menuType 菜单类型 - */ - List getAllMenuList(Integer menuType); + /** + * 菜单列表 + * + * @param menuType 菜单类型 + */ + List getAllMenuList(Integer openWith, Integer menuType); - /** - * 用户菜单列表 - * - * @param user 用户 - * @param menuType 菜单类型 - */ - List getUserMenuList(UserDetail user, Integer menuType); + /** + * 用户菜单列表 + * + * @param user 用户 + * @param menuType 菜单类型 + */ + List getUserMenuList(UserDetail user, Integer openWith, Integer menuType); - /** - * 根据父菜单,查询子菜单 - * @param pid 父菜单ID - */ - List getListPid(Long pid); + /** + * 根据父菜单,查询子菜单 + * + * @param pid 父菜单ID + */ + List getListPid(Long pid); } diff --git a/admin/src/main/java/com/multictrl/modules/sys/service/impl/SysMenuServiceImpl.java b/admin/src/main/java/com/multictrl/modules/sys/service/impl/SysMenuServiceImpl.java index 49ca042..9c17630 100644 --- a/admin/src/main/java/com/multictrl/modules/sys/service/impl/SysMenuServiceImpl.java +++ b/admin/src/main/java/com/multictrl/modules/sys/service/impl/SysMenuServiceImpl.java @@ -65,8 +65,8 @@ public class SysMenuServiceImpl extends BaseServiceImpl getAllMenuList(Integer menuType) { - List menuList = baseDao.getMenuList(menuType); + public List getAllMenuList(Integer openWith, Integer menuType) { + List menuList = baseDao.getMenuList(openWith, menuType); List dtoList = ConvertUtils.sourceToTarget(menuList, SysMenuDTO.class); @@ -74,14 +74,14 @@ public class SysMenuServiceImpl extends BaseServiceImpl getUserMenuList(UserDetail user, Integer menuType) { + public List getUserMenuList(UserDetail user, Integer openWith, Integer menuType) { List menuList; //系统管理员,拥有最高权限 if (user.getSuperAdmin() == SuperAdminEnum.YES.value()) { - menuList = baseDao.getMenuList(menuType); + menuList = baseDao.getMenuList(openWith, menuType); } else { - menuList = baseDao.getUserMenuList(user.getId(), menuType); + menuList = baseDao.getUserMenuList(user.getId(), openWith, menuType); } List dtoList = ConvertUtils.sourceToTarget(menuList, SysMenuDTO.class); diff --git a/admin/src/main/resources/mapper/sys/SysMenuDao.xml b/admin/src/main/resources/mapper/sys/SysMenuDao.xml index 0b2bb70..287eb7d 100644 --- a/admin/src/main/resources/mapper/sys/SysMenuDao.xml +++ b/admin/src/main/resources/mapper/sys/SysMenuDao.xml @@ -9,14 +9,17 @@ + select t1.* from sys_menu t1 + + + t1.menu_type = #{menuType} + + + and t1.open_with = #{openWith} + + + order by t1.sort asc + diff --git a/prj-deploy/file/pgsql/init.sql b/prj-deploy/file/pgsql/init.sql index a1ea21e..e75fa76 100644 --- a/prj-deploy/file/pgsql/init.sql +++ b/prj-deploy/file/pgsql/init.sql @@ -2498,4 +2498,10 @@ ON COLUMN public.bus_ai_warning.rule_name IS '规则名称'; COMMENT ON COLUMN public.bus_ai_warning.status IS '状态 0关闭 1开启'; COMMENT -ON COLUMN public.bus_ai_warning.warning_level IS '预警等级 高 中 低'; \ No newline at end of file +ON COLUMN public.bus_ai_warning.warning_level IS '预警等级 高 中 低'; + +--2026/6/24 +ALTER TABLE public.sys_menu + ADD open_with int2 NULL; +COMMENT +ON COLUMN public.sys_menu.open_with IS '打开方式 1内部菜单 2外部菜单'; \ No newline at end of file