feat(新增): 根据角色id查找权限,插入角色和权限时进行判断是否存在
This commit is contained in:
parent
92d75ccefa
commit
f6270e80f3
|
@ -17,9 +17,9 @@ import lombok.experimental.Accessors;
|
||||||
public class RolePower extends BaseEntity {
|
public class RolePower extends BaseEntity {
|
||||||
|
|
||||||
@Schema(name = "roleId", title = "角色id")
|
@Schema(name = "roleId", title = "角色id")
|
||||||
private String roleId;
|
private Long roleId;
|
||||||
|
|
||||||
@Schema(name = "powerId", title = "权限id")
|
@Schema(name = "powerId", title = "权限id")
|
||||||
private String powerId;
|
private Long powerId;
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,6 +1,9 @@
|
||||||
package cn.bunny.dao.vo.system.rolePower;
|
package cn.bunny.dao.vo.system.rolePower;
|
||||||
|
|
||||||
import cn.bunny.dao.vo.BaseVo;
|
import cn.bunny.dao.vo.BaseVo;
|
||||||
|
import com.alibaba.fastjson2.annotation.JSONField;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
|
@ -15,6 +18,8 @@ import java.util.List;
|
||||||
public class PowerVo extends BaseVo {
|
public class PowerVo extends BaseVo {
|
||||||
|
|
||||||
@Schema(name = "parentId", title = "父级id")
|
@Schema(name = "parentId", title = "父级id")
|
||||||
|
@JsonFormat(shape = JsonFormat.Shape.STRING)
|
||||||
|
@JSONField(serializeUsing = ToStringSerializer.class)
|
||||||
private Long parentId;
|
private Long parentId;
|
||||||
|
|
||||||
@Schema(name = "parentId", title = "权限编码")
|
@Schema(name = "parentId", title = "权限编码")
|
||||||
|
|
|
@ -1,7 +1,16 @@
|
||||||
package cn.bunny.services.controller;
|
package cn.bunny.services.controller;
|
||||||
|
|
||||||
|
import cn.bunny.dao.pojo.result.Result;
|
||||||
|
import cn.bunny.services.service.RolePowerService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -11,8 +20,18 @@ import org.springframework.web.bind.annotation.RestController;
|
||||||
* @author Bunny
|
* @author Bunny
|
||||||
* @since 2024-09-26
|
* @since 2024-09-26
|
||||||
*/
|
*/
|
||||||
|
@Tag(name = "角色和权限", description = "角色和权限相关接口")
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/rolePower")
|
@RequestMapping("admin/rolePower")
|
||||||
public class RolePowerController {
|
public class RolePowerController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RolePowerService rolePowerService;
|
||||||
|
|
||||||
|
@Operation(summary = "根据角色id获取权限内容", description = "角色列表获取已选择的权限")
|
||||||
|
@GetMapping("getPowerListByRoleId")
|
||||||
|
public Mono<Result<List<String>>> getPowerListByRoleId(Long id) {
|
||||||
|
List<String> voList = rolePowerService.getPowerListByRoleId(id);
|
||||||
|
return Mono.just(Result.success(voList));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,4 +30,12 @@ public interface RolePowerMapper extends BaseMapper<RolePower> {
|
||||||
* @param roleIds 角色
|
* @param roleIds 角色
|
||||||
*/
|
*/
|
||||||
void deleteBatchRoleIdsWithPhysics(List<Long> roleIds);
|
void deleteBatchRoleIdsWithPhysics(List<Long> roleIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* * 根据角色id获取权限内容
|
||||||
|
*
|
||||||
|
* @param roleId 角色id
|
||||||
|
* @return 已选择的权限列表
|
||||||
|
*/
|
||||||
|
List<RolePower> selectPowerListByRoleId(Long roleId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,8 @@ package cn.bunny.services.service;
|
||||||
import cn.bunny.dao.entity.system.RolePower;
|
import cn.bunny.dao.entity.system.RolePower;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 服务类
|
* 服务类
|
||||||
|
@ -13,4 +15,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
*/
|
*/
|
||||||
public interface RolePowerService extends IService<RolePower> {
|
public interface RolePowerService extends IService<RolePower> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* * 根据角色id获取权限内容
|
||||||
|
*
|
||||||
|
* @param id 角色id
|
||||||
|
* @return 已选择的权限列表
|
||||||
|
*/
|
||||||
|
List<String> getPowerListByRoleId(Long id);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
package cn.bunny.services.service.impl;
|
package cn.bunny.services.service.impl;
|
||||||
|
|
||||||
|
import cn.bunny.common.service.exception.BunnyException;
|
||||||
import cn.bunny.dao.dto.system.rolePower.PowerAddDto;
|
import cn.bunny.dao.dto.system.rolePower.PowerAddDto;
|
||||||
import cn.bunny.dao.dto.system.rolePower.PowerDto;
|
import cn.bunny.dao.dto.system.rolePower.PowerDto;
|
||||||
import cn.bunny.dao.dto.system.rolePower.PowerUpdateDto;
|
import cn.bunny.dao.dto.system.rolePower.PowerUpdateDto;
|
||||||
import cn.bunny.dao.entity.system.Power;
|
import cn.bunny.dao.entity.system.Power;
|
||||||
import cn.bunny.dao.pojo.result.PageResult;
|
import cn.bunny.dao.pojo.result.PageResult;
|
||||||
|
import cn.bunny.dao.pojo.result.ResultCodeEnum;
|
||||||
import cn.bunny.dao.vo.system.rolePower.PowerVo;
|
import cn.bunny.dao.vo.system.rolePower.PowerVo;
|
||||||
import cn.bunny.services.mapper.PowerMapper;
|
import cn.bunny.services.mapper.PowerMapper;
|
||||||
import cn.bunny.services.mapper.RolePowerMapper;
|
import cn.bunny.services.mapper.RolePowerMapper;
|
||||||
import cn.bunny.services.service.PowerService;
|
import cn.bunny.services.service.PowerService;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
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 jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
@ -66,6 +70,16 @@ public class PowerServiceImpl extends ServiceImpl<PowerMapper, Power> implements
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void addPower(@Valid PowerAddDto dto) {
|
public void addPower(@Valid PowerAddDto dto) {
|
||||||
|
// 添加权限时确保权限码和请求地址是唯一的
|
||||||
|
LambdaQueryWrapper<Power> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.eq(Power::getPowerCode, dto.getPowerCode())
|
||||||
|
.or()
|
||||||
|
.eq(Power::getPowerName, dto.getPowerName())
|
||||||
|
.or()
|
||||||
|
.eq(Power::getRequestUrl, dto.getRequestUrl());
|
||||||
|
List<Power> powerList = list(wrapper);
|
||||||
|
if (!powerList.isEmpty()) throw new BunnyException(ResultCodeEnum.DATA_EXIST);
|
||||||
|
|
||||||
// 保存数据
|
// 保存数据
|
||||||
Power power = new Power();
|
Power power = new Power();
|
||||||
BeanUtils.copyProperties(dto, power);
|
BeanUtils.copyProperties(dto, power);
|
||||||
|
@ -79,6 +93,10 @@ public class PowerServiceImpl extends ServiceImpl<PowerMapper, Power> implements
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void updatePower(@Valid PowerUpdateDto dto) {
|
public void updatePower(@Valid PowerUpdateDto dto) {
|
||||||
|
Long id = dto.getId();
|
||||||
|
List<Power> powerList = list(Wrappers.<Power>lambdaQuery().eq(Power::getId, id));
|
||||||
|
if (powerList.isEmpty()) throw new BunnyException(ResultCodeEnum.DATA_NOT_EXIST);
|
||||||
|
|
||||||
// 更新内容
|
// 更新内容
|
||||||
Power power = new Power();
|
Power power = new Power();
|
||||||
BeanUtils.copyProperties(dto, power);
|
BeanUtils.copyProperties(dto, power);
|
||||||
|
|
|
@ -4,8 +4,11 @@ import cn.bunny.dao.entity.system.RolePower;
|
||||||
import cn.bunny.services.mapper.RolePowerMapper;
|
import cn.bunny.services.mapper.RolePowerMapper;
|
||||||
import cn.bunny.services.service.RolePowerService;
|
import cn.bunny.services.service.RolePowerService;
|
||||||
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.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 服务实现类
|
* 服务实现类
|
||||||
|
@ -17,4 +20,18 @@ import org.springframework.stereotype.Service;
|
||||||
@Service
|
@Service
|
||||||
public class RolePowerServiceImpl extends ServiceImpl<RolePowerMapper, RolePower> implements RolePowerService {
|
public class RolePowerServiceImpl extends ServiceImpl<RolePowerMapper, RolePower> implements RolePowerService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RolePowerMapper rolePowerMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* * 根据角色id获取权限内容
|
||||||
|
*
|
||||||
|
* @param id 角色id
|
||||||
|
* @return 已选择的权限列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<String> getPowerListByRoleId(Long id) {
|
||||||
|
List<RolePower> rolePowerList = rolePowerMapper.selectPowerListByRoleId(id);
|
||||||
|
return rolePowerList.stream().map(rolePower -> rolePower.getPowerId().toString()).toList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
package cn.bunny.services.service.impl;
|
package cn.bunny.services.service.impl;
|
||||||
|
|
||||||
|
import cn.bunny.common.service.exception.BunnyException;
|
||||||
import cn.bunny.dao.dto.system.rolePower.RoleAddDto;
|
import cn.bunny.dao.dto.system.rolePower.RoleAddDto;
|
||||||
import cn.bunny.dao.dto.system.rolePower.RoleDto;
|
import cn.bunny.dao.dto.system.rolePower.RoleDto;
|
||||||
import cn.bunny.dao.dto.system.rolePower.RoleUpdateDto;
|
import cn.bunny.dao.dto.system.rolePower.RoleUpdateDto;
|
||||||
import cn.bunny.dao.entity.system.Role;
|
import cn.bunny.dao.entity.system.Role;
|
||||||
import cn.bunny.dao.pojo.result.PageResult;
|
import cn.bunny.dao.pojo.result.PageResult;
|
||||||
|
import cn.bunny.dao.pojo.result.ResultCodeEnum;
|
||||||
import cn.bunny.dao.vo.system.rolePower.RoleVo;
|
import cn.bunny.dao.vo.system.rolePower.RoleVo;
|
||||||
import cn.bunny.services.mapper.RoleMapper;
|
import cn.bunny.services.mapper.RoleMapper;
|
||||||
import cn.bunny.services.mapper.RolePowerMapper;
|
import cn.bunny.services.mapper.RolePowerMapper;
|
||||||
|
@ -12,6 +14,7 @@ import cn.bunny.services.mapper.RouterRoleMapper;
|
||||||
import cn.bunny.services.mapper.UserRoleMapper;
|
import cn.bunny.services.mapper.UserRoleMapper;
|
||||||
import cn.bunny.services.service.RoleService;
|
import cn.bunny.services.service.RoleService;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
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 jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
@ -75,6 +78,10 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void addRole(@Valid RoleAddDto dto) {
|
public void addRole(@Valid RoleAddDto dto) {
|
||||||
|
// 判断角色码是否被添加过
|
||||||
|
List<Role> roleList = list(Wrappers.<Role>lambdaQuery().eq(Role::getRoleCode, dto.getRoleCode()));
|
||||||
|
if (!roleList.isEmpty()) throw new BunnyException(ResultCodeEnum.DATA_EXIST);
|
||||||
|
|
||||||
// 保存数据
|
// 保存数据
|
||||||
Role role = new Role();
|
Role role = new Role();
|
||||||
BeanUtils.copyProperties(dto, role);
|
BeanUtils.copyProperties(dto, role);
|
||||||
|
@ -88,6 +95,9 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void updateRole(@Valid RoleUpdateDto dto) {
|
public void updateRole(@Valid RoleUpdateDto dto) {
|
||||||
|
List<Role> roleList = list(Wrappers.<Role>lambdaQuery().eq(Role::getId, dto.getId()));
|
||||||
|
if (roleList.isEmpty()) throw new BunnyException(ResultCodeEnum.DATA_NOT_EXIST);
|
||||||
|
|
||||||
// 更新内容
|
// 更新内容
|
||||||
Role role = new Role();
|
Role role = new Role();
|
||||||
BeanUtils.copyProperties(dto, role);
|
BeanUtils.copyProperties(dto, role);
|
||||||
|
|
|
@ -45,6 +45,7 @@ import java.util.List;
|
||||||
public class RouterServiceImpl extends ServiceImpl<RouterMapper, Router> implements RouterService {
|
public class RouterServiceImpl extends ServiceImpl<RouterMapper, Router> implements RouterService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private RouterServiceFactory routerServiceFactory;
|
private RouterServiceFactory routerServiceFactory;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RedisTemplate<String, Object> redisTemplate;
|
private RedisTemplate<String, Object> redisTemplate;
|
||||||
|
|
||||||
|
|
|
@ -39,4 +39,11 @@
|
||||||
</foreach>
|
</foreach>
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
|
<!-- 根据角色id获取权限内容 -->
|
||||||
|
<select id="selectPowerListByRoleId" resultType="cn.bunny.dao.entity.system.RolePower">
|
||||||
|
select *
|
||||||
|
from sys_role_power
|
||||||
|
where role_id = #{roleId}
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
Loading…
Reference in New Issue