权限分配逻辑

This commit is contained in:
attiya 2025-09-08 13:39:46 +08:00
parent 994b2c36fa
commit dfb13e28a8
2 changed files with 30 additions and 31 deletions

View File

@ -1,11 +1,8 @@
package com.cdzy.staff.controller; package com.cdzy.staff.controller;
import com.cdzy.common.model.request.PageParam;
import com.cdzy.common.model.response.JsonResult; import com.cdzy.common.model.response.JsonResult;
import com.cdzy.staff.model.entity.EbikeRolePermission;
import com.cdzy.staff.model.vo.EbikeRolePermissionVo; import com.cdzy.staff.model.vo.EbikeRolePermissionVo;
import com.cdzy.staff.service.EbikeRolePermissionService; import com.cdzy.staff.service.EbikeRolePermissionService;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.core.query.QueryWrapper;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@ -50,6 +47,7 @@ public class EbikeRolePermissionController {
@GetMapping("list") @GetMapping("list")
public JsonResult<?> list(@NotNull(message = "角色ID不能为空") Long roleId) { public JsonResult<?> list(@NotNull(message = "角色ID不能为空") Long roleId) {
QueryWrapper queryWrapper = QueryWrapper.create() QueryWrapper queryWrapper = QueryWrapper.create()
.select(EBIKE_ROLE_PERMISSION.PERMISSION_ID)
.where(EBIKE_ROLE_PERMISSION.ROLE_ID.eq(roleId)) .where(EBIKE_ROLE_PERMISSION.ROLE_ID.eq(roleId))
.where(EBIKE_ROLE_PERMISSION.IS_EMPOWER.eq(Boolean.FALSE)); .where(EBIKE_ROLE_PERMISSION.IS_EMPOWER.eq(Boolean.FALSE));
List<Long> list = ebikeRolePermissionService.listAs(queryWrapper, Long.class); List<Long> list = ebikeRolePermissionService.listAs(queryWrapper, Long.class);

View File

@ -47,40 +47,41 @@ public class EbikeRolePermissionServiceImpl extends ServiceImpl<EbikeRolePermiss
checkRole(roleId); checkRole(roleId);
List<Long> permissionIds = ebikeRolePermission.getPermissionIds(); List<Long> permissionIds = ebikeRolePermission.getPermissionIds();
long loginId = StpUtil.getLoginIdAsLong(); long loginId = StpUtil.getLoginIdAsLong();
if (permissionIds != null && !permissionIds.isEmpty()) { if (permissionIds != null) {
QueryWrapper queryWrapper = QueryWrapper.create() QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_ROLE_PERMISSION.ROLE_ID.eq(roleId)); .where(EBIKE_ROLE_PERMISSION.ROLE_ID.eq(roleId));
rolePermissionMapper.deleteByQuery(queryWrapper); rolePermissionMapper.deleteByQuery(queryWrapper);
if (!permissionIds.isEmpty()) {
//获取所有有效权限id
queryWrapper.clear();
queryWrapper.where(EBIKE_PERMISSION.PERMISSION_ID.in(permissionIds));
List<EbikePermission> ebikePermissions = permissionMapper.selectListByQuery(queryWrapper);
//获取所有有效权限id permissionIds.clear();
queryWrapper.clear(); if (ebikePermissions != null && !ebikePermissions.isEmpty()) {
queryWrapper.where(EBIKE_PERMISSION.PERMISSION_ID.in(permissionIds)); List<Long> parentIds = new ArrayList<>();
List<EbikePermission> ebikePermissions = permissionMapper.selectListByQuery(queryWrapper); //父级授权
for (EbikePermission ebikePermission : ebikePermissions) {
permissionIds.clear(); permissionIds.add(ebikePermission.getPermissionId());
if (ebikePermissions != null && !ebikePermissions.isEmpty()) { if (ebikePermission.getParentId() != null) {
List<Long> parentIds = new ArrayList<>(); parentIds.add(ebikePermission.getParentId());
//父级授权 }
for (EbikePermission ebikePermission : ebikePermissions) {
permissionIds.add(ebikePermission.getPermissionId());
if (ebikePermission.getParentId() != null) {
parentIds.add(ebikePermission.getParentId());
} }
List<EbikeRolePermission> rolePermissions = permissionIds.stream().map(permissionId -> EbikeRolePermission.builder()
.roleId(roleId)
.permissionId(permissionId)
.createBy(loginId)
.isEmpower(false)
.build()).toList();
List<EbikeRolePermission> parentRolePermissions = parentIds.stream().map(permissionId -> EbikeRolePermission.builder()
.roleId(roleId)
.permissionId(permissionId)
.createBy(loginId)
.isEmpower(true)
.build()).toList();
rolePermissionMapper.insertBatch(rolePermissions);
rolePermissionMapper.insertBatch(parentRolePermissions);
} }
List<EbikeRolePermission> rolePermissions = permissionIds.stream().map(permissionId -> EbikeRolePermission.builder()
.roleId(roleId)
.permissionId(permissionId)
.createBy(loginId)
.isEmpower(false)
.build()).toList();
List<EbikeRolePermission> parentRolePermissions = parentIds.stream().map(permissionId -> EbikeRolePermission.builder()
.roleId(roleId)
.permissionId(permissionId)
.createBy(loginId)
.isEmpower(true)
.build()).toList();
rolePermissionMapper.insertBatch(rolePermissions);
rolePermissionMapper.insertBatch(parentRolePermissions);
} }
} }
} }