user_role && role_permission中间表的服务优化

This commit is contained in:
none 2023-02-26 22:08:04 +08:00
parent 9883faf3d1
commit e34fb3bad0
11 changed files with 97 additions and 124 deletions

View File

@ -5,29 +5,24 @@ import org.springframework.stereotype.Component;
import xyz.playedu.api.constant.BackendConstant;
import xyz.playedu.api.domain.AdminRole;
import xyz.playedu.api.service.AdminPermissionService;
import xyz.playedu.api.service.AdminRolePermissionService;
import xyz.playedu.api.service.AdminRoleService;
import xyz.playedu.api.service.AdminUserRoleService;
import xyz.playedu.api.service.AdminUserService;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@Component
public class BackendBus {
@Autowired
private AdminUserRoleService adminUserRoleService;
@Autowired
private AdminRolePermissionService rolePermissionService;
@Autowired
private AdminPermissionService permissionService;
@Autowired
private AdminRoleService adminRoleService;
@Autowired
private AdminUserService adminUserService;
public static boolean inUnAuthWhitelist(String uri) {
for (int i = 0; i < BackendConstant.UN_AUTH_URI_WHITELIST.length; i++) {
if (uri.equals(BackendConstant.UN_AUTH_URI_WHITELIST[i])) {
@ -42,7 +37,7 @@ public class BackendBus {
AdminRole superRole = adminRoleService.getBySlug(BackendConstant.SUPER_ADMIN_ROLE);
HashMap<String, Boolean> permissions = new HashMap<>();
List<Integer> roleIds = adminUserRoleService.getRoleIdsByUserId(userId);
List<Integer> roleIds = adminUserService.getRoleIdsByUserId(userId);
if (roleIds.size() == 0) {
return permissions;
}
@ -52,7 +47,7 @@ public class BackendBus {
if (roleIds.contains(superRole.getId())) {//包含超级管理角色的话返回全部权限
permissionIds = permissionService.allIds();
} else {//根据相应的roleIds读取权限
permissionIds = rolePermissionService.getPermissionIdsByRoleIds(roleIds);
permissionIds = adminRoleService.getPermissionIdsByRoleIds(roleIds);
if (permissionIds.size() == 0) {
return permissions;
}

View File

@ -29,4 +29,7 @@ public interface AdminRoleService extends IService<AdminRole> {
List<Integer> getPermissionIdsByRoleId(Integer roleId);
List<Integer> getPermissionIdsByRoleIds(List<Integer> roleIds);
void removeRelatePermissionByRoleId(Integer roleId);
}

View File

@ -36,4 +36,6 @@ public interface AdminUserService extends IService<AdminUser> {
void updateWithRoleIds(AdminUser user, String name, String email, String password, Integer isBanLogin, Integer[] roleIds) throws ServiceException;
void removeWithRoleIds(Integer userId);
void removeRelateRolesByUserId(Integer userId);
}

View File

@ -1,49 +0,0 @@
package xyz.playedu.api.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import xyz.playedu.api.domain.AdminRole;
import xyz.playedu.api.domain.AdminRolePermission;
import xyz.playedu.api.service.AdminRolePermissionService;
import xyz.playedu.api.mapper.AdminRolePermissionMapper;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* @author tengteng
* @description 针对表admin_role_permission的数据库操作Service实现
* @createDate 2023-02-21 16:07:01
*/
@Service
public class AdminRolePermissionServiceImpl extends ServiceImpl<AdminRolePermissionMapper, AdminRolePermission> implements AdminRolePermissionService {
@Override
public void removeByRoleId(Integer roleId) {
remove(query().getWrapper().eq("role_id", roleId));
}
@Override
public List<Integer> getPermissionIdsByRoleIds(List<Integer> roleIds) {
List<AdminRolePermission> rolePermissions = list(query().getWrapper().in("role_id", roleIds));
List<Integer> ids = new ArrayList<>();
for (AdminRolePermission rolePermission : rolePermissions) {
ids.add(rolePermission.getPermId());
}
return ids;
}
@Override
public List<Integer> getPermissionIdsByRoleId(Integer roleId) {
List<AdminRolePermission> rolePermissions = list(query().getWrapper().eq("role_id", roleId));
List<Integer> ids = new ArrayList<>();
for (AdminRolePermission rolePermission : rolePermissions) {
ids.add(rolePermission.getPermId());
}
return ids;
}
}

View File

@ -1,12 +1,13 @@
package xyz.playedu.api.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import xyz.playedu.api.domain.AdminRole;
import xyz.playedu.api.domain.AdminRolePermission;
import xyz.playedu.api.exception.NotFoundException;
import xyz.playedu.api.service.AdminRolePermissionService;
import xyz.playedu.api.service.internal.AdminRolePermissionService;
import xyz.playedu.api.service.AdminRoleService;
import xyz.playedu.api.mapper.AdminRoleMapper;
import org.springframework.stereotype.Service;
@ -66,7 +67,7 @@ public class AdminRoleServiceImpl extends ServiceImpl<AdminRoleMapper, AdminRole
@Override
public void resetRelatePermissions(AdminRole role, Integer[] permissionIds) {
rolePermissionService.removeByRoleId(role.getId());
removeRelatePermissionByRoleId(role.getId());
relatePermissions(role, permissionIds);
}
@ -95,13 +96,36 @@ public class AdminRoleServiceImpl extends ServiceImpl<AdminRoleMapper, AdminRole
@Override
@Transactional
public void removeWithPermissions(AdminRole role) {
rolePermissionService.removeByRoleId(role.getId());
removeRelatePermissionByRoleId(role.getId());
removeById(role.getId());
}
@Override
public List<Integer> getPermissionIdsByRoleId(Integer roleId) {
return rolePermissionService.getPermissionIdsByRoleId(roleId);
QueryWrapper<AdminRolePermission> wrapper = rolePermissionService.query().getWrapper().eq("role_id", roleId);
List<AdminRolePermission> rolePermissions = rolePermissionService.list(wrapper);
List<Integer> ids = new ArrayList<>();
for (AdminRolePermission rolePermission : rolePermissions) {
ids.add(rolePermission.getPermId());
}
return ids;
}
@Override
public List<Integer> getPermissionIdsByRoleIds(List<Integer> roleIds) {
QueryWrapper<AdminRolePermission> wrapper = rolePermissionService.query().getWrapper().in("role_id", roleIds);
List<AdminRolePermission> rolePermissions = rolePermissionService.list(wrapper);
List<Integer> ids = new ArrayList<>();
for (AdminRolePermission rolePermission : rolePermissions) {
ids.add(rolePermission.getPermId());
}
return ids;
}
@Override
public void removeRelatePermissionByRoleId(Integer roleId) {
QueryWrapper<AdminRolePermission> wrapper = rolePermissionService.query().getWrapper().eq("role_id", roleId);
rolePermissionService.remove(wrapper);
}
}

View File

@ -1,38 +0,0 @@
package xyz.playedu.api.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import xyz.playedu.api.domain.AdminUserRole;
import xyz.playedu.api.service.AdminUserRoleService;
import xyz.playedu.api.mapper.AdminUserRoleMapper;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* @author tengteng
* @description 针对表admin_user_role的数据库操作Service实现
* @createDate 2023-02-21 16:25:43
*/
@Service
public class AdminUserRoleServiceImpl extends ServiceImpl<AdminUserRoleMapper, AdminUserRole> implements AdminUserRoleService {
@Override
public void removeByUserId(Integer userId) {
remove(query().getWrapper().eq("admin_id", userId));
}
@Override
public List<Integer> getRoleIdsByUserId(Integer userId) {
List<AdminUserRole> userRoles = list(query().getWrapper().eq("admin_id", userId));
List<Integer> ids = new ArrayList<>();
for (AdminUserRole userRole : userRoles) {
ids.add(userRole.getRoleId());
}
return ids;
}
}

View File

@ -10,11 +10,10 @@ import xyz.playedu.api.domain.AdminUser;
import xyz.playedu.api.domain.AdminUserRole;
import xyz.playedu.api.exception.NotFoundException;
import xyz.playedu.api.exception.ServiceException;
import xyz.playedu.api.service.AdminUserRoleService;
import xyz.playedu.api.service.internal.AdminUserRoleService;
import xyz.playedu.api.service.AdminUserService;
import xyz.playedu.api.mapper.AdminUserMapper;
import org.springframework.stereotype.Service;
import xyz.playedu.api.types.JsonResponse;
import xyz.playedu.api.types.paginate.AdminUserPaginateFilter;
import xyz.playedu.api.types.paginate.PaginationResult;
import xyz.playedu.api.util.HelperUtil;
@ -111,13 +110,19 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
@Override
public void resetRelateRoles(AdminUser user, Integer[] roleIds) {
userRoleService.removeByUserId(user.getId());
removeRelateRolesByUserId(user.getId());
relateRoles(user, roleIds);
}
@Override
public List<Integer> getRoleIdsByUserId(Integer userId) {
return userRoleService.getRoleIdsByUserId(userId);
QueryWrapper<AdminUserRole> wrapper = userRoleService.query().getWrapper().eq("admin_id", userId);
List<AdminUserRole> userRoles = userRoleService.list(wrapper);
List<Integer> ids = new ArrayList<>();
for (AdminUserRole userRole : userRoles) {
ids.add(userRole.getRoleId());
}
return ids;
}
@Override
@ -153,9 +158,15 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
@Override
@Transactional
public void removeWithRoleIds(Integer userId) {
userRoleService.removeByUserId(userId);
removeRelateRolesByUserId(userId);
removeById(userId);
}
@Override
public void removeRelateRolesByUserId(Integer userId) {
QueryWrapper<AdminUserRole> wrapper = userRoleService.query().getWrapper().eq("admin_id", userId);
userRoleService.remove(wrapper);
}
}

View File

@ -0,0 +1,20 @@
package xyz.playedu.api.service.impl.internal;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import xyz.playedu.api.domain.AdminRolePermission;
import xyz.playedu.api.service.internal.AdminRolePermissionService;
import xyz.playedu.api.mapper.AdminRolePermissionMapper;
import org.springframework.stereotype.Service;
/**
* @author tengteng
* @description 针对表admin_role_permission的数据库操作Service实现
* @createDate 2023-02-21 16:07:01
*/
@Service
public class AdminRolePermissionServiceImpl extends ServiceImpl<AdminRolePermissionMapper, AdminRolePermission> implements AdminRolePermissionService {
}

View File

@ -0,0 +1,20 @@
package xyz.playedu.api.service.impl.internal;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import xyz.playedu.api.domain.AdminUserRole;
import xyz.playedu.api.service.internal.AdminUserRoleService;
import xyz.playedu.api.mapper.AdminUserRoleMapper;
import org.springframework.stereotype.Service;
/**
* @author tengteng
* @description 针对表admin_user_role的数据库操作Service实现
* @createDate 2023-02-21 16:25:43
*/
@Service
public class AdminUserRoleServiceImpl extends ServiceImpl<AdminUserRoleMapper, AdminUserRole> implements AdminUserRoleService {
}

View File

@ -1,12 +1,8 @@
package xyz.playedu.api.service;
package xyz.playedu.api.service.internal;
import org.springframework.stereotype.Service;
import xyz.playedu.api.domain.AdminRolePermission;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.HashMap;
import java.util.List;
/**
* @author tengteng
* @description 针对表admin_role_permission的数据库操作Service
@ -14,10 +10,4 @@ import java.util.List;
*/
public interface AdminRolePermissionService extends IService<AdminRolePermission> {
void removeByRoleId(Integer roleId);
List<Integer> getPermissionIdsByRoleIds(List<Integer> roleIds);
List<Integer> getPermissionIdsByRoleId(Integer roleId);
}

View File

@ -1,4 +1,4 @@
package xyz.playedu.api.service;
package xyz.playedu.api.service.internal;
import xyz.playedu.api.domain.AdminUserRole;
import com.baomidou.mybatisplus.extension.service.IService;
@ -11,9 +11,4 @@ import java.util.List;
* @createDate 2023-02-21 16:25:43
*/
public interface AdminUserRoleService extends IService<AdminUserRole> {
void removeByUserId(Integer userId);
List<Integer> getRoleIdsByUserId(Integer userId);
}