mirror of
https://github.com/bufanyun/hotgo.git
synced 2025-08-26 16:46:14 +08:00
优化默认角色数据,增加表格多字段排序例子
This commit is contained in:
41
server/internal/library/hgorm/handler/sorter.go
Normal file
41
server/internal/library/hgorm/handler/sorter.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"github.com/gogf/gf/v2/database/gdb"
|
||||
"hotgo/internal/model/input/form"
|
||||
)
|
||||
|
||||
// ISorter 排序器接口,实现该接口即可使用Handler匹配排序,支持多字段排序
|
||||
type ISorter interface {
|
||||
GetSorters() []form.Sorter
|
||||
}
|
||||
|
||||
// Sorter 排序器
|
||||
func Sorter(in ISorter) func(m *gdb.Model) *gdb.Model {
|
||||
return func(m *gdb.Model) *gdb.Model {
|
||||
hasSort := false
|
||||
sorters := in.GetSorters()
|
||||
for _, sorter := range sorters {
|
||||
if len(sorter.ColumnKey) == 0 || !sorter.Sorter {
|
||||
continue
|
||||
}
|
||||
|
||||
switch sorter.Order {
|
||||
case "descend":
|
||||
hasSort = true
|
||||
m = m.OrderDesc(sorter.ColumnKey)
|
||||
case "ascend":
|
||||
hasSort = true
|
||||
m = m.OrderAsc(sorter.ColumnKey)
|
||||
default:
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
// 不存在排序条件
|
||||
if !hasSort {
|
||||
// ...
|
||||
}
|
||||
return m
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user