diff --git a/src/main/java/com/jsl/oa/controllers/RoleController.java b/src/main/java/com/jsl/oa/controllers/RoleController.java index 935ab3f..1ad7ee8 100755 --- a/src/main/java/com/jsl/oa/controllers/RoleController.java +++ b/src/main/java/com/jsl/oa/controllers/RoleController.java @@ -1,5 +1,6 @@ package com.jsl.oa.controllers; +import com.jsl.oa.exception.ClassCopyException; import com.jsl.oa.model.voData.RoleAddVo; import com.jsl.oa.model.voData.RoleEditVO; import com.jsl.oa.services.RoleService; @@ -131,7 +132,7 @@ public class RoleController { * @Param uid: **/ @PostMapping("role/add") - public BaseResponse addRole(HttpServletRequest request, @RequestBody @Validated RoleAddVo roleAddVO, @NotNull BindingResult bindingResult ) { + public BaseResponse addRole(HttpServletRequest request, @RequestBody @Validated RoleAddVo roleAddVO, @NotNull BindingResult bindingResult ) throws ClassCopyException { log.info("请求接口[POST]: /role/add"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { diff --git a/src/main/java/com/jsl/oa/controllers/UserController.java b/src/main/java/com/jsl/oa/controllers/UserController.java index d8f563a..bb3883c 100644 --- a/src/main/java/com/jsl/oa/controllers/UserController.java +++ b/src/main/java/com/jsl/oa/controllers/UserController.java @@ -1,5 +1,6 @@ package com.jsl.oa.controllers; +import com.jsl.oa.exception.ClassCopyException; import com.jsl.oa.model.voData.UserAddVo; import com.jsl.oa.model.voData.UserAllCurrentVO; import com.jsl.oa.model.voData.UserEditProfileVO; @@ -165,7 +166,7 @@ public class UserController { @PutMapping("/user/edit") - public BaseResponse userEdit(@RequestBody @Validated UserEditVo userEditVo, BindingResult bindingResult, HttpServletRequest request){ + public BaseResponse userEdit(@RequestBody @Validated UserEditVo userEditVo, BindingResult bindingResult, HttpServletRequest request) throws ClassCopyException { // 判断是否有参数错误 if (bindingResult.hasErrors()) { return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult)); @@ -175,7 +176,7 @@ public class UserController { @GetMapping("/user/profile/get") - public BaseResponse userProfileGet(HttpServletRequest request){ + public BaseResponse userProfileGet(HttpServletRequest request) throws ClassCopyException { return userService.userProfileGet(request); } } diff --git a/src/main/java/com/jsl/oa/exception/ClassCopyException.java b/src/main/java/com/jsl/oa/exception/ClassCopyException.java new file mode 100644 index 0000000..83973e2 --- /dev/null +++ b/src/main/java/com/jsl/oa/exception/ClassCopyException.java @@ -0,0 +1,10 @@ +package com.jsl.oa.exception; + +import com.jsl.oa.utils.ErrorCode; +import org.jetbrains.annotations.NotNull; + +public class ClassCopyException extends IllegalAccessException { + public ClassCopyException(@NotNull ErrorCode errorCode) { + super(errorCode.getOutput() + "|" + errorCode.getMessage()); + } +} diff --git a/src/main/java/com/jsl/oa/exception/ProcessException.java b/src/main/java/com/jsl/oa/exception/ProcessException.java index 0692eea..a78850c 100755 --- a/src/main/java/com/jsl/oa/exception/ProcessException.java +++ b/src/main/java/com/jsl/oa/exception/ProcessException.java @@ -35,7 +35,7 @@ public class ProcessException { return ResultUtil.error("HttpMessageNotReadable", 400, "请求参数错误"); } @ExceptionHandler(value = MissingServletRequestParameterException.class) - public ResponseEntity businessMissingServletRequestParameterExceptionException(MissingServletRequestParameterException e) { + public ResponseEntity businessMissingServletRequestParameterException(MissingServletRequestParameterException e) { log.error(e.getMessage(), e); return ResponseEntity .status(400) @@ -45,6 +45,12 @@ public class ProcessException { @ExceptionHandler(value = Exception.class) public ResponseEntity businessException(@NotNull Exception e) { log.error(e.getMessage(), e); - return ResultUtil.error("ServerInternalError", 500, "服务器内部错误"); + return ResultUtil.error("ServerInternalError", 50000, "服务器内部错误"); + } + + @ExceptionHandler(value = ClassCopyException.class) + public ResponseEntity businessClassCopyException(@NotNull ClassCopyException e) { + log.error(e.getMessage(), e); + return ResultUtil.error("ServerInternalError", 50001, "服务器内部错误"); } } diff --git a/src/main/java/com/jsl/oa/services/RoleService.java b/src/main/java/com/jsl/oa/services/RoleService.java index 4ccf4eb..0fe8f57 100644 --- a/src/main/java/com/jsl/oa/services/RoleService.java +++ b/src/main/java/com/jsl/oa/services/RoleService.java @@ -1,5 +1,6 @@ package com.jsl.oa.services; +import com.jsl.oa.exception.ClassCopyException; import com.jsl.oa.model.voData.RoleAddVo; import com.jsl.oa.model.voData.RoleEditVO; import com.jsl.oa.utils.BaseResponse; @@ -25,7 +26,7 @@ public interface RoleService { BaseResponse roleDelete(HttpServletRequest request, Long id); - BaseResponse addRole(HttpServletRequest request, RoleAddVo roleAddVO); + BaseResponse addRole(HttpServletRequest request, RoleAddVo roleAddVO) throws ClassCopyException; BaseResponse roleChangeUser(HttpServletRequest request, Long uid, Long rid); } diff --git a/src/main/java/com/jsl/oa/services/UserService.java b/src/main/java/com/jsl/oa/services/UserService.java index 6078082..b79e82e 100755 --- a/src/main/java/com/jsl/oa/services/UserService.java +++ b/src/main/java/com/jsl/oa/services/UserService.java @@ -1,5 +1,6 @@ package com.jsl.oa.services; +import com.jsl.oa.exception.ClassCopyException; import com.jsl.oa.model.doData.UserDO; import com.jsl.oa.model.voData.UserAddVo; import com.jsl.oa.model.voData.UserAllCurrentVO; @@ -86,10 +87,10 @@ public interface UserService { BaseResponse userAdd(UserAddVo userAddVo, HttpServletRequest request); - BaseResponse userEdit(UserEditVo userEditVo, HttpServletRequest request); + BaseResponse userEdit(UserEditVo userEditVo, HttpServletRequest request) throws ClassCopyException; - BaseResponse userProfileGet(HttpServletRequest request); + BaseResponse userProfileGet(HttpServletRequest request) throws ClassCopyException; } diff --git a/src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java index a0243e4..2135a66 100755 --- a/src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java @@ -1,7 +1,6 @@ package com.jsl.oa.services.impl; import com.jsl.oa.common.constant.BusinessConstants; -import com.jsl.oa.exception.BusinessException; import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.mapper.UserMapper; import com.jsl.oa.model.doData.RoleUserDO; @@ -69,7 +68,7 @@ public class AuthServiceImpl implements AuthService { userDO.setPassword(null); return ResultUtil.success("注册成功", userDO); } else { - throw new BusinessException(ErrorCode.DATABASE_INSERT_ERROR); + return ResultUtil.error(ErrorCode.DATABASE_INSERT_ERROR); } } 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 64ce7ea..718a42f 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,7 @@ package com.jsl.oa.services.impl; import com.jsl.oa.dao.RoleDAO; +import com.jsl.oa.exception.ClassCopyException; import com.jsl.oa.model.doData.RoleDO; import com.jsl.oa.model.voData.RoleAddVo; import com.jsl.oa.model.voData.RoleEditVO; @@ -119,7 +120,7 @@ public class RoleServiceImpl implements RoleService { } @Override - public BaseResponse addRole(HttpServletRequest request, RoleAddVo roleAddVO) { + public BaseResponse addRole(HttpServletRequest request, RoleAddVo roleAddVO) throws ClassCopyException { // 检查用户权限 if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); @@ -128,12 +129,8 @@ public class RoleServiceImpl implements RoleService { String roleName = roleAddVO.getName(); RoleDO roleDO = new RoleDO(); if (!roleDAO.isExistRoleByRoleName(roleName)) { - try { - Processing.copyProperties(roleAddVO, roleDO); - roleDO.setRoleName(roleAddVO.getName()); - } catch (Exception e) { - return ResultUtil.error(ErrorCode.CLASS_COPY_EXCEPTION); - } + Processing.copyProperties(roleAddVO, roleDO); + roleDO.setRoleName(roleAddVO.getName()); } else { return ResultUtil.error(ErrorCode.ROLE_NAME_REPEAT); } 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 102ebec..aab8585 100755 --- a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java @@ -1,7 +1,7 @@ package com.jsl.oa.services.impl; import com.jsl.oa.dao.UserDAO; -import com.jsl.oa.exception.BusinessException; +import com.jsl.oa.exception.ClassCopyException; import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.model.doData.RoleUserDO; import com.jsl.oa.model.doData.UserCurrentDO; @@ -44,13 +44,13 @@ public class UserServiceImpl implements UserService { } @Override - public BaseResponse userLock(HttpServletRequest request, Long id,Long isLock) { + public BaseResponse userLock(HttpServletRequest request, Long id, Long isLock) { if (!Processing.checkUserIsAdmin(request, roleMapper)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } //判断用户是否存在 if (userDAO.isExistUser(id)) { - userDAO.userLock(id,isLock); + userDAO.userLock(id, isLock); return ResultUtil.success("更改成功"); } else return ResultUtil.error(ErrorCode.USER_NOT_EXIST); } @@ -158,14 +158,14 @@ public class UserServiceImpl implements UserService { userDO.setPassword(null); return ResultUtil.success("添加用户成功", userDO); } else { - throw new BusinessException(ErrorCode.DATABASE_INSERT_ERROR); + return ResultUtil.error(ErrorCode.DATABASE_INSERT_ERROR); } } else return ResultUtil.error(ErrorCode.USER_EXIST); } @Override - public BaseResponse userEdit(UserEditVo userEditVo, HttpServletRequest request) { + public BaseResponse userEdit(UserEditVo userEditVo, HttpServletRequest request) throws ClassCopyException { //检测用户是否为管理员 BaseResponse checkManagerResult = isManager(request); if (checkManagerResult.getCode() != 200) { @@ -179,11 +179,7 @@ public class UserServiceImpl implements UserService { } //修改非空属性 - try { - Processing.copyProperties(userEditVo, userDO); - } catch (Exception e) { - return ResultUtil.error(ErrorCode.CLASS_COPY_EXCEPTION); - } + Processing.copyProperties(userEditVo, userDO); //向数据库中修改属性 userDAO.userEdit(userDO); @@ -192,15 +188,11 @@ public class UserServiceImpl implements UserService { } @Override - public BaseResponse userProfileGet(HttpServletRequest request) { + public BaseResponse userProfileGet(HttpServletRequest request) throws ClassCopyException { // 获取用户Id UserDO userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request)); UserProfile userProfile = new UserProfile(); - try { - Processing.copyProperties(userDO, userProfile); - } catch (Exception e) { - return ResultUtil.error(ErrorCode.CLASS_COPY_EXCEPTION); - } + Processing.copyProperties(userDO, userProfile); userProfile.setSex(Processing.getSex(userDO.getSex())); return ResultUtil.success(userProfile); } diff --git a/src/main/java/com/jsl/oa/utils/Processing.java b/src/main/java/com/jsl/oa/utils/Processing.java index b529191..2ec8d1f 100755 --- a/src/main/java/com/jsl/oa/utils/Processing.java +++ b/src/main/java/com/jsl/oa/utils/Processing.java @@ -1,5 +1,6 @@ package com.jsl.oa.utils; +import com.jsl.oa.exception.ClassCopyException; import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.model.doData.RoleDO; import com.jsl.oa.model.doData.RoleUserDO; @@ -182,43 +183,46 @@ public class Processing { * @Param source: * @Param dest: **/ - public static T copyProperties(S source, T target) throws Exception { + public static T copyProperties(@NotNull S source, @NotNull T target) throws ClassCopyException { Class sourceClass = source.getClass(); Class targetClass = target.getClass(); - Field[] sourceFields = sourceClass.getDeclaredFields(); - for (Field sourceField : sourceFields) { - String fieldName = sourceField.getName(); - Field targetField = null; - try { - targetField = targetClass.getDeclaredField(fieldName); - } catch (NoSuchFieldException e) { - // 目标对象不存在该属性,忽略 - continue; + try { + Field[] sourceFields = sourceClass.getDeclaredFields(); + for (Field sourceField : sourceFields) { + String fieldName = sourceField.getName(); + Field targetField = null; + try { + targetField = targetClass.getDeclaredField(fieldName); + } catch (NoSuchFieldException e) { + // 目标对象不存在该属性,忽略 + continue; + } + + sourceField.setAccessible(true); + targetField.setAccessible(true); + + Object value = sourceField.get(source); + + if(value == null){ + continue; + } + + //如果获取的值不为数字且等于“”,则跳过 + if ( !(value instanceof Number) && value.equals("")) { + continue; + } + + if (!sourceField.getType().equals(targetField.getType())) { + continue; + } + + targetField.set(target, value); } - - sourceField.setAccessible(true); - targetField.setAccessible(true); - - Object value = sourceField.get(source); - - if(value == null){ - continue; - } - - //如果获取的值不为数字且等于“”,则跳过 - if ( !(value instanceof Number) && value.equals("")) { - continue; - } - - if (!sourceField.getType().equals(targetField.getType())) { - continue; - } - - targetField.set(target, value); + } catch (IllegalAccessException e) { + throw new ClassCopyException(ErrorCode.CLASS_COPY_EXCEPTION); } - - return target; + return null; } /**