You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
keshe/app/service/impl/PermissionServiceImpl.java

143 lines
4.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.demo.service.impl;
import com.demo.dao.PermissionMapper;
import com.demo.dao.RolePermissionMapper;
import com.demo.pojo.*;
import com.demo.service.PermissionService;
import com.demo.service.RoleService;
import com.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Service
public class PermissionServiceImpl implements PermissionService {
@Autowired
PermissionMapper permissionMapper;
@Autowired
UserService userService;
@Autowired
RoleService roleService;
@Autowired
RolePermissionMapper rolePermissionMapper;
@Override
public Set<String> listPermissions(String userName) {
//保存权限的名字
Set<String> result = new HashSet<>();
//获得当前用户的所有角色实体
List<Role> roles = roleService.listRoles(userName);
//保存关联查询的记录角色id==权限id的记录
List<RolePermission> rolePermissions = new ArrayList<>();
//遍历角色
for (Role role : roles) {
RolePermissionExample example = new RolePermissionExample();
//关联查询角色和权限 查询这个用户对应的角色id所对应的权限id
example.createCriteria().andRidEqualTo(role.getId());
List<RolePermission> rps= rolePermissionMapper.selectByExample(example);
rolePermissions.addAll(rps);//添加所有权限到集合
}
//遍历关联查询后的记录 通过记录的权限id查询出对应的权限的名字
for (RolePermission rolePermission : rolePermissions) {
Permission p = permissionMapper.selectByPrimaryKey(rolePermission.getPid());
if(p!=null){
//保存权限名到set集合
result.add(p.getName());
}
}
return result;
}
@Override
public List<Permission> list(Role role) {
//保存所有的权限实体
List<Permission> result = new ArrayList<>();
RolePermissionExample example = new RolePermissionExample();
example.createCriteria().andRidEqualTo(role.getId());
//关联查询
List<RolePermission> rps = rolePermissionMapper.selectByExample(example);
//根据权限id获得权限 添加到result集合中
for (RolePermission rolePermission : rps) {
result.add(permissionMapper.selectByPrimaryKey(rolePermission.getPid()));
}
return result;
}
@Override
public List<Permission> list() {
PermissionExample example =new PermissionExample();
example.setOrderByClause("id desc");
return permissionMapper.selectByExample(example);
}
@Override
public void add(Permission u) {
permissionMapper.insert(u);
}
@Override
public void delete(Long id) {
permissionMapper.deleteByPrimaryKey(id);
}
@Override
public void update(Permission u) {
permissionMapper.updateByPrimaryKeySelective(u);
}
@Override
public Permission get(Long id) {
return permissionMapper.selectByPrimaryKey(id);
}
@Override
public boolean needInterceptor(String requestURI) {
List<Permission> ps = list();
for (Permission p : ps) {
if (p.getUrl().equals(requestURI))
return true;
}
return false;
}
@Override
public Set<String> listPermissionURLs(String userName) {
Set<String> result = new HashSet<>();
//获得当前管理员的角色列表
List<Role> roles = roleService.listRoles(userName);
List<RolePermission> rolePermissions = new ArrayList<>();
//遍历角色列表 关联查询出每个角色对应的权限列表的记录
for (Role role : roles) {
RolePermissionExample example = new RolePermissionExample();
example.createCriteria().andRidEqualTo(role.getId());
List<RolePermission> rps = rolePermissionMapper.selectByExample(example);
rolePermissions.addAll(rps);
}
//根据关联表的记录查询出具体对应的权限维护的url
for (RolePermission rolePermission : rolePermissions) {
Permission p = permissionMapper.selectByPrimaryKey(rolePermission.getPid());
if(p!=null){
result.add(p.getUrl());
}
}
return result;
}
}