From f6270e80f3a7b7adaf496d9e978b0981d2d69e6c Mon Sep 17 00:00:00 2001
From: Bunny <1319900154@qq.com>
Date: Mon, 7 Oct 2024 23:31:29 +0800
Subject: [PATCH] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20=E6=A0=B9=E6=8D=AE?=
=?UTF-8?q?=E8=A7=92=E8=89=B2id=E6=9F=A5=E6=89=BE=E6=9D=83=E9=99=90,?=
=?UTF-8?q?=E6=8F=92=E5=85=A5=E8=A7=92=E8=89=B2=E5=92=8C=E6=9D=83=E9=99=90?=
=?UTF-8?q?=E6=97=B6=E8=BF=9B=E8=A1=8C=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6?=
=?UTF-8?q?=E5=AD=98=E5=9C=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../cn/bunny/dao/entity/system/RolePower.java | 6 +++---
.../dao/vo/system/rolePower/PowerVo.java | 5 +++++
.../controller/RolePowerController.java | 21 ++++++++++++++++++-
.../services/mapper/RolePowerMapper.java | 8 +++++++
.../services/service/RolePowerService.java | 9 ++++++++
.../service/impl/PowerServiceImpl.java | 18 ++++++++++++++++
.../service/impl/RolePowerServiceImpl.java | 17 +++++++++++++++
.../service/impl/RoleServiceImpl.java | 10 +++++++++
.../service/impl/RouterServiceImpl.java | 1 +
.../main/resources/mapper/RolePowerMapper.xml | 7 +++++++
10 files changed, 98 insertions(+), 4 deletions(-)
diff --git a/dao/src/main/java/cn/bunny/dao/entity/system/RolePower.java b/dao/src/main/java/cn/bunny/dao/entity/system/RolePower.java
index ee90dc8..16f239e 100644
--- a/dao/src/main/java/cn/bunny/dao/entity/system/RolePower.java
+++ b/dao/src/main/java/cn/bunny/dao/entity/system/RolePower.java
@@ -15,11 +15,11 @@ import lombok.experimental.Accessors;
@TableName("sys_role_power")
@Schema(name = "RolePower对象", title = "角色权限关系", description = "角色权限关系")
public class RolePower extends BaseEntity {
-
+
@Schema(name = "roleId", title = "角色id")
- private String roleId;
+ private Long roleId;
@Schema(name = "powerId", title = "权限id")
- private String powerId;
+ private Long powerId;
}
\ No newline at end of file
diff --git a/dao/src/main/java/cn/bunny/dao/vo/system/rolePower/PowerVo.java b/dao/src/main/java/cn/bunny/dao/vo/system/rolePower/PowerVo.java
index 21045d9..f27e6d3 100644
--- a/dao/src/main/java/cn/bunny/dao/vo/system/rolePower/PowerVo.java
+++ b/dao/src/main/java/cn/bunny/dao/vo/system/rolePower/PowerVo.java
@@ -1,6 +1,9 @@
package cn.bunny.dao.vo.system.rolePower;
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 lombok.*;
@@ -15,6 +18,8 @@ import java.util.List;
public class PowerVo extends BaseVo {
@Schema(name = "parentId", title = "父级id")
+ @JsonFormat(shape = JsonFormat.Shape.STRING)
+ @JSONField(serializeUsing = ToStringSerializer.class)
private Long parentId;
@Schema(name = "parentId", title = "权限编码")
diff --git a/service/src/main/java/cn/bunny/services/controller/RolePowerController.java b/service/src/main/java/cn/bunny/services/controller/RolePowerController.java
index 5adf6ba..aee47dc 100644
--- a/service/src/main/java/cn/bunny/services/controller/RolePowerController.java
+++ b/service/src/main/java/cn/bunny/services/controller/RolePowerController.java
@@ -1,7 +1,16 @@
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.RestController;
+import reactor.core.publisher.Mono;
+
+import java.util.List;
/**
*
@@ -11,8 +20,18 @@ import org.springframework.web.bind.annotation.RestController;
* @author Bunny
* @since 2024-09-26
*/
+@Tag(name = "角色和权限", description = "角色和权限相关接口")
@RestController
-@RequestMapping("/rolePower")
+@RequestMapping("admin/rolePower")
public class RolePowerController {
+ @Autowired
+ private RolePowerService rolePowerService;
+
+ @Operation(summary = "根据角色id获取权限内容", description = "角色列表获取已选择的权限")
+ @GetMapping("getPowerListByRoleId")
+ public Mono>> getPowerListByRoleId(Long id) {
+ List voList = rolePowerService.getPowerListByRoleId(id);
+ return Mono.just(Result.success(voList));
+ }
}
diff --git a/service/src/main/java/cn/bunny/services/mapper/RolePowerMapper.java b/service/src/main/java/cn/bunny/services/mapper/RolePowerMapper.java
index 1915734..66ac09b 100644
--- a/service/src/main/java/cn/bunny/services/mapper/RolePowerMapper.java
+++ b/service/src/main/java/cn/bunny/services/mapper/RolePowerMapper.java
@@ -30,4 +30,12 @@ public interface RolePowerMapper extends BaseMapper {
* @param roleIds 角色
*/
void deleteBatchRoleIdsWithPhysics(List roleIds);
+
+ /**
+ * * 根据角色id获取权限内容
+ *
+ * @param roleId 角色id
+ * @return 已选择的权限列表
+ */
+ List selectPowerListByRoleId(Long roleId);
}
diff --git a/service/src/main/java/cn/bunny/services/service/RolePowerService.java b/service/src/main/java/cn/bunny/services/service/RolePowerService.java
index 36d4479..357de77 100644
--- a/service/src/main/java/cn/bunny/services/service/RolePowerService.java
+++ b/service/src/main/java/cn/bunny/services/service/RolePowerService.java
@@ -3,6 +3,8 @@ package cn.bunny.services.service;
import cn.bunny.dao.entity.system.RolePower;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 服务类
@@ -13,4 +15,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface RolePowerService extends IService {
+ /**
+ * * 根据角色id获取权限内容
+ *
+ * @param id 角色id
+ * @return 已选择的权限列表
+ */
+ List getPowerListByRoleId(Long id);
}
diff --git a/service/src/main/java/cn/bunny/services/service/impl/PowerServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/PowerServiceImpl.java
index 29f48eb..6cbf274 100644
--- a/service/src/main/java/cn/bunny/services/service/impl/PowerServiceImpl.java
+++ b/service/src/main/java/cn/bunny/services/service/impl/PowerServiceImpl.java
@@ -1,15 +1,19 @@
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.PowerDto;
import cn.bunny.dao.dto.system.rolePower.PowerUpdateDto;
import cn.bunny.dao.entity.system.Power;
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.services.mapper.PowerMapper;
import cn.bunny.services.mapper.RolePowerMapper;
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.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.validation.Valid;
@@ -66,6 +70,16 @@ public class PowerServiceImpl extends ServiceImpl implements
*/
@Override
public void addPower(@Valid PowerAddDto dto) {
+ // 添加权限时确保权限码和请求地址是唯一的
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(Power::getPowerCode, dto.getPowerCode())
+ .or()
+ .eq(Power::getPowerName, dto.getPowerName())
+ .or()
+ .eq(Power::getRequestUrl, dto.getRequestUrl());
+ List powerList = list(wrapper);
+ if (!powerList.isEmpty()) throw new BunnyException(ResultCodeEnum.DATA_EXIST);
+
// 保存数据
Power power = new Power();
BeanUtils.copyProperties(dto, power);
@@ -79,6 +93,10 @@ public class PowerServiceImpl extends ServiceImpl implements
*/
@Override
public void updatePower(@Valid PowerUpdateDto dto) {
+ Long id = dto.getId();
+ List powerList = list(Wrappers.lambdaQuery().eq(Power::getId, id));
+ if (powerList.isEmpty()) throw new BunnyException(ResultCodeEnum.DATA_NOT_EXIST);
+
// 更新内容
Power power = new Power();
BeanUtils.copyProperties(dto, power);
diff --git a/service/src/main/java/cn/bunny/services/service/impl/RolePowerServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/RolePowerServiceImpl.java
index 978b5f1..30deea1 100644
--- a/service/src/main/java/cn/bunny/services/service/impl/RolePowerServiceImpl.java
+++ b/service/src/main/java/cn/bunny/services/service/impl/RolePowerServiceImpl.java
@@ -4,8 +4,11 @@ import cn.bunny.dao.entity.system.RolePower;
import cn.bunny.services.mapper.RolePowerMapper;
import cn.bunny.services.service.RolePowerService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.List;
+
/**
*
* 服务实现类
@@ -17,4 +20,18 @@ import org.springframework.stereotype.Service;
@Service
public class RolePowerServiceImpl extends ServiceImpl implements RolePowerService {
+ @Autowired
+ private RolePowerMapper rolePowerMapper;
+
+ /**
+ * * 根据角色id获取权限内容
+ *
+ * @param id 角色id
+ * @return 已选择的权限列表
+ */
+ @Override
+ public List getPowerListByRoleId(Long id) {
+ List rolePowerList = rolePowerMapper.selectPowerListByRoleId(id);
+ return rolePowerList.stream().map(rolePower -> rolePower.getPowerId().toString()).toList();
+ }
}
diff --git a/service/src/main/java/cn/bunny/services/service/impl/RoleServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/RoleServiceImpl.java
index 4cffe9c..795b733 100644
--- a/service/src/main/java/cn/bunny/services/service/impl/RoleServiceImpl.java
+++ b/service/src/main/java/cn/bunny/services/service/impl/RoleServiceImpl.java
@@ -1,10 +1,12 @@
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.RoleDto;
import cn.bunny.dao.dto.system.rolePower.RoleUpdateDto;
import cn.bunny.dao.entity.system.Role;
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.services.mapper.RoleMapper;
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.service.RoleService;
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.service.impl.ServiceImpl;
import jakarta.validation.Valid;
@@ -75,6 +78,10 @@ public class RoleServiceImpl extends ServiceImpl implements Ro
*/
@Override
public void addRole(@Valid RoleAddDto dto) {
+ // 判断角色码是否被添加过
+ List roleList = list(Wrappers.lambdaQuery().eq(Role::getRoleCode, dto.getRoleCode()));
+ if (!roleList.isEmpty()) throw new BunnyException(ResultCodeEnum.DATA_EXIST);
+
// 保存数据
Role role = new Role();
BeanUtils.copyProperties(dto, role);
@@ -88,6 +95,9 @@ public class RoleServiceImpl extends ServiceImpl implements Ro
*/
@Override
public void updateRole(@Valid RoleUpdateDto dto) {
+ List roleList = list(Wrappers.lambdaQuery().eq(Role::getId, dto.getId()));
+ if (roleList.isEmpty()) throw new BunnyException(ResultCodeEnum.DATA_NOT_EXIST);
+
// 更新内容
Role role = new Role();
BeanUtils.copyProperties(dto, role);
diff --git a/service/src/main/java/cn/bunny/services/service/impl/RouterServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/RouterServiceImpl.java
index 7c52805..44c6751 100644
--- a/service/src/main/java/cn/bunny/services/service/impl/RouterServiceImpl.java
+++ b/service/src/main/java/cn/bunny/services/service/impl/RouterServiceImpl.java
@@ -45,6 +45,7 @@ import java.util.List;
public class RouterServiceImpl extends ServiceImpl implements RouterService {
@Autowired
private RouterServiceFactory routerServiceFactory;
+
@Autowired
private RedisTemplate redisTemplate;
diff --git a/service/src/main/resources/mapper/RolePowerMapper.xml b/service/src/main/resources/mapper/RolePowerMapper.xml
index 4d47c12..22cf448 100644
--- a/service/src/main/resources/mapper/RolePowerMapper.xml
+++ b/service/src/main/resources/mapper/RolePowerMapper.xml
@@ -39,4 +39,11 @@
+
+
+