add
yj
2024-12-05 b9900893177c78fc559223521fe839aa21000017
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
package com.iotechn.unimall.data.model;
 
import lombok.Data;
 
import java.util.LinkedList;
import java.util.List;
 
/**
 * Description: 搜索引擎,搜索条件封装模型
 * User: rize
 * Date: 2020/8/15
 * Time: 15:28
 */
public class SearchWrapperModel {
 
    public static final int CONDITION_TYPE_ACCURATE = 1;
 
    public static final int CONDITION_TYPE_FUZZY = 2;
 
    public static final int CONDITION_TYPE_GT = 3;
 
    public static final int CONDITION_TYPE_GTE = 4;
 
    public static final int CONDITION_TYPE_LT = 5;
 
    public static final int CONDITION_TYPE_LTE = 6;
 
    public static final int CONDITION_TYPE_BETWEEN = 7;
 
 
    private List<Condition> conditions = new LinkedList<>();
 
    private Integer pageNo;
 
    private Integer pageSize;
 
    private String orderByField = "id";
 
    private Boolean isAsc = true;
 
    public List<Condition> getConditions() {
        return conditions;
    }
 
    public Integer getPageNo() {
        return pageNo;
    }
 
    public Integer getPageSize() {
        return pageSize;
    }
 
    public String getOrderByField() {
        return orderByField;
    }
 
    public Boolean getIsAsc() {
        return isAsc;
    }
 
    public SearchWrapperModel div(Integer pageNo, Integer pageSize) {
        this.pageNo = pageNo;
        this.pageSize = pageSize;
        return this;
    }
 
    public SearchWrapperModel like(String field, Object keyword) {
        return condition(CONDITION_TYPE_FUZZY, field, keyword);
    }
 
    public SearchWrapperModel eq(String field, Number keyword) {
        return condition(CONDITION_TYPE_ACCURATE, field, keyword);
    }
 
    public SearchWrapperModel gt(String field, Number keyword) {
        return condition(CONDITION_TYPE_GT, field, keyword);
    }
 
    public SearchWrapperModel gte(String field, Number keyword) {
        return condition(CONDITION_TYPE_GTE, field, keyword);
    }
 
    public SearchWrapperModel lt(String field, Number keyword) {
        return condition(CONDITION_TYPE_LT, field, keyword);
    }
 
    public SearchWrapperModel lte(String field, Number keyword) {
        return condition(CONDITION_TYPE_LTE, field, keyword);
    }
 
    public SearchWrapperModel between(String field, Number keyword, Number keyword2) {
        Condition condition = new Condition();
        condition.setField(field);
        condition.setType(CONDITION_TYPE_BETWEEN);
        condition.setKeyword(keyword);
        condition.setKeyword2(keyword2);
        this.conditions.add(condition);
        return this;
    }
 
    public SearchWrapperModel orderByAsc(String field) {
        this.orderByField = field;
        this.isAsc = true;
        return this;
    }
 
    public SearchWrapperModel orderByDesc(String field) {
        this.orderByField = field;
        this.isAsc = false;
        return this;
    }
 
    @Data
    public static class Condition {
 
        /**
         * 字段
         */
        private String field;
 
        /**
         * 搜索方式 1. 全字匹配 2. 模糊查询
         */
        private Integer type;
 
        /**
         * 关键字
         */
        private Object keyword;
 
        /**
         * 有的表达式需要两个关键字
         */
        private Object keyword2;
 
    }
 
    private SearchWrapperModel condition(int type, String field, Object keyword) {
        Condition condition = new Condition();
        condition.setField(field);
        condition.setKeyword(keyword);
        condition.setType(type);
        this.conditions.add(condition);
        return this;
    }
 
}