diff --git a/src/main/java/com/jsl/oa/annotations/NeedRoleGroup.java b/src/main/java/com/jsl/oa/annotations/NeedPermission.java
similarity index 92%
rename from src/main/java/com/jsl/oa/annotations/NeedRoleGroup.java
rename to src/main/java/com/jsl/oa/annotations/NeedPermission.java
index 2f4c7c2..b4966f8 100644
--- a/src/main/java/com/jsl/oa/annotations/NeedRoleGroup.java
+++ b/src/main/java/com/jsl/oa/annotations/NeedPermission.java
@@ -14,7 +14,7 @@ import java.lang.annotation.*;
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
-public @interface NeedRoleGroup {
+public @interface NeedPermission {
/**
*
权限名称
*
diff --git a/src/main/java/com/jsl/oa/aspect/CheckUserAbleToUseAspect.java b/src/main/java/com/jsl/oa/aspect/CheckUserAbleToUseAspect.java
index 08e4989..4447410 100644
--- a/src/main/java/com/jsl/oa/aspect/CheckUserAbleToUseAspect.java
+++ b/src/main/java/com/jsl/oa/aspect/CheckUserAbleToUseAspect.java
@@ -31,7 +31,7 @@ public class CheckUserAbleToUseAspect {
private final UserDAO userDAO;
- @Around("@annotation(com.jsl.oa.annotations.NeedRoleGroup)")
+ @Around("@annotation(com.jsl.oa.annotations.NeedPermission)")
public Object checkUse(ProceedingJoinPoint pjp) throws Throwable {
// 从ServletRequest中获取用户信息
ServletRequestAttributes servletRequestAttributes =
diff --git a/src/main/java/com/jsl/oa/aspect/CheckUserPermissionAspect.java b/src/main/java/com/jsl/oa/aspect/CheckUserPermissionAspect.java
index c0daa7b..8c60eff 100644
--- a/src/main/java/com/jsl/oa/aspect/CheckUserPermissionAspect.java
+++ b/src/main/java/com/jsl/oa/aspect/CheckUserPermissionAspect.java
@@ -1,6 +1,8 @@
package com.jsl.oa.aspect;
-import com.jsl.oa.annotations.NeedRoleGroup;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.jsl.oa.annotations.NeedPermission;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.exception.library.NotLoginException;
import com.jsl.oa.exception.library.PermissionDeniedException;
@@ -16,14 +18,16 @@ import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
+import java.util.List;
+
/**
* 检查用户权限切面
*
* 检查访问的用户是否包含正确的访问权限,若用户有正确的访问权限则允许访问,若没有指定的权限将会返回错误的权限信息。
*
- * @since v1.2.0
- * @version v1.2.0
* @author xiao_lfeng
+ * @version v1.2.0
+ * @since v1.2.0
*/
@Slf4j
@Aspect
@@ -32,6 +36,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
public class CheckUserPermissionAspect {
private final RoleDAO roleDAO;
+ private final Gson gson;
/**
* 检查权限
@@ -41,7 +46,7 @@ public class CheckUserPermissionAspect {
* @param pjp {@link ProceedingJoinPoint}
* @return {@link Object}
*/
- @Around("@annotation(com.jsl.oa.annotations.NeedRoleGroup)")
+ @Around("@annotation(com.jsl.oa.annotations.NeedPermission)")
public Object checkPermission(ProceedingJoinPoint pjp) throws Throwable {
// 从ServletRequest中获取用户信息
ServletRequestAttributes servletRequestAttributes =
@@ -55,20 +60,23 @@ public class CheckUserPermissionAspect {
}
// 获取方法签名
MethodSignature signature = (MethodSignature) pjp.getSignature();
- NeedRoleGroup checkAccountPermission = signature.getMethod().getAnnotation(NeedRoleGroup.class);
+ NeedPermission checkAccountPermission = signature.getMethod().getAnnotation(NeedPermission.class);
String getRoleAtAnnotation = checkAccountPermission.value();
// 获取用户所在权限组
RoleDO getUserRole = roleDAO.getRoleNameByUid(getUserId);
if (getUserRole != null) {
- if (getUserRole.getRoleName().equals(getRoleAtAnnotation)) {
- return pjp.proceed();
- } else {
- throw new PermissionDeniedException("用户组不匹配", getRoleAtAnnotation);
+ List permissions = gson.fromJson(getUserRole.getPermissions(), new TypeToken>() {
+ }.getType());
+ if (permissions != null) {
+ for (String it : permissions) {
+ if (it.equals(getRoleAtAnnotation)) {
+ return pjp.proceed();
+ }
+ }
}
- } else {
- throw new PermissionDeniedException("用户组不匹配", getRoleAtAnnotation);
}
+ throw new PermissionDeniedException("权限不匹配", getRoleAtAnnotation);
} else {
throw new RuntimeException("无法获取信息");
}
diff --git a/src/main/java/com/jsl/oa/config/startup/StartupConfiguration.java b/src/main/java/com/jsl/oa/config/startup/StartupConfiguration.java
index 04ab84b..08aaaeb 100644
--- a/src/main/java/com/jsl/oa/config/startup/StartupConfiguration.java
+++ b/src/main/java/com/jsl/oa/config/startup/StartupConfiguration.java
@@ -73,7 +73,6 @@ public class StartupConfiguration {
prepareData.checkDatabase("oa_message");
prepareData.checkDatabase("oa_news_user");
prepareData.checkDatabase("oa_project_daily");
- prepareData.checkDatabase("oa_role_permissions");
prepareData.checkDatabase("oa_role_user");
prepareData.checkDatabase("oa_user_tags");
};
diff --git a/src/main/java/com/jsl/oa/controllers/PermissionController.java b/src/main/java/com/jsl/oa/controllers/PermissionController.java
index 00a49c4..1a4de33 100755
--- a/src/main/java/com/jsl/oa/controllers/PermissionController.java
+++ b/src/main/java/com/jsl/oa/controllers/PermissionController.java
@@ -1,16 +1,14 @@
package com.jsl.oa.controllers;
-import com.jsl.oa.model.vodata.PermissionEditVO;
import com.jsl.oa.services.PermissionService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
-import com.jsl.oa.utils.Processing;
import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.validation.BindingResult;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@@ -30,24 +28,6 @@ public class PermissionController {
*/
private final PermissionService permissionService;
- /**
- * 添加新的权限。
- *
- * @param request HTTP请求对象。
- * @param rid 角色ID。
- * @param pid 权限ID。
- * @return {@link BaseResponse} 对象,包含操作结果。
- */
- @PostMapping("/permission/add")
- public BaseResponse permissionAdd(HttpServletRequest request, @RequestParam Long rid, @RequestParam Long pid) {
- // 判断是否有参数错误
- if (rid == null || pid == null) {
- return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
- } else {
- return permissionService.permissionAdd(request, rid, pid);
- }
- }
-
/**
* 获取当前用户的权限信息。
*
@@ -75,42 +55,4 @@ public class PermissionController {
public BaseResponse permissionGet(HttpServletRequest request) {
return permissionService.permissionGet(request);
}
-
- /**
- * 编辑权限信息。
- *
- * @param permissionEditVo {@link PermissionEditVO} 对象,包含更新后的权限信息。
- * @param bindingResult Binding结果对象,包含任何验证错误。
- * @param request HTTP请求对象。
- * @return {@link BaseResponse} 对象,包含操作结果。
- */
- @PutMapping("/permission/edit")
- public BaseResponse permissionEdit(
- @RequestBody @Validated PermissionEditVO permissionEditVo,
- BindingResult bindingResult,
- HttpServletRequest request
- ) {
- // 判断是否有参数错误
- if (bindingResult.hasErrors()) {
- return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
- }
- return permissionService.permissionEdit(permissionEditVo, request);
- }
-
- /**
- * 删除权限。
- *
- * @param pid 权限ID。
- * @param request HTTP请求对象。
- * @return {@link BaseResponse} 对象,包含操作结果。
- */
- @DeleteMapping("/permission/delete")
- public BaseResponse permissionDelete(@RequestParam Long pid, HttpServletRequest request) {
- // 判断是否有参数错误
- if (pid == null) {
- return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
- } else {
- return permissionService.permissionDelete(request, pid);
- }
- }
}
diff --git a/src/main/java/com/jsl/oa/dao/PermissionDAO.java b/src/main/java/com/jsl/oa/dao/PermissionDAO.java
index d6255f8..e03b62a 100644
--- a/src/main/java/com/jsl/oa/dao/PermissionDAO.java
+++ b/src/main/java/com/jsl/oa/dao/PermissionDAO.java
@@ -4,7 +4,9 @@ import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.jsl.oa.common.constant.BusinessConstants;
import com.jsl.oa.mapper.PermissionMapper;
+import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.model.dodata.PermissionDO;
+import com.jsl.oa.model.dodata.RoleDO;
import com.jsl.oa.utils.redis.RoleRedisUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -30,6 +32,7 @@ public class PermissionDAO {
private final PermissionMapper permissionMapper;
private final RoleRedisUtil roleRedisUtil;
private final Gson gson;
+ private final RoleMapper roleMapper;
/**
* 获取用户权限信息
@@ -40,12 +43,13 @@ public class PermissionDAO {
* @return {@link List}
*/
public List getPermission(@NotNull Long uid) {
+ // 查询用户所在角色组
+ RoleDO getRole = roleMapper.getRoleByUserId(uid);
List getPermissionForString;
String permissionRedisString = roleRedisUtil.getData(BusinessConstants.NONE, uid.toString());
if (permissionRedisString == null) {
- List permissionList = permissionMapper.permissionUserPid(uid);
- getPermissionForString = new ArrayList<>();
- forPermissionToBuildString(permissionList, getPermissionForString);
+ String permissionList = permissionMapper.getPermissionByRole(getRole.getRoleName());
+ getPermissionForString = gson.fromJson(permissionList, new TypeToken>() { }.getType());
// 存入 Redis
roleRedisUtil.setData(BusinessConstants.NONE, uid.toString(), gson.toJson(getPermissionForString), 1440);
} else {
@@ -55,127 +59,25 @@ public class PermissionDAO {
}
public List getAllPermissionBuildString() {
- List getPermissionForString;
+ List getPermission;
String getRedisData = roleRedisUtil.getData(BusinessConstants.ALL_PERMISSION, "string");
if (getRedisData == null) {
+ getPermission = new ArrayList<>();
List permissionList = permissionMapper.getAllPermission();
- permissionList.removeIf(it -> it.getPid() != null);
- getPermissionForString = new ArrayList<>();
- forPermissionToBuildString(permissionList, getPermissionForString);
+ permissionList.forEach(it -> getPermission.add(it.getName()));
// 存入 Redis
roleRedisUtil.setData(
BusinessConstants.ALL_PERMISSION,
"string",
- gson.toJson(getPermissionForString),
+ gson.toJson(permissionList),
1440);
} else {
- getPermissionForString = gson.fromJson(getRedisData, new TypeToken>() { }.getType());
+ getPermission = gson.fromJson(getRedisData, new TypeToken>() { }.getType());
}
- return getPermissionForString;
+ return getPermission;
}
- public List getRootPermission() {
- String getRedisData = roleRedisUtil.getData(BusinessConstants.ALL_PERMISSION, "all");
- if (getRedisData == null) {
- List permissionList = permissionMapper.getAllPermission();
- if (!permissionList.isEmpty()) {
- List getPermissionList = new ArrayList<>();
- for (PermissionDO permission : permissionList) {
- if (permission.getPid() == null) {
- getPermissionList.add(permission);
- }
- }
- roleRedisUtil.setData(BusinessConstants.ALL_PERMISSION, "all", gson.toJson(getPermissionList), 1440);
- return getPermissionList;
- } else {
- return null;
- }
- } else {
- return gson.fromJson(getRedisData, new TypeToken>() {
- }.getType());
- }
- }
-
- /**
- * 获取全部权限信息
- *
- * 获取全部权限信息
- *
- * @param permissionList 权限信息
- * @param getPermissionForString 存储权限信息
- */
- private void forPermissionToBuildString(
- @NotNull List permissionList,
- List getPermissionForString) {
- for (PermissionDO permission : permissionList) {
- // 寻找是否存在父亲
- StringBuilder permissionString = new StringBuilder();
- if (permission.getPid() != null) {
- // 存在父亲
- this.getFatherPermission(permissionString, permission.getPid());
- } else {
- // 不存在父亲
- permissionString.append(permission.getName());
- }
- // 寻找子类
- this.getChildPermission(permissionString, permission.getId(), getPermissionForString);
- getPermissionForString.add(permissionString.toString());
- }
- }
-
- /**
- * 获取子类权限信息
- *
- * 通过父类 ID 获取子类权限信息
- * 递归调用
- *
- * @param permissionString 父类权限信息
- * @param id 父类 ID
- * @param getPermissionForString 存储权限信息
- */
- private void getChildPermission(StringBuilder permissionString, Long id, List getPermissionForString) {
- // 获取子类权限信息
- List permissionList = permissionMapper.getChildPermission(id);
- // 判断是否存在子类
- if (!permissionList.isEmpty()) {
- // 存在子类
- for (PermissionDO permission : permissionList) {
- StringBuilder childPermissionString = new StringBuilder(permissionString);
- // 遍历数据检查是否依旧存在子类
- List childPermissionList = permissionMapper.getChildPermission(permission.getId());
- if (!childPermissionList.isEmpty()) {
- // 存在子类
- permissionString.append(".").append(permission.getName());
- this.getChildPermission(permissionString, permission.getId(), getPermissionForString);
- } else {
- // 不存在子类
- permissionString.append(".").append(permission.getName());
- getPermissionForString.add(permissionString.toString());
- }
- permissionString = childPermissionString;
- }
- }
- }
-
- /**
- * 获取父类权限信息
- *
- * 通过子类 ID 获取父类权限信息
- * 递归调用
- *
- * @param permissionString 父类权限信息
- * @param pid 父类 ID
- */
- public void getFatherPermission(StringBuilder permissionString, Long pid) {
- // 获取权限信息
- PermissionDO permissionDO = permissionMapper.getPermissionById(pid);
- // 判断是否存在父亲
- if (permissionDO.getPid() != null) {
- // 存在父亲
- this.getFatherPermission(permissionString, permissionDO.getPid());
- } else {
- // 不存在父亲
- permissionString.append(permissionDO.getCode());
- }
+ public List getAllPermission() {
+ return permissionMapper.getAllPermission();
}
}
diff --git a/src/main/java/com/jsl/oa/dao/RoleDAO.java b/src/main/java/com/jsl/oa/dao/RoleDAO.java
index b1d571d..c237bee 100644
--- a/src/main/java/com/jsl/oa/dao/RoleDAO.java
+++ b/src/main/java/com/jsl/oa/dao/RoleDAO.java
@@ -134,4 +134,8 @@ public class RoleDAO {
public RoleDO getRoleByRoleName(String roleName) {
return roleMapper.getRoleByRoleName(roleName);
}
+
+ public RoleDO getRoleByUserId(Long uid) {
+ return roleMapper.getRoleByUserId(uid);
+ }
}
diff --git a/src/main/java/com/jsl/oa/dao/UserDAO.java b/src/main/java/com/jsl/oa/dao/UserDAO.java
index 17161ff..a686cc7 100755
--- a/src/main/java/com/jsl/oa/dao/UserDAO.java
+++ b/src/main/java/com/jsl/oa/dao/UserDAO.java
@@ -123,7 +123,7 @@ public class UserDAO {
userCurrentBackVO.setUsers(new ArrayList<>())
.setCount(userMapper.getUsersCount());
userCurrentDO.forEach(it -> userCurrentBackVO.getUsers()
- .add(Processing.returnUserInfo(it, roleDAO, permissionDAO)));
+ .add(Processing.returnUserInfo(it, roleDAO, gson)));
return userCurrentBackVO;
}
@@ -134,7 +134,7 @@ public class UserDAO {
userCurrentBackVO.setUsers(new ArrayList<>())
.setCount(userMapper.getUsersCount());
userCurrentDO.forEach(it -> userCurrentBackVO.getUsers()
- .add(Processing.returnUserInfo(it, roleDAO, permissionDAO)));
+ .add(Processing.returnUserInfo(it, roleDAO, gson)));
return userCurrentBackVO;
}
diff --git a/src/main/java/com/jsl/oa/exception/ProcessException.java b/src/main/java/com/jsl/oa/exception/ProcessException.java
index b67dcd0..8fc0aee 100755
--- a/src/main/java/com/jsl/oa/exception/ProcessException.java
+++ b/src/main/java/com/jsl/oa/exception/ProcessException.java
@@ -1,5 +1,6 @@
package com.jsl.oa.exception;
+import com.jsl.oa.exception.library.PermissionDeniedException;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
import com.jsl.oa.utils.ResultUtil;
@@ -103,4 +104,10 @@ public class ProcessException {
log.error(e.getMessage(), e);
return ResultUtil.error("ServerInternalError", 50002, "服务器内部错误");
}
+
+ @ExceptionHandler(value = PermissionDeniedException.class)
+ public BaseResponse businessPermissionDeniedException(PermissionDeniedException e) {
+ log.warn("[EXCEPTION] 无权限操作,需要权限: {}", e.getNeedPermission());
+ return ResultUtil.error("需要权限: " + e.getNeedPermission(), ErrorCode.PERMISSION_NOT_EXIST);
+ }
}
diff --git a/src/main/java/com/jsl/oa/exception/library/PermissionDeniedException.java b/src/main/java/com/jsl/oa/exception/library/PermissionDeniedException.java
index a76cb73..a049c86 100644
--- a/src/main/java/com/jsl/oa/exception/library/PermissionDeniedException.java
+++ b/src/main/java/com/jsl/oa/exception/library/PermissionDeniedException.java
@@ -13,10 +13,10 @@ import lombok.Getter;
*/
@Getter
public class PermissionDeniedException extends RuntimeException {
- private final String needGroup;
+ private final String needPermission;
- public PermissionDeniedException(String message, String needGroup) {
+ public PermissionDeniedException(String message, String needPermission) {
super(message);
- this.needGroup = needGroup;
+ this.needPermission = needPermission;
}
}
diff --git a/src/main/java/com/jsl/oa/mapper/PermissionMapper.java b/src/main/java/com/jsl/oa/mapper/PermissionMapper.java
index 78027d1..0587844 100644
--- a/src/main/java/com/jsl/oa/mapper/PermissionMapper.java
+++ b/src/main/java/com/jsl/oa/mapper/PermissionMapper.java
@@ -1,44 +1,17 @@
package com.jsl.oa.mapper;
import com.jsl.oa.model.dodata.PermissionDO;
-import com.jsl.oa.model.dodata.RolePermissionDO;
-import org.apache.ibatis.annotations.*;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface PermissionMapper {
- @Insert("INSERT INTO organize_oa.oa_role_permissions(rid, pid) VALUE (#{rid},#{pid})")
- void permissionAdd(Long rid, Long pid);
-
- @Select("SELECT * FROM organize_oa.oa_permissions WHERE id IN "
- + "(SELECT pid FROM organize_oa.oa_role_permissions WHERE rid IN "
- + "(SELECT rid FROM organize_oa.oa_role_user WHERE uid = #{uid}))")
- List permissionUserPid(Long uid);
-
- @Select("SELECT * FROM organize_oa.oa_permissions where id=#{id}")
- PermissionDO getPermissionById(Long id);
-
- @Select("SELECT * FROM organize_oa.oa_role_permissions where pid=#{pid}")
- RolePermissionDO rolePermissionGetByPid(Long pid);
-
@Select("SELECT * FROM organize_oa.oa_permissions")
List getAllPermission();
- @Update("UPDATE organize_oa.oa_permissions SET pid = #{pid}, name = #{name}, code = #{code}, "
- + "type = #{type} WHERE id = #{id}")
- boolean updatePermission(PermissionDO permissionDO);
-
- @Delete("DELETE FROM organize_oa.oa_permissions where id=#{pid}")
- boolean deletePermission(Long pid);
-
- @Select("SELECT * FROM organize_oa.oa_permissions WHERE id IN (#{permissionList})")
- List permissionGet(String permissionList);
-
- @Select("SELECT * FROM organize_oa.oa_permissions WHERE id = #{pid}")
- PermissionDO getPermissionByPid(Long pid);
-
- @Select("SELECT * FROM organize_oa.oa_permissions WHERE pid = #{id}")
- List getChildPermission(Long id);
+ @Select("SELECT permissions FROM organize_oa.oa_role WHERE role_name = #{roleName}")
+ String getPermissionByRole(String roleName);
}
diff --git a/src/main/java/com/jsl/oa/mapper/RoleMapper.java b/src/main/java/com/jsl/oa/mapper/RoleMapper.java
index 0cf0b78..5bee028 100644
--- a/src/main/java/com/jsl/oa/mapper/RoleMapper.java
+++ b/src/main/java/com/jsl/oa/mapper/RoleMapper.java
@@ -40,8 +40,6 @@ public interface RoleMapper {
@Delete("DELETE FROM organize_oa.oa_role WHERE id=#{id}")
boolean roleDelete(Long id);
-
-
-
-
+ @Select("SELECT * FROM organize_oa.oa_role WHERE id = (SELECT rid FROM organize_oa.oa_role_user WHERE uid=#{uid})")
+ RoleDO getRoleByUserId(Long uid);
}
diff --git a/src/main/java/com/jsl/oa/model/dodata/PermissionDO.java b/src/main/java/com/jsl/oa/model/dodata/PermissionDO.java
index 433dd35..f2d119f 100755
--- a/src/main/java/com/jsl/oa/model/dodata/PermissionDO.java
+++ b/src/main/java/com/jsl/oa/model/dodata/PermissionDO.java
@@ -19,10 +19,12 @@ import java.sql.Timestamp;
@Accessors(chain = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class PermissionDO {
+ // 主键
private Long id;
- private Long pid;
+ // 权限名称
private String name;
- private String code;
- private Short type;
- private Timestamp deletedAt;
+ // 权限描述
+ private String description;
+ // 创建时间
+ private Timestamp createdAt;
}
diff --git a/src/main/java/com/jsl/oa/model/dodata/RoleDO.java b/src/main/java/com/jsl/oa/model/dodata/RoleDO.java
index 0d752d9..fc4a67f 100755
--- a/src/main/java/com/jsl/oa/model/dodata/RoleDO.java
+++ b/src/main/java/com/jsl/oa/model/dodata/RoleDO.java
@@ -12,14 +12,21 @@ import java.sql.Timestamp;
*
* @author 筱锋xiao_lfeng
* @since v1.1.0
- * @version v1.1.0
+ * @version v1.2.0
*/
@Data
@Accessors(chain = true)
public class RoleDO {
+ // 角色id
private Long id;
+ // 角色名称
private String roleName;
+ // 中文描述
private String displayName;
+ // 用户组权限
+ private String permissions;
+ // 创建时间
private Timestamp createdAt;
+ // 修改时间
private Timestamp updatedAt;
}
diff --git a/src/main/java/com/jsl/oa/model/dodata/RolePermissionDO.java b/src/main/java/com/jsl/oa/model/dodata/RolePermissionDO.java
deleted file mode 100755
index f3376fb..0000000
--- a/src/main/java/com/jsl/oa/model/dodata/RolePermissionDO.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.jsl.oa.model.dodata;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-import java.sql.Timestamp;
-
-/**
- * role 数据表
- *
- * 映射 oa_role 数据表内容进入自定义实体类
- *
- * @author 筱锋xiao_lfeng
- * @since v1.1.0
- * @version v1.1.0
- */
-@Data
-@Accessors(chain = true)
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class RolePermissionDO {
- private Long rid;
- private Long pid;
- private Timestamp createdAt;
-}
diff --git a/src/main/java/com/jsl/oa/model/vodata/PermissionContentVO.java b/src/main/java/com/jsl/oa/model/vodata/PermissionContentVO.java
new file mode 100644
index 0000000..5b5bddd
--- /dev/null
+++ b/src/main/java/com/jsl/oa/model/vodata/PermissionContentVO.java
@@ -0,0 +1,14 @@
+package com.jsl.oa.model.vodata;
+
+import lombok.Data;
+
+@Data
+public class PermissionContentVO {
+ // 主键
+ private Long id;
+ // 权限名称
+ private String name;
+ // 权限描述
+ private String description;
+}
+
diff --git a/src/main/java/com/jsl/oa/model/vodata/PermissionContentVo.java b/src/main/java/com/jsl/oa/model/vodata/PermissionContentVo.java
deleted file mode 100644
index e48833d..0000000
--- a/src/main/java/com/jsl/oa/model/vodata/PermissionContentVo.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.jsl.oa.model.vodata;
-
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class PermissionContentVo {
-
- private Long id;
- private String name;
- private String code;
- private Short type;
- private List children;
-
-}
-
-
diff --git a/src/main/java/com/jsl/oa/services/PermissionService.java b/src/main/java/com/jsl/oa/services/PermissionService.java
index f81e127..e201dd2 100644
--- a/src/main/java/com/jsl/oa/services/PermissionService.java
+++ b/src/main/java/com/jsl/oa/services/PermissionService.java
@@ -1,19 +1,12 @@
package com.jsl.oa.services;
-import com.jsl.oa.model.vodata.PermissionEditVO;
import com.jsl.oa.utils.BaseResponse;
import javax.servlet.http.HttpServletRequest;
public interface PermissionService {
- BaseResponse permissionAdd(HttpServletRequest request, Long rid, Long pid);
-
BaseResponse permissionUser(HttpServletRequest request, Long uid);
BaseResponse permissionGet(HttpServletRequest request);
-
- BaseResponse permissionEdit(PermissionEditVO permissionEditVo, HttpServletRequest request);
-
- BaseResponse permissionDelete(HttpServletRequest request, Long pid);
}
diff --git a/src/main/java/com/jsl/oa/services/impl/InfoServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/InfoServiceImpl.java
index 0abcde9..6ee51ba 100644
--- a/src/main/java/com/jsl/oa/services/impl/InfoServiceImpl.java
+++ b/src/main/java/com/jsl/oa/services/impl/InfoServiceImpl.java
@@ -1,6 +1,6 @@
package com.jsl.oa.services.impl;
-import com.jsl.oa.annotations.NeedRoleGroup;
+import com.jsl.oa.annotations.NeedPermission;
import com.jsl.oa.dao.InfoDAO;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.dao.UserDAO;
@@ -41,7 +41,7 @@ public class InfoServiceImpl implements InfoService {
private final RoleDAO roleDAO;
@Override
- @NeedRoleGroup("info.image.add")
+ @NeedPermission("info.image.add")
public BaseResponse addHeaderImage(HttpServletRequest request, @NotNull CarouselVO carouselVO) {
// 获取用户
Long userId = Processing.getAuthHeaderToUserId(request);
@@ -74,7 +74,7 @@ public class InfoServiceImpl implements InfoService {
}
@Override
- @NeedRoleGroup("info.image.edit")
+ @NeedPermission("info.image.edit")
public BaseResponse editHeaderImage(HttpServletRequest request, @NotNull CarouselVO carouselVO) {
// 获取用户
Long userId = Processing.getAuthHeaderToUserId(request);
@@ -124,7 +124,7 @@ public class InfoServiceImpl implements InfoService {
}
@Override
- @NeedRoleGroup("info.image.del")
+ @NeedPermission("info.image.del")
public BaseResponse delHeaderImage(HttpServletRequest request, Integer id) {
// 用户权限校验
if (!Processing.checkUserIsConsole(request, roleDAO)) {
@@ -146,7 +146,7 @@ public class InfoServiceImpl implements InfoService {
}
@Override
- @NeedRoleGroup("info.image.setting.edit")
+ @NeedPermission("info.image.setting.edit")
public BaseResponse editSettingHeaderImage(HttpServletRequest request, Boolean showType) {
// 用户权限校验
if (!Processing.checkUserIsConsole(request, roleDAO)) {
diff --git a/src/main/java/com/jsl/oa/services/impl/NewsServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/NewsServiceImpl.java
index 0b6f5a1..3de24b1 100644
--- a/src/main/java/com/jsl/oa/services/impl/NewsServiceImpl.java
+++ b/src/main/java/com/jsl/oa/services/impl/NewsServiceImpl.java
@@ -1,7 +1,7 @@
package com.jsl.oa.services.impl;
-import com.jsl.oa.annotations.NeedRoleGroup;
+import com.jsl.oa.annotations.NeedPermission;
import com.jsl.oa.dao.NewsDAO;
import com.jsl.oa.model.dodata.NewsDO;
import com.jsl.oa.model.vodata.NewsAddVO;
@@ -35,7 +35,7 @@ public class NewsServiceImpl implements NewsService {
private final NewsDAO newsDAO;
@Override
- @NeedRoleGroup("news.add")
+ @NeedPermission("news.add")
public BaseResponse newsAdd(NewsAddVO newsAddVO, @NotNull HttpServletRequest request) {
// 拷贝新闻数据到实体类
NewsDO newsDO = new NewsDO();
diff --git a/src/main/java/com/jsl/oa/services/impl/PermissionServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/PermissionServiceImpl.java
index b61d553..7213797 100644
--- a/src/main/java/com/jsl/oa/services/impl/PermissionServiceImpl.java
+++ b/src/main/java/com/jsl/oa/services/impl/PermissionServiceImpl.java
@@ -1,24 +1,22 @@
package com.jsl.oa.services.impl;
-import com.jsl.oa.annotations.NeedRoleGroup;
import com.jsl.oa.dao.PermissionDAO;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.dao.UserDAO;
-import com.jsl.oa.mapper.PermissionMapper;
import com.jsl.oa.model.dodata.PermissionDO;
import com.jsl.oa.model.dodata.RoleUserDO;
-import com.jsl.oa.model.vodata.PermissionContentVo;
-import com.jsl.oa.model.vodata.PermissionEditVO;
+import com.jsl.oa.model.vodata.PermissionContentVO;
import com.jsl.oa.services.PermissionService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
-import com.jsl.oa.utils.Processing;
import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -26,29 +24,20 @@ import java.util.List;
*
* 用于权限服务层的实现类,实现权限的增删改查,以及用户权限的获取
*
- * @since v1.0.0
- * @version v1.1.0
* @author xiao_lfeng | xiangZr-hhh | 176yunxuan
+ * @version v1.1.0
+ * @since v1.0.0
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class PermissionServiceImpl implements PermissionService {
- private final PermissionMapper permissionMapper;
private final RoleDAO roleDAO;
private final PermissionDAO permissionDAO;
private final UserDAO userDAO;
@Override
- @NeedRoleGroup("permission.add")
- public BaseResponse permissionAdd(HttpServletRequest request, Long rid, Long pid) {
- permissionMapper.permissionAdd(rid, pid);
- return ResultUtil.success();
- }
-
- @Override
- @NeedRoleGroup("permission.user")
public BaseResponse permissionUser(HttpServletRequest request, Long uid) {
if (userDAO.isExistUser(uid)) {
// 此用户是否为管理员
@@ -68,40 +57,11 @@ public class PermissionServiceImpl implements PermissionService {
@Override
- @NeedRoleGroup("permission.get")
public BaseResponse permissionGet(HttpServletRequest request) {
//获取所有权限数据
- List permissionDOList = permissionMapper.getAllPermission();
- //将数据按父子类封装
- List permissionContentVos = Processing.convertToVoList(permissionDOList);
-
- return ResultUtil.success(permissionContentVos);
- }
-
- @Override
- @NeedRoleGroup("permission.edit")
- public BaseResponse permissionEdit(PermissionEditVO permissionEditVo, HttpServletRequest request) {
- //根据id获取对应permission数据
- PermissionDO permissionDO = permissionMapper.getPermissionById(permissionEditVo.getId());
- if (permissionDO == null) {
- return ResultUtil.error(ErrorCode.PERMISSION_NOT_EXIST);
- }
- //传递要编辑的数据
- Processing.copyProperties(permissionEditVo, permissionDO);
- //更新permission
- if (!permissionMapper.updatePermission(permissionDO)) {
- return ResultUtil.error(ErrorCode.DATABASE_UPDATE_ERROR);
- }
- return ResultUtil.success();
- }
-
- @Override
- @NeedRoleGroup("permission.delete")
- public BaseResponse permissionDelete(HttpServletRequest request, Long pid) {
- //删除权限
- if (!permissionMapper.deletePermission(pid)) {
- return ResultUtil.error(ErrorCode.DATABASE_DELETE_ERROR);
- }
- return ResultUtil.success();
+ List permissionDOList = permissionDAO.getAllPermission();
+ List permissionContentVO = new ArrayList<>();
+ BeanUtils.copyProperties(permissionDOList, permissionContentVO);
+ return ResultUtil.success(permissionContentVO);
}
}
diff --git a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java
index 1dad3a6..f57a39f 100644
--- a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java
+++ b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java
@@ -3,7 +3,7 @@ package com.jsl.oa.services.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.jsl.oa.annotations.NeedRoleGroup;
+import com.jsl.oa.annotations.NeedPermission;
import com.jsl.oa.dao.ProjectDAO;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.dao.UserDAO;
@@ -232,7 +232,7 @@ public class ProjectServiceImpl implements ProjectService {
}
@Override
- @NeedRoleGroup("info.project.add")
+ @NeedPermission("info.project.add")
public BaseResponse addHeader(HttpServletRequest request, ProjectShowVO projectShowVO) {
// 获取用户
Long userId = Processing.getAuthHeaderToUserId(request);
@@ -258,7 +258,7 @@ public class ProjectServiceImpl implements ProjectService {
}
@Override
- @NeedRoleGroup("info.project.del")
+ @NeedPermission("info.project.del")
public BaseResponse delHeader(Integer id, HttpServletRequest request) {
// 获取展示信息
ProjectShowDO projectShowDO = projectDAO.getHeader();
@@ -276,7 +276,7 @@ public class ProjectServiceImpl implements ProjectService {
}
@Override
- @NeedRoleGroup("info.project.edit")
+ @NeedPermission("info.project.edit")
public BaseResponse editHeader(HttpServletRequest request, ProjectShowVO projectShowVO, Integer id) {
// 获取用户
Long userId = Processing.getAuthHeaderToUserId(request);
diff --git a/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java
index 821faf1..e188e6e 100644
--- a/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java
+++ b/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java
@@ -1,6 +1,6 @@
package com.jsl.oa.services.impl;
-import com.jsl.oa.annotations.NeedRoleGroup;
+import com.jsl.oa.annotations.NeedPermission;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.exception.ClassCopyException;
@@ -42,7 +42,7 @@ public class RoleServiceImpl implements RoleService {
private final UserDAO userDAO;
@Override
- @NeedRoleGroup("role.add")
+ @NeedPermission("role.add")
public BaseResponse roleAddUser(HttpServletRequest request, Long uid, Long rid) {
if (Processing.checkUserIsConsole(request, roleDAO)) {
roleDAO.addRoleUser(uid, rid);
diff --git a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java
index 08364c3..98f3a9c 100755
--- a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java
+++ b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java
@@ -1,11 +1,11 @@
package com.jsl.oa.services.impl;
+import com.google.gson.Gson;
+import com.jsl.oa.annotations.NeedPermission;
import com.jsl.oa.annotations.UserAbleToUse;
import com.jsl.oa.dao.PermissionDAO;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.dao.UserDAO;
-import com.jsl.oa.model.dodata.RoleDO;
-import com.jsl.oa.model.dodata.RoleUserDO;
import com.jsl.oa.model.dodata.UserDO;
import com.jsl.oa.model.vodata.*;
import com.jsl.oa.services.UserService;
@@ -21,8 +21,6 @@ import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
import java.util.regex.Pattern;
/**
@@ -43,6 +41,7 @@ public class UserServiceImpl implements UserService {
private final UserDAO userDAO;
private final RoleDAO roleDAO;
private final PermissionDAO permissionDAO;
+ private final Gson gson;
@Override
public UserDO getUserInfoByUsername(String username) {
@@ -125,46 +124,23 @@ public class UserServiceImpl implements UserService {
return ResultUtil.success(userCurrentBackVO);
}
- @SuppressWarnings("checkstyle:NestedIfDepth")
@Override
@UserAbleToUse
- public BaseResponse userCurrent(HttpServletRequest request,
- String id,
- String username,
- String email,
- String phone) {
+ @NeedPermission("user:current")
+ public BaseResponse userCurrent(
+ HttpServletRequest request,
+ String id,
+ String username,
+ String email,
+ String phone
+ ) {
+ UserDO userDO;
if (id == null && username == null && email == null && phone == null) {
// Token获取信息
- UserDO userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request));
- if (userDO != null) {
- return ResultUtil.success(Processing.returnUserInfo(userDO, roleDAO, permissionDAO));
- } else {
- return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
- }
+ userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request));
} else {
- // 检查是否是管理员用户
- Long userId = Processing.getAuthHeaderToUserId(request);
- if (userId != null) {
- List getPermission = permissionDAO.getPermission(userId);
- // 匹配权限
- if (!getPermission.contains("user.current")) {
- log.info("\t> 用户权限不足,检查是否是管理员");
- // 检查用户是管理员
- RoleUserDO roleUserDO = roleDAO
- .getRoleUserByUid(Objects.requireNonNull(Processing.getAuthHeaderToUserId(request)));
- if (roleUserDO == null) {
- return ResultUtil.error(ErrorCode.NOT_PERMISSION);
- }
- RoleDO roleDO = roleDAO.getRoleByRoleName("console");
- if (!roleUserDO.getRid().equals(roleDO.getId())) {
- return ResultUtil.error(ErrorCode.NOT_PERMISSION);
- }
- }
- } else {
- return ResultUtil.error(ErrorCode.TOKEN_NOT_EXIST);
- }
// 根据顺序优先级进行用户信息获取
- UserDO userDO = null;
+ userDO = null;
if (id != null && !id.isEmpty()) {
userDO = userDAO.getUserById(Long.valueOf(id));
} else if (username != null && !username.isEmpty()) {
@@ -174,12 +150,12 @@ public class UserServiceImpl implements UserService {
} else if (phone != null && !phone.isEmpty()) {
userDO = userDAO.getUserByPhone(phone);
}
- // 返回结果
- if (userDO != null) {
- return ResultUtil.success(Processing.returnUserInfo(userDO, roleDAO, permissionDAO));
- } else {
- return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
- }
+ }
+ // 返回结果
+ if (userDO != null) {
+ return ResultUtil.success(Processing.returnUserInfo(userDO, roleDAO, gson));
+ } else {
+ return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
}
}
diff --git a/src/main/java/com/jsl/oa/utils/Processing.java b/src/main/java/com/jsl/oa/utils/Processing.java
index 28261da..11b3f90 100755
--- a/src/main/java/com/jsl/oa/utils/Processing.java
+++ b/src/main/java/com/jsl/oa/utils/Processing.java
@@ -3,24 +3,30 @@ package com.jsl.oa.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.jsl.oa.dao.PermissionDAO;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.exception.ClassCopyException;
-import com.jsl.oa.model.dodata.*;
-import com.jsl.oa.model.vodata.PermissionContentVo;
+import com.jsl.oa.model.dodata.ProjectDO;
+import com.jsl.oa.model.dodata.RoleDO;
+import com.jsl.oa.model.dodata.RoleUserDO;
+import com.jsl.oa.model.dodata.UserDO;
import com.jsl.oa.model.vodata.ProjectSimpleVO;
import com.jsl.oa.model.vodata.UserCurrentBackVO;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.springframework.beans.BeanUtils;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Field;
-import java.sql.Timestamp;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Random;
/**
* 自定义快捷工具类
@@ -164,7 +170,7 @@ public class Processing {
*
* 该方法用于检查用户是否是管理员,类型封装后字节返回结果
*
- * @param request 请求
+ * @param request 请求
* @return 如果为 true 是管理员,false 不是管理员
*/
public static @NotNull Boolean checkUserIsConsole(HttpServletRequest request, @NotNull RoleDAO roleDAO) {
@@ -180,7 +186,7 @@ public class Processing {
/**
* 检查用户是否是老师
*
- * @param request 请求
+ * @param request 请求
* @return 如果为 true 是老师,false 不是老师
*/
public static @NotNull Boolean checkUserIsPrincipal(HttpServletRequest request, @NotNull RoleDAO roleDAO) {
@@ -263,9 +269,12 @@ public class Processing {
@Contract(pure = true)
public static @NotNull String getSex(short sex) {
switch (sex) {
- case 1: return "男";
- case 2: return "女";
- default: return "保密";
+ case 1:
+ return "男";
+ case 2:
+ return "女";
+ default:
+ return "保密";
}
}
@@ -278,56 +287,23 @@ public class Processing {
* @return {@link BaseResponse}
*/
public static @NotNull UserCurrentBackVO.UserCurrent returnUserInfo(
- @NotNull UserDO userDO, RoleDAO roleDAO, PermissionDAO permissionDAO) {
+ @NotNull UserDO userDO, RoleDAO roleDAO, Gson gson) {
UserCurrentBackVO.UserCurrent userCurrent = new UserCurrentBackVO.UserCurrent();
- // 获取用户角色
- RoleUserDO getUserRole = roleDAO.getRoleUserByUid(userDO.getId());
- if (getUserRole == null) {
- getUserRole = new RoleUserDO();
- getUserRole.setRid(0L).setCreatedAt(new Timestamp(System.currentTimeMillis()));
- } else {
- getUserRole.setUid(null);
- }
// 获取用户权限
- RoleUserDO roleUserDO = roleDAO.getRoleUserByUid(userDO.getId());
+ RoleDO getRole = roleDAO.getRoleByUserId(userDO.getId());
List getPermissionForString;
- if (roleUserDO != null) {
- // 获取全部根权限
- getPermissionForString = permissionDAO.getAllPermissionBuildString();
- } else {
- // 获取权限列表信息
- getPermissionForString = permissionDAO.getPermission(userDO.getId());
- }
- RoleDO getRole = roleDAO.getRoleById(getUserRole.getRid());
- String getRoleString;
if (getRole != null) {
- getRoleString = getRole.getRoleName();
+ // 获取全部根权限
+ getPermissionForString = gson.fromJson(getRole.getPermissions(), new TypeToken>() {
+ }.getType());
} else {
- getRoleString = "default";
+ getPermissionForString = null;
}
+ UserCurrentBackVO.ReturnUser returnUser = new UserCurrentBackVO.ReturnUser();
+ BeanUtils.copyProperties(userDO, returnUser);
userCurrent
- .setUser(new UserCurrentBackVO.ReturnUser()
- .setId(userDO.getId())
- .setJobId(userDO.getJobId())
- .setUsername(userDO.getUsername())
- .setAddress(userDO.getAddress())
- .setPhone(userDO.getPhone())
- .setEmail(userDO.getEmail())
- .setAge(userDO.getAge())
- .setSignature(userDO.getSignature())
- .setAvatar(userDO.getAvatar())
- .setNickname(userDO.getNickname())
- .setSex(userDO.getSex())
- .setEnabled(userDO.getEnabled())
- .setAccountNoExpired(userDO.getAccountNoExpired())
- .setCredentialsNoExpired(userDO.getCredentialsNoExpired())
- .setRecommend(userDO.getRecommend())
- .setAccountNoLocked(userDO.getAccountNoLocked())
- .setDescription(userDO.getDescription())
- .setCreatedAt(userDO.getCreatedAt())
- .setUpdatedAt(userDO.getUpdatedAt())
- .setIsDelete(userDO.getIsDelete()))
- .setRole(getRoleString)
+ .setUser(returnUser)
+ .setRole(getRole != null ? getRole.getRoleName() : "default")
.setPermission(getPermissionForString);
return userCurrent;
}
@@ -384,56 +360,6 @@ public class Processing {
//return ProjectSimpleVO;
}
- /**
- * @Description: 将Permission归纳为父子关系的json形式
- * @Date: 2024/1/20
- * @Param permissions: 权限实体类
- **/
- public static List convertToVoList(List permissions) {
- List vos = new ArrayList<>();
- Map> childrenMap = new HashMap<>();
-
- for (PermissionDO permission : permissions) {
- if (permission.getPid() != null) {
- List children = childrenMap.getOrDefault(permission.getPid(), new ArrayList<>());
- children.add(permission);
- childrenMap.put(permission.getPid(), children);
- }
- }
-
- for (PermissionDO permission : permissions) {
- if (permission.getPid() == null) {
- PermissionContentVo vo = convertToVo(permission, childrenMap);
- vos.add(vo);
- }
- }
-
- return vos;
- }
-
- /**
- * @Description: 封装PermissionContentVo的子类,被convertToVoList方法调用
- * @Date: 2024/1/20
- * @Param permission: 权限实体类
- * @Param childrenMap: 要封装的子类
- **/
- public static PermissionContentVo convertToVo(PermissionDO permission, Map> childrenMap) {
- PermissionContentVo vo = new PermissionContentVo();
- copyProperties(permission, vo);
-
- List children = childrenMap.get(permission.getId());
- if (children != null) {
- List childVos = new ArrayList<>();
- for (PermissionDO child : children) {
- PermissionContentVo childVo = convertToVo(child, childrenMap);
- childVos.add(childVo);
- }
- vo.setChildren(childVos);
- }
-
- return vo;
- }
-
/**
* @Description: 转换审核的类别属性为字符串
@@ -443,11 +369,11 @@ public class Processing {
public static String turnReviewCategory(short category) {
switch (category) {
case 0:
- return "子系统";
+ return "子系统";
case 1:
- return "模块";
+ return "模块";
default:
- return "其他";
+ return "其他";
}
}
@@ -465,7 +391,4 @@ public class Processing {
}
-
-
-
}
diff --git a/src/main/resources/mysql/oa_permissions.sql b/src/main/resources/mysql/oa_permissions.sql
index 51105f6..fb9997c 100644
--- a/src/main/resources/mysql/oa_permissions.sql
+++ b/src/main/resources/mysql/oa_permissions.sql
@@ -1,14 +1,11 @@
create table oa_permissions
(
- id bigint unsigned auto_increment comment '主键'
+ id bigint unsigned auto_increment comment '主键'
primary key,
- pid bigint unsigned null comment '权限父id',
- name varchar(100) not null comment '权限名称',
- code varchar(50) not null comment '权限编码',
- type tinyint(1) default 1 not null comment '0为菜单,1为权限',
- deleted_at timestamp null comment '删除时间(没有删除应当为空)',
- constraint oa_permissions_oa_permissions_id_fk
- foreign key (pid) references oa_permissions (id)
- on update cascade on delete cascade
+ name varchar(100) not null comment '权限名称',
+ description varchar(100) not null comment '权限描述',
+ created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
+ constraint oa_permissions_name_uindex
+ unique (name)
)
comment '权限表';
\ No newline at end of file
diff --git a/src/main/resources/mysql/oa_role.sql b/src/main/resources/mysql/oa_role.sql
index 2b40923..379f30b 100644
--- a/src/main/resources/mysql/oa_role.sql
+++ b/src/main/resources/mysql/oa_role.sql
@@ -4,6 +4,7 @@ create table oa_role
primary key,
role_name varchar(20) not null comment '角色名称',
display_name varchar(10) null comment '中文描述',
+ permissions json null comment '用户组权限',
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at timestamp null comment '修改时间'
)