fix: ClassCopyException 捕获处理
This commit is contained in:
parent
e65efd1883
commit
26b58e3871
@ -1,5 +1,6 @@
|
|||||||
package com.jsl.oa.controllers;
|
package com.jsl.oa.controllers;
|
||||||
|
|
||||||
|
import com.jsl.oa.exception.ClassCopyException;
|
||||||
import com.jsl.oa.model.voData.RoleAddVo;
|
import com.jsl.oa.model.voData.RoleAddVo;
|
||||||
import com.jsl.oa.model.voData.RoleEditVO;
|
import com.jsl.oa.model.voData.RoleEditVO;
|
||||||
import com.jsl.oa.services.RoleService;
|
import com.jsl.oa.services.RoleService;
|
||||||
@ -131,7 +132,7 @@ public class RoleController {
|
|||||||
* @Param uid:
|
* @Param uid:
|
||||||
**/
|
**/
|
||||||
@PostMapping("role/add")
|
@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");
|
log.info("请求接口[POST]: /role/add");
|
||||||
// 判断是否有参数错误
|
// 判断是否有参数错误
|
||||||
if (bindingResult.hasErrors()) {
|
if (bindingResult.hasErrors()) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.jsl.oa.controllers;
|
package com.jsl.oa.controllers;
|
||||||
|
|
||||||
|
import com.jsl.oa.exception.ClassCopyException;
|
||||||
import com.jsl.oa.model.voData.UserAddVo;
|
import com.jsl.oa.model.voData.UserAddVo;
|
||||||
import com.jsl.oa.model.voData.UserAllCurrentVO;
|
import com.jsl.oa.model.voData.UserAllCurrentVO;
|
||||||
import com.jsl.oa.model.voData.UserEditProfileVO;
|
import com.jsl.oa.model.voData.UserEditProfileVO;
|
||||||
@ -165,7 +166,7 @@ public class UserController {
|
|||||||
|
|
||||||
|
|
||||||
@PutMapping("/user/edit")
|
@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()) {
|
if (bindingResult.hasErrors()) {
|
||||||
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
|
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
|
||||||
@ -175,7 +176,7 @@ public class UserController {
|
|||||||
|
|
||||||
|
|
||||||
@GetMapping("/user/profile/get")
|
@GetMapping("/user/profile/get")
|
||||||
public BaseResponse userProfileGet(HttpServletRequest request){
|
public BaseResponse userProfileGet(HttpServletRequest request) throws ClassCopyException {
|
||||||
return userService.userProfileGet(request);
|
return userService.userProfileGet(request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
10
src/main/java/com/jsl/oa/exception/ClassCopyException.java
Normal file
10
src/main/java/com/jsl/oa/exception/ClassCopyException.java
Normal file
@ -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());
|
||||||
|
}
|
||||||
|
}
|
@ -35,7 +35,7 @@ public class ProcessException {
|
|||||||
return ResultUtil.error("HttpMessageNotReadable", 400, "请求参数错误");
|
return ResultUtil.error("HttpMessageNotReadable", 400, "请求参数错误");
|
||||||
}
|
}
|
||||||
@ExceptionHandler(value = MissingServletRequestParameterException.class)
|
@ExceptionHandler(value = MissingServletRequestParameterException.class)
|
||||||
public ResponseEntity<BaseResponse> businessMissingServletRequestParameterExceptionException(MissingServletRequestParameterException e) {
|
public ResponseEntity<BaseResponse> businessMissingServletRequestParameterException(MissingServletRequestParameterException e) {
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
return ResponseEntity
|
return ResponseEntity
|
||||||
.status(400)
|
.status(400)
|
||||||
@ -45,6 +45,12 @@ public class ProcessException {
|
|||||||
@ExceptionHandler(value = Exception.class)
|
@ExceptionHandler(value = Exception.class)
|
||||||
public ResponseEntity<BaseResponse> businessException(@NotNull Exception e) {
|
public ResponseEntity<BaseResponse> businessException(@NotNull Exception e) {
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
return ResultUtil.error("ServerInternalError", 500, "服务器内部错误");
|
return ResultUtil.error("ServerInternalError", 50000, "服务器内部错误");
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExceptionHandler(value = ClassCopyException.class)
|
||||||
|
public ResponseEntity<BaseResponse> businessClassCopyException(@NotNull ClassCopyException e) {
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
return ResultUtil.error("ServerInternalError", 50001, "服务器内部错误");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.jsl.oa.services;
|
package com.jsl.oa.services;
|
||||||
|
|
||||||
|
import com.jsl.oa.exception.ClassCopyException;
|
||||||
import com.jsl.oa.model.voData.RoleAddVo;
|
import com.jsl.oa.model.voData.RoleAddVo;
|
||||||
import com.jsl.oa.model.voData.RoleEditVO;
|
import com.jsl.oa.model.voData.RoleEditVO;
|
||||||
import com.jsl.oa.utils.BaseResponse;
|
import com.jsl.oa.utils.BaseResponse;
|
||||||
@ -25,7 +26,7 @@ public interface RoleService {
|
|||||||
|
|
||||||
BaseResponse roleDelete(HttpServletRequest request, Long id);
|
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);
|
BaseResponse roleChangeUser(HttpServletRequest request, Long uid, Long rid);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.jsl.oa.services;
|
package com.jsl.oa.services;
|
||||||
|
|
||||||
|
import com.jsl.oa.exception.ClassCopyException;
|
||||||
import com.jsl.oa.model.doData.UserDO;
|
import com.jsl.oa.model.doData.UserDO;
|
||||||
import com.jsl.oa.model.voData.UserAddVo;
|
import com.jsl.oa.model.voData.UserAddVo;
|
||||||
import com.jsl.oa.model.voData.UserAllCurrentVO;
|
import com.jsl.oa.model.voData.UserAllCurrentVO;
|
||||||
@ -86,10 +87,10 @@ public interface UserService {
|
|||||||
|
|
||||||
BaseResponse userAdd(UserAddVo userAddVo, HttpServletRequest request);
|
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;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package com.jsl.oa.services.impl;
|
package com.jsl.oa.services.impl;
|
||||||
|
|
||||||
import com.jsl.oa.common.constant.BusinessConstants;
|
import com.jsl.oa.common.constant.BusinessConstants;
|
||||||
import com.jsl.oa.exception.BusinessException;
|
|
||||||
import com.jsl.oa.mapper.RoleMapper;
|
import com.jsl.oa.mapper.RoleMapper;
|
||||||
import com.jsl.oa.mapper.UserMapper;
|
import com.jsl.oa.mapper.UserMapper;
|
||||||
import com.jsl.oa.model.doData.RoleUserDO;
|
import com.jsl.oa.model.doData.RoleUserDO;
|
||||||
@ -69,7 +68,7 @@ public class AuthServiceImpl implements AuthService {
|
|||||||
userDO.setPassword(null);
|
userDO.setPassword(null);
|
||||||
return ResultUtil.success("注册成功", userDO);
|
return ResultUtil.success("注册成功", userDO);
|
||||||
} else {
|
} else {
|
||||||
throw new BusinessException(ErrorCode.DATABASE_INSERT_ERROR);
|
return ResultUtil.error(ErrorCode.DATABASE_INSERT_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.jsl.oa.services.impl;
|
package com.jsl.oa.services.impl;
|
||||||
|
|
||||||
import com.jsl.oa.dao.RoleDAO;
|
import com.jsl.oa.dao.RoleDAO;
|
||||||
|
import com.jsl.oa.exception.ClassCopyException;
|
||||||
import com.jsl.oa.model.doData.RoleDO;
|
import com.jsl.oa.model.doData.RoleDO;
|
||||||
import com.jsl.oa.model.voData.RoleAddVo;
|
import com.jsl.oa.model.voData.RoleAddVo;
|
||||||
import com.jsl.oa.model.voData.RoleEditVO;
|
import com.jsl.oa.model.voData.RoleEditVO;
|
||||||
@ -119,7 +120,7 @@ public class RoleServiceImpl implements RoleService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseResponse addRole(HttpServletRequest request, RoleAddVo roleAddVO) {
|
public BaseResponse addRole(HttpServletRequest request, RoleAddVo roleAddVO) throws ClassCopyException {
|
||||||
// 检查用户权限
|
// 检查用户权限
|
||||||
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
|
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
|
||||||
return ResultUtil.error(ErrorCode.NOT_ADMIN);
|
return ResultUtil.error(ErrorCode.NOT_ADMIN);
|
||||||
@ -128,12 +129,8 @@ public class RoleServiceImpl implements RoleService {
|
|||||||
String roleName = roleAddVO.getName();
|
String roleName = roleAddVO.getName();
|
||||||
RoleDO roleDO = new RoleDO();
|
RoleDO roleDO = new RoleDO();
|
||||||
if (!roleDAO.isExistRoleByRoleName(roleName)) {
|
if (!roleDAO.isExistRoleByRoleName(roleName)) {
|
||||||
try {
|
|
||||||
Processing.copyProperties(roleAddVO, roleDO);
|
Processing.copyProperties(roleAddVO, roleDO);
|
||||||
roleDO.setRoleName(roleAddVO.getName());
|
roleDO.setRoleName(roleAddVO.getName());
|
||||||
} catch (Exception e) {
|
|
||||||
return ResultUtil.error(ErrorCode.CLASS_COPY_EXCEPTION);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
return ResultUtil.error(ErrorCode.ROLE_NAME_REPEAT);
|
return ResultUtil.error(ErrorCode.ROLE_NAME_REPEAT);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.jsl.oa.services.impl;
|
package com.jsl.oa.services.impl;
|
||||||
|
|
||||||
import com.jsl.oa.dao.UserDAO;
|
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.mapper.RoleMapper;
|
||||||
import com.jsl.oa.model.doData.RoleUserDO;
|
import com.jsl.oa.model.doData.RoleUserDO;
|
||||||
import com.jsl.oa.model.doData.UserCurrentDO;
|
import com.jsl.oa.model.doData.UserCurrentDO;
|
||||||
@ -44,13 +44,13 @@ public class UserServiceImpl implements UserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseResponse userLock(HttpServletRequest request, Long id,Long isLock) {
|
public BaseResponse userLock(HttpServletRequest request, Long id, Long isLock) {
|
||||||
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
|
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
|
||||||
return ResultUtil.error(ErrorCode.NOT_ADMIN);
|
return ResultUtil.error(ErrorCode.NOT_ADMIN);
|
||||||
}
|
}
|
||||||
//判断用户是否存在
|
//判断用户是否存在
|
||||||
if (userDAO.isExistUser(id)) {
|
if (userDAO.isExistUser(id)) {
|
||||||
userDAO.userLock(id,isLock);
|
userDAO.userLock(id, isLock);
|
||||||
return ResultUtil.success("更改成功");
|
return ResultUtil.success("更改成功");
|
||||||
} else return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
|
} else return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
|
||||||
}
|
}
|
||||||
@ -158,14 +158,14 @@ public class UserServiceImpl implements UserService {
|
|||||||
userDO.setPassword(null);
|
userDO.setPassword(null);
|
||||||
return ResultUtil.success("添加用户成功", userDO);
|
return ResultUtil.success("添加用户成功", userDO);
|
||||||
} else {
|
} else {
|
||||||
throw new BusinessException(ErrorCode.DATABASE_INSERT_ERROR);
|
return ResultUtil.error(ErrorCode.DATABASE_INSERT_ERROR);
|
||||||
}
|
}
|
||||||
} else return ResultUtil.error(ErrorCode.USER_EXIST);
|
} else return ResultUtil.error(ErrorCode.USER_EXIST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseResponse userEdit(UserEditVo userEditVo, HttpServletRequest request) {
|
public BaseResponse userEdit(UserEditVo userEditVo, HttpServletRequest request) throws ClassCopyException {
|
||||||
//检测用户是否为管理员
|
//检测用户是否为管理员
|
||||||
BaseResponse checkManagerResult = isManager(request);
|
BaseResponse checkManagerResult = isManager(request);
|
||||||
if (checkManagerResult.getCode() != 200) {
|
if (checkManagerResult.getCode() != 200) {
|
||||||
@ -179,11 +179,7 @@ public class UserServiceImpl implements UserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//修改非空属性
|
//修改非空属性
|
||||||
try {
|
|
||||||
Processing.copyProperties(userEditVo, userDO);
|
Processing.copyProperties(userEditVo, userDO);
|
||||||
} catch (Exception e) {
|
|
||||||
return ResultUtil.error(ErrorCode.CLASS_COPY_EXCEPTION);
|
|
||||||
}
|
|
||||||
|
|
||||||
//向数据库中修改属性
|
//向数据库中修改属性
|
||||||
userDAO.userEdit(userDO);
|
userDAO.userEdit(userDO);
|
||||||
@ -192,15 +188,11 @@ public class UserServiceImpl implements UserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseResponse userProfileGet(HttpServletRequest request) {
|
public BaseResponse userProfileGet(HttpServletRequest request) throws ClassCopyException {
|
||||||
// 获取用户Id
|
// 获取用户Id
|
||||||
UserDO userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request));
|
UserDO userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request));
|
||||||
UserProfile userProfile = new UserProfile();
|
UserProfile userProfile = new UserProfile();
|
||||||
try {
|
|
||||||
Processing.copyProperties(userDO, userProfile);
|
Processing.copyProperties(userDO, userProfile);
|
||||||
} catch (Exception e) {
|
|
||||||
return ResultUtil.error(ErrorCode.CLASS_COPY_EXCEPTION);
|
|
||||||
}
|
|
||||||
userProfile.setSex(Processing.getSex(userDO.getSex()));
|
userProfile.setSex(Processing.getSex(userDO.getSex()));
|
||||||
return ResultUtil.success(userProfile);
|
return ResultUtil.success(userProfile);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.jsl.oa.utils;
|
package com.jsl.oa.utils;
|
||||||
|
|
||||||
|
import com.jsl.oa.exception.ClassCopyException;
|
||||||
import com.jsl.oa.mapper.RoleMapper;
|
import com.jsl.oa.mapper.RoleMapper;
|
||||||
import com.jsl.oa.model.doData.RoleDO;
|
import com.jsl.oa.model.doData.RoleDO;
|
||||||
import com.jsl.oa.model.doData.RoleUserDO;
|
import com.jsl.oa.model.doData.RoleUserDO;
|
||||||
@ -182,10 +183,11 @@ public class Processing {
|
|||||||
* @Param source:
|
* @Param source:
|
||||||
* @Param dest:
|
* @Param dest:
|
||||||
**/
|
**/
|
||||||
public static <T, S> T copyProperties(S source, T target) throws Exception {
|
public static <T, S> T copyProperties(@NotNull S source, @NotNull T target) throws ClassCopyException {
|
||||||
Class<?> sourceClass = source.getClass();
|
Class<?> sourceClass = source.getClass();
|
||||||
Class<?> targetClass = target.getClass();
|
Class<?> targetClass = target.getClass();
|
||||||
|
|
||||||
|
try {
|
||||||
Field[] sourceFields = sourceClass.getDeclaredFields();
|
Field[] sourceFields = sourceClass.getDeclaredFields();
|
||||||
for (Field sourceField : sourceFields) {
|
for (Field sourceField : sourceFields) {
|
||||||
String fieldName = sourceField.getName();
|
String fieldName = sourceField.getName();
|
||||||
@ -217,8 +219,10 @@ public class Processing {
|
|||||||
|
|
||||||
targetField.set(target, value);
|
targetField.set(target, value);
|
||||||
}
|
}
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
return target;
|
throw new ClassCopyException(ErrorCode.CLASS_COPY_EXCEPTION);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user