package com.example.model; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 高级搜索请求类 */ public class AdvancedSearchRequest { private int page = 1; private int size = 10; private List criteria = new ArrayList<>(); private String sortField; private String sortOrder; public AdvancedSearchRequest() { } public int getPage() { return page; } public void setPage(int page) { this.page = page > 0 ? page : 1; } public int getSize() { return size; } public void setSize(int size) { this.size = size > 0 ? (size <= 100 ? size : 100) : 10; } public List getCriteria() { return criteria; } public void setCriteria(List criteria) { this.criteria = criteria != null ? criteria : new ArrayList<>(); } public String getSortField() { return sortField; } public void setSortField(String sortField) { this.sortField = sortField; } public String getSortOrder() { return sortOrder; } public void setSortOrder(String sortOrder) { this.sortOrder = sortOrder; } /** * 获取偏移量 */ public int getOffset() { return (page - 1) * size; } /** * 获取限制数 */ public int getLimit() { return size; } /** * 搜索条件类 */ public static class SearchCriteria { private String field; private String operator; private Object value; private List subCriteria; private String logicalOperator; public SearchCriteria() { } public SearchCriteria(String field, String operator, Object value) { this.field = field; this.operator = operator; this.value = value; } public String getField() { return field; } public void setField(String field) { this.field = field; } public String getOperator() { return operator; } public void setOperator(String operator) { this.operator = operator; } public Object getValue() { return value; } public void setValue(Object value) { this.value = value; } public List getSubCriteria() { return subCriteria; } public void setSubCriteria(List subCriteria) { this.subCriteria = subCriteria; } public String getLogicalOperator() { return logicalOperator; } public void setLogicalOperator(String logicalOperator) { this.logicalOperator = logicalOperator; } public boolean hasSubCriteria() { return subCriteria != null && !subCriteria.isEmpty(); } } @Override public String toString() { return "AdvancedSearchRequest{" + "page=" + page + ", size=" + size + ", criteria=" + criteria + ", sortField='" + sortField + '\'' + ", sortOrder='" + sortOrder + '\'' + '}'; } }