fix(roleAuthority): 优化角色权限关联查询
This commit is contained in:
parent
e26d837e35
commit
22bb6a47c5
@ -3,7 +3,7 @@ package com.zsc.edu.bill.framework.security;
|
|||||||
import com.zsc.edu.bill.modules.system.entity.Authority;
|
import com.zsc.edu.bill.modules.system.entity.Authority;
|
||||||
import com.zsc.edu.bill.modules.system.entity.RoleAuthority;
|
import com.zsc.edu.bill.modules.system.entity.RoleAuthority;
|
||||||
import com.zsc.edu.bill.modules.system.entity.User;
|
import com.zsc.edu.bill.modules.system.entity.User;
|
||||||
import com.zsc.edu.bill.modules.system.repo.RoleAuthoritiesReposity;
|
import com.zsc.edu.bill.modules.system.repo.RoleAuthoritiesRepository;
|
||||||
import com.zsc.edu.bill.modules.system.repo.UserRepository;
|
import com.zsc.edu.bill.modules.system.repo.UserRepository;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
@ -12,9 +12,7 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -25,14 +23,14 @@ import java.util.stream.Collectors;
|
|||||||
public class JpaUserDetailsServiceImpl implements UserDetailsService {
|
public class JpaUserDetailsServiceImpl implements UserDetailsService {
|
||||||
|
|
||||||
private final UserRepository userRepo;
|
private final UserRepository userRepo;
|
||||||
private final RoleAuthoritiesReposity roleAuthoritiesReposity;
|
private final RoleAuthoritiesRepository roleAuthoritiesRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
||||||
User user = userRepo.selectByUsername(username);
|
User user = userRepo.selectByUsername(username);
|
||||||
|
|
||||||
List<RoleAuthority> roleAuthorities= roleAuthoritiesReposity.selectByRoleId(user.getRoleId());
|
List<RoleAuthority> roleAuthorities= roleAuthoritiesRepository.selectByRoleId(user.getRoleId());
|
||||||
user.role.authorities=roleAuthorities.stream()
|
user.role.authorities=roleAuthorities.stream()
|
||||||
.map(i -> Authority.valueOf(i.getAuthority()))
|
.map(i -> Authority.valueOf(i.getAuthority()))
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
@ -3,6 +3,8 @@ package com.zsc.edu.bill.modules.system.entity;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
@ -11,12 +13,13 @@ import java.io.Serializable;
|
|||||||
* @author
|
* @author
|
||||||
*/
|
*/
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Data
|
@Getter
|
||||||
|
@Setter
|
||||||
@TableName("sys_role_authorities")
|
@TableName("sys_role_authorities")
|
||||||
public class RoleAuthority implements Serializable {
|
public class RoleAuthority implements Serializable {
|
||||||
|
|
||||||
private Long roleId;
|
private Long roleId;
|
||||||
|
|
||||||
private String authority;
|
private String authority;
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
}
|
}
|
@ -2,10 +2,15 @@ package com.zsc.edu.bill.modules.system.repo;
|
|||||||
|
|
||||||
import com.zsc.edu.bill.modules.system.entity.RoleAuthority;
|
import com.zsc.edu.bill.modules.system.entity.RoleAuthority;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public interface RoleAuthoritiesReposity extends BaseMapper<RoleAuthority> {
|
/**
|
||||||
|
* @author Yao
|
||||||
|
*/
|
||||||
|
public interface RoleAuthoritiesRepository extends BaseMapper<RoleAuthority> {
|
||||||
|
|
||||||
|
@Select("select * from sys_role_authorities where role_id=#{roleId}")
|
||||||
List<RoleAuthority> selectByRoleId(Long roleId);
|
List<RoleAuthority> selectByRoleId(Long roleId);
|
||||||
}
|
}
|
@ -1,14 +1,14 @@
|
|||||||
package com.zsc.edu.bill.modules.system.service.impl;
|
package com.zsc.edu.bill.modules.system.service.impl;
|
||||||
|
|
||||||
import com.zsc.edu.bill.modules.system.entity.RoleAuthority;
|
import com.zsc.edu.bill.modules.system.entity.RoleAuthority;
|
||||||
import com.zsc.edu.bill.modules.system.repo.RoleAuthoritiesReposity;
|
import com.zsc.edu.bill.modules.system.repo.RoleAuthoritiesRepository;
|
||||||
import com.zsc.edu.bill.modules.system.service.RoleAuthService;
|
import com.zsc.edu.bill.modules.system.service.RoleAuthService;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class RoleAuthServiceImpl extends ServiceImpl<RoleAuthoritiesReposity, RoleAuthority> implements RoleAuthService {
|
public class RoleAuthServiceImpl extends ServiceImpl<RoleAuthoritiesRepository, RoleAuthority> implements RoleAuthService {
|
||||||
@Override
|
@Override
|
||||||
public boolean removeByRoleId(Long roleId) {
|
public boolean removeByRoleId(Long roleId) {
|
||||||
return remove(new LambdaQueryWrapper<RoleAuthority>().eq(RoleAuthority::getRoleId, roleId));
|
return remove(new LambdaQueryWrapper<RoleAuthority>().eq(RoleAuthority::getRoleId, roleId));
|
||||||
|
@ -9,11 +9,15 @@ mybatis-plus:
|
|||||||
|
|
||||||
spring:
|
spring:
|
||||||
datasource:
|
datasource:
|
||||||
url: jdbc:mysql://59.110.238.182:3306/study?useSSL=false&allowPublicKeyRetrieval=true&createDatabaseIfNotExist=true&characterEncoding=utf8&serverTimezone=Hongkong
|
url: jdbc:mysql://localhost:3306/bill?useSSL=false&allowPublicKeyRetrieval=true&createDatabaseIfNotExist=true&characterEncoding=utf8&serverTimezone=Hongkong
|
||||||
username: root
|
username: root
|
||||||
password: 2002
|
password: 123123
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
servlet:
|
servlet:
|
||||||
multipart:
|
multipart:
|
||||||
max-file-size: 40MB
|
max-file-size: 40MB
|
||||||
max-request-size: 40MB
|
max-request-size: 40MB
|
||||||
|
|
||||||
|
storage:
|
||||||
|
attachment: ./storage/attachment
|
||||||
|
temp: ./storage/temp
|
||||||
|
@ -1,17 +1,14 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.zsc.edu.bill.modules.system.repo.RoleAuthoritiesReposity">
|
<mapper namespace="com.zsc.edu.bill.modules.system.repo.RoleAuthoritiesRepository">
|
||||||
<resultMap id="BaseResultMap" type="com.zsc.edu.bill.modules.system.entity.RoleAuthority">
|
<!-- <resultMap id="BaseResultMap" type="com.zsc.edu.bill.modules.system.entity.RoleAuthority">-->
|
||||||
<result column="role_id" jdbcType="BIGINT" property="roleId"/>
|
<!-- <result column="role_id" jdbcType="BIGINT" property="roleId"/>-->
|
||||||
<result column="authority" jdbcType="BIGINT" property="authority"/>
|
<!-- <result column="authority" jdbcType="BIGINT" property="authority"/>-->
|
||||||
</resultMap>
|
<!-- </resultMap>-->
|
||||||
|
|
||||||
<select id="selectByRoleId" parameterType="java.lang.Long" resultMap="BaseResultMap">
|
<!-- <select id="selectByRoleId" parameterType="java.lang.Long" resultMap="BaseResultMap">-->
|
||||||
select
|
<!-- select * from sys_role_authorities sra where sra.role_id = #{roleId}-->
|
||||||
*
|
<!-- </select>-->
|
||||||
from sys_role_authorities a
|
|
||||||
where a.role_id = #{roleId}
|
|
||||||
</select>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,9 +3,8 @@ package com.zsc.edu.bill.service;
|
|||||||
import com.zsc.edu.bill.modules.system.entity.Authority;
|
import com.zsc.edu.bill.modules.system.entity.Authority;
|
||||||
import com.zsc.edu.bill.modules.system.entity.RoleAuthority;
|
import com.zsc.edu.bill.modules.system.entity.RoleAuthority;
|
||||||
import com.zsc.edu.bill.modules.system.entity.User;
|
import com.zsc.edu.bill.modules.system.entity.User;
|
||||||
import com.zsc.edu.bill.modules.system.repo.RoleAuthoritiesReposity;
|
import com.zsc.edu.bill.modules.system.repo.RoleAuthoritiesRepository;
|
||||||
import com.zsc.edu.bill.modules.system.repo.UserRepository;
|
import com.zsc.edu.bill.modules.system.repo.UserRepository;
|
||||||
import com.zsc.edu.bill.modules.system.service.UserService;
|
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
@ -22,13 +21,13 @@ import java.util.Set;
|
|||||||
@SpringBootTest
|
@SpringBootTest
|
||||||
public class UserServiceTest {
|
public class UserServiceTest {
|
||||||
@Resource
|
@Resource
|
||||||
private RoleAuthoritiesReposity roleAuthoritiesReposity;
|
private RoleAuthoritiesRepository roleAuthoritiesRepository;
|
||||||
@Resource
|
@Resource
|
||||||
private UserRepository userRepository;
|
private UserRepository userRepository;
|
||||||
@Test
|
@Test
|
||||||
void test() {
|
void test() {
|
||||||
User user=userRepository.selectByUsername("admin");
|
User user=userRepository.selectByUsername("admin");
|
||||||
List<RoleAuthority> authorities= roleAuthoritiesReposity.selectByRoleId(user.getRoleId());
|
List<RoleAuthority> authorities= roleAuthoritiesRepository.selectByRoleId(user.getRoleId());
|
||||||
Set<Authority> authorities1=new HashSet<>();
|
Set<Authority> authorities1=new HashSet<>();
|
||||||
authorities.stream().forEach(authority ->authorities1.add(Authority.valueOf(authority.getAuthority())));
|
authorities.stream().forEach(authority ->authorities1.add(Authority.valueOf(authority.getAuthority())));
|
||||||
user.role.authorities=authorities1;
|
user.role.authorities=authorities1;
|
||||||
|
Loading…
Reference in New Issue
Block a user