From 23c88ac095e146a503b182bf5b93f06c79c8319b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8A=9B?= Date: Thu, 17 Mar 2022 17:13:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9D=83=E9=99=90=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E8=8F=9C=E5=8D=95=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canvas/web/config/CsPermissionConfig.java | 21 ++ .../system/controller/MenuController.java | 42 ++++ .../system/controller/UserController.java | 1 - .../web/modules/system/domain/Menu.java | 3 - .../system/repository/MenuRepository.java | 41 ++++ .../system/repository/RoleRepository.java | 22 ++ .../modules/system/service/MenuService.java | 48 ++++ .../modules/system/service/RoleService.java | 47 ++-- .../modules/system/service/dto/MenuDto.java | 19 +- .../system/service/dto/MenuQueryCriteria.java | 27 +++ .../system/service/dto/MenuSmallDto.java | 16 ++ .../system/service/dto/RoleQueryCriteria.java | 17 ++ .../system/service/impl/MenuServiceImpl.java | 218 ++++++++++++++++++ .../system/service/impl/RoleServiceImpl.java | 61 +++++ .../service/mapstruct/MenuSmallMapper.java | 12 + .../system/service/mapstruct/RoleMapper.java | 5 +- .../service/mapstruct/RoleSmallMapper.java | 11 + 17 files changed, 581 insertions(+), 30 deletions(-) create mode 100644 common/src/main/java/com/canvas/web/config/CsPermissionConfig.java create mode 100644 system/src/main/java/com/canvas/web/modules/system/controller/MenuController.java create mode 100644 system/src/main/java/com/canvas/web/modules/system/service/MenuService.java create mode 100644 system/src/main/java/com/canvas/web/modules/system/service/dto/MenuQueryCriteria.java create mode 100644 system/src/main/java/com/canvas/web/modules/system/service/dto/MenuSmallDto.java create mode 100644 system/src/main/java/com/canvas/web/modules/system/service/dto/RoleQueryCriteria.java create mode 100644 system/src/main/java/com/canvas/web/modules/system/service/impl/MenuServiceImpl.java create mode 100644 system/src/main/java/com/canvas/web/modules/system/service/mapstruct/MenuSmallMapper.java create mode 100644 system/src/main/java/com/canvas/web/modules/system/service/mapstruct/RoleSmallMapper.java diff --git a/common/src/main/java/com/canvas/web/config/CsPermissionConfig.java b/common/src/main/java/com/canvas/web/config/CsPermissionConfig.java new file mode 100644 index 0000000..abfd400 --- /dev/null +++ b/common/src/main/java/com/canvas/web/config/CsPermissionConfig.java @@ -0,0 +1,21 @@ +package com.canvas.web.config; + + +import com.canvas.web.utils.SecurityUtils; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +@Service(value = "cs") +public class CsPermissionConfig { + + public Boolean check(String ...permissions){ + // 获取当前用户的所有权限 + List csPermissions= SecurityUtils.getCurrentUser().getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList()); + // 判断当前用户的所有权限是否包含接口上定义的权限 + return csPermissions.contains("admin") || Arrays.stream(permissions).anyMatch(csPermissions::contains); + } +} diff --git a/system/src/main/java/com/canvas/web/modules/system/controller/MenuController.java b/system/src/main/java/com/canvas/web/modules/system/controller/MenuController.java new file mode 100644 index 0000000..d407d43 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/system/controller/MenuController.java @@ -0,0 +1,42 @@ +package com.canvas.web.modules.system.controller; + + +import com.canvas.web.annotation.rest.AnonymousGetMapping; +import com.canvas.web.enums.ResponseEnum; +import com.canvas.web.modules.system.service.MenuService; +import com.canvas.web.modules.system.service.mapstruct.MenuMapper; +import com.canvas.web.utils.Response; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@Api(tags = "菜单管理") +@RequestMapping("/api/menus") +public class MenuController { + + private final MenuService menuService; + private final MenuMapper menuMapper; + + @ApiOperation("返回全部菜单") + @AnonymousGetMapping("/lazy") + //@GetMapping(value = "lazy") + //@PreAuthorize("") + public Response query(@RequestParam(required=false) Long pid){ + return Response.success(menuService.getMenus(pid)); + } + + @ApiOperation("新增权限-下拉列表-获取所有菜单") + @AnonymousGetMapping("/dropdown/menu") + public Response queryDropDow(){ + return Response.success(menuService.queryAll()); + } + + +} diff --git a/system/src/main/java/com/canvas/web/modules/system/controller/UserController.java b/system/src/main/java/com/canvas/web/modules/system/controller/UserController.java index 7d21768..12a1370 100644 --- a/system/src/main/java/com/canvas/web/modules/system/controller/UserController.java +++ b/system/src/main/java/com/canvas/web/modules/system/controller/UserController.java @@ -57,7 +57,6 @@ public class UserController { //如果当前用户角色级别低于创建用户的角色级别,抛出权限不足 private void checkLevel(User resources){ - Integer currentLevel= Collections.min(roleService.findByUsersId(SecurityUtils.getCurrentUserId()).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList())); Integer optLevel = roleService.findByRoles(resources.getRoles()); if (currentLevel > optLevel){ diff --git a/system/src/main/java/com/canvas/web/modules/system/domain/Menu.java b/system/src/main/java/com/canvas/web/modules/system/domain/Menu.java index dd6ddc7..83d0a84 100644 --- a/system/src/main/java/com/canvas/web/modules/system/domain/Menu.java +++ b/system/src/main/java/com/canvas/web/modules/system/domain/Menu.java @@ -72,9 +72,6 @@ public class Menu extends BaseEntity implements Serializable { @ApiModelProperty(value = "外链菜单") private Boolean iFrame; - @Column(name = "show_position") - @ApiModelProperty(value = "显示地方 1.侧面 2.头部") - private Integer showPosition; @Override public boolean equals(Object o) { diff --git a/system/src/main/java/com/canvas/web/modules/system/repository/MenuRepository.java b/system/src/main/java/com/canvas/web/modules/system/repository/MenuRepository.java index 39cce3e..8aa4555 100644 --- a/system/src/main/java/com/canvas/web/modules/system/repository/MenuRepository.java +++ b/system/src/main/java/com/canvas/web/modules/system/repository/MenuRepository.java @@ -3,6 +3,47 @@ package com.canvas.web.modules.system.repository; import com.canvas.web.modules.system.domain.Menu; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; + +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; public interface MenuRepository extends JpaRepository, JpaSpecificationExecutor { + + //根据菜单标题查询 + Menu findByTitle(String title); + + + //根据Pid 查询 + List findByPid(long id); + + //查询组件名称 + Menu findByComponentName(String name); + + //获取节点数量 + int countByPid(Long id); + + @Modifying + @Query(value = "select * FROM sys_menu WHERE type IN (0,1)",nativeQuery = true) + List findDropDownList(); + + + //查询顶级菜单 + List findByPidIsNull(); + + @Query(value = "SELECT m.* FROM sys_menu m INNER JOIN sys_roles_menus r ON m.menu_id = r.menu_id WHERE " + + " r.role_id IN ?1 AND type != ?2 order by m.menu_sort asc",nativeQuery = true) + LinkedHashSet findByRoleIdsAndTypeNotAndShowPosition(Set roleIds, int type); + + + //更新节点数目 + @Modifying + @Query(value = " update sys_menu set sub_count = ?1 where menu_id = ?2 ",nativeQuery = true) + void updateSubCntById(int count, Long menuId); + + @Query(value = "SELECT m.* FROM sys_menu m INNER JOIN sys_roles_menus r ON m.menu_id = r.menu_id WHERE " + + " r.role_id IN ?1 AND type != ?2 AND m.pid = ?3 order by m.menu_sort asc",nativeQuery = true) + LinkedHashSet findByRoleIdsAndTypeNotToChangeMenus(Set roleIds, int type,Long pid); } diff --git a/system/src/main/java/com/canvas/web/modules/system/repository/RoleRepository.java b/system/src/main/java/com/canvas/web/modules/system/repository/RoleRepository.java index cc4f24a..7b1d086 100644 --- a/system/src/main/java/com/canvas/web/modules/system/repository/RoleRepository.java +++ b/system/src/main/java/com/canvas/web/modules/system/repository/RoleRepository.java @@ -3,6 +3,28 @@ package com.canvas.web.modules.system.repository; import com.canvas.web.modules.system.domain.Role; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; + +import java.util.Set; public interface RoleRepository extends JpaRepository, JpaSpecificationExecutor { + + + //根据角色名查询 + Role findByName(String name); + + //删除多个角色 + void deleteAllByIdIn(Set ids); + + + //根据角色id查询 + @Query(value = "SELECT r.* FROM sys_role r, sys_users_roles u WHERE " + + "r.role_id = u.role_id AND u.user_id = ?1",nativeQuery = true) + Set findByUserId(Long id); + + + @Modifying + @Query(value = "delete from sys_roles_menus where menu_id = ?1",nativeQuery = true) + void untiedMenu(Long id); } diff --git a/system/src/main/java/com/canvas/web/modules/system/service/MenuService.java b/system/src/main/java/com/canvas/web/modules/system/service/MenuService.java new file mode 100644 index 0000000..37394f4 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/system/service/MenuService.java @@ -0,0 +1,48 @@ +package com.canvas.web.modules.system.service; + +import com.canvas.web.modules.system.domain.Menu; +import com.canvas.web.modules.system.service.dto.MenuDto; +import com.canvas.web.modules.system.service.dto.MenuQueryCriteria; +import com.canvas.web.modules.system.service.dto.MenuSmallDto; + +import java.util.List; +import java.util.Set; + +public interface MenuService { + + //根据id查询 + MenuDto findById(long id); + + + //创建菜单 + void create(Menu resources); + + + //编辑 + void update(Menu resources); + + //获取所有子节点 + Set getChildMenus(List menuList,Set menuSet); + + //构建菜单树 + List buildTree(List menuDtos); + + //根据id查询 + Menu findOne(Long id); + + //删除 + void delete(Set menuSet); + + //懒加载菜单数据 + List getMenus(Long pid); + + + //根据当前用户获取菜单 + List findByUser(Long currentUserId); + + //查询全部数据,可带查询条件 + List queryAll(MenuQueryCriteria criteria, Boolean isQuery) throws Exception; + + //获取所有菜单 + List queryAll(); +} diff --git a/system/src/main/java/com/canvas/web/modules/system/service/RoleService.java b/system/src/main/java/com/canvas/web/modules/system/service/RoleService.java index d6664ae..1efcacf 100644 --- a/system/src/main/java/com/canvas/web/modules/system/service/RoleService.java +++ b/system/src/main/java/com/canvas/web/modules/system/service/RoleService.java @@ -1,33 +1,50 @@ package com.canvas.web.modules.system.service; import com.canvas.web.modules.system.domain.Role; +import com.canvas.web.modules.system.service.dto.RoleDto; +import com.canvas.web.modules.system.service.dto.RoleQueryCriteria; import com.canvas.web.modules.system.service.dto.RoleSmallDto; import com.canvas.web.modules.system.service.dto.UserDto; +import org.springframework.data.domain.Pageable; import org.springframework.security.core.GrantedAuthority; +import java.util.ArrayList; import java.util.List; import java.util.Set; public interface RoleService { - /** - * 获取用户权限信息 - * @param user 用户信息 - * @return 权限信息 - */ + //获取用户权限信息 List mapToGrantedAuthorities(UserDto user); - /** - * 根据用户ID查询 - * @param id 用户ID - * @return / - */ + //根据用户ID查询用户 List findByUsersId(Long id); - /** - * 根据角色查询角色级别 - * @param roles / - * @return / - */ + + //根据角色查询角色级别 Integer findByRoles(Set roles); + + //根据id 查询菜单 + List findInMenuId(ArrayList longs); + + //创建角色 + void create(Role resources); + + //物理删除 + void delete(Set ids); + + //修改绑定的菜单 + void updateMenu(Role resources, RoleDto roleDTO); + + //根据菜单Id查询 + List findInMenuId(List menuIds); + + //无条件查询全部数据 + List queryAll(); + + //带查询条件分页查询全部数据 + Object queryAll(RoleQueryCriteria criteria, Pageable pageable); + + //带查询条件查询全部数据 + List queryAll(RoleQueryCriteria criteria); } diff --git a/system/src/main/java/com/canvas/web/modules/system/service/dto/MenuDto.java b/system/src/main/java/com/canvas/web/modules/system/service/dto/MenuDto.java index ddf936f..568d826 100644 --- a/system/src/main/java/com/canvas/web/modules/system/service/dto/MenuDto.java +++ b/system/src/main/java/com/canvas/web/modules/system/service/dto/MenuDto.java @@ -15,7 +15,7 @@ public class MenuDto extends BaseDTO implements Serializable { private Long id; - private List children; + // private List children; private Integer type; @@ -23,7 +23,7 @@ public class MenuDto extends BaseDTO implements Serializable { private String title; - private Integer menuSort; + // private Integer menuSort; private String path; @@ -43,15 +43,14 @@ public class MenuDto extends BaseDTO implements Serializable { private String icon; - private Integer showPosition; - public Boolean getHasChildren() { - return subCount > 0; - } - - public Boolean getLeaf() { - return subCount <= 0; - } +// public Boolean getHasChildren() { +// return subCount > 0; +// } +// +// public Boolean getLeaf() { +// return subCount <= 0; +// } public String getLabel() { return title; diff --git a/system/src/main/java/com/canvas/web/modules/system/service/dto/MenuQueryCriteria.java b/system/src/main/java/com/canvas/web/modules/system/service/dto/MenuQueryCriteria.java new file mode 100644 index 0000000..b5149c9 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/system/service/dto/MenuQueryCriteria.java @@ -0,0 +1,27 @@ +package com.canvas.web.modules.system.service.dto; + + +import com.canvas.web.annotation.Query; +import lombok.Data; + +import java.sql.Timestamp; +import java.util.List; + +@Data +public class MenuQueryCriteria { + + + @Query(blurry = "title,component,permission") + private String blurry; + + @Query(type = Query.Type.BETWEEN) + private List createTime; + + @Query(type = Query.Type.IS_NULL,propName = "pid") + private Boolean pidIsNull; + + @Query + private Long pid; + + +} diff --git a/system/src/main/java/com/canvas/web/modules/system/service/dto/MenuSmallDto.java b/system/src/main/java/com/canvas/web/modules/system/service/dto/MenuSmallDto.java new file mode 100644 index 0000000..fafbb36 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/system/service/dto/MenuSmallDto.java @@ -0,0 +1,16 @@ +package com.canvas.web.modules.system.service.dto; + +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class MenuSmallDto implements Serializable { + + private Long id; + + private Long pid; + + private String title; +} diff --git a/system/src/main/java/com/canvas/web/modules/system/service/dto/RoleQueryCriteria.java b/system/src/main/java/com/canvas/web/modules/system/service/dto/RoleQueryCriteria.java new file mode 100644 index 0000000..4e151ee --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/system/service/dto/RoleQueryCriteria.java @@ -0,0 +1,17 @@ +package com.canvas.web.modules.system.service.dto; + +import com.canvas.web.annotation.Query; +import lombok.Data; + +import java.sql.Timestamp; +import java.util.List; + + +@Data +public class RoleQueryCriteria { + @Query(blurry = "name,description") + private String blurry; + + @Query(type = Query.Type.BETWEEN) + private List createTime; +} diff --git a/system/src/main/java/com/canvas/web/modules/system/service/impl/MenuServiceImpl.java b/system/src/main/java/com/canvas/web/modules/system/service/impl/MenuServiceImpl.java new file mode 100644 index 0000000..a9a7ba3 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/system/service/impl/MenuServiceImpl.java @@ -0,0 +1,218 @@ +package com.canvas.web.modules.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.canvas.web.enums.ResponseEnum; +import com.canvas.web.exception.BaseException; +import com.canvas.web.modules.system.domain.Menu; +import com.canvas.web.modules.system.domain.Role; +import com.canvas.web.modules.system.domain.User; +import com.canvas.web.modules.system.repository.MenuRepository; +import com.canvas.web.modules.system.repository.UserRepository; +import com.canvas.web.modules.system.service.MenuService; +import com.canvas.web.modules.system.service.RoleService; +import com.canvas.web.modules.system.service.dto.MenuDto; +import com.canvas.web.modules.system.service.dto.MenuQueryCriteria; +import com.canvas.web.modules.system.service.dto.MenuSmallDto; +import com.canvas.web.modules.system.service.mapstruct.MenuMapper; +import com.canvas.web.modules.system.service.mapstruct.MenuSmallMapper; +import com.canvas.web.utils.QueryHelp; +import com.canvas.web.utils.RedisUtils; +import com.canvas.web.utils.StringUtils; +import com.canvas.web.utils.ValidationUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + + +@Service +@RequiredArgsConstructor +@CacheConfig(cacheNames = "menu") +public class MenuServiceImpl implements MenuService { + + private final MenuRepository menuRepository; + private final MenuSmallMapper menuSmallMapper; + private final UserRepository userRepository; + private final MenuMapper menuMapper; + private final RoleService roleService; + private final RedisUtils redisUtils; + + @Override + @Cacheable(key = "'id:'+#p0") + public MenuDto findById(long id) { + Menu menu = menuRepository.findById(id).orElseGet(Menu::new); + ValidationUtil.isNull(menu.getId(), "Menu", "id", id); + return menuMapper.toDto(menu); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(Menu resources) { + if (menuRepository.findByTitle(resources.getTitle()) != null) { + throw new BaseException("菜单实体存在异常", ResponseEnum.MENU_ADD_ERROR_EXIST.getMessage()); + } + if (StringUtils.isNotBlank(resources.getComponentName())) { + if (menuRepository.findByComponentName(resources.getComponentName()) != null) { + throw new BaseException("菜单组件名称存在异常", ResponseEnum.ERROR.getMessage()); + } + } + if (resources.getPid().equals(0L)) { + resources.setPid(null); + } + if (resources.getIFrame()) { + String http = "http://", https = "https://"; + if (!resources.getPath().toLowerCase().startsWith(http)||resources.getPath().toLowerCase().startsWith(https)); + throw new BaseException("外链必须以://或者https://"); + } + menuRepository.save(resources); + resources.setSubCount(0); + updateSubCnt(resources.getId()); + } + + public void updateSubCnt(Long menuId){ + if (menuId!=null){ + int count=menuRepository.countByPid(menuId); + menuRepository.updateSubCntById(count,menuId); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(Menu resources) { + if(resources.getId().equals(resources.getPid())) { + throw new BaseException("上级不能为自己"); + } + Menu menu = menuRepository.findById(resources.getId()).orElseGet(Menu::new); + ValidationUtil.isNull(menu.getId(),"Permission","id",resources.getId()); + + if(resources.getIFrame()){ + String http = "http://", https = "https://"; + if (!(resources.getPath().toLowerCase().startsWith(http)||resources.getPath().toLowerCase().startsWith(https))) { + throw new BaseException("外链必须以http://或者https://开头"); + } + } + Menu menu1 = menuRepository.findByTitle(resources.getTitle()); + + if(menu1 != null && !menu1.getId().equals(menu.getId())){ + throw new BaseException("title",resources.getTitle()); + } + + if(resources.getPid().equals(0L)){ + resources.setPid(null); + } + + // 记录的父节点ID + Long oldPid = menu.getPid(); + Long newPid = resources.getPid(); + + if(StringUtils.isNotBlank(resources.getComponentName())){ + menu1 = menuRepository.findByComponentName(resources.getComponentName()); + if(menu1 != null && !menu1.getId().equals(menu.getId())){ + throw new BaseException("componentName",resources.getComponentName()); + } + } + menu.setTitle(resources.getTitle()); + menu.setComponent(resources.getComponent()); + menu.setPath(resources.getPath()); + menu.setIcon(resources.getIcon()); + menu.setIFrame(resources.getIFrame()); + menu.setPid(resources.getPid()); + menu.setMenuSort(resources.getMenuSort()); + menu.setCache(resources.getCache()); + menu.setHidden(resources.getHidden()); + menu.setComponentName(resources.getComponentName()); + menu.setPermission(resources.getPermission()); + menu.setType(resources.getType()); + menuRepository.save(menu); + // 计算父级菜单节点数目 + updateSubCnt(oldPid); + updateSubCnt(newPid); + // 清理缓存 + delCaches(resources.getId()); + } + + public void delCaches(Long id){ + List users=userRepository.findByMenuId(id); + redisUtils.del("menu::id:"+id); + redisUtils.delByKeys("menu::user:",users.stream().map(User::getId).collect(Collectors.toSet())); + // 清除 Role 缓存 + List roles = roleService.findInMenuId(new ArrayList(){{ + add(id); + }}); + redisUtils.delByKeys("role::id:",roles.stream().map(Role::getId).collect(Collectors.toSet())); + } + + @Override + public Set getChildMenus(List menuList, Set menuSet) { + return null; + } + + @Override + public List buildTree(List menuDtos) { + return null; + } + + @Override + public Menu findOne(Long id) { + return null; + } + + @Override + public void delete(Set menuSet) { + + } + + @Override + public List getMenus(Long pid) { + List menus; + if (pid!=null && pid.equals(0L)){ + menus=menuRepository.findByPid(pid); + }else { + menus = menuRepository.findByPidIsNull(); + } + return menuMapper.toDto(menus); + } + + + + + @Override + public List findByUser(Long currentUserId) { + return null; + } + + @Override + public List queryAll(MenuQueryCriteria criteria, Boolean isQuery) throws Exception { + Sort sort= Sort.by(Sort.Direction.ASC,"menuSort"); + if (Boolean.TRUE.equals(isQuery)){ + criteria.setPidIsNull(true); + List fields= QueryHelp.getAllFields(criteria.getClass(),new ArrayList<>()); + for (Field field:fields){ + field.setAccessible(true); + Object val = field.get(criteria); + if("pidIsNull".equals(field.getName())){ + continue; + } + if (ObjectUtil.isNotNull(val)) { + criteria.setPidIsNull(null); + break; + } + } + } + return menuMapper.toDto(menuRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),sort)); + } + + //新增权限获取下拉列表菜单 + @Override + public List queryAll() { + return menuSmallMapper.toDto(menuRepository.findDropDownList()); + } +} diff --git a/system/src/main/java/com/canvas/web/modules/system/service/impl/RoleServiceImpl.java b/system/src/main/java/com/canvas/web/modules/system/service/impl/RoleServiceImpl.java index 6e34520..b2f1061 100644 --- a/system/src/main/java/com/canvas/web/modules/system/service/impl/RoleServiceImpl.java +++ b/system/src/main/java/com/canvas/web/modules/system/service/impl/RoleServiceImpl.java @@ -1,14 +1,25 @@ package com.canvas.web.modules.system.service.impl; +import com.canvas.web.modules.security.service.UserCacheClean; import com.canvas.web.modules.system.domain.Role; +import com.canvas.web.modules.system.repository.RoleRepository; +import com.canvas.web.modules.system.repository.UserRepository; import com.canvas.web.modules.system.service.RoleService; +import com.canvas.web.modules.system.service.dto.RoleDto; +import com.canvas.web.modules.system.service.dto.RoleQueryCriteria; import com.canvas.web.modules.system.service.dto.RoleSmallDto; import com.canvas.web.modules.system.service.dto.UserDto; +import com.canvas.web.modules.system.service.mapstruct.RoleMapper; +import com.canvas.web.modules.system.service.mapstruct.RoleSmallMapper; +import com.canvas.web.utils.QueryHelp; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.CacheConfig; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; import org.springframework.security.core.GrantedAuthority; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -16,6 +27,13 @@ import java.util.Set; @RequiredArgsConstructor @CacheConfig(cacheNames = "role") public class RoleServiceImpl implements RoleService { + + private final RoleRepository roleRepository; + private final RoleMapper roleMapper; + private final RoleSmallMapper roleSmallMapper; + private final UserRepository userRepository; + private final UserCacheClean userCacheClean; + @Override public List mapToGrantedAuthorities(UserDto user) { return null; @@ -30,4 +48,47 @@ public class RoleServiceImpl implements RoleService { public Integer findByRoles(Set roles) { return null; } + + @Override + public List findInMenuId(ArrayList longs) { + return null; + } + + + + @Override + public void create(Role resources) { + + } + + @Override + public void delete(Set ids) { + + } + + @Override + public void updateMenu(Role resources, RoleDto roleDTO) { + + } + + @Override + public List findInMenuId(List menuIds) { + return null; + } + + @Override + public List queryAll() { + Sort sort=Sort.by(Sort.Direction.ASC,"level"); + return roleMapper.toDto(roleRepository.findAll(sort)); + } + + @Override + public Object queryAll(RoleQueryCriteria criteria, Pageable pageable) { + return null; + } + + @Override + public List queryAll(RoleQueryCriteria criteria) { + return roleMapper.toDto(roleRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder))); + } } diff --git a/system/src/main/java/com/canvas/web/modules/system/service/mapstruct/MenuSmallMapper.java b/system/src/main/java/com/canvas/web/modules/system/service/mapstruct/MenuSmallMapper.java new file mode 100644 index 0000000..456b5bb --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/system/service/mapstruct/MenuSmallMapper.java @@ -0,0 +1,12 @@ +package com.canvas.web.modules.system.service.mapstruct; + + +import com.canvas.web.base.BaseMapper; +import com.canvas.web.modules.system.domain.Menu; +import com.canvas.web.modules.system.service.dto.MenuSmallDto; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface MenuSmallMapper extends BaseMapper { +} diff --git a/system/src/main/java/com/canvas/web/modules/system/service/mapstruct/RoleMapper.java b/system/src/main/java/com/canvas/web/modules/system/service/mapstruct/RoleMapper.java index 3f2fcaf..6e75dbb 100644 --- a/system/src/main/java/com/canvas/web/modules/system/service/mapstruct/RoleMapper.java +++ b/system/src/main/java/com/canvas/web/modules/system/service/mapstruct/RoleMapper.java @@ -1,9 +1,12 @@ package com.canvas.web.modules.system.service.mapstruct; +import com.canvas.web.base.BaseMapper; +import com.canvas.web.modules.system.domain.Role; +import com.canvas.web.modules.system.service.dto.RoleDto; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; @Mapper(componentModel = "spring", uses = {MenuMapper.class, OrgMapper.class}, unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface RoleMapper { +public interface RoleMapper extends BaseMapper { } diff --git a/system/src/main/java/com/canvas/web/modules/system/service/mapstruct/RoleSmallMapper.java b/system/src/main/java/com/canvas/web/modules/system/service/mapstruct/RoleSmallMapper.java new file mode 100644 index 0000000..67dd116 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/system/service/mapstruct/RoleSmallMapper.java @@ -0,0 +1,11 @@ +package com.canvas.web.modules.system.service.mapstruct; + +import com.canvas.web.base.BaseMapper; +import com.canvas.web.modules.system.domain.Role; +import com.canvas.web.modules.system.service.dto.RoleSmallDto; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface RoleSmallMapper extends BaseMapper { +}