From 7be9ac330267d8a7da116304b72e6aab386c9fff Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Sat, 20 Jan 2024 15:28:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9D=83=E9=99=90=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=8E=A5=E5=8F=A3=E3=80=81=E6=9D=83=E9=99=90=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oa/controllers/PermissionController.java | 14 ++++ .../jsl/oa/controllers/RoleController.java | 2 +- .../jsl/oa/controllers/UserController.java | 2 +- .../com/jsl/oa/mapper/PermissionMapper.java | 12 ++++ .../oa/model/voData/PermissionContentVo.java | 2 +- .../jsl/oa/model/voData/PermissionEditVo.java | 20 ++++++ .../jsl/oa/services/PermissionService.java | 3 + .../services/impl/PermissionServiceImpl.java | 41 +++++++++++- .../jsl/oa/services/impl/UserServiceImpl.java | 2 +- src/main/java/com/jsl/oa/utils/ErrorCode.java | 9 +-- .../java/com/jsl/oa/utils/Processing.java | 65 +++++++++++++++++-- 11 files changed, 155 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/jsl/oa/model/voData/PermissionEditVo.java diff --git a/src/main/java/com/jsl/oa/controllers/PermissionController.java b/src/main/java/com/jsl/oa/controllers/PermissionController.java index 4d84f24..26590a1 100755 --- a/src/main/java/com/jsl/oa/controllers/PermissionController.java +++ b/src/main/java/com/jsl/oa/controllers/PermissionController.java @@ -1,10 +1,15 @@ package com.jsl.oa.controllers; +import com.jsl.oa.model.voData.PermissionEditVo; +import com.jsl.oa.model.voData.UserEditVo; 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 org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; @@ -36,4 +41,13 @@ public class PermissionController { return permissionService.permissionGet(request); } + + @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); + } } diff --git a/src/main/java/com/jsl/oa/controllers/RoleController.java b/src/main/java/com/jsl/oa/controllers/RoleController.java index 078f84c..514de4a 100755 --- a/src/main/java/com/jsl/oa/controllers/RoleController.java +++ b/src/main/java/com/jsl/oa/controllers/RoleController.java @@ -143,7 +143,7 @@ public class RoleController { /** - * @Description: TODO 改变用户角色权限信息 + * @Description: 改变用户角色权限信息 * @Date: 2024/1/20 * @Param request: * @Param uid: 用户id diff --git a/src/main/java/com/jsl/oa/controllers/UserController.java b/src/main/java/com/jsl/oa/controllers/UserController.java index f506a87..9a05b00 100644 --- a/src/main/java/com/jsl/oa/controllers/UserController.java +++ b/src/main/java/com/jsl/oa/controllers/UserController.java @@ -149,7 +149,7 @@ public class UserController { /** - * @Description: TODO 管理员添加用户 + * @Description: 管理员添加用户 * @Date: 2024/1/18 * @Param userEditProfileVO: * @Param bindingResult: diff --git a/src/main/java/com/jsl/oa/mapper/PermissionMapper.java b/src/main/java/com/jsl/oa/mapper/PermissionMapper.java index 633cb1b..312a198 100644 --- a/src/main/java/com/jsl/oa/mapper/PermissionMapper.java +++ b/src/main/java/com/jsl/oa/mapper/PermissionMapper.java @@ -1,9 +1,11 @@ package com.jsl.oa.mapper; import com.jsl.oa.model.doData.PermissionDO; +import com.jsl.oa.model.doData.RolePermissionDO; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; import java.util.List; @@ -20,4 +22,14 @@ public interface PermissionMapper { @Select("SELECT * FROM organize_oa.oa_permissions where id=#{id}") PermissionDO permissionGetById(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); } diff --git a/src/main/java/com/jsl/oa/model/voData/PermissionContentVo.java b/src/main/java/com/jsl/oa/model/voData/PermissionContentVo.java index f11895f..35f529f 100644 --- a/src/main/java/com/jsl/oa/model/voData/PermissionContentVo.java +++ b/src/main/java/com/jsl/oa/model/voData/PermissionContentVo.java @@ -1,5 +1,6 @@ package com.jsl.oa.model.voData; +import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Data; import java.util.List; @@ -7,7 +8,6 @@ import java.util.List; public class PermissionContentVo { private Long id; - private Long pid; private String name; private String code; private Short type; diff --git a/src/main/java/com/jsl/oa/model/voData/PermissionEditVo.java b/src/main/java/com/jsl/oa/model/voData/PermissionEditVo.java new file mode 100644 index 0000000..42f2f6f --- /dev/null +++ b/src/main/java/com/jsl/oa/model/voData/PermissionEditVo.java @@ -0,0 +1,20 @@ +package com.jsl.oa.model.voData; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.sql.Timestamp; + +@Data +public class PermissionEditVo { + + @NotNull + private Long id; + private Long pid; + private String name; + private String code; + private Short type; + +} + + diff --git a/src/main/java/com/jsl/oa/services/PermissionService.java b/src/main/java/com/jsl/oa/services/PermissionService.java index f1073da..0e8ce23 100644 --- a/src/main/java/com/jsl/oa/services/PermissionService.java +++ b/src/main/java/com/jsl/oa/services/PermissionService.java @@ -1,5 +1,6 @@ package com.jsl.oa.services; +import com.jsl.oa.model.voData.PermissionEditVo; import com.jsl.oa.utils.BaseResponse; import javax.servlet.http.HttpServletRequest; @@ -11,4 +12,6 @@ public interface PermissionService { BaseResponse permissionUser(HttpServletRequest request, Long uid); BaseResponse permissionGet(HttpServletRequest request); + + BaseResponse permissionEdit(PermissionEditVo permissionEditVo, HttpServletRequest request); } 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 25775e6..3894787 100644 --- a/src/main/java/com/jsl/oa/services/impl/PermissionServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/PermissionServiceImpl.java @@ -1,8 +1,14 @@ package com.jsl.oa.services.impl; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.jsl.oa.dao.UserDAO; 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.RolePermissionDO; +import com.jsl.oa.model.voData.PermissionContentVo; +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; @@ -12,7 +18,10 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Service @RequiredArgsConstructor @@ -28,7 +37,7 @@ public class PermissionServiceImpl implements PermissionService { return ResultUtil.error(ErrorCode.NOT_ADMIN); } permissionMapper.permissionAdd(rid,pid); - return null; + return ResultUtil.success(); } @Override @@ -40,13 +49,39 @@ public class PermissionServiceImpl implements PermissionService { return ResultUtil.error(ErrorCode.USER_NOT_EXIST); } -// 开发中 + @Override public BaseResponse permissionGet(HttpServletRequest request) { + //检验用户权限是否为管理员 if(!Processing.checkUserIsAdmin(request,roleMapper)){ return ResultUtil.error(ErrorCode.NOT_ADMIN); } - return null; + //获取所有权限数据 + List permissionDOS = permissionMapper.getAllPermission(); + //将数据按父子类封装 + List permissionContentVos = Processing.convertToVoList(permissionDOS); + + return ResultUtil.success(permissionContentVos); + } + + @Override + public BaseResponse permissionEdit(PermissionEditVo permissionEditVo, HttpServletRequest request) { + //检验用户权限是否为管理员 + if(!Processing.checkUserIsAdmin(request,roleMapper)){ + return ResultUtil.error(ErrorCode.NOT_ADMIN); + } + //根据id获取对应permission数据 + PermissionDO permissionDO = permissionMapper.permissionGetById(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(); } 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 454700c..801dde3 100755 --- a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java @@ -198,7 +198,7 @@ public class UserServiceImpl implements UserService { /** - * @Description: TODO 判断用户是否为管理员 + * @Description: 判断用户是否为管理员 * @Date: 2024/1/18 * @Param request: 请求头 **/ diff --git a/src/main/java/com/jsl/oa/utils/ErrorCode.java b/src/main/java/com/jsl/oa/utils/ErrorCode.java index 6fe2e49..ab409c5 100755 --- a/src/main/java/com/jsl/oa/utils/ErrorCode.java +++ b/src/main/java/com/jsl/oa/utils/ErrorCode.java @@ -12,9 +12,9 @@ public enum ErrorCode { USER_EXIST("UserExist", 40013, "用户名已存在"), TIMESTAMP_ERROR("TimestampError", 40014, "时间戳错误"), USER_NOT_EXIST("UserNotExist", 40015, "用户不存在"), - USER_ROLE_NOT_EXIST("UserRoleNotExist", 40016, "用户权限不存在"), - USER_ROLE_NOT_MANAGER("UserRoleNotExist", 40017, "用户权限非管理员权限"), - USER_NOT_CHANGE_TO_THEMSELVES("UserNotChangeToThemselves", 40018, "用户不能改变自己的权限"), + USER_ROLE_NOT_EXIST("UserRoleNotExist", 40016, "用户角色不存在"), + USER_ROLE_NOT_MANAGER("UserRoleNotExist", 40017, "用户角色非管理员"), + USER_NOT_CHANGE_TO_THEMSELVES("UserNotChangeToThemselves", 40018, "用户不能改变自己的角色"), UNAUTHORIZED("Unauthorized", 40100, "未授权"), TOKEN_EXPIRED("TokenExpired", 40101, "Token已过期"), VERIFICATION_INVALID("VerificationInvalid", 40102, "验证码无效"), @@ -27,7 +27,8 @@ public enum ErrorCode { PASSWORD_NOT_SAME("PasswordNotSame", 40304, "两次密码不一致"), ID_NOT_EXIST("IdNotExist", 40400, "ID不存在"), ROLE_NOT_FOUNDED("RoleNotFounded", 40401, "角色不存在"), - ROLE_NAME_REPEAT("RoleNameRepeat", 40402, "权限名称重复"), + ROLE_NAME_REPEAT("RoleNameRepeat", 40402, "角色名称重复"), + PERMISSION_NOT_EXIST("permissionNotExist",40501,"权限不存在"), DATABASE_INSERT_ERROR("DatabaseInsertError", 50010, "数据库插入错误"), DATABASE_UPDATE_ERROR("DatabaseUpdateError", 50011, "数据库更新错误"), DATABASE_DELETE_ERROR("DatabaseDeleteError", 50012, "数据库删除错误"), diff --git a/src/main/java/com/jsl/oa/utils/Processing.java b/src/main/java/com/jsl/oa/utils/Processing.java index 1ec50b5..a0170c3 100755 --- a/src/main/java/com/jsl/oa/utils/Processing.java +++ b/src/main/java/com/jsl/oa/utils/Processing.java @@ -2,9 +2,11 @@ package com.jsl.oa.utils; import com.jsl.oa.exception.ClassCopyException; import com.jsl.oa.mapper.RoleMapper; +import com.jsl.oa.model.doData.PermissionDO; 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.PermissionContentVo; import com.jsl.oa.model.voData.UserProfileVo; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -13,10 +15,7 @@ import org.springframework.validation.ObjectError; import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Random; +import java.util.*; /** *

自定义快捷工具类

@@ -183,7 +182,7 @@ public class Processing { /** - * @Description: TODO VO类与实体类属性赋值 + * @Description: VO类与实体类属性赋值 * @Date: 2024/1/18 * @Param source: * @Param dest: @@ -232,7 +231,7 @@ public class Processing { /** - * @Description: TODO 将性别转为字符形式 + * @Description: 将性别转为字符形式 * @Date: 2024/1/18 **/ public static String getSex(short sex){ @@ -272,4 +271,58 @@ public class Processing { } + + /** + * @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; + } + + + }