zy-acs-common/src/main/java/com/zy/acs/common/utils/Utils.java
@@ -37,7 +37,7 @@ if (parentId.equals(dParentId)) { R dId = idMapper.apply(d); List<T> children = toTreeData(data, dId, parentIdMapper, idMapper, consumer); if(children.size() > 0) { if(!children.isEmpty()) { consumer.accept(d, children); } result.add(d); @@ -63,8 +63,6 @@ /** * 数组倒序 * @param bytes * @param <T> */ public static <T> byte[] reverse(byte[] bytes) { if (bytes == null) return null; zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/AuthController.java
@@ -1,6 +1,8 @@ package com.zy.acs.manager.system.controller; import com.zy.acs.common.utils.Utils; import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.common.R; import com.zy.acs.manager.common.annotation.OperationLog; import com.zy.acs.manager.common.config.ConfigProperties; import com.zy.acs.manager.common.security.JwtSubject; @@ -8,6 +10,7 @@ import com.zy.acs.manager.system.controller.param.LoginParam; import com.zy.acs.manager.system.controller.param.UpdatePasswordParam; import com.zy.acs.manager.system.controller.result.LoginResult; import com.zy.acs.manager.system.controller.result.MenuVo; import com.zy.acs.manager.system.entity.Menu; import com.zy.acs.manager.system.entity.User; import com.zy.acs.manager.system.entity.UserLogin; @@ -15,14 +18,13 @@ import com.zy.acs.manager.system.service.TenantService; import com.zy.acs.manager.system.service.UserLoginService; import com.zy.acs.manager.system.service.UserService; import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.common.R; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.stream.Collectors; /** * 认证控制器 @@ -73,8 +75,12 @@ @GetMapping("/auth/menu") public R userMenu() { List<Menu> menus = roleMenuService.listMenuByUserId(getLoginUserId(), Menu.TYPE_MENU); return R.ok().add(Utils.toTreeData(menus, 0L, Menu::getParentId, Menu::getId, Menu::setChildren)); // return R.ok().add(Utils.toTreeData(menus, 0L, Menu::getParentId, Menu::getId, Menu::setChildren)); List<MenuVo> voList = menus.stream().map(this::convertToVo).collect(Collectors.toList()); return R.ok().add(Utils.toTreeData(voList, 0L, MenuVo::getParentId, MenuVo::getId, MenuVo::setChildren)); } @GetMapping("/auth/tenant") public R authHost() { @@ -121,4 +127,32 @@ return R.error("Update Fail"); } // ---------------------------------------------------- private MenuVo convertToVo(Menu menu) { if (menu == null) { return null; } MenuVo vo = new MenuVo(); vo.setId(menu.getId()); vo.setName(menu.getName()); vo.setParentId(menu.getParentId()); // vo.setParentName(menu.getParentName()); vo.setPath(menu.getPath()); // vo.setPathName(menu.getPathName()); vo.setRoute(menu.getRoute()); vo.setComponent(menu.getComponent()); vo.setType(menu.getType()); vo.setIcon(menu.getIcon()); vo.setSort(menu.getSort()); if (menu.getChildren() != null && !menu.getChildren().isEmpty()) { List<MenuVo> childDTOs = menu.getChildren().stream() .map(this::convertToVo) .collect(Collectors.toList()); vo.setChildren(childDTOs); } return vo; } } zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/result/MenuVo.java
New file @@ -0,0 +1,54 @@ package com.zy.acs.manager.system.controller.result; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.util.List; @Data public class MenuVo implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value= "ID") @TableId(value = "id", type = IdType.AUTO) private Long id; @ApiModelProperty(value= "名称") private String name; @ApiModelProperty(value= "上级菜单") private Long parentId; // @ApiModelProperty(value= "上级菜单名") // private String parentName; @ApiModelProperty(value= "关联路径") private String path; // @ApiModelProperty(value= "关联路径名") // private String pathName; @ApiModelProperty(value= "路由地址") private String route; @ApiModelProperty(value= "页面组件") private String component; @ApiModelProperty(value= "类型 0: 菜单 1: 按钮 ") private Integer type; @ApiModelProperty(value= "菜单图标") private String icon; private Integer sort; @TableField(exist = false) private List<MenuVo> children; } zy-acs-manager/src/main/java/com/zy/acs/manager/system/entity/Menu.java
@@ -1,10 +1,10 @@ package com.zy.acs.manager.system.entity; import com.baomidou.mybatisplus.annotation.*; import com.zy.acs.manager.system.service.TenantService; import com.zy.acs.manager.system.service.UserService; import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.common.SpringUtils; import com.zy.acs.manager.system.service.TenantService; import com.zy.acs.manager.system.service.UserService; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @@ -193,20 +193,6 @@ return null; } public String getStatus$(){ if (null == this.status){ return null; } switch (this.status){ case 1: return "正常"; case 0: return "禁用"; default: return String.valueOf(this.status); } } public String getCreateTime$(){ if (Cools.isEmpty(this.createTime)){ return ""; @@ -250,7 +236,5 @@ return null; } } } zy-acs-manager/src/main/resources/mapper/system/RoleMenuMapper.xml
@@ -3,23 +3,19 @@ <mapper namespace="com.zy.acs.manager.system.mapper.RoleMenuMapper"> <select id="listMenuByUserId" resultType="com.zy.acs.manager.system.entity.Menu"> select * from sys_menu where 1=1 SELECT DISTINCT sm.* FROM sys_menu sm JOIN sys_role_menu srm ON sm.id = srm.menu_id JOIN sys_user_role sur ON srm.role_id = sur.role_id JOIN sys_role sr ON sur.role_id = sr.id WHERE 1=1 <if test="type != null"> AND type = #{type} AND sm.type = #{type} </if> and deleted = 0 and id in ( select menu_id from sys_role_menu where role_id in ( select sur.role_id from sys_user_role sur left join sys_role sr on sur.role_id = sr.id where 1=1 and sur.user_id = #{userId} and sr.deleted = 0 ) ) order by sort AND sur.user_id = #{userId} AND sr.deleted = 0 AND sm.deleted = 0 ORDER BY sm.sort </select> <select id="listStrictlyMenuByRoleId" resultType="java.lang.Long">