页面权限树根据权限过滤(超管不影响

This commit is contained in:
attiya 2025-09-05 15:41:52 +08:00
parent 742ac7166c
commit 45d8b41464
5 changed files with 67 additions and 2 deletions

View File

@ -69,6 +69,13 @@ public class EbikePermissionTreeNode implements Serializable {
*/
private String svgIcon;
private String icon;
/**
* 按钮标识
*/
private String buttonCode;
/**
* 重定向路径
*/

View File

@ -74,6 +74,13 @@ public class EbikePermission implements Serializable {
*/
private String svgIcon;
private String icon;
/**
* 按钮标识
*/
private String buttonCode;
/**
* 重定向路径
*/

View File

@ -49,7 +49,6 @@ public class EbikePermissionVo implements Serializable {
/**
* 路由路径
*/
@NotBlank(message = "菜单标题不能为空")
private String path;
@ -58,6 +57,13 @@ public class EbikePermissionVo implements Serializable {
*/
private String svgIcon;
private String icon;
/**
* 按钮标识
*/
private String buttonCode;
/**
* 重定向路径
*/

View File

@ -81,7 +81,6 @@ public class EbikeOperatorStaffServiceImpl extends ServiceImpl<EbikeOperatorStaf
permissions.add("common:btn:add");
permissions.add("common:btn:edit");
permissions.add("common:btn:delete");
List<String> roles = new ArrayList<>();
permissions.add("common");
info.setPermissions(permissions);
info.setRoles(list);

View File

@ -4,7 +4,9 @@ import cn.dev33.satoken.stp.StpUtil;
import com.cdzy.common.ex.EbikeException;
import com.cdzy.staff.mapper.EbikePermissionMapper;
import com.cdzy.staff.model.dto.EbikePermissionTreeNode;
import com.cdzy.staff.model.dto.StaffInfo;
import com.cdzy.staff.model.entity.EbikePermission;
import com.cdzy.staff.model.entity.EbikeRole;
import com.cdzy.staff.model.vo.EbikePermissionVo;
import com.cdzy.staff.service.EbikePermissionService;
import com.cdzy.staff.utils.TreeUtil;
@ -15,6 +17,10 @@ import org.springframework.stereotype.Service;
import java.util.List;
import static com.cdzy.staff.model.entity.table.EbikePermissionTableDef.EBIKE_PERMISSION;
import static com.cdzy.staff.model.entity.table.EbikeRolePermissionTableDef.EBIKE_ROLE_PERMISSION;
import static com.cdzy.staff.model.entity.table.EbikeStaffRoleTableDef.EBIKE_STAFF_ROLE;
/**
* 系统权限表 服务层实现
*
@ -38,6 +44,8 @@ public class EbikePermissionServiceImpl extends ServiceImpl<EbikePermissionMappe
.component(ebikePermission.getComponent())
.svgIcon(ebikePermission.getSvgIcon())
.redirect(ebikePermission.getRedirect())
.buttonCode(ebikePermission.getButtonCode())
.icon(ebikePermission.getIcon())
.parentId(parentId)
.createBy(StpUtil.getLoginIdAsLong())
.build();
@ -58,6 +66,8 @@ public class EbikePermissionServiceImpl extends ServiceImpl<EbikePermissionMappe
permission.setComponent(ebikePermission.getComponent());
permission.setSvgIcon(ebikePermission.getSvgIcon());
permission.setRedirect(ebikePermission.getRedirect());
permission.setButtonCode(ebikePermission.getButtonCode());
permission.setIcon(ebikePermission.getIcon());
permission.setParentId(parentId);
permission.setUpdateBy(StpUtil.getLoginIdAsLong());
ebikePermissionMapper.update(permission);
@ -65,8 +75,16 @@ public class EbikePermissionServiceImpl extends ServiceImpl<EbikePermissionMappe
@Override
public List<EbikePermissionTreeNode> tree() {
boolean sysAdmin = checkSysAdmin();
QueryWrapper queryWrapper = QueryWrapper.create()
.isNull(EbikePermission::getParentId);
if (!sysAdmin) {
Long loginId = StpUtil.getLoginIdAsLong();
queryWrapper
.leftJoin(EBIKE_ROLE_PERMISSION).on(EBIKE_PERMISSION.PERMISSION_ID.eq(EBIKE_ROLE_PERMISSION.PERMISSION_ID))
.leftJoin(EBIKE_STAFF_ROLE).on(EBIKE_STAFF_ROLE.ROLE_ID.eq(EBIKE_ROLE_PERMISSION.ROLE_ID))
.where(EBIKE_STAFF_ROLE.STAFF_ID.eq(loginId));
}
List<EbikePermissionTreeNode> first = ebikePermissionMapper.selectListByQueryAs(queryWrapper, EbikePermissionTreeNode.class);
List<Long> firstIds = first.stream().map(EbikePermissionTreeNode::getPermissionId).toList();
List<EbikePermissionTreeNode> second = null;
@ -74,11 +92,25 @@ public class EbikePermissionServiceImpl extends ServiceImpl<EbikePermissionMappe
if (!firstIds.isEmpty()) {
queryWrapper.clear();
queryWrapper.in(EbikePermission::getParentId, firstIds);
if (!sysAdmin) {
Long loginId = StpUtil.getLoginIdAsLong();
queryWrapper
.leftJoin(EBIKE_ROLE_PERMISSION).on(EBIKE_PERMISSION.PERMISSION_ID.eq(EBIKE_ROLE_PERMISSION.PERMISSION_ID))
.leftJoin(EBIKE_STAFF_ROLE).on(EBIKE_STAFF_ROLE.ROLE_ID.eq(EBIKE_ROLE_PERMISSION.ROLE_ID))
.where(EBIKE_STAFF_ROLE.STAFF_ID.eq(loginId));
}
second = ebikePermissionMapper.selectListByQueryAs(queryWrapper, EbikePermissionTreeNode.class);
List<Long> secondIds = second.stream().map(EbikePermissionTreeNode::getPermissionId).toList();
if (!secondIds.isEmpty()) {
queryWrapper.clear();
queryWrapper.in(EbikePermission::getParentId, secondIds);
if (!sysAdmin) {
Long loginId = StpUtil.getLoginIdAsLong();
queryWrapper
.leftJoin(EBIKE_ROLE_PERMISSION).on(EBIKE_PERMISSION.PERMISSION_ID.eq(EBIKE_ROLE_PERMISSION.PERMISSION_ID))
.leftJoin(EBIKE_STAFF_ROLE).on(EBIKE_STAFF_ROLE.ROLE_ID.eq(EBIKE_ROLE_PERMISSION.ROLE_ID))
.where(EBIKE_STAFF_ROLE.STAFF_ID.eq(loginId));
}
third = ebikePermissionMapper.selectListByQueryAs(queryWrapper, EbikePermissionTreeNode.class);
}
}
@ -87,6 +119,20 @@ public class EbikePermissionServiceImpl extends ServiceImpl<EbikePermissionMappe
return first;
}
private boolean checkSysAdmin() {
String loginId = StpUtil.getLoginIdAsString();
StaffInfo info = (StaffInfo) StpUtil.getSession().get(loginId);
List<EbikeRole> roles = info.getRoles();
boolean sysAdmin = false;
for (EbikeRole ebikeRole : roles) {
if (ebikeRole.getSysAdmin()) {
sysAdmin = true;
break;
}
}
return sysAdmin;
}
private void checkParent(Long parentId) {
if (parentId != null) {
EbikePermission permission = ebikePermissionMapper.selectOneById(parentId);