✨ 为角色分配权限
This commit is contained in:
parent
b01f915415
commit
c23e55c819
|
@ -1,7 +1,7 @@
|
||||||
package com.spring.step2.controller;
|
package com.spring.step2.controller;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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.entity.PermissionEntity;
|
||||||
import com.spring.step2.domain.vo.PermissionVo;
|
import com.spring.step2.domain.vo.PermissionVo;
|
||||||
import com.spring.step2.domain.vo.result.PageResult;
|
import com.spring.step2.domain.vo.result.PageResult;
|
||||||
|
@ -46,6 +46,13 @@ public class PermissionController {
|
||||||
return Result.success(pageResult);
|
return Result.success(pageResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "所有的权限列表", description = "获取所有的权限列表")
|
||||||
|
@GetMapping("all")
|
||||||
|
public Result<List<PermissionVo>> getAllPermission() {
|
||||||
|
List<PermissionVo> voList = permissionService.getAllPermission();
|
||||||
|
return Result.success(voList);
|
||||||
|
}
|
||||||
|
|
||||||
@Operation(summary = "添加系统权限表", description = "添加系统权限表")
|
@Operation(summary = "添加系统权限表", description = "添加系统权限表")
|
||||||
@PostMapping()
|
@PostMapping()
|
||||||
public Result<String> addPermission(@Valid @RequestBody PermissionDto dto) {
|
public Result<String> addPermission(@Valid @RequestBody PermissionDto dto) {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.spring.step2.controller;
|
package com.spring.step2.controller;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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.entity.RoleEntity;
|
||||||
import com.spring.step2.domain.vo.RoleVo;
|
import com.spring.step2.domain.vo.RoleVo;
|
||||||
import com.spring.step2.domain.vo.result.PageResult;
|
import com.spring.step2.domain.vo.result.PageResult;
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
package com.spring.step2.controller;
|
package com.spring.step2.controller;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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.entity.RolePermissionEntity;
|
||||||
import com.spring.step2.domain.vo.RolePermissionVo;
|
import com.spring.step2.domain.vo.RolePermissionVo;
|
||||||
import com.spring.step2.domain.vo.result.PageResult;
|
import com.spring.step2.domain.vo.result.PageResult;
|
||||||
|
@ -46,6 +47,13 @@ public class RolePermissionController {
|
||||||
return Result.success(pageResult);
|
return Result.success(pageResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("permissions")
|
||||||
|
@Operation(summary = "根据角色id获取权限内容", description = "根据角色id获取权限内容")
|
||||||
|
public Result<List<RolePermissionVo>> getRolePermissionById(Long permissionId) {
|
||||||
|
List<RolePermissionVo> voList = rolePermissionService.getRolePermissionById(permissionId);
|
||||||
|
return Result.success(voList);
|
||||||
|
}
|
||||||
|
|
||||||
@Operation(summary = "添加角色权限关联表", description = "添加角色权限关联表")
|
@Operation(summary = "添加角色权限关联表", description = "添加角色权限关联表")
|
||||||
@PostMapping()
|
@PostMapping()
|
||||||
public Result<String> addRolePermission(@Valid @RequestBody RolePermissionDto dto) {
|
public Result<String> addRolePermission(@Valid @RequestBody RolePermissionDto dto) {
|
||||||
|
@ -53,6 +61,13 @@ public class RolePermissionController {
|
||||||
return Result.success(ResultCodeEnum.ADD_SUCCESS);
|
return Result.success(ResultCodeEnum.ADD_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "为角色分配权限", description = "根据角色id分配权限")
|
||||||
|
@PostMapping("assign-permission")
|
||||||
|
public Result<String> assignRolePermission(@Valid @RequestBody AssignRolePermissionDto dto) {
|
||||||
|
rolePermissionService.assignRolePermission(dto);
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
|
|
||||||
@Operation(summary = "更新角色权限关联表", description = "更新角色权限关联表")
|
@Operation(summary = "更新角色权限关联表", description = "更新角色权限关联表")
|
||||||
@PutMapping()
|
@PutMapping()
|
||||||
public Result<String> updateRolePermission(@Valid @RequestBody RolePermissionDto dto) {
|
public Result<String> updateRolePermission(@Valid @RequestBody RolePermissionDto dto) {
|
||||||
|
|
|
@ -66,7 +66,7 @@ public class UserRoleController {
|
||||||
@PostMapping("assign-role")
|
@PostMapping("assign-role")
|
||||||
public Result<String> assignUserRole(@Valid @RequestBody AssignUserRoleDto dto) {
|
public Result<String> assignUserRole(@Valid @RequestBody AssignUserRoleDto dto) {
|
||||||
userRoleService.assignUserRole(dto);
|
userRoleService.assignUserRole(dto);
|
||||||
return Result.success(ResultCodeEnum.SUCCESS);
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "更新用户角色关联表", description = "更新用户角色关联表")
|
@Operation(summary = "更新用户角色关联表", description = "更新用户角色关联表")
|
||||||
|
|
|
@ -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 io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
|
@ -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<Long> permissionIds;
|
||||||
|
|
||||||
|
}
|
|
@ -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 io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
|
@ -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 io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
@ -6,8 +6,6 @@ import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
@ -24,19 +22,4 @@ public class RolePermissionDto {
|
||||||
@Schema(name = "permissionId", title = "权限ID")
|
@Schema(name = "permissionId", title = "权限ID")
|
||||||
private Long permissionId;
|
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;
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -4,7 +4,7 @@ package com.spring.step2.mapper;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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.entity.PermissionEntity;
|
||||||
import com.spring.step2.domain.vo.PermissionVo;
|
import com.spring.step2.domain.vo.PermissionVo;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
|
@ -4,7 +4,7 @@ package com.spring.step2.mapper;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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.entity.RoleEntity;
|
||||||
import com.spring.step2.domain.vo.RoleVo;
|
import com.spring.step2.domain.vo.RoleVo;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
|
@ -4,12 +4,14 @@ package com.spring.step2.mapper;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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.entity.RolePermissionEntity;
|
||||||
import com.spring.step2.domain.vo.RolePermissionVo;
|
import com.spring.step2.domain.vo.RolePermissionVo;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 角色权限关联表 Mapper 接口
|
* 角色权限关联表 Mapper 接口
|
||||||
|
@ -30,4 +32,18 @@ public interface RolePermissionMapper extends BaseMapper<RolePermissionEntity> {
|
||||||
*/
|
*/
|
||||||
IPage<RolePermissionVo> selectListByPage(@Param("page") Page<RolePermissionEntity> pageParams, @Param("dto") RolePermissionDto dto);
|
IPage<RolePermissionVo> selectListByPage(@Param("page") Page<RolePermissionEntity> pageParams, @Param("dto") RolePermissionDto dto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据角色id获取权限内容
|
||||||
|
*
|
||||||
|
* @param permissionId 权限id
|
||||||
|
* @return 角色权限列表
|
||||||
|
*/
|
||||||
|
List<RolePermissionEntity> selectListByPermissionId(Long permissionId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 先删除当前已经分配的角色权限内容
|
||||||
|
*
|
||||||
|
* @param roleId 角色id
|
||||||
|
*/
|
||||||
|
void deleteByRoleId(Long roleId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ package com.spring.step2.mapper;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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.dto.user.UserRoleDto;
|
||||||
import com.spring.step2.domain.entity.UserRoleEntity;
|
import com.spring.step2.domain.entity.UserRoleEntity;
|
||||||
import com.spring.step2.domain.vo.UserRoleVo;
|
import com.spring.step2.domain.vo.UserRoleVo;
|
||||||
|
@ -43,8 +42,8 @@ public interface UserRoleMapper extends BaseMapper<UserRoleEntity> {
|
||||||
/**
|
/**
|
||||||
* 根据用户id删除用户相关分配角色
|
* 根据用户id删除用户相关分配角色
|
||||||
*
|
*
|
||||||
* @param dto 用户分配角色DTO {@link AssignUserRoleDto}
|
* @param userId 用户id
|
||||||
*/
|
*/
|
||||||
void deleteByUserId(AssignUserRoleDto dto);
|
void deleteByUserId(Long userId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ package com.spring.step2.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
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.entity.PermissionEntity;
|
||||||
import com.spring.step2.domain.vo.PermissionVo;
|
import com.spring.step2.domain.vo.PermissionVo;
|
||||||
import com.spring.step2.domain.vo.result.PageResult;
|
import com.spring.step2.domain.vo.result.PageResult;
|
||||||
|
@ -46,4 +46,12 @@ public interface PermissionService extends IService<PermissionEntity> {
|
||||||
* @param ids 删除id列表
|
* @param ids 删除id列表
|
||||||
*/
|
*/
|
||||||
void deletePermission(List<Long> ids);
|
void deletePermission(List<Long> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取所有的权限列表
|
||||||
|
*
|
||||||
|
* @return 所有权限列表
|
||||||
|
*/
|
||||||
|
List<PermissionVo> getAllPermission();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,12 @@ package com.spring.step2.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
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.entity.RolePermissionEntity;
|
||||||
import com.spring.step2.domain.vo.RolePermissionVo;
|
import com.spring.step2.domain.vo.RolePermissionVo;
|
||||||
import com.spring.step2.domain.vo.result.PageResult;
|
import com.spring.step2.domain.vo.result.PageResult;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -46,4 +48,19 @@ public interface RolePermissionService extends IService<RolePermissionEntity> {
|
||||||
* @param ids 删除id列表
|
* @param ids 删除id列表
|
||||||
*/
|
*/
|
||||||
void deleteRolePermission(List<Long> ids);
|
void deleteRolePermission(List<Long> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据角色id获取权限内容
|
||||||
|
*
|
||||||
|
* @param permissionId 权限id
|
||||||
|
* @return 角色权限列表
|
||||||
|
*/
|
||||||
|
List<RolePermissionVo> getRolePermissionById(Long permissionId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据角色id分配权限
|
||||||
|
*
|
||||||
|
* @param dto 为角色分配权限 {@link AssignRolePermissionDto}
|
||||||
|
*/
|
||||||
|
void assignRolePermission(@Valid AssignRolePermissionDto dto);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ package com.spring.step2.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
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.entity.RoleEntity;
|
||||||
import com.spring.step2.domain.vo.RoleVo;
|
import com.spring.step2.domain.vo.RoleVo;
|
||||||
import com.spring.step2.domain.vo.result.PageResult;
|
import com.spring.step2.domain.vo.result.PageResult;
|
||||||
|
|
|
@ -4,7 +4,7 @@ import com.baomidou.dynamic.datasource.annotation.DS;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
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.entity.PermissionEntity;
|
||||||
import com.spring.step2.domain.vo.PermissionVo;
|
import com.spring.step2.domain.vo.PermissionVo;
|
||||||
import com.spring.step2.domain.vo.result.PageResult;
|
import com.spring.step2.domain.vo.result.PageResult;
|
||||||
|
@ -84,4 +84,18 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
|
||||||
public void deletePermission(List<Long> ids) {
|
public void deletePermission(List<Long> ids) {
|
||||||
removeByIds(ids);
|
removeByIds(ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取所有的权限列表
|
||||||
|
*
|
||||||
|
* @return 所有权限列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<PermissionVo> getAllPermission() {
|
||||||
|
return list().stream().map(permissionEntity -> {
|
||||||
|
PermissionVo permissionVo = new PermissionVo();
|
||||||
|
BeanUtils.copyProperties(permissionEntity, permissionVo);
|
||||||
|
return permissionVo;
|
||||||
|
}).toList();
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -4,7 +4,8 @@ import com.baomidou.dynamic.datasource.annotation.DS;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
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.entity.RolePermissionEntity;
|
||||||
import com.spring.step2.domain.vo.RolePermissionVo;
|
import com.spring.step2.domain.vo.RolePermissionVo;
|
||||||
import com.spring.step2.domain.vo.result.PageResult;
|
import com.spring.step2.domain.vo.result.PageResult;
|
||||||
|
@ -84,4 +85,44 @@ public class RolePermissionServiceImpl extends ServiceImpl<RolePermissionMapper,
|
||||||
public void deleteRolePermission(List<Long> ids) {
|
public void deleteRolePermission(List<Long> ids) {
|
||||||
removeByIds(ids);
|
removeByIds(ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据角色id获取权限内容
|
||||||
|
*
|
||||||
|
* @param permissionId 权限id
|
||||||
|
* @return 角色权限列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<RolePermissionVo> getRolePermissionById(Long permissionId) {
|
||||||
|
List<RolePermissionEntity> 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<Long> permissionIds = dto.getPermissionIds();
|
||||||
|
|
||||||
|
// 先删除当前已经分配的角色权限内容
|
||||||
|
baseMapper.deleteByRoleId(roleId);
|
||||||
|
|
||||||
|
List<RolePermissionEntity> rolePermissionEntityList = permissionIds.stream().map(permissionId -> {
|
||||||
|
RolePermissionEntity rolePermissionEntity = new RolePermissionEntity();
|
||||||
|
rolePermissionEntity.setRoleId(roleId);
|
||||||
|
rolePermissionEntity.setPermissionId(permissionId);
|
||||||
|
return rolePermissionEntity;
|
||||||
|
}).toList();
|
||||||
|
|
||||||
|
saveBatch(rolePermissionEntityList);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -4,7 +4,7 @@ import com.baomidou.dynamic.datasource.annotation.DS;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
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.entity.RoleEntity;
|
||||||
import com.spring.step2.domain.vo.RoleVo;
|
import com.spring.step2.domain.vo.RoleVo;
|
||||||
import com.spring.step2.domain.vo.result.PageResult;
|
import com.spring.step2.domain.vo.result.PageResult;
|
||||||
|
|
|
@ -112,9 +112,9 @@ public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRoleEnt
|
||||||
public void assignUserRole(AssignUserRoleDto dto) {
|
public void assignUserRole(AssignUserRoleDto dto) {
|
||||||
Long userId = dto.getUserId();
|
Long userId = dto.getUserId();
|
||||||
List<Long> roleIds = dto.getRoleIds();
|
List<Long> roleIds = dto.getRoleIds();
|
||||||
|
|
||||||
// 先删除已经分配的角色
|
// 先删除已经分配的角色
|
||||||
baseMapper.deleteByUserId(dto);
|
baseMapper.deleteByUserId(userId);
|
||||||
|
|
||||||
// 为用户分配角色
|
// 为用户分配角色
|
||||||
List<UserRoleEntity> entityList = roleIds.stream().map(roleId -> {
|
List<UserRoleEntity> entityList = roleIds.stream().map(roleId -> {
|
||||||
|
|
|
@ -19,6 +19,13 @@
|
||||||
id,role_id,permission_id,create_time,update_time,create_user,update_user,is_deleted
|
id,role_id,permission_id,create_time,update_time,create_user,update_user,is_deleted
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
|
<!-- 先删除当前已经分配的角色权限内容 -->
|
||||||
|
<delete id="deleteByRoleId">
|
||||||
|
delete
|
||||||
|
from t_role_permission
|
||||||
|
where role_id = #{roleId}
|
||||||
|
</delete>
|
||||||
|
|
||||||
<!-- 分页查询角色权限关联表内容 -->
|
<!-- 分页查询角色权限关联表内容 -->
|
||||||
<select id="selectListByPage" resultType="com.spring.step2.domain.vo.RolePermissionVo">
|
<select id="selectListByPage" resultType="com.spring.step2.domain.vo.RolePermissionVo">
|
||||||
select
|
select
|
||||||
|
@ -29,4 +36,15 @@
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<!-- 根据角色id获取权限内容 -->
|
||||||
|
<select id="selectListByPermissionId" resultType="com.spring.step2.domain.entity.RolePermissionEntity">
|
||||||
|
select *
|
||||||
|
from t_role_permission
|
||||||
|
<where>
|
||||||
|
<if test="permissionId != null">
|
||||||
|
permission_id = #{permissionId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
@ -0,0 +1,94 @@
|
||||||
|
const AssignPermission = defineComponent({
|
||||||
|
name: "AssignPermission",
|
||||||
|
template: `
|
||||||
|
<div class="offcanvas offcanvas-start" data-bs-scroll="true" id="assignPermissionOffCanvas"
|
||||||
|
aria-labelledby="assignPermissionOffCanvasLabel" ref="assignPermissionOffCanvasRef">
|
||||||
|
<div class="offcanvas-header">
|
||||||
|
<h5 class="offcanvas-title" id="assignPermissionOffCanvasLabel">
|
||||||
|
为角色分配权限
|
||||||
|
<a href="JavaScript:" class="icon-link icon-link-hover text-decoration-none" @click="onSave">
|
||||||
|
<i class="fas fa-save"></i>
|
||||||
|
保存
|
||||||
|
</a>
|
||||||
|
</h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="offcanvas-body">
|
||||||
|
<div class="form-check" v-for="(permission,index) in permissionList" :key="permission.id">
|
||||||
|
<input class="form-check-input" type="checkbox" v-model="permission.checked" :id="permission.permissionCode">
|
||||||
|
<label class="form-check-label" :for="permission.permissionCode">
|
||||||
|
{{permission.remark}}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
});
|
|
@ -70,7 +70,7 @@ const AssignRoles = defineComponent({
|
||||||
const {id} = value;
|
const {id} = value;
|
||||||
// 如果没有id直接返回
|
// 如果没有id直接返回
|
||||||
if (!id) return;
|
if (!id) return;
|
||||||
console.log(id)
|
|
||||||
// 获取角色列表
|
// 获取角色列表
|
||||||
await this.getRoleList();
|
await this.getRoleList();
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,10 @@
|
||||||
<dialog-role :is-add="isAdd" :on-search="onSearch" :role-info="roleInfo"></dialog-role>
|
<dialog-role :is-add="isAdd" :on-search="onSearch" :role-info="roleInfo"></dialog-role>
|
||||||
|
|
||||||
<header-navs></header-navs>
|
<header-navs></header-navs>
|
||||||
|
|
||||||
|
<!-- 分配权限 -->
|
||||||
|
<assign-permission :role-info="roleInfo"></assign-permission>
|
||||||
|
|
||||||
<!-- 头部 -->
|
<!-- 头部 -->
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header d-flex justify-content-between align-items-center">
|
<div class="card-header d-flex justify-content-between align-items-center">
|
||||||
|
@ -110,6 +114,10 @@
|
||||||
data-bs-target="#roleBackdrop" data-bs-toggle="modal">
|
data-bs-target="#roleBackdrop" data-bs-toggle="modal">
|
||||||
<i class="fas fa-edit"></i> 修改
|
<i class="fas fa-edit"></i> 修改
|
||||||
</button>
|
</button>
|
||||||
|
<button @click="onAssignPermission(role)" class="btn btn-outline-primary btn-action"
|
||||||
|
data-bs-target="#assignPermissionOffCanvas" data-bs-toggle="offcanvas">
|
||||||
|
<i class="fas fa-cloud"></i> 分配权限
|
||||||
|
</button>
|
||||||
<button @click="onDeleted(role)" class="btn btn-outline-danger btn-action">
|
<button @click="onDeleted(role)" class="btn btn-outline-danger btn-action">
|
||||||
<i class="fas fa-trash"></i> 删除
|
<i class="fas fa-trash"></i> 删除
|
||||||
</button>
|
</button>
|
||||||
|
@ -137,6 +145,8 @@
|
||||||
<script th:src="@{/src/components/Pagination.js}"></script>
|
<script th:src="@{/src/components/Pagination.js}"></script>
|
||||||
<!-- 角色表单 -->
|
<!-- 角色表单 -->
|
||||||
<script th:src="@{/src/views/role/DialogRole.js}"></script>
|
<script th:src="@{/src/views/role/DialogRole.js}"></script>
|
||||||
|
<!-- 角色分配权限 -->
|
||||||
|
<script th:src="@{/src/views/role/AssignPermission.js}"></script>
|
||||||
<script>
|
<script>
|
||||||
const {createApp, ref, toRaw} = Vue;
|
const {createApp, ref, toRaw} = Vue;
|
||||||
|
|
||||||
|
@ -202,6 +212,11 @@
|
||||||
this.roleInfo = roleInfo;
|
this.roleInfo = roleInfo;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/* 分配权限 */
|
||||||
|
onAssignPermission(roleInfo) {
|
||||||
|
this.roleInfo = roleInfo;
|
||||||
|
},
|
||||||
|
|
||||||
/* 删除 */
|
/* 删除 */
|
||||||
async onDeleted(roleInfo) {
|
async onDeleted(roleInfo) {
|
||||||
const result = confirm("确认删除?");
|
const result = confirm("确认删除?");
|
||||||
|
@ -225,6 +240,7 @@
|
||||||
app.component('HeaderNavs', HeaderNavs);
|
app.component('HeaderNavs', HeaderNavs);
|
||||||
app.component('Pagination', Pagination);
|
app.component('Pagination', Pagination);
|
||||||
app.component('DialogRole', DialogRole);
|
app.component('DialogRole', DialogRole);
|
||||||
|
app.component('AssignPermission', AssignPermission);
|
||||||
app.mount('#app');
|
app.mount('#app');
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
Loading…
Reference in New Issue