refactor(bps): 重构响应结果类并优化相关代码

- 重构 ResponseResult 类,采用构建者模式(Builder Pattern)设计- 优化了成功和失败响应的创建方法,提高了代码可读性和易用性
- 更新了相关服务和控制器中的响应结果创建方式
- 统一了错误消息的命名,提高了代码一致性
This commit is contained in:
2025-03-26 17:39:00 +08:00
parent 2a84b71920
commit 849ddb78bd
11 changed files with 132 additions and 115 deletions
@@ -61,6 +61,6 @@ public class OtherController {
}
}
}
return ResponseResult.okResult(result);
return ResponseResult.success(result);
}
}
@@ -2,112 +2,132 @@ package com.mzaxd.bps.domain;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.mzaxd.bps.enums.AppHttpCodeEnum;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import lombok.NoArgsConstructor;
/**
* 统一响应结果类
*
* @author Mzaxd
* @param <T> 响应数据类型
*/
@Setter
@Getter
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ResponseResult<T> implements Serializable {
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class ResponseResult<T> {
/**
* 状态码
*/
private Integer code;
private String msg;
/**
* 响应消息
*/
private String message;
/**
* 响应数据
*/
private T data;
public ResponseResult() {
this.code = AppHttpCodeEnum.SUCCESS.getCode();
this.msg = AppHttpCodeEnum.SUCCESS.getMsg();
/**
* 构建响应结果
*/
private ResponseResult(Builder<T> builder) {
this.code = builder.code;
this.message = builder.message;
this.data = builder.data;
}
public ResponseResult(Integer code, T data) {
/**
* 构建者类
*/
public static class Builder<T> {
private Integer code;
private String message;
private T data;
public Builder<T> code(Integer code) {
this.code = code;
this.data = data;
}
public ResponseResult(Integer code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
public ResponseResult(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
public static ResponseResult<?> errorResult(int code, String msg) {
ResponseResult<?> result = new ResponseResult<>();
return result.error(code, msg);
}
public static ResponseResult<?> okResult() {
return (ResponseResult<?>) new ResponseResult<>();
}
public static ResponseResult<?> okResult(int code, String msg) {
ResponseResult<?> result = new ResponseResult<>();
return result.ok(code, null, msg);
}
public static ResponseResult<?> okResult(String msg, Object data) {
ResponseResult result = setAppHttpCodeEnum(AppHttpCodeEnum.SUCCESS);
result.setMsg(msg);
if (data != null) {
result.setData(data);
}
return result;
}
public static ResponseResult<?> okResult(Object data) {
ResponseResult result = setAppHttpCodeEnum(AppHttpCodeEnum.SUCCESS, AppHttpCodeEnum.SUCCESS.getMsg());
if (data != null) {
result.setData(data);
}
return result;
}
public static ResponseResult<?> errorResult(AppHttpCodeEnum enums) {
return setAppHttpCodeEnum(enums, enums.getMsg());
}
public static ResponseResult<?> errorResult(AppHttpCodeEnum enums, String msg) {
return setAppHttpCodeEnum(enums, msg);
}
public static ResponseResult<?> setAppHttpCodeEnum(AppHttpCodeEnum enums) {
return okResult(enums.getCode(), enums.getMsg());
}
private static ResponseResult<?> setAppHttpCodeEnum(AppHttpCodeEnum enums, String msg) {
return okResult(enums.getCode(), msg);
}
public ResponseResult<?> error(Integer code, String msg) {
this.code = code;
this.msg = msg;
return this;
}
public ResponseResult<?> ok(Integer code, T data) {
this.code = code;
public Builder<T> message(String message) {
this.message = message;
return this;
}
public Builder<T> data(T data) {
this.data = data;
return this;
}
public ResponseResult<?> ok(Integer code, T data, String msg) {
this.code = code;
this.data = data;
this.msg = msg;
return this;
public ResponseResult<T> build() {
return new ResponseResult<>(this);
}
}
public ResponseResult<?> ok(T data) {
this.data = data;
return this;
/**
* 创建成功响应(无数据)
*/
public static <T> ResponseResult<T> success() {
return new Builder<T>()
.code(AppHttpCodeEnum.SUCCESS.getCode())
.message(AppHttpCodeEnum.SUCCESS.getMsg())
.build();
}
/**
* 创建成功响应(带数据)
*/
public static <T> ResponseResult<T> success(T data) {
return new Builder<T>()
.code(AppHttpCodeEnum.SUCCESS.getCode())
.message(AppHttpCodeEnum.SUCCESS.getMsg())
.data(data)
.build();
}
/**
* 创建成功响应(自定义消息和数据)
*/
public static <T> ResponseResult<T> success(String message, T data) {
return new Builder<T>()
.code(AppHttpCodeEnum.SUCCESS.getCode())
.message(message)
.data(data)
.build();
}
/**
* 创建失败响应
*/
public static <T> ResponseResult<T> failure(AppHttpCodeEnum errorEnum) {
return new Builder<T>()
.code(errorEnum.getCode())
.message(errorEnum.getMsg())
.build();
}
/**
* 创建失败响应(自定义消息)
*/
public static <T> ResponseResult<T> failure(AppHttpCodeEnum errorEnum, String message) {
return new Builder<T>()
.code(errorEnum.getCode())
.message(message)
.build();
}
/**
* 创建失败响应(完全自定义)
*/
public static <T> ResponseResult<T> failure(Integer code, String message) {
return new Builder<T>()
.code(code)
.message(message)
.build();
}
}
@@ -50,7 +50,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
log.error(e.getMessage());
//token超时 token非法
//响应告诉前端需要重新登录
ResponseResult<?> result = ResponseResult.errorResult(AppHttpCodeEnum.NEED_LOGIN);
ResponseResult<?> result = ResponseResult.failure(AppHttpCodeEnum.NEED_LOGIN);
WebUtils.renderString(response, JSON.toJSONString(result));
return;
}
@@ -60,7 +60,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
//如果redis中没有用户信息
if (Objects.isNull(loginUser)) {
//说明登录过期 需要重新登录
ResponseResult<?> result = ResponseResult.errorResult(AppHttpCodeEnum.NEED_LOGIN);
ResponseResult<?> result = ResponseResult.failure(AppHttpCodeEnum.NEED_LOGIN);
WebUtils.renderString(response, JSON.toJSONString(result));
return;
}
@@ -22,7 +22,7 @@ public class AccessDeniedHandlerImpl implements AccessDeniedHandler {
@Override
public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws ServletException {
log.error(accessDeniedException.getMessage());
ResponseResult<?> result = ResponseResult.errorResult(AppHttpCodeEnum.NO_OPERATOR_AUTH);
ResponseResult<?> result = ResponseResult.failure(AppHttpCodeEnum.NO_OPERATOR_AUTH);
//响应给前端
WebUtils.renderString(response, JSON.toJSONString(result));
}
@@ -28,11 +28,11 @@ public class AuthenticationEntryPointImpl implements AuthenticationEntryPoint {
//BadCredentialsException
ResponseResult<?> result;
if (authException instanceof BadCredentialsException) {
result = ResponseResult.errorResult(AppHttpCodeEnum.LOGIN_ERROR.getCode(), authException.getMessage());
result = ResponseResult.failure(AppHttpCodeEnum.LOGIN_ERROR.getCode(), authException.getMessage());
} else if (authException instanceof InsufficientAuthenticationException) {
result = ResponseResult.errorResult(AppHttpCodeEnum.NEED_LOGIN);
result = ResponseResult.failure(AppHttpCodeEnum.NEED_LOGIN);
} else {
result = ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR.getCode(), "认证或授权失败");
result = ResponseResult.failure(AppHttpCodeEnum.SYSTEM_ERROR.getCode(), "认证或授权失败");
}
//响应给前端
WebUtils.renderString(response, JSON.toJSONString(result));
@@ -19,7 +19,7 @@ public class GlobalExceptionHandler {
//打印异常信息
log.error("出现了异常! {}", e.getMessage());
//从异常对象中获取提示信息封装返回
return ResponseResult.errorResult(e.getCode(), e.getMsg());
return ResponseResult.failure(e.getCode(), e.getMsg());
}
@ExceptionHandler(Exception.class)
@@ -27,6 +27,6 @@ public class GlobalExceptionHandler {
//打印异常信息
log.error("出现了异常! {}", e.getMessage());
//从异常对象中获取提示信息封装返回
return ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR, e.getMessage());
return ResponseResult.failure(AppHttpCodeEnum.SYSTEM_ERROR, e.getMessage());
}
}
@@ -51,13 +51,13 @@ public class AuditLogServiceImpl extends ServiceImpl<AuditLogMapper, AuditLog>
auditLogListVo.setUser(userInfoVo);
});
pageInfo.setList(auditLogListVos);
return ResponseResult.okResult(pageInfo);
return ResponseResult.success(pageInfo);
}
@Override
public ResponseResult<?> getParam(Integer id) {
AuditLog auditLog = getById(id);
return ResponseResult.okResult(auditLog.getParam());
return ResponseResult.success(auditLog.getParam());
}
@Override
@@ -66,7 +66,7 @@ public class AuditLogServiceImpl extends ServiceImpl<AuditLogMapper, AuditLog>
queryWrapper.eq(AuditLog::getOperationType, SystemConstant.LOG_USER);
queryWrapper.orderByDesc(AuditLog::getCreateTime);
List<AuditLog> list = list(queryWrapper);
return ResponseResult.okResult(list);
return ResponseResult.success(list);
}
}
@@ -5,7 +5,6 @@ import com.mzaxd.bps.constant.SystemConstant;
import com.mzaxd.bps.domain.ResponseResult;
import com.mzaxd.bps.domain.entity.LoginUser;
import com.mzaxd.bps.domain.entity.User;
import com.mzaxd.bps.enums.AppHttpCodeEnum;
import com.mzaxd.bps.exception.SystemException;
import com.mzaxd.bps.mapper.UserMapper;
import com.mzaxd.bps.service.LoginService;
@@ -58,7 +57,7 @@ public class LoginServiceImpl extends ServiceImpl<UserMapper, User> implements L
Map<String, String> map = new HashMap<>();
map.put("token", jwt);
map.put("userId", userId);
return ResponseResult.okResult("登录成功", map);
return ResponseResult.success("登录成功", map);
}
@Override
@@ -67,7 +66,7 @@ public class LoginServiceImpl extends ServiceImpl<UserMapper, User> implements L
Long userId = SecurityUtils.getUserId();
//删除redis中对应的值
redisCache.deleteObject("login:" + userId);
return ResponseResult.okResult();
return ResponseResult.success();
}
@Override
@@ -79,13 +78,13 @@ public class LoginServiceImpl extends ServiceImpl<UserMapper, User> implements L
defaultUser.setPassword(passwordEncoder.encode(user.getPassword()));
defaultUser.setUserState(SystemConstant.NORMAL_STATE);
saveOrUpdate(defaultUser);
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS.getCode(),"修改账号信息成功");
return ResponseResult.success("修改账号信息成功");
}
@Override
public ResponseResult<?> deleteAccount() {
Long userId = SecurityUtils.getUserId();
userMapper.deleteById(userId);
return ResponseResult.okResult();
return ResponseResult.success();
}
}
@@ -6,10 +6,9 @@ import com.mzaxd.bps.constant.RedisConstant;
import com.mzaxd.bps.constant.SystemConstant;
import com.mzaxd.bps.domain.ResponseResult;
import com.mzaxd.bps.domain.entity.Notification;
import com.mzaxd.bps.enums.AppHttpCodeEnum;
import com.mzaxd.bps.exception.SystemException;
import com.mzaxd.bps.service.NotificationService;
import com.mzaxd.bps.mapper.NotificationMapper;
import com.mzaxd.bps.service.NotificationService;
import com.mzaxd.bps.util.SystemSettingUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
@@ -48,7 +47,7 @@ public class NotificationServiceImpl extends ServiceImpl<NotificationMapper, Not
redisTemplate.opsForSet().remove(RedisConstant.NOTIFY_CONTAINER_IDS, notification.getInstanceId().toString());
}
saveOrUpdate(notification.setAffirm(SystemConstant.NOTIFICATION_AFFIRM));
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS.getCode(), "处理完成");
return ResponseResult.success("处理完成");
}
@Override
@@ -60,7 +59,7 @@ public class NotificationServiceImpl extends ServiceImpl<NotificationMapper, Not
public ResponseResult<?> getNotificationCount() {
LambdaQueryWrapper<Notification> notificationLambdaQueryWrapper = new LambdaQueryWrapper<>();
notificationLambdaQueryWrapper.eq(Notification::getAffirm, SystemConstant.NOTIFICATION_NOT_AFFIRM);
return ResponseResult.okResult(count(notificationLambdaQueryWrapper));
return ResponseResult.success(count(notificationLambdaQueryWrapper));
}
}
@@ -28,7 +28,7 @@ public class SystemSettingServiceImpl extends ServiceImpl<SystemSettingMapper, S
public ResponseResult<?> getSmtpSetting() {
SystemSetting systemSetting = getSetting();
SmtpVo smtpVo = BeanCopyUtils.copyBean(systemSetting, SmtpVo.class);
return ResponseResult.okResult(smtpVo);
return ResponseResult.success(smtpVo);
}
@Override
@@ -38,14 +38,14 @@ public class SystemSettingServiceImpl extends ServiceImpl<SystemSettingMapper, S
systemSetting.setEmailPass(smtpVo.getEmailPass());
systemSetting.setNotificationEmail(smtpVo.getNotificationEmail());
saveOrUpdate(systemSetting);
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
return ResponseResult.success(AppHttpCodeEnum.SUCCESS);
}
@Override
public ResponseResult<?> getTerminalSetting() {
SystemSetting systemSetting = getSetting();
TerminalVo terminalVo = BeanCopyUtils.copyBean(systemSetting, TerminalVo.class);
return ResponseResult.okResult(terminalVo);
return ResponseResult.success(terminalVo);
}
@Override
@@ -57,14 +57,14 @@ public class SystemSettingServiceImpl extends ServiceImpl<SystemSettingMapper, S
systemSetting.setForeground(terminalVo.getForeground());
systemSetting.setBackground(terminalVo.getBackground());
saveOrUpdate(systemSetting);
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
return ResponseResult.success(AppHttpCodeEnum.SUCCESS);
}
@Override
public ResponseResult<?> getSystemSetting() {
SystemSetting systemSetting = getSetting();
SystemVo systemVo = BeanCopyUtils.copyBean(systemSetting, SystemVo.class);
return ResponseResult.okResult(systemVo);
return ResponseResult.success(systemVo);
}
@Override
@@ -74,7 +74,7 @@ public class SystemSettingServiceImpl extends ServiceImpl<SystemSettingMapper, S
systemSetting.setDefaultLang(systemVo.getDefaultLang());
systemSetting.setCheckInstanceStatePeriod(systemVo.getCheckInstanceStatePeriod());
saveOrUpdate(systemSetting);
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
return ResponseResult.success(AppHttpCodeEnum.SUCCESS);
}
private SystemSetting getSetting(){
@@ -6,7 +6,6 @@ import com.mzaxd.bps.domain.ResponseResult;
import com.mzaxd.bps.domain.entity.User;
import com.mzaxd.bps.domain.vo.ProfileVo;
import com.mzaxd.bps.domain.vo.UserInfoVo;
import com.mzaxd.bps.enums.AppHttpCodeEnum;
import com.mzaxd.bps.exception.SystemException;
import com.mzaxd.bps.mapper.UserMapper;
import com.mzaxd.bps.service.UserService;
@@ -39,13 +38,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
User user = getById(userId);
//将用户信息封装Vo并返回
UserInfoVo userInfoVo = BeanCopyUtils.copyBean(user, UserInfoVo.class);
return ResponseResult.okResult(userInfoVo);
return ResponseResult.success(userInfoVo);
}
@Override
public ResponseResult<?> updateUserInfo(User user) {
updateById(user);
return ResponseResult.okResult();
return ResponseResult.success();
}
@Override
@@ -54,16 +53,16 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
Long userId = SecurityUtils.getUserId();
User user = getById(userId);
ProfileVo profile = BeanCopyUtils.copyBean(user, ProfileVo.class);
return ResponseResult.okResult(profile);
return ResponseResult.success(profile);
}
@Override
public ResponseResult<?> isFirstUse() {
User user = getById(1);
if (user.getUserState() == 0) {
return ResponseResult.okResult(true);
return ResponseResult.success(true);
} else {
return ResponseResult.okResult(false);
return ResponseResult.success(false);
}
}
@@ -73,14 +72,14 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
User user = getById(userId);
user.setPassword(passwordEncoder.encode(password));
saveOrUpdate(user);
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS.getCode(), "密码修改成功");
return ResponseResult.success("密码修改成功");
}
@Override
public ResponseResult<?> getUserInfo(Integer id) {
User user = getById(id);
UserInfoVo userInfoVo = BeanCopyUtils.copyBean(user, UserInfoVo.class);
return ResponseResult.okResult(userInfoVo);
return ResponseResult.success(userInfoVo);
}
@Override
@@ -89,7 +88,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
User user = getById(userId);
user.setEmail(userData.getEmail()).setUserName(userData.getUserName()).setNickName(userData.getNickName()).setAvatar(userData.getAvatar());
saveOrUpdate(user);
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS.getCode(), "账号信息修改成功");
return ResponseResult.success("账号信息修改成功");
}
}