|
|
@ -5,23 +5,32 @@ import java.util.HashMap;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Result类用于封装操作结果相关的信息,包括操作的状态码、具体的结果数据以及对应的提示消息等,实现了Serializable接口,意味着该类的对象可以被序列化,方便在网络传输、持久化存储等场景下使用。
|
|
|
|
public class Result implements Serializable {
|
|
|
|
public class Result implements Serializable {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 序列化版本号,用于在序列化和反序列化过程中确保类结构的兼容性,当类的结构发生变化(如新增、删除字段等)时,可能需要更新该版本号,这里已经给定了一个初始值。
|
|
|
|
private static final long serialVersionUID = -1651614836984397356L;
|
|
|
|
private static final long serialVersionUID = -1651614836984397356L;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 用于存储操作结果的状态码,不同的数值代表不同的操作结果状态,例如成功、失败等情况,方便调用者根据状态码快速判断操作是否成功以及进行相应的后续处理。
|
|
|
|
private int code;
|
|
|
|
private int code;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 用于存放具体的操作结果数据,可以是各种类型的对象,比如查询数据库返回的实体对象列表、单个对象,或者是经过业务逻辑处理后的其他相关数据等。
|
|
|
|
private Object result;
|
|
|
|
private Object result;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 用于存储与操作结果相关的提示消息,例如操作成功时可以为空字符串,操作失败时则存放具体的失败原因描述信息,便于向调用者反馈操作的详细情况。
|
|
|
|
private String message;
|
|
|
|
private String message;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 定义表示成功的状态码常量,方便在代码中统一使用,通常在操作顺利完成、符合预期的情况下使用该状态码来表示成功状态,值为0。
|
|
|
|
public static final int SUCCESS_CODE = 0;
|
|
|
|
public static final int SUCCESS_CODE = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 定义表示失败的状态码常量,用于在操作出现错误、未达到预期结果时标记失败状态,值为1,便于在代码中清晰地标识操作失败的情况。
|
|
|
|
public static final int FAIL_CODE = 1;
|
|
|
|
public static final int FAIL_CODE = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 私有构造函数,将构造函数私有化,阻止外部直接通过`new`关键字创建`Result`对象,强制使用类中提供的静态方法来获取`Result`实例,这样可以更好地控制对象的创建和初始化过程,确保对象状态的一致性。
|
|
|
|
private Result() {
|
|
|
|
private Result() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 私有构造函数,用于在类内部根据传入的状态码、结果数据以及消息来创建`Result`对象,外部无法直接调用,同样是为了保证对象创建的规范性和可控性。
|
|
|
|
private Result(int code, Object result, String message) {
|
|
|
|
private Result(int code, Object result, String message) {
|
|
|
|
this.code = code;
|
|
|
|
this.code = code;
|
|
|
|
this.result = result;
|
|
|
|
this.result = result;
|
|
|
@ -29,48 +38,114 @@ public class Result implements Serializable {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 成功响应
|
|
|
|
* 创建表示成功的操作结果对象,返回包含具体结果数据的`Result`实例,状态码会被设置为成功状态码(`SUCCESS_CODE`),消息默认为空字符串。
|
|
|
|
*
|
|
|
|
* 通常在业务操作顺利完成,需要将结果返回给调用者时使用该方法来构造成功的响应对象。
|
|
|
|
* @param result
|
|
|
|
*
|
|
|
|
* @return
|
|
|
|
* @param result 具体的操作结果数据,可以是各种类型的对象,例如查询到的用户信息列表、单个用户对象等,将被赋值到`Result`对象的`result`字段中。
|
|
|
|
|
|
|
|
* @return 表示成功的`Result`对象,其状态码为`SUCCESS_CODE`,包含传入的结果数据以及空的消息字符串。
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public static Result successResult(Object result) {
|
|
|
|
public static Result successResult(Object result) {
|
|
|
|
return result(SUCCESS_CODE, result, "");
|
|
|
|
return result(SUCCESS_CODE, result, "");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 重载的`successResult`方法,用于创建表示成功的操作结果对象,该方法主要用于处理分页相关的数据结构返回情况,接收分页数据(记录列表、总记录数、每页行数)以及可选的用户自定义数据作为参数,
|
|
|
|
|
|
|
|
* 内部会进一步调用`resultOfList`方法来构建包含这些信息的`Map`对象,然后将该`Map`对象作为结果数据封装到`Result`对象中返回,表示操作成功并附带相关分页及自定义数据信息。
|
|
|
|
|
|
|
|
* 这里调用了另一个`successResult`的重载方法,默认将用户自定义数据参数设为`null`进行传递。
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param records 分页查询得到的记录列表,通常是一个包含多个实体对象的集合,例如查询到的多条用户信息记录列表等。
|
|
|
|
|
|
|
|
* @param recordSum 总的记录数,即满足查询条件的所有记录的数量,用于表示数据总量情况,方便前端进行分页导航等相关操作。
|
|
|
|
|
|
|
|
* @param rowsOfPage 每页显示的记录行数,用于确定分页的大小,告诉前端每页应该展示多少条数据。
|
|
|
|
|
|
|
|
* @return 表示成功的`Result`对象,其状态码为`SUCCESS_CODE`,包含整合了分页及相关数据的`Map`类型结果数据以及空的消息字符串。
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static Result successResult(Object records, Long recordSum, Long rowsOfPage) {
|
|
|
|
public static Result successResult(Object records, Long recordSum, Long rowsOfPage) {
|
|
|
|
return successResult(records, recordSum, rowsOfPage, null);
|
|
|
|
return successResult(records, recordSum, rowsOfPage, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 创建表示成功的操作结果对象,用于处理分页相关的数据结构返回情况,并可附带用户自定义数据。
|
|
|
|
|
|
|
|
* 首先调用`resultOfList`方法根据传入的记录列表、总记录数、每页行数以及用户自定义数据构建一个`Map`对象,该`Map`对象整合了这些相关信息,
|
|
|
|
|
|
|
|
* 然后将这个`Map`对象作为结果数据通过调用`successResult(Object result)`方法封装到`Result`对象中返回,表示操作成功并附带详细的分页及自定义数据信息。
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param records 分页查询得到的记录列表,通常是一个包含多个实体对象的集合,例如查询到的多条用户信息记录列表等。
|
|
|
|
|
|
|
|
* @param recordSum 总的记录数,即满足查询条件的所有记录的数量,用于表示数据总量情况,方便前端进行分页导航等相关操作。
|
|
|
|
|
|
|
|
* @param rowsOfPage 每页显示的记录行数,用于确定分页的大小,告诉前端每页应该展示多少条数据。
|
|
|
|
|
|
|
|
* @param userData 用户自定义的数据,可以是任何与业务相关的额外信息,例如用户权限信息、相关配置参数等,会被添加到返回的结果`Map`中,方便前端或其他调用者获取使用。
|
|
|
|
|
|
|
|
* @return 表示成功的`Result`对象,其状态码为`SUCCESS_CODE`,包含整合了分页及相关数据的`Map`类型结果数据以及空的消息字符串。
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static Result successResult(Object records, Long recordSum, Long rowsOfPage, Object userData) {
|
|
|
|
public static Result successResult(Object records, Long recordSum, Long rowsOfPage, Object userData) {
|
|
|
|
Map<String, Object> result = resultOfList(records, recordSum, rowsOfPage, userData);
|
|
|
|
Map<String, Object> result = resultOfList(records, recordSum, rowsOfPage, userData);
|
|
|
|
|
|
|
|
|
|
|
|
return successResult(result);
|
|
|
|
return successResult(result);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 创建用于存放分页相关信息的`Map`对象,该方法主要是对`resultOfList`另一个重载方法的简单调用,默认将用户自定义数据参数设为`null`,用于构建包含记录列表、总记录数以及每页行数等基本分页信息的`Map`对象,
|
|
|
|
|
|
|
|
* 方便后续作为结果数据的一部分进行传递和处理,例如在分页查询结果返回时整合相关数据使用。
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param records 分页查询得到的记录列表,通常是一个包含多个实体对象的集合,例如查询到的多条用户信息记录列表等。
|
|
|
|
|
|
|
|
* @param recordSum 总的记录数,即满足查询条件的所有记录的数量,用于表示数据总量情况,方便前端进行分页导航等相关操作。
|
|
|
|
|
|
|
|
* @param rowsOfPage 每页显示的记录行数,用于确定分页的大小,告诉前端每页应该展示多少条数据。
|
|
|
|
|
|
|
|
* @return 包含分页相关信息的`Map`对象,其中键值对分别为 "rows"(对应记录列表)、"records"(对应总记录数)、"total"(对应每页行数)等,方便后续使用和扩展。
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static Map<String, Object> resultOfList(Object records, Long recordSum, Long rowsOfPage) {
|
|
|
|
public static Map<String, Object> resultOfList(Object records, Long recordSum, Long rowsOfPage) {
|
|
|
|
return resultOfList(records, recordSum, rowsOfPage, null);
|
|
|
|
return resultOfList(records, recordSum, rowsOfPage, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 创建用于存放分页相关信息以及可选的用户自定义数据的`Map`对象。
|
|
|
|
|
|
|
|
* 首先创建一个新的`HashMap`实例,然后向其中添加以下键值对信息:
|
|
|
|
|
|
|
|
* - "rows":对应传入的记录列表(`Obj`参数),存放分页查询得到的具体记录数据集合,方便前端展示具体的分页内容。
|
|
|
|
|
|
|
|
* - "records":对应传入的总记录数(`records`参数),用于表示满足查询条件的所有记录的数量,便于前端进行分页导航等操作,例如计算总页数等。
|
|
|
|
|
|
|
|
* - "total":对应传入的每页行数(`rowsOfPage`参数),用于明确分页的大小,让前端知道每页应该展示多少条数据。
|
|
|
|
|
|
|
|
* - 如果传入的用户自定义数据(`userData`参数)不为`null`,则添加 "userdata" 键值对,将用户自定义数据存入`Map`中,方便传递额外的业务相关信息。
|
|
|
|
|
|
|
|
* 最后返回构建好的包含分页及相关信息的`Map`对象,可用于作为结果数据进行传递、展示等操作。
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param Obj 分页查询得到的记录列表,通常是一个包含多个实体对象的集合,例如查询到的多条用户信息记录列表等,对应`Map`中的 "rows" 键值。
|
|
|
|
|
|
|
|
* @param records 总的记录数,即满足查询条件的所有记录的数量,用于表示数据总量情况,方便前端进行分页导航等相关操作,对应`Map`中的 "records" 键。
|
|
|
|
|
|
|
|
* @param rowsOfPage 每页显示的记录行数,用于确定分页的大小,告诉前端每页应该展示多少条数据,对应`Map`中的 "total" 键。
|
|
|
|
|
|
|
|
* @param userData 用户自定义的数据,可以是任何与业务相关的额外信息,例如用户权限信息、相关配置参数等,若不为`null`则对应`Map`中的 "userdata" 键。
|
|
|
|
|
|
|
|
* @return 包含分页相关信息以及可选用户自定义数据的`Map`对象,方便作为结果数据在不同层之间传递和处理。
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static Map<String, Object> resultOfList(Object Obj, Long records, Long rowsOfPage, Object userData) {
|
|
|
|
public static Map<String, Object> resultOfList(Object Obj, Long records, Long rowsOfPage, Object userData) {
|
|
|
|
Map<String, Object> result = new HashMap<String, Object>();
|
|
|
|
Map<String, Object> result = new HashMap<String, Object>();
|
|
|
|
result.put("rows", Obj);
|
|
|
|
result.put("rows", Obj);
|
|
|
|
result.put("records", records);
|
|
|
|
result.put("records", records);
|
|
|
|
result.put("total", rowsOfPage);
|
|
|
|
result.put("total", rowsOfPage);
|
|
|
|
if (null != userData) {
|
|
|
|
if (null!= userData) {
|
|
|
|
result.put("userdata", userData);
|
|
|
|
result.put("userdata", userData);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
;
|
|
|
|
;
|
|
|
|
return result;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 创建用于符合`jqGrid`组件(一种常用的前端表格插件)要求的分页结果数据`Map`对象。
|
|
|
|
|
|
|
|
* 首先创建一个新的`HashMap`实例,然后向其中添加以下键值对信息:
|
|
|
|
|
|
|
|
* - "list":对应传入的列表数据(`list`参数),存放具体的记录数据集合,用于在`jqGrid`表格中展示实际的内容。
|
|
|
|
|
|
|
|
* - "count":对应传入的总记录数(`totalCount`参数),用于表示满足查询条件的所有记录的数量,便于`jqGrid`进行分页导航等相关操作,例如计算总页数等。
|
|
|
|
|
|
|
|
* - "next":根据当前页码(`currPage`参数)和总页数(`totalPage`参数)来确定下一页的页码,如果当前页已经是最后一页,则下一页页码等于当前页码,否则为当前页码加1,用于`jqGrid`的分页导航中“下一页”按钮的逻辑判断。
|
|
|
|
|
|
|
|
* - "prev":同样根据当前页码和总页数来确定上一页的页码,如果当前页是第一页,则上一页页码为1,否则为当前页码减1,用于`jqGrid`的分页导航中“上一页”按钮的逻辑判断。
|
|
|
|
|
|
|
|
* - "first":固定值为1,表示第一页的页码,用于`jqGrid`的分页导航中“首页”按钮的逻辑判断。
|
|
|
|
|
|
|
|
* - "last":对应传入的总页数(`totalPage`参数),表示最后一页的页码,用于`jqGrid`的分页导航中“尾页”按钮的逻辑判断。
|
|
|
|
|
|
|
|
* - "pageSize":对应传入的每页显示的记录数(`pageSize`参数),用于明确分页的大小,告诉`jqGrid`表格每页应该展示多少条数据。
|
|
|
|
|
|
|
|
* - "pageNo":对应传入的当前页码(`currPage`参数),用于表示当前所处的页码位置,方便`jqGrid`进行分页相关的显示和操作。
|
|
|
|
|
|
|
|
* 最后返回构建好的包含符合`jqGrid`分页要求的所有信息的`Map`对象,方便与前端`jqGrid`组件进行数据交互,展示分页查询结果。
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param list 分页查询得到的记录列表,通常是一个包含多个实体对象的集合,例如查询到的多条用户信息记录列表等,用于在`jqGrid`表格中展示具体的数据内容。
|
|
|
|
|
|
|
|
* @param totalCount 总的记录数,即满足查询条件的所有记录的数量,用于表示数据总量情况,方便`jqGrid`进行分页导航等相关操作,例如计算总页数等。
|
|
|
|
|
|
|
|
* @param pageSize 每页显示的记录数,用于确定分页的大小,告诉`jqGrid`表格每页应该展示多少条数据。
|
|
|
|
|
|
|
|
* @param currPage 当前页码,用于表示当前所处的页码位置,方便`jqGrid`进行分页相关的显示和操作。
|
|
|
|
|
|
|
|
* @param totalPage 总页数,根据总记录数和每页记录数计算得出,用于`jqGrid`的分页导航中判断是否处于最后一页等相关操作。
|
|
|
|
|
|
|
|
* @return 包含符合`jqGrid`分页要求的所有信息的`Map`对象,用于与前端`jqGrid`组件进行数据交互,展示分页查询结果。
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static Map<String, Object> jqGridResult(List<?> list, long totalCount, int pageSize, int currPage,
|
|
|
|
public static Map<String, Object> jqGridResult(List<?> list, long totalCount, int pageSize, int currPage,
|
|
|
|
int totalPage) {
|
|
|
|
int totalPage) {
|
|
|
|
Map<String, Object> result = new HashMap<String, Object>();
|
|
|
|
Map<String, Object> result = new HashMap<String, Object>();
|
|
|
|
result.put("list", list);
|
|
|
|
result.put("list", list);
|
|
|
|
result.put("count", totalCount);
|
|
|
|
result.put("count", totalCount);
|
|
|
|
result.put("next", currPage == totalPage ? currPage : currPage + 1);
|
|
|
|
result.put("next", currPage == totalPage? currPage : currPage + 1);
|
|
|
|
result.put("prev", currPage == 1 ? 1 : currPage - 1);
|
|
|
|
result.put("prev", currPage == 1? 1 : currPage - 1);
|
|
|
|
result.put("first", 1);
|
|
|
|
result.put("first", 1);
|
|
|
|
result.put("last", totalPage);
|
|
|
|
result.put("last", totalPage);
|
|
|
|
result.put("pageSize", pageSize);
|
|
|
|
result.put("pageSize", pageSize);
|
|
|
@ -79,30 +154,56 @@ public class Result implements Serializable {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 失败响应
|
|
|
|
* 创建表示失败的操作结果对象,返回包含指定失败消息的`Result`实例,状态码会被设置为失败状态码(`FAIL_CODE`),结果数据默认为空字符串。
|
|
|
|
*
|
|
|
|
* 通常在业务操作出现错误、未达到预期结果时使用该方法来构造失败的响应对象,并传递具体的失败原因消息给调用者。
|
|
|
|
* @param errorMsg
|
|
|
|
*
|
|
|
|
* @return
|
|
|
|
* @param errorMsg 具体的失败原因消息字符串,例如 "数据库连接失败"、"参数校验不通过" 等,将被赋值到`Result`对象的`message`字段中,方便调用者了解操作失败的具体原因。
|
|
|
|
|
|
|
|
* @return 表示失败的`Result`对象,其状态码为`FAIL_CODE`,包含空的结果数据以及传入的失败原因消息字符串。
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public static Result failResult(String errorMsg) {
|
|
|
|
public static Result failResult(String errorMsg) {
|
|
|
|
return result(FAIL_CODE, "", errorMsg);
|
|
|
|
return result(FAIL_CODE, "", errorMsg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 创建`Result`对象的通用方法,根据传入的状态码、结果数据以及消息构建并返回一个`Result`对象实例,用于在不同的具体场景下灵活创建具有不同状态、数据和消息的`Result`对象。
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param code 要设置的状态码,通常使用`SUCCESS_CODE`表示成功,`FAIL_CODE`表示失败,也可以根据业务需求自定义其他状态码。
|
|
|
|
|
|
|
|
* @param result 具体的结果数据,可以是各种类型的对象,例如查询到的用户信息列表、单个用户对象等,将被赋值到`Result`对象的`result`字段中。
|
|
|
|
|
|
|
|
* @param message 要设置的提示消息字符串,例如操作成功或失败的相关描述信息等,将被赋值到`Result`对象的`message`字段中。
|
|
|
|
|
|
|
|
* @return 根据传入参数构建好的`Result`对象实例,包含指定的状态码、结果数据以及消息内容。
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static Result result(int code, Object result, String message) {
|
|
|
|
public static Result result(int code, Object result, String message) {
|
|
|
|
Result res = new Result(code, result, message);
|
|
|
|
Result res = new Result(code, result, message);
|
|
|
|
return res;
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 以下是用于获取`Result`对象中各个属性的公共访问方法,方便外部调用者获取`Result`对象封装的状态码、结果数据以及消息信息。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 获取`Result`对象的状态码。
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @return `Result`对象中存储的状态码,调用者可根据该状态码判断操作是否成功以及进行相应的后续处理。
|
|
|
|
|
|
|
|
*/
|
|
|
|
public int getCode() {
|
|
|
|
public int getCode() {
|
|
|
|
return code;
|
|
|
|
return code;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 获取`Result`对象的结果数据。
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @return `Result`对象中存储的结果数据,可以是各种类型的对象,例如查询到的用户信息列表、单个用户对象等,调用者可根据业务需求进一步处理该结果数据。
|
|
|
|
|
|
|
|
*/
|
|
|
|
public Object getResult() {
|
|
|
|
public Object getResult() {
|
|
|
|
return result;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 获取`Result`对象的提示消息。
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @return `Result`对象中存储的提示消息字符串,例如操作成功或失败的相关描述信息等,方便调用者了解操作的详细情况。
|
|
|
|
|
|
|
|
*/
|
|
|
|
public String getMessage() {
|
|
|
|
public String getMessage() {
|
|
|
|
return message;
|
|
|
|
return message;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|