From c23e55c8194581e153ebb87a828d3ce8bb3f8bc8 Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Mon, 14 Jul 2025 14:22:56 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E4=B8=BA=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E5=88=86=E9=85=8D=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PermissionController.java | 9 +- .../step2/controller/RoleController.java | 2 +- .../controller/RolePermissionController.java | 17 +++- .../step2/controller/UserRoleController.java | 2 +- .../dto/{ => permission}/PermissionDto.java | 2 +- .../dto/role/AssignRolePermissionDto.java | 28 ++++++ .../step2/domain/dto/{ => role}/RoleDto.java | 2 +- .../dto/{ => role}/RolePermissionDto.java | 19 +--- .../spring/step2/mapper/PermissionMapper.java | 2 +- .../com/spring/step2/mapper/RoleMapper.java | 2 +- .../step2/mapper/RolePermissionMapper.java | 18 +++- .../spring/step2/mapper/UserRoleMapper.java | 5 +- .../step2/service/PermissionService.java | 10 +- .../step2/service/RolePermissionService.java | 19 +++- .../com/spring/step2/service/RoleService.java | 2 +- .../service/impl/PermissionServiceImpl.java | 16 +++- .../impl/RolePermissionServiceImpl.java | 43 ++++++++- .../step2/service/impl/RoleServiceImpl.java | 2 +- .../service/impl/UserRoleServiceImpl.java | 4 +- .../resources/mapper/RolePermissionMapper.xml | 18 ++++ .../static/src/views/role/AssignPermission.js | 94 +++++++++++++++++++ .../static/src/views/user/AssignRoles.js | 2 +- .../main/resources/templates/rolePage.html | 16 ++++ 23 files changed, 295 insertions(+), 39 deletions(-) rename spring-security/step-2/src/main/java/com/spring/step2/domain/dto/{ => permission}/PermissionDto.java (96%) create mode 100644 spring-security/step-2/src/main/java/com/spring/step2/domain/dto/role/AssignRolePermissionDto.java rename spring-security/step-2/src/main/java/com/spring/step2/domain/dto/{ => role}/RoleDto.java (96%) rename spring-security/step-2/src/main/java/com/spring/step2/domain/dto/{ => role}/RolePermissionDto.java (52%) create mode 100644 spring-security/step-2/src/main/resources/static/src/views/role/AssignPermission.js diff --git a/spring-security/step-2/src/main/java/com/spring/step2/controller/PermissionController.java b/spring-security/step-2/src/main/java/com/spring/step2/controller/PermissionController.java index 7b8acae..0353ee9 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/controller/PermissionController.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/controller/PermissionController.java @@ -1,7 +1,7 @@ package com.spring.step2.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.spring.step2.domain.dto.PermissionDto; +import com.spring.step2.domain.dto.permission.PermissionDto; import com.spring.step2.domain.entity.PermissionEntity; import com.spring.step2.domain.vo.PermissionVo; import com.spring.step2.domain.vo.result.PageResult; @@ -46,6 +46,13 @@ public class PermissionController { return Result.success(pageResult); } + @Operation(summary = "所有的权限列表", description = "获取所有的权限列表") + @GetMapping("all") + public Result> getAllPermission() { + List voList = permissionService.getAllPermission(); + return Result.success(voList); + } + @Operation(summary = "添加系统权限表", description = "添加系统权限表") @PostMapping() public Result addPermission(@Valid @RequestBody PermissionDto dto) { diff --git a/spring-security/step-2/src/main/java/com/spring/step2/controller/RoleController.java b/spring-security/step-2/src/main/java/com/spring/step2/controller/RoleController.java index c6b1b18..8a2a9d1 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/controller/RoleController.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/controller/RoleController.java @@ -1,7 +1,7 @@ package com.spring.step2.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.spring.step2.domain.dto.RoleDto; +import com.spring.step2.domain.dto.role.RoleDto; import com.spring.step2.domain.entity.RoleEntity; import com.spring.step2.domain.vo.RoleVo; import com.spring.step2.domain.vo.result.PageResult; diff --git a/spring-security/step-2/src/main/java/com/spring/step2/controller/RolePermissionController.java b/spring-security/step-2/src/main/java/com/spring/step2/controller/RolePermissionController.java index 9b9ea6d..3c17e52 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/controller/RolePermissionController.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/controller/RolePermissionController.java @@ -1,7 +1,8 @@ package com.spring.step2.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.spring.step2.domain.dto.RolePermissionDto; +import com.spring.step2.domain.dto.role.AssignRolePermissionDto; +import com.spring.step2.domain.dto.role.RolePermissionDto; import com.spring.step2.domain.entity.RolePermissionEntity; import com.spring.step2.domain.vo.RolePermissionVo; import com.spring.step2.domain.vo.result.PageResult; @@ -46,6 +47,13 @@ public class RolePermissionController { return Result.success(pageResult); } + @GetMapping("permissions") + @Operation(summary = "根据角色id获取权限内容", description = "根据角色id获取权限内容") + public Result> getRolePermissionById(Long permissionId) { + List voList = rolePermissionService.getRolePermissionById(permissionId); + return Result.success(voList); + } + @Operation(summary = "添加角色权限关联表", description = "添加角色权限关联表") @PostMapping() public Result addRolePermission(@Valid @RequestBody RolePermissionDto dto) { @@ -53,6 +61,13 @@ public class RolePermissionController { return Result.success(ResultCodeEnum.ADD_SUCCESS); } + @Operation(summary = "为角色分配权限", description = "根据角色id分配权限") + @PostMapping("assign-permission") + public Result assignRolePermission(@Valid @RequestBody AssignRolePermissionDto dto) { + rolePermissionService.assignRolePermission(dto); + return Result.success(); + } + @Operation(summary = "更新角色权限关联表", description = "更新角色权限关联表") @PutMapping() public Result updateRolePermission(@Valid @RequestBody RolePermissionDto dto) { diff --git a/spring-security/step-2/src/main/java/com/spring/step2/controller/UserRoleController.java b/spring-security/step-2/src/main/java/com/spring/step2/controller/UserRoleController.java index 700d04e..be9d902 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/controller/UserRoleController.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/controller/UserRoleController.java @@ -66,7 +66,7 @@ public class UserRoleController { @PostMapping("assign-role") public Result assignUserRole(@Valid @RequestBody AssignUserRoleDto dto) { userRoleService.assignUserRole(dto); - return Result.success(ResultCodeEnum.SUCCESS); + return Result.success(); } @Operation(summary = "更新用户角色关联表", description = "更新用户角色关联表") diff --git a/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/PermissionDto.java b/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/permission/PermissionDto.java similarity index 96% rename from spring-security/step-2/src/main/java/com/spring/step2/domain/dto/PermissionDto.java rename to spring-security/step-2/src/main/java/com/spring/step2/domain/dto/permission/PermissionDto.java index 8654805..a307236 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/PermissionDto.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/permission/PermissionDto.java @@ -1,4 +1,4 @@ -package com.spring.step2.domain.dto; +package com.spring.step2.domain.dto.permission; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; diff --git a/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/role/AssignRolePermissionDto.java b/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/role/AssignRolePermissionDto.java new file mode 100644 index 0000000..221128d --- /dev/null +++ b/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/role/AssignRolePermissionDto.java @@ -0,0 +1,28 @@ +package com.spring.step2.domain.dto.role; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "AssignRolePermissionDTO对象", title = "角色分配权限DTO", description = "根据角色id分配权限") +public class AssignRolePermissionDto { + + @Schema(name = "roleId", title = "角色ID") + @NotNull(message = "角色id为空") + private Long roleId; + + @Schema(name = "permissionId", title = "权限ID") + @NotEmpty(message = "权限id为空") + private List permissionIds; + +} diff --git a/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/RoleDto.java b/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/role/RoleDto.java similarity index 96% rename from spring-security/step-2/src/main/java/com/spring/step2/domain/dto/RoleDto.java rename to spring-security/step-2/src/main/java/com/spring/step2/domain/dto/role/RoleDto.java index 0ed387b..e1122ed 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/RoleDto.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/role/RoleDto.java @@ -1,4 +1,4 @@ -package com.spring.step2.domain.dto; +package com.spring.step2.domain.dto.role; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/RolePermissionDto.java b/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/role/RolePermissionDto.java similarity index 52% rename from spring-security/step-2/src/main/java/com/spring/step2/domain/dto/RolePermissionDto.java rename to spring-security/step-2/src/main/java/com/spring/step2/domain/dto/role/RolePermissionDto.java index b6ac9fc..6e2152b 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/RolePermissionDto.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/role/RolePermissionDto.java @@ -1,4 +1,4 @@ -package com.spring.step2.domain.dto; +package com.spring.step2.domain.dto.role; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; @@ -6,8 +6,6 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.time.LocalDateTime; - @Data @AllArgsConstructor @NoArgsConstructor @@ -24,19 +22,4 @@ public class RolePermissionDto { @Schema(name = "permissionId", title = "权限ID") private Long permissionId; - @Schema(name = "createTime", title = "创建时间") - private LocalDateTime createTime; - - @Schema(name = "updateTime", title = "更新时间") - private LocalDateTime updateTime; - - @Schema(name = "createUser", title = "创建用户ID") - private Long createUser; - - @Schema(name = "updateUser", title = "更新用户ID") - private Long updateUser; - - @Schema(name = "isDeleted", title = "是否删除:0-未删除,1-已删除") - private Boolean isDeleted; - } \ No newline at end of file diff --git a/spring-security/step-2/src/main/java/com/spring/step2/mapper/PermissionMapper.java b/spring-security/step-2/src/main/java/com/spring/step2/mapper/PermissionMapper.java index ffd793c..469bbca 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/mapper/PermissionMapper.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/mapper/PermissionMapper.java @@ -4,7 +4,7 @@ package com.spring.step2.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.spring.step2.domain.dto.PermissionDto; +import com.spring.step2.domain.dto.permission.PermissionDto; import com.spring.step2.domain.entity.PermissionEntity; import com.spring.step2.domain.vo.PermissionVo; import org.apache.ibatis.annotations.Mapper; diff --git a/spring-security/step-2/src/main/java/com/spring/step2/mapper/RoleMapper.java b/spring-security/step-2/src/main/java/com/spring/step2/mapper/RoleMapper.java index 22aff0e..9cfe435 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/mapper/RoleMapper.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/mapper/RoleMapper.java @@ -4,7 +4,7 @@ package com.spring.step2.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.spring.step2.domain.dto.RoleDto; +import com.spring.step2.domain.dto.role.RoleDto; import com.spring.step2.domain.entity.RoleEntity; import com.spring.step2.domain.vo.RoleVo; import org.apache.ibatis.annotations.Mapper; diff --git a/spring-security/step-2/src/main/java/com/spring/step2/mapper/RolePermissionMapper.java b/spring-security/step-2/src/main/java/com/spring/step2/mapper/RolePermissionMapper.java index 2af6cfe..5ad4abc 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/mapper/RolePermissionMapper.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/mapper/RolePermissionMapper.java @@ -4,12 +4,14 @@ package com.spring.step2.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.spring.step2.domain.dto.RolePermissionDto; +import com.spring.step2.domain.dto.role.RolePermissionDto; import com.spring.step2.domain.entity.RolePermissionEntity; import com.spring.step2.domain.vo.RolePermissionVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** *

* 角色权限关联表 Mapper 接口 @@ -30,4 +32,18 @@ public interface RolePermissionMapper extends BaseMapper { */ IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") RolePermissionDto dto); + /** + * 根据角色id获取权限内容 + * + * @param permissionId 权限id + * @return 角色权限列表 + */ + List selectListByPermissionId(Long permissionId); + + /** + * 先删除当前已经分配的角色权限内容 + * + * @param roleId 角色id + */ + void deleteByRoleId(Long roleId); } diff --git a/spring-security/step-2/src/main/java/com/spring/step2/mapper/UserRoleMapper.java b/spring-security/step-2/src/main/java/com/spring/step2/mapper/UserRoleMapper.java index a4454a7..ceeceb2 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/mapper/UserRoleMapper.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/mapper/UserRoleMapper.java @@ -3,7 +3,6 @@ package com.spring.step2.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.spring.step2.domain.dto.user.AssignUserRoleDto; import com.spring.step2.domain.dto.user.UserRoleDto; import com.spring.step2.domain.entity.UserRoleEntity; import com.spring.step2.domain.vo.UserRoleVo; @@ -43,8 +42,8 @@ public interface UserRoleMapper extends BaseMapper { /** * 根据用户id删除用户相关分配角色 * - * @param dto 用户分配角色DTO {@link AssignUserRoleDto} + * @param userId 用户id */ - void deleteByUserId(AssignUserRoleDto dto); + void deleteByUserId(Long userId); } diff --git a/spring-security/step-2/src/main/java/com/spring/step2/service/PermissionService.java b/spring-security/step-2/src/main/java/com/spring/step2/service/PermissionService.java index cb54173..82a2e37 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/service/PermissionService.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/service/PermissionService.java @@ -2,7 +2,7 @@ package com.spring.step2.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.spring.step2.domain.dto.PermissionDto; +import com.spring.step2.domain.dto.permission.PermissionDto; import com.spring.step2.domain.entity.PermissionEntity; import com.spring.step2.domain.vo.PermissionVo; import com.spring.step2.domain.vo.result.PageResult; @@ -46,4 +46,12 @@ public interface PermissionService extends IService { * @param ids 删除id列表 */ void deletePermission(List ids); + + /** + * 获取所有的权限列表 + * + * @return 所有权限列表 + */ + List getAllPermission(); + } diff --git a/spring-security/step-2/src/main/java/com/spring/step2/service/RolePermissionService.java b/spring-security/step-2/src/main/java/com/spring/step2/service/RolePermissionService.java index d740379..7ece697 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/service/RolePermissionService.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/service/RolePermissionService.java @@ -2,10 +2,12 @@ package com.spring.step2.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.spring.step2.domain.dto.RolePermissionDto; +import com.spring.step2.domain.dto.role.AssignRolePermissionDto; +import com.spring.step2.domain.dto.role.RolePermissionDto; import com.spring.step2.domain.entity.RolePermissionEntity; import com.spring.step2.domain.vo.RolePermissionVo; import com.spring.step2.domain.vo.result.PageResult; +import jakarta.validation.Valid; import java.util.List; @@ -46,4 +48,19 @@ public interface RolePermissionService extends IService { * @param ids 删除id列表 */ void deleteRolePermission(List ids); + + /** + * 根据角色id获取权限内容 + * + * @param permissionId 权限id + * @return 角色权限列表 + */ + List getRolePermissionById(Long permissionId); + + /** + * 根据角色id分配权限 + * + * @param dto 为角色分配权限 {@link AssignRolePermissionDto} + */ + void assignRolePermission(@Valid AssignRolePermissionDto dto); } diff --git a/spring-security/step-2/src/main/java/com/spring/step2/service/RoleService.java b/spring-security/step-2/src/main/java/com/spring/step2/service/RoleService.java index dc37d18..5ff3c00 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/service/RoleService.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/service/RoleService.java @@ -2,7 +2,7 @@ package com.spring.step2.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.spring.step2.domain.dto.RoleDto; +import com.spring.step2.domain.dto.role.RoleDto; import com.spring.step2.domain.entity.RoleEntity; import com.spring.step2.domain.vo.RoleVo; import com.spring.step2.domain.vo.result.PageResult; diff --git a/spring-security/step-2/src/main/java/com/spring/step2/service/impl/PermissionServiceImpl.java b/spring-security/step-2/src/main/java/com/spring/step2/service/impl/PermissionServiceImpl.java index 1220b67..8ef3c3f 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/service/impl/PermissionServiceImpl.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/service/impl/PermissionServiceImpl.java @@ -4,7 +4,7 @@ import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.spring.step2.domain.dto.PermissionDto; +import com.spring.step2.domain.dto.permission.PermissionDto; import com.spring.step2.domain.entity.PermissionEntity; import com.spring.step2.domain.vo.PermissionVo; import com.spring.step2.domain.vo.result.PageResult; @@ -84,4 +84,18 @@ public class PermissionServiceImpl extends ServiceImpl ids) { removeByIds(ids); } + + /** + * 获取所有的权限列表 + * + * @return 所有权限列表 + */ + @Override + public List getAllPermission() { + return list().stream().map(permissionEntity -> { + PermissionVo permissionVo = new PermissionVo(); + BeanUtils.copyProperties(permissionEntity, permissionVo); + return permissionVo; + }).toList(); + } } \ No newline at end of file diff --git a/spring-security/step-2/src/main/java/com/spring/step2/service/impl/RolePermissionServiceImpl.java b/spring-security/step-2/src/main/java/com/spring/step2/service/impl/RolePermissionServiceImpl.java index ec293fa..f5c3226 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/service/impl/RolePermissionServiceImpl.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/service/impl/RolePermissionServiceImpl.java @@ -4,7 +4,8 @@ import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.spring.step2.domain.dto.RolePermissionDto; +import com.spring.step2.domain.dto.role.AssignRolePermissionDto; +import com.spring.step2.domain.dto.role.RolePermissionDto; import com.spring.step2.domain.entity.RolePermissionEntity; import com.spring.step2.domain.vo.RolePermissionVo; import com.spring.step2.domain.vo.result.PageResult; @@ -84,4 +85,44 @@ public class RolePermissionServiceImpl extends ServiceImpl ids) { removeByIds(ids); } + + /** + * 根据角色id获取权限内容 + * + * @param permissionId 权限id + * @return 角色权限列表 + */ + @Override + public List getRolePermissionById(Long permissionId) { + List list = baseMapper.selectListByPermissionId(permissionId); + + return list.stream().map(rolePermissionEntity -> { + RolePermissionVo rolePermissionVo = new RolePermissionVo(); + BeanUtils.copyProperties(rolePermissionEntity, rolePermissionVo); + return rolePermissionVo; + }).toList(); + } + + /** + * 根据角色id分配权限 + * + * @param dto 为角色分配权限 {@link AssignRolePermissionDto} + */ + @Override + public void assignRolePermission(AssignRolePermissionDto dto) { + Long roleId = dto.getRoleId(); + List permissionIds = dto.getPermissionIds(); + + // 先删除当前已经分配的角色权限内容 + baseMapper.deleteByRoleId(roleId); + + List rolePermissionEntityList = permissionIds.stream().map(permissionId -> { + RolePermissionEntity rolePermissionEntity = new RolePermissionEntity(); + rolePermissionEntity.setRoleId(roleId); + rolePermissionEntity.setPermissionId(permissionId); + return rolePermissionEntity; + }).toList(); + + saveBatch(rolePermissionEntityList); + } } \ No newline at end of file diff --git a/spring-security/step-2/src/main/java/com/spring/step2/service/impl/RoleServiceImpl.java b/spring-security/step-2/src/main/java/com/spring/step2/service/impl/RoleServiceImpl.java index 50d5da3..a1c2ee5 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/service/impl/RoleServiceImpl.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/service/impl/RoleServiceImpl.java @@ -4,7 +4,7 @@ import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.spring.step2.domain.dto.RoleDto; +import com.spring.step2.domain.dto.role.RoleDto; import com.spring.step2.domain.entity.RoleEntity; import com.spring.step2.domain.vo.RoleVo; import com.spring.step2.domain.vo.result.PageResult; diff --git a/spring-security/step-2/src/main/java/com/spring/step2/service/impl/UserRoleServiceImpl.java b/spring-security/step-2/src/main/java/com/spring/step2/service/impl/UserRoleServiceImpl.java index b488912..88e91cc 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/service/impl/UserRoleServiceImpl.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/service/impl/UserRoleServiceImpl.java @@ -112,9 +112,9 @@ public class UserRoleServiceImpl extends ServiceImpl roleIds = dto.getRoleIds(); - + // 先删除已经分配的角色 - baseMapper.deleteByUserId(dto); + baseMapper.deleteByUserId(userId); // 为用户分配角色 List entityList = roleIds.stream().map(roleId -> { diff --git a/spring-security/step-2/src/main/resources/mapper/RolePermissionMapper.xml b/spring-security/step-2/src/main/resources/mapper/RolePermissionMapper.xml index b3e0259..5dff8cb 100644 --- a/spring-security/step-2/src/main/resources/mapper/RolePermissionMapper.xml +++ b/spring-security/step-2/src/main/resources/mapper/RolePermissionMapper.xml @@ -19,6 +19,13 @@ id,role_id,permission_id,create_time,update_time,create_user,update_user,is_deleted + + + delete + from t_role_permission + where role_id = #{roleId} + + + + + diff --git a/spring-security/step-2/src/main/resources/static/src/views/role/AssignPermission.js b/spring-security/step-2/src/main/resources/static/src/views/role/AssignPermission.js new file mode 100644 index 0000000..eca0a30 --- /dev/null +++ b/spring-security/step-2/src/main/resources/static/src/views/role/AssignPermission.js @@ -0,0 +1,94 @@ +const AssignPermission = defineComponent({ + name: "AssignPermission", + template: ` +

+
+
+ 为角色分配权限 + + + 保存 + +
+ +
+
+
+ + +
+
+
+ `, + props: { + roleInfo: {type: Object, required: true}, + }, + data() { + return { + // 所有的权限列表 + permissionList: ref([]), + // 角色权限列表 + rolePermissionIds: ref([]), + modalInstance: ref(null) + }; + }, + methods: { + /* 获取权限列表 */ + async getPermissionList() { + const {data} = await axiosInstance.get("/permission/all"); + this.permissionList = data; + }, + + /* 保存分配角色权限 */ + async onSave() { + // 过滤出已经被选择的权限 + const checkedPermissionList = this.permissionList + .filter(role => role.checked) + .map(role => role.id); + + // 分配的数据内容 + const data = { + roleId: this.roleInfo.id, + permissionIds: checkedPermissionList, + } + + // 为角色分配权限 + const {code, message} = await axiosInstance.post("/role-permission/assign-permission", data) + if (code === 200) { + this.modalInstance.hide(); + this.rolePermissionIds = []; + antd.message.success(message); + } + }, + }, + watch: { + /* 监视角色信息 */ + async roleInfo(value) { + const {id} = value; + // 如果没有id直接返回 + if (!id) return; + + // 获取权限列表 + await this.getPermissionList(); + + // 获取角色拥有的权限 + const {data} = await axiosInstance.get("/role-permission/permissions", {params: {userId: id}}); + // 提取角色拥有的权限ID数组 + const rolePermissionIds = data.map(permission => permission.permissionId + ""); + + // 遍历所有权限,检查角色是否拥有该权限 + this.permissionList.forEach(role => { + const hasRole = rolePermissionIds.includes(role.id); + if (hasRole) role.checked = true; + }) + } + }, + mounted() { + // 初始化模态框实例 + const modalEl = this.$refs.assignPermissionOffCanvasRef; + this.modalInstance = new bootstrap.Offcanvas(modalEl); + } +}); \ No newline at end of file diff --git a/spring-security/step-2/src/main/resources/static/src/views/user/AssignRoles.js b/spring-security/step-2/src/main/resources/static/src/views/user/AssignRoles.js index e1da9c4..f0ec601 100644 --- a/spring-security/step-2/src/main/resources/static/src/views/user/AssignRoles.js +++ b/spring-security/step-2/src/main/resources/static/src/views/user/AssignRoles.js @@ -70,7 +70,7 @@ const AssignRoles = defineComponent({ const {id} = value; // 如果没有id直接返回 if (!id) return; - console.log(id) + // 获取角色列表 await this.getRoleList(); diff --git a/spring-security/step-2/src/main/resources/templates/rolePage.html b/spring-security/step-2/src/main/resources/templates/rolePage.html index c37b6b1..9df9b8c 100644 --- a/spring-security/step-2/src/main/resources/templates/rolePage.html +++ b/spring-security/step-2/src/main/resources/templates/rolePage.html @@ -36,6 +36,10 @@ + + + +
@@ -110,6 +114,10 @@ data-bs-target="#roleBackdrop" data-bs-toggle="modal"> 修改 + @@ -137,6 +145,8 @@ + + \ No newline at end of file