diff --git a/src/main/java/com/jsl/oa/aspect/AuthControllerAspect.java b/src/main/java/com/jsl/oa/aspect/AuthControllerAspect.java
index a54adfa..ca301eb 100755
--- a/src/main/java/com/jsl/oa/aspect/AuthControllerAspect.java
+++ b/src/main/java/com/jsl/oa/aspect/AuthControllerAspect.java
@@ -67,11 +67,11 @@ public class AuthControllerAspect {
* @throws Throwable 异常
*/
@Around("execution(* com.jsl.oa.controllers.*.*(..)) " +
- "|| !execution(* com.jsl.oa.controllers.AuthController.authSendEmailCode(..))" +
- "|| !execution(* com.jsl.oa.controllers.AuthController.authLoginByEmail(..))" +
- "|| !execution(* com.jsl.oa.controllers.AuthController.authForgetPassword(..))" +
- "|| !execution(* com.jsl.oa.controllers.AuthController.authLogin(..))" +
- "|| !execution(* com.jsl.oa.controllers.AuthController.authRegister(..))")
+ "&& !execution(* com.jsl.oa.controllers.AuthController.authSendEmailCode(..))" +
+ "&& !execution(* com.jsl.oa.controllers.AuthController.authLoginByEmail(..))" +
+ "&& !execution(* com.jsl.oa.controllers.AuthController.authForgetPassword(..))" +
+ "&& !execution(* com.jsl.oa.controllers.AuthController.authLogin(..))" +
+ "&& !execution(* com.jsl.oa.controllers.AuthController.authRegister(..))")
public Object tokenControllerAround(ProceedingJoinPoint pjp) throws Throwable {
// 获取 HttpServletRequest 对象
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
diff --git a/src/main/java/com/jsl/oa/controllers/PermissionController.java b/src/main/java/com/jsl/oa/controllers/PermissionController.java
index 23b7c1f..14d7edc 100755
--- a/src/main/java/com/jsl/oa/controllers/PermissionController.java
+++ b/src/main/java/com/jsl/oa/controllers/PermissionController.java
@@ -38,7 +38,9 @@ public class PermissionController {
// 判断是否有参数错误
if (uid == null ) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
- } else return permissionService.permissionUser(request,uid);
+ } else {
+ return permissionService.permissionUser(request,uid);
+ }
}
@GetMapping("/permission/get")
diff --git a/src/main/java/com/jsl/oa/dao/PermissionDAO.java b/src/main/java/com/jsl/oa/dao/PermissionDAO.java
new file mode 100644
index 0000000..048f080
--- /dev/null
+++ b/src/main/java/com/jsl/oa/dao/PermissionDAO.java
@@ -0,0 +1,88 @@
+package com.jsl.oa.dao;
+
+import com.jsl.oa.mapper.PermissionMapper;
+import com.jsl.oa.model.doData.PermissionDO;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
权限数据表
+ *
+ * 内容进入自定义实体类
+ *
+ * @author xiao_lfeng
+ * @version v1.1.0
+ * @since v1.1.0
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class PermissionDAO {
+ private final PermissionMapper permissionMapper;
+
+ public List getPermission(Long uid) {
+ log.info("\t> 执行 DAO 层 PermissionDAO.getPermission 方法");
+ List permissionList = permissionMapper.permissionUserPid(uid);
+ List getPermissionForString = new ArrayList<>();
+ for (PermissionDO permission : permissionList) {
+ // 寻找是否存在父亲
+ StringBuilder permissionString = new StringBuilder();
+ if (permission.getPid() != null) {
+ // 存在父亲
+ this.getFatherPermission(permissionString, permission.getPid());
+ // 寻找子类
+ this.getChildPermission(permissionString, permission.getId(), getPermissionForString);
+ getPermissionForString.add(permissionString.toString());
+ } else {
+ // 不存在父亲
+ permissionString.append(permission.getName());
+ this.getChildPermission(permissionString, permission.getId(), getPermissionForString);
+ getPermissionForString.add(permissionString.toString());
+ }
+ }
+ // 存入 Redis
+
+ return 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;
+ }
+ }
+ }
+
+ 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());
+ }
+ }
+}
diff --git a/src/main/java/com/jsl/oa/exception/ProcessException.java b/src/main/java/com/jsl/oa/exception/ProcessException.java
index 9be2c47..a0d60c3 100755
--- a/src/main/java/com/jsl/oa/exception/ProcessException.java
+++ b/src/main/java/com/jsl/oa/exception/ProcessException.java
@@ -12,6 +12,7 @@ import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
+import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
import java.util.Objects;
import java.util.regex.Matcher;
@@ -66,4 +67,10 @@ public class ProcessException {
log.error(e.getMessage(), e);
return ResultUtil.error("ServerInternalError", 50001, "服务器内部错误");
}
+
+ @ExceptionHandler(value = MethodArgumentTypeMismatchException.class)
+ public ResponseEntity businessMethodArgumentTypeMismatchException(@NotNull MethodArgumentTypeMismatchException e) {
+ log.error(e.getMessage(), e);
+ return ResultUtil.error("ServerInternalError", 50002, "服务器内部错误");
+ }
}
diff --git a/src/main/java/com/jsl/oa/mapper/PermissionMapper.java b/src/main/java/com/jsl/oa/mapper/PermissionMapper.java
index 0baa3c1..8f10256 100644
--- a/src/main/java/com/jsl/oa/mapper/PermissionMapper.java
+++ b/src/main/java/com/jsl/oa/mapper/PermissionMapper.java
@@ -9,16 +9,16 @@ import java.util.List;
@Mapper
public interface PermissionMapper {
- @Insert("insert into organize_oa.oa_role_permissions(rid, pid) VALUE (#{rid},#{pid})")
+ @Insert("INSERT INTO organize_oa.oa_role_permissions(rid, pid) VALUE (#{rid},#{pid})")
void permissionAdd(Long rid, Long pid);
- @Select("select name from organize_oa.oa_permissions where id in(select pid " +
- "from organize_oa.oa_role_permissions where rid=" +
- "(select rid from organize_oa.oa_role_user where uid=#{uid}) )")
- List permissionUser(Long uid);
+ @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 permissionGetById(Long id);
+ PermissionDO getPermissionById(Long id);
@Select("SELECT * FROM organize_oa.oa_role_permissions where pid=#{pid}")
RolePermissionDO rolePermissionGetByPid(Long pid);
@@ -32,4 +32,13 @@ public interface PermissionMapper {
@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);
}
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 ff7c989..896fdf6 100644
--- a/src/main/java/com/jsl/oa/services/impl/PermissionServiceImpl.java
+++ b/src/main/java/com/jsl/oa/services/impl/PermissionServiceImpl.java
@@ -1,5 +1,6 @@
package com.jsl.oa.services.impl;
+import com.jsl.oa.dao.PermissionDAO;
import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.mapper.PermissionMapper;
import com.jsl.oa.mapper.RoleMapper;
@@ -25,24 +26,26 @@ public class PermissionServiceImpl implements PermissionService {
private final PermissionMapper permissionMapper;
private final RoleMapper roleMapper;
+ private final PermissionDAO permissionDAO;
private final UserDAO userDAO;
@Override
public BaseResponse permissionAdd(HttpServletRequest request, Long rid, Long pid) {
log.info("\t> 执行 Service 层 PermissionService.permissionAdd 方法");
- if(!Processing.checkUserIsAdmin(request,roleMapper)){
+ if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
- permissionMapper.permissionAdd(rid,pid);
+ permissionMapper.permissionAdd(rid, pid);
return ResultUtil.success();
}
@Override
public BaseResponse permissionUser(HttpServletRequest request, Long uid) {
- log.info("\t> 执行 Service 层 PermissionService.permissionUser 方法");
- if(userDAO.isExistUser(uid)){
- List permission = permissionMapper.permissionUser(uid);
- return ResultUtil.success(permission);
+ log.info("\t> 执行 Service 层 PermissionService.permissionUserPid 方法");
+ if (userDAO.isExistUser(uid)) {
+ // 获取权限列表信息
+ List getPermissionForString = permissionDAO.getPermission(uid);
+ return ResultUtil.success(getPermissionForString);
}
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
}
@@ -52,13 +55,13 @@ public class PermissionServiceImpl implements PermissionService {
public BaseResponse permissionGet(HttpServletRequest request) {
log.info("\t> 执行 Service 层 PermissionService.permissionGet 方法");
//检验用户权限是否为管理员
- if(!Processing.checkUserIsAdmin(request,roleMapper)){
+ if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
//获取所有权限数据
- List permissionDOS = permissionMapper.getAllPermission();
+ List permissionDOList = permissionMapper.getAllPermission();
//将数据按父子类封装
- List permissionContentVos = Processing.convertToVoList(permissionDOS);
+ List permissionContentVos = Processing.convertToVoList(permissionDOList);
return ResultUtil.success(permissionContentVos);
}
@@ -67,18 +70,18 @@ public class PermissionServiceImpl implements PermissionService {
public BaseResponse permissionEdit(PermissionEditVO permissionEditVo, HttpServletRequest request) {
log.info("\t> 执行 Service 层 PermissionService.permissionEdit 方法");
//检验用户权限是否为管理员
- if(!Processing.checkUserIsAdmin(request,roleMapper)){
+ if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
//根据id获取对应permission数据
- PermissionDO permissionDO = permissionMapper.permissionGetById(permissionEditVo.getId());
- if(permissionDO == null){
+ PermissionDO permissionDO = permissionMapper.getPermissionById(permissionEditVo.getId());
+ if (permissionDO == null) {
return ResultUtil.error(ErrorCode.PERMISSION_NOT_EXIST);
}
//传递要编辑的数据
- Processing.copyProperties(permissionEditVo,permissionDO);
+ Processing.copyProperties(permissionEditVo, permissionDO);
//更新permission
- if(!permissionMapper.updatePermission(permissionDO)){
+ if (!permissionMapper.updatePermission(permissionDO)) {
return ResultUtil.error(ErrorCode.DATABASE_UPDATE_ERROR);
}
return ResultUtil.success();
@@ -86,17 +89,15 @@ public class PermissionServiceImpl implements PermissionService {
@Override
public BaseResponse permissionDelete(HttpServletRequest request, Long pid) {
+ log.info("\t> 执行 Service 层 PermissionService.permissionDelete 方法");
//检验用户权限是否为管理员
- if(!Processing.checkUserIsAdmin(request,roleMapper)){
+ if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
//删除权限
- if(!permissionMapper.deletePermission(pid)){
+ if (!permissionMapper.deletePermission(pid)) {
return ResultUtil.error(ErrorCode.DATABASE_DELETE_ERROR);
}
-
return ResultUtil.success();
}
-
-
}