1:pom文件
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.1.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>com.github.axet</groupId>
<artifactId>kaptcha</artifactId>
<version>0.0.9</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2:IResultCode接口
package com.qycq.server.utils;
import io.swagger.annotations.ApiModel;
@ApiModel(value = "获取状态码和消息")
public interface IResultCode {
Integer getCode();
String getMessage();
}
3:返回信息枚举类
package com.qycq.server.enums;
import com.qycq.server.utils.IResultCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel(value = "枚举类,用于返回异常信息")
public enum ResultEnum implements IResultCode {
SUCCESS(200, "操作成功!"),
ERROR_500(500, "服务器内部异常!"),
ERROR_IO_500(500, "io异常!"),
ERROR_SQL_500(500, "sql语句异常!"),
ERROR_201(201, "数据重复,请检查!"),
ERROR_401(401, "尚未登陆,请登录!"),
ERROR_403(403, "权限不足,请联系管理员!"),
ERROR_400(400, "参数错误!");
@ApiModelProperty(value = "状态码")
private final Integer code;
@ApiModelProperty(value = "返回的消息")
private final String message;
private ResultEnum(final Integer code, final String message) {
this.code = code;
this.message = message;
}
@Override
public Integer getCode() {
return this.code;
}
@Override
public String getMessage() {
return this.message;
}
}
4:封装返回统一对象ResultBean
package com.qycq.server.encapsulation;
import com.qycq.server.enums.ResultEnum;
import com.qycq.server.utils.IResultCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.io.Serializable;
@Data
@Slf4j
@ApiModel(value = "返回统一格式数据")
public class ResultBean<T> implements Serializable {
@ApiModelProperty(value = "是否成功")
private boolean isSuccess;
@ApiModelProperty(value = "状态码")
private Integer code;
@ApiModelProperty(value = "承载数据")
private T data;
@ApiModelProperty(value = "返回的消息")
private String message;
private ResultBean(Integer code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
this.isSuccess = this.code.equals(ResultEnum.SUCCESS.getCode());
}
private ResultBean(IResultCode resultCode, String message, T data) {
this(resultCode.getCode(), message, data);
}
private ResultBean(IResultCode resultCode) {
this(resultCode.getCode(), resultCode.getMessage(), (T) null);
}
private ResultBean(IResultCode resultCode, String message) {
this(resultCode.getCode(), message, (T) null);
}
private ResultBean(IResultCode resultCode, T data) {
this(resultCode.getCode(), resultCode.getMessage(), data);
}
public static <T> ResultBean<T> data(T data) {
return data(ResultEnum.SUCCESS.getMessage(), (T) data);
}
public static <T> ResultBean<T> data(String message, T data) {
return data(ResultEnum.SUCCESS.getCode(), ResultEnum.SUCCESS.getMessage(), (T) data);
}
public static <T> ResultBean<T> data(Integer code, String message, T data) {
return new ResultBean<T>(code, message, (T) data);
}
public static <T> ResultBean<T> success(String message) {
return new ResultBean<T>(ResultEnum.SUCCESS.getCode(), message, (T) null);
}
public static <T> ResultBean<T> success(String message, T data) {
return new ResultBean<T>(ResultEnum.SUCCESS.getCode(), message, (T) data);
}
public static <T> ResultBean<T> fail(String message) {
return new ResultBean<T>(ResultEnum.ERROR_500.getCode(), message, (T) null);
}
public static <T> ResultBean<T> fail(String message, T data) {
return new ResultBean<T>(ResultEnum.ERROR_500.getCode(), message, (T) data);
}
public static <T> ResultBean<T> fail(Integer code, String message) {
return new ResultBean<T>(code, message, (T) null);
}
public static <T> ResultBean<T> status(boolean flag) {
return flag ? success(ResultEnum.SUCCESS.getMessage()) : fail(ResultEnum.ERROR_500.getMessage());
}
}
5:controller
@GetMapping("/logout")
@Log(type = LogEnum.LOGOUT)
@ApiOperation(value = "退出方法")
public ResultBean<String> logout() {
return ResultBean.success("注销成功!");
}
6测试: