Skip to content

Commit 20dfb4a

Browse files
committed
优化query
1 parent 0816490 commit 20dfb4a

File tree

1 file changed

+89
-40
lines changed

1 file changed

+89
-40
lines changed

paginator.go

+89-40
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,24 @@ type PageResult struct {
3434

3535
func (h *HttpResult) SearchByIncludes(column string, values []any) *HttpResult {
3636
// 再处理url查询
37-
query := facades.Orm().Query()
38-
h.Query = func(q orm.Query) orm.Query {
39-
//处理日期时间
40-
// 先处理过滤条件
41-
q = q.Where(column+" in ?", values).(orm.Query)
42-
return q
43-
}(query)
44-
return h
37+
if h.Query != nil {
38+
h.Query = func(q orm.Query) orm.Query {
39+
//处理日期时间
40+
// 先处理过滤条件
41+
q = q.Where(column+" in ?", values).(orm.Query)
42+
return q
43+
}(h.Query)
44+
return h
45+
} else {
46+
query := facades.Orm().Query()
47+
h.Query = func(q orm.Query) orm.Query {
48+
//处理日期时间
49+
// 先处理过滤条件
50+
q = q.Where(column+" in ?", values).(orm.Query)
51+
return q
52+
}(query)
53+
return h
54+
}
4555
}
4656

4757
// SearchByParams
@@ -50,45 +60,84 @@ func (h *HttpResult) SearchByParams(params map[string]string, conditionMap map[s
5060
for _, except := range excepts {
5161
delete(params, except)
5262
}
53-
query := facades.Orm().Query()
54-
55-
// 再处理url查询
56-
h.Query = func(q orm.Query) orm.Query {
57-
//处理日期时间
58-
// 先处理过滤条件
59-
for key, val := range conditionMap {
60-
q = q.Where(key+" = ?", val).(orm.Query)
61-
}
62-
for key, value := range params {
63-
//如果key包含了[]符号
64-
65-
if strings.Contains(key, "[]") || value == "" || key == "pageSize" || key == "total" || key == "currentPage" || key == "sort" || key == "order" {
66-
continue
67-
} else {
68-
q = q.Where(gorm.Expr(key+" LIKE ?", "%"+value+"%"))
63+
if h.Query != nil {
64+
query := facades.Orm().Query()
65+
// 再处理url查询
66+
h.Query = func(q orm.Query) orm.Query {
67+
//处理日期时间
68+
// 先处理过滤条件
69+
for key, val := range conditionMap {
70+
q = q.Where(key+" = ?", val).(orm.Query)
6971
}
70-
//则表示是日期时间范围
71-
/**
72-
created_at[]: 2024-10-21 00:00:00
73-
created_at[]: 2024-10-21 23:59:59
74-
*/
75-
if strings.Contains(key, "[]") {
76-
key = strings.Replace(key, "[]", "", -1)
77-
if value == "" {
72+
for key, value := range params {
73+
//如果key包含了[]符号
74+
75+
if strings.Contains(key, "[]") || value == "" || key == "pageSize" || key == "total" || key == "currentPage" || key == "sort" || key == "order" {
7876
continue
79-
}
80-
//按照,拆分value
81-
ranges := strings.Split(value, ",")
82-
if len(ranges) == 2 {
83-
q = q.Where(key+" BETWEEN ? AND ?", ranges[0], ranges[1])
8477
} else {
78+
q = q.Where(gorm.Expr(key+" LIKE ?", "%"+value+"%"))
79+
}
80+
//则表示是日期时间范围
81+
/**
82+
created_at[]: 2024-10-21 00:00:00
83+
created_at[]: 2024-10-21 23:59:59
84+
*/
85+
if strings.Contains(key, "[]") {
86+
key = strings.Replace(key, "[]", "", -1)
87+
if value == "" {
88+
continue
89+
}
90+
//按照,拆分value
91+
ranges := strings.Split(value, ",")
92+
if len(ranges) == 2 {
93+
q = q.Where(key+" BETWEEN ? AND ?", ranges[0], ranges[1])
94+
} else {
95+
continue
96+
}
97+
}
98+
}
99+
100+
return q
101+
}(query)
102+
} else {
103+
h.Query = func(q orm.Query) orm.Query {
104+
//处理日期时间
105+
// 先处理过滤条件
106+
for key, val := range conditionMap {
107+
q = q.Where(key+" = ?", val).(orm.Query)
108+
}
109+
for key, value := range params {
110+
//如果key包含了[]符号
111+
112+
if strings.Contains(key, "[]") || value == "" || key == "pageSize" || key == "total" || key == "currentPage" || key == "sort" || key == "order" {
85113
continue
114+
} else {
115+
q = q.Where(gorm.Expr(key+" LIKE ?", "%"+value+"%"))
116+
}
117+
//则表示是日期时间范围
118+
/**
119+
created_at[]: 2024-10-21 00:00:00
120+
created_at[]: 2024-10-21 23:59:59
121+
*/
122+
if strings.Contains(key, "[]") {
123+
key = strings.Replace(key, "[]", "", -1)
124+
if value == "" {
125+
continue
126+
}
127+
//按照,拆分value
128+
ranges := strings.Split(value, ",")
129+
if len(ranges) == 2 {
130+
q = q.Where(key+" BETWEEN ? AND ?", ranges[0], ranges[1])
131+
} else {
132+
continue
133+
}
86134
}
87135
}
88-
}
89136

90-
return q
91-
}(query)
137+
return q
138+
}(h.Query)
139+
}
140+
92141
return h
93142
}
94143

0 commit comments

Comments
 (0)