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

View File

@ -29,4 +29,7 @@ public interface AdminRoleService extends IService<AdminRole> {
List<Integer> getPermissionIdsByRoleId(Integer roleId); 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 updateWithRoleIds(AdminUser user, String name, String email, String password, Integer isBanLogin, Integer[] roleIds) throws ServiceException;
void removeWithRoleIds(Integer userId); 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; package xyz.playedu.api.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import xyz.playedu.api.domain.AdminRole; import xyz.playedu.api.domain.AdminRole;
import xyz.playedu.api.domain.AdminRolePermission; import xyz.playedu.api.domain.AdminRolePermission;
import xyz.playedu.api.exception.NotFoundException; 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.service.AdminRoleService;
import xyz.playedu.api.mapper.AdminRoleMapper; import xyz.playedu.api.mapper.AdminRoleMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -66,7 +67,7 @@ public class AdminRoleServiceImpl extends ServiceImpl<AdminRoleMapper, AdminRole
@Override @Override
public void resetRelatePermissions(AdminRole role, Integer[] permissionIds) { public void resetRelatePermissions(AdminRole role, Integer[] permissionIds) {
rolePermissionService.removeByRoleId(role.getId()); removeRelatePermissionByRoleId(role.getId());
relatePermissions(role, permissionIds); relatePermissions(role, permissionIds);
} }
@ -95,13 +96,36 @@ public class AdminRoleServiceImpl extends ServiceImpl<AdminRoleMapper, AdminRole
@Override @Override
@Transactional @Transactional
public void removeWithPermissions(AdminRole role) { public void removeWithPermissions(AdminRole role) {
rolePermissionService.removeByRoleId(role.getId()); removeRelatePermissionByRoleId(role.getId());
removeById(role.getId()); removeById(role.getId());
} }
@Override @Override
public List<Integer> getPermissionIdsByRoleId(Integer roleId) { 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.domain.AdminUserRole;
import xyz.playedu.api.exception.NotFoundException; import xyz.playedu.api.exception.NotFoundException;
import xyz.playedu.api.exception.ServiceException; 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.service.AdminUserService;
import xyz.playedu.api.mapper.AdminUserMapper; import xyz.playedu.api.mapper.AdminUserMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import xyz.playedu.api.types.JsonResponse;
import xyz.playedu.api.types.paginate.AdminUserPaginateFilter; import xyz.playedu.api.types.paginate.AdminUserPaginateFilter;
import xyz.playedu.api.types.paginate.PaginationResult; import xyz.playedu.api.types.paginate.PaginationResult;
import xyz.playedu.api.util.HelperUtil; import xyz.playedu.api.util.HelperUtil;
@ -111,13 +110,19 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
@Override @Override
public void resetRelateRoles(AdminUser user, Integer[] roleIds) { public void resetRelateRoles(AdminUser user, Integer[] roleIds) {
userRoleService.removeByUserId(user.getId()); removeRelateRolesByUserId(user.getId());
relateRoles(user, roleIds); relateRoles(user, roleIds);
} }
@Override @Override
public List<Integer> getRoleIdsByUserId(Integer userId) { 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 @Override
@ -153,9 +158,15 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
@Override @Override
@Transactional @Transactional
public void removeWithRoleIds(Integer userId) { public void removeWithRoleIds(Integer userId) {
userRoleService.removeByUserId(userId); removeRelateRolesByUserId(userId);
removeById(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 xyz.playedu.api.domain.AdminRolePermission;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.HashMap;
import java.util.List;
/** /**
* @author tengteng * @author tengteng
* @description 针对表admin_role_permission的数据库操作Service * @description 针对表admin_role_permission的数据库操作Service
@ -14,10 +10,4 @@ import java.util.List;
*/ */
public interface AdminRolePermissionService extends IService<AdminRolePermission> { 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 xyz.playedu.api.domain.AdminUserRole;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
@ -11,9 +11,4 @@ import java.util.List;
* @createDate 2023-02-21 16:25:43 * @createDate 2023-02-21 16:25:43
*/ */
public interface AdminUserRoleService extends IService<AdminUserRole> { public interface AdminUserRoleService extends IService<AdminUserRole> {
void removeByUserId(Integer userId);
List<Integer> getRoleIdsByUserId(Integer userId);
} }