1、resp包:
ResultData
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author ADMIN
* @version 1.0
* @description: 公共返回
* @date 2026/1/15/周四 10:51
*/
@Data
@Accessors(chain = true)
public class ResultData<T> {
private String code;
private String message;
private T data;
private long timestamp;
public ResultData(){
this.timestamp = System.currentTimeMillis();
}
public static <T> ResultData<T> success(T data){
return new ResultData<T>()
.setCode(ReturnCodeEnum.RC200.getCode())
.setMessage(ReturnCodeEnum.RC200.getMessage())
.setData(data);
}
public static <T> ResultData<T> fail(String code, String message){
return new ResultData<T>()
.setCode(code)
.setMessage(message);
}
}
ReturnCodeEnum:
import lombok.Getter;
import java.util.Arrays;
/**
* @author ADMIN
* @version 1.0
* @description: 返回状态枚举
* @date 2026/1/15/周四 10:53
*/
@Getter
public enum ReturnCodeEnum {
/**
* 操作失败
**/
RC999("999", "操作失败"),
/**
* 服务异常
*/
RC500("500", "系统异常,请稍后重试"),
/**
* 操作成功
**/
RC200("200", "success");
private final String code;
private final String message;
ReturnCodeEnum(String code, String message) {
this.code = code;
this.message = message;
}
public static ReturnCodeEnum getReturnCodeEnum(String code) {
for (ReturnCodeEnum elem : ReturnCodeEnum.values()) {
if (code.equals(elem.getCode())) {
return elem;
}
}
return null;
}
}
2、exp包:
GlobalExceptionHandler:
import cn.lomark.zoc.resp.ResultData;
import cn.lomark.zoc.resp.ReturnCodeEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
* @author ADMIN
* @version 1.0
* @description: 全局异常捕获
* @date 2026/1/15/周四 10:57
*/
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(RuntimeException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public ResultData<String> exception(Exception e){
log.info("全局异常: {}", e.getMessage(), e);
return ResultData.fail(ReturnCodeEnum.RC500.getCode(), e.getMessage());
}
@ExceptionHandler(ServiceException.class)
@ResponseStatus(HttpStatus.OK)
public ResultData<String> serviceException(Exception e){
log.info("业务异常: {}", e.getMessage(), e);
return ResultData.fail(ReturnCodeEnum.RC500.getCode(), e.getMessage());
}
}
ServiceException:
import lombok.Getter;
import java.io.Serial;
/**
* @author ADMIN
* @version 1.0
* @description: 业务异常
* @date 2026/1/15/周四 11:01
*/
@Getter
public final class ServiceException extends RuntimeException {
@Serial
private static final long serialVersionUID = 1L;
/**
* 错误码
*/
private Integer code;
/**
* 错误提示
*/
private String message;
/**
* 空构造方法,避免反序列化问题
*/
public ServiceException() {
}
public ServiceException(String message) {
this.message = message;
}
public ServiceException(String message, Integer code) {
this.message = message;
this.code = code;
}
public ServiceException setMessage(String message) {
this.message = message;
return this;
}
}
3、pom文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>xyz.haijin.core</groupId>
<artifactId>haijinplatform</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>common</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>