fix: ClassCopyException 捕获处理

This commit is contained in:
筱锋xiao_lfeng 2024-01-20 00:23:34 +08:00
parent e65efd1883
commit 1e0e75bf9a
No known key found for this signature in database
GPG Key ID: F693AA12AABBFA87
8 changed files with 72 additions and 62 deletions

View 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());
}
}

View File

@ -35,7 +35,7 @@ public class ProcessException {
return ResultUtil.error("HttpMessageNotReadable", 400, "请求参数错误");
}
@ExceptionHandler(value = MissingServletRequestParameterException.class)
public ResponseEntity<BaseResponse> businessMissingServletRequestParameterExceptionException(MissingServletRequestParameterException e) {
public ResponseEntity<BaseResponse> 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<BaseResponse> 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<BaseResponse> businessClassCopyException(@NotNull ClassCopyException e) {
log.error(e.getMessage(), e);
return ResultUtil.error("ServerInternalError", 50001, "服务器内部错误");
}
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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);
}
} else {
return ResultUtil.error(ErrorCode.ROLE_NAME_REPEAT);
}

View File

@ -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);
}
//向数据库中修改属性
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);
}
userProfile.setSex(Processing.getSex(userDO.getSex()));
return ResultUtil.success(userProfile);
}

View File

@ -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,10 +183,11 @@ public class Processing {
* @Param source:
* @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<?> targetClass = target.getClass();
try {
Field[] sourceFields = sourceClass.getDeclaredFields();
for (Field sourceField : sourceFields) {
String fieldName = sourceField.getName();
@ -217,8 +219,10 @@ public class Processing {
targetField.set(target, value);
}
return target;
} catch (IllegalAccessException e) {
throw new ClassCopyException(ErrorCode.CLASS_COPY_EXCEPTION);
}
return null;
}
/**