diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/entity/ResponseEntity.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/entity/ResponseEntity.java new file mode 100644 index 0000000..100011a --- /dev/null +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/entity/ResponseEntity.java @@ -0,0 +1,78 @@ +package cn.edu.hfut.rmdjzz.projectmanagement.entity; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 用于包装响应体的实体类,静态调用用of方法实例化对象,例:
+ * {@code return ResponseEntity.of(HttpStatus.OK.value(),"查询成功!",result);} + * @author 佘语殊 + * @since 2022/6/28 11:59 + */ +@SuppressWarnings({"unchecked", "varargs"}) +@Data +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class ResponseEntity { + private Integer code; + private String msg; + private QueryPage data; + + /** + * 静态构造函数 + * @param 数据类型 + * @param code 响应码 + * @param msg 响应消息 + * @param data 响应数据 + */ + public static ResponseEntity of(Integer code, String msg, T... data) { + return new ResponseEntity<>(code, msg, new QueryPage<>(data)); + } + + public static ResponseEntity of(Integer code, String msg, Collection data) { + return new ResponseEntity<>(code, msg, new QueryPage<>(data)); + } + + public static ResponseEntity of(Integer code, String msg, Page data) { + return new ResponseEntity<>(code, msg, new QueryPage<>(data)); + } + + /** + * 响应体内部类,包装用于分页查询 + */ + @Data + private static class QueryPage { + private Long total; + private List records; + + QueryPage(Page data) { + if (data == null) { + this.records = new ArrayList<>(); + this.total = 0L; + } else { + this.records = data.getRecords(); + this.total = data.getTotal(); + } + } + + QueryPage(Collection data) { + if (data == null) { + this.records = new ArrayList<>(); + this.total = 0L; + } else { + this.records = List.copyOf(data); + this.total = (long) records.size(); + } + } + + QueryPage(T[] data) { + //筛掉所有null + this.records = Arrays.stream(data).filter(Objects::nonNull).collect(Collectors.toList()); + this.total = (long) records.size(); + } + } +} diff --git a/src/test/java/cn/edu/hfut/rmdjzz/projectmanagement/ProjectManagementTests.java b/src/test/java/cn/edu/hfut/rmdjzz/projectmanagement/ProjectManagementTests.java index 44c6e09..6a55534 100644 --- a/src/test/java/cn/edu/hfut/rmdjzz/projectmanagement/ProjectManagementTests.java +++ b/src/test/java/cn/edu/hfut/rmdjzz/projectmanagement/ProjectManagementTests.java @@ -13,6 +13,7 @@ class ProjectManagementTests { @Test void contextLoads() { + } }