From f07dec1de0afad77c79d7f65ac8787eae3147cdd Mon Sep 17 00:00:00 2001 From: xuwenbo <717567226@qq.com> Date: Fri, 15 May 2020 11:22:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E9=83=A8=E5=88=86=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../co/yixiang/modules/system/domain/Role.java | 3 +++ .../system/service/impl/MenuServiceImpl.java | 8 +++++++- .../system/service/impl/RoleServiceImpl.java | 15 +++++++++++++-- .../modules/system/service/mapper/DeptMapper.java | 7 +++++++ .../modules/system/service/mapper/MenuMapper.java | 12 ++++++++++-- .../modules/system/service/mapper/RoleMapper.java | 4 +++- .../src/main/resources/config/application-dev.yml | 2 +- 7 files changed, 44 insertions(+), 7 deletions(-) diff --git a/yshop-system/src/main/java/co/yixiang/modules/system/domain/Role.java b/yshop-system/src/main/java/co/yixiang/modules/system/domain/Role.java index 8c644ecf..8a82467c 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/system/domain/Role.java +++ b/yshop-system/src/main/java/co/yixiang/modules/system/domain/Role.java @@ -52,6 +52,9 @@ public class Role implements Serializable { @TableField(exist = false) private Set menus; + @TableField(exist = false) + private Set depts; + /** 创建日期 */ @TableField(fill= FieldFill.INSERT) private Timestamp createTime; diff --git a/yshop-system/src/main/java/co/yixiang/modules/system/service/impl/MenuServiceImpl.java b/yshop-system/src/main/java/co/yixiang/modules/system/service/impl/MenuServiceImpl.java index b4cbb0ec..4c608c7c 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/system/service/impl/MenuServiceImpl.java +++ b/yshop-system/src/main/java/co/yixiang/modules/system/service/impl/MenuServiceImpl.java @@ -261,7 +261,13 @@ public class MenuServiceImpl extends BaseServiceImpl implement */ @Override public List findByRoles(List roles) { - return null; + List roleIds = roles.stream().map(i ->{ + Long role = i.getId(); + return role; + }).collect(Collectors.toList()); + List list = menuMapper.selectListByRoles(roleIds); + + return generator.convert(list,MenuDto.class); } /** diff --git a/yshop-system/src/main/java/co/yixiang/modules/system/service/impl/RoleServiceImpl.java b/yshop-system/src/main/java/co/yixiang/modules/system/service/impl/RoleServiceImpl.java index a2e90458..e1abc4b3 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/system/service/impl/RoleServiceImpl.java +++ b/yshop-system/src/main/java/co/yixiang/modules/system/service/impl/RoleServiceImpl.java @@ -12,8 +12,12 @@ import co.yixiang.modules.system.domain.Dept; import co.yixiang.modules.system.domain.Menu; import co.yixiang.modules.system.domain.Role; import co.yixiang.common.service.impl.BaseServiceImpl; +import co.yixiang.modules.system.service.DeptService; +import co.yixiang.modules.system.service.MenuService; import co.yixiang.modules.system.service.dto.RoleSmallDto; import co.yixiang.modules.system.service.dto.UserDto; +import co.yixiang.modules.system.service.mapper.DeptMapper; +import co.yixiang.modules.system.service.mapper.MenuMapper; import co.yixiang.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.api.R; @@ -67,6 +71,8 @@ public class RoleServiceImpl extends BaseServiceImpl implement private final IGenerator generator; private final RoleMapper roleMapper; + private final MenuMapper menuMapper; + private final DeptMapper deptMapper; @Override //@Cacheable @@ -111,8 +117,8 @@ public class RoleServiceImpl extends BaseServiceImpl implement */ @Override public List findByUsersId(Long id) { - - return null; + List roles = roleMapper.selectListByUserId(id); + return generator.convert(roles,RoleSmallDto.class); } /** @@ -165,6 +171,11 @@ public class RoleServiceImpl extends BaseServiceImpl implement //@Cacheable(key = "'loadPermissionByUser:' + #p0.username") public Collection mapToGrantedAuthorities(UserDto user) { Set roles = roleMapper.findByUsers_Id(user.getId()); + for (Role role : roles) { + Set menuSet = menuMapper.findMenuByRoleId(role.getId()); + role.setMenus(menuSet); + Set deptSet = deptMapper.findDeptByRoleId(role.getId()); + } Set permissions = roles.stream().filter(role -> StringUtils.isNotBlank(role.getPermission())).map(Role::getPermission).collect(Collectors.toSet()); permissions.addAll( roles.stream().flatMap(role -> role.getMenus().stream()) diff --git a/yshop-system/src/main/java/co/yixiang/modules/system/service/mapper/DeptMapper.java b/yshop-system/src/main/java/co/yixiang/modules/system/service/mapper/DeptMapper.java index 559455a9..b3d9aa77 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/system/service/mapper/DeptMapper.java +++ b/yshop-system/src/main/java/co/yixiang/modules/system/service/mapper/DeptMapper.java @@ -11,8 +11,13 @@ package co.yixiang.modules.system.service.mapper; import co.yixiang.common.mapper.CoreMapper; import co.yixiang.modules.system.domain.Dept; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Repository; +import java.util.Set; + /** * @author hupeng * @date 2020-05-14 @@ -21,4 +26,6 @@ import org.springframework.stereotype.Repository; @Mapper public interface DeptMapper extends CoreMapper { + @Select("select * from dept m LEFT JOIN roles_depts t on m.id= t.dept_id LEFT JOIN role r on r.id = t.role_id where r.id = #{roleId}") + Set findDeptByRoleId(@Param("roleId") Long roleId); } diff --git a/yshop-system/src/main/java/co/yixiang/modules/system/service/mapper/MenuMapper.java b/yshop-system/src/main/java/co/yixiang/modules/system/service/mapper/MenuMapper.java index f1545cea..854db27c 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/system/service/mapper/MenuMapper.java +++ b/yshop-system/src/main/java/co/yixiang/modules/system/service/mapper/MenuMapper.java @@ -11,9 +11,12 @@ package co.yixiang.modules.system.service.mapper; import co.yixiang.common.mapper.CoreMapper; import co.yixiang.modules.system.domain.Menu; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Set; /** * @author hupeng @@ -29,6 +32,11 @@ public interface MenuMapper extends CoreMapper { * @param pid / * @return / */ - //todo - List findByPid(long pid); + @Select("SELECT * from menu m where m.pid = #{pid} ") + List findByPid(@Param("pid") long pid); + + @Select("select m.* from menu m LEFT JOIN roles_menus t on m.id= t.menu_id LEFT JOIN role r on r.id = t.role_id where r.id = #{roleId}") + Set findMenuByRoleId(@Param("roleId") Long roleId); + @Select("") + List selectListByRoles(@Param("roleIds") List roleIds); } diff --git a/yshop-system/src/main/java/co/yixiang/modules/system/service/mapper/RoleMapper.java b/yshop-system/src/main/java/co/yixiang/modules/system/service/mapper/RoleMapper.java index 97b0b5a8..8882d485 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/system/service/mapper/RoleMapper.java +++ b/yshop-system/src/main/java/co/yixiang/modules/system/service/mapper/RoleMapper.java @@ -16,6 +16,7 @@ import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Set; /** @@ -43,5 +44,6 @@ public interface RoleMapper extends CoreMapper { */ @Delete("delete from roles_menus where menu_id = #{id}") void untiedMenu(@Param("id") Long id); - + @Select("select m.* from role m LEFT JOIN users_roles t on m.id= t.role_id LEFT JOIN `user` r on r.id = t.user_id where r.id = #{id};") + List selectListByUserId(@Param("id") Long id); } diff --git a/yshop-system/src/main/resources/config/application-dev.yml b/yshop-system/src/main/resources/config/application-dev.yml index 39c76abc..ea421852 100644 --- a/yshop-system/src/main/resources/config/application-dev.yml +++ b/yshop-system/src/main/resources/config/application-dev.yml @@ -6,7 +6,7 @@ spring: druid: type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://localhost:3306/yshop?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull + url: jdbc:log4jdbc:mysql://localhost:3306/yxshop?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull username: root password: root