| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package tabulatorreq
-
- import (
- "git.x2erp.com/qdy/go-base/model/request/queryreq"
- )
-
- // TabulatorSorter Tabulator排序器格式
- type TabulatorSorter struct {
- Field string `json:"field"` // 排序字段
- Dir string `json:"dir"` // 排序方向: asc/desc
- }
-
- // TabulatorFilter Tabulator筛选器格式
- type TabulatorFilter struct {
- Field string `json:"field"` // 筛选字段
- Type string `json:"type"` // 筛选类型: =, !=, like, >, <, in等
- Value interface{} `json:"value"` // 筛选值
- }
-
- // TabulatorRequest Tabulator原生请求格式
- type TabulatorRequest struct {
- Page int `json:"page"` // 当前页码(从1开始)
- Size int `json:"size"` // 每页大小
- Sort []TabulatorSorter `json:"sort,omitempty"` // 排序器数组(单数,匹配前端)
- Filter []TabulatorFilter `json:"filter,omitempty"` // 筛选器数组(单数,匹配前端)
- }
-
- // Validate 验证请求参数
- func (r *TabulatorRequest) Validate() {
- if r.Page < 1 {
- r.Page = 1
- }
- if r.Size <= 0 {
- r.Size = 10
- } else if r.Size > 1000 {
- r.Size = 1000
- }
- }
-
- // ToQueryRequest 转换为通用QueryRequest
- func (r *TabulatorRequest) ToQueryRequest(fieldMapper func(string) string) *queryreq.QueryRequest {
- req := &queryreq.QueryRequest{
- Page: r.Page - 1, // Tabulator从1开始,QueryRequest从0开始
- PageSize: r.Size,
- }
-
- // 转换排序器
- for _, sorter := range r.Sort {
- field := fieldMapper(sorter.Field)
- if field == "" {
- continue // 无效字段,跳过
- }
- req.Sort = append(req.Sort, queryreq.SortParam{
- Field: field,
- Order: sorter.Dir,
- })
- }
-
- // 转换筛选器
- for _, filter := range r.Filter {
- field := fieldMapper(filter.Field)
- if field == "" {
- continue // 无效字段,跳过
- }
- req.Filter = append(req.Filter, queryreq.FilterParam{
- Field: field,
- Operator: mapOperator(filter.Type),
- Value: filter.Value,
- })
- }
-
- return req
- }
-
- // mapOperator 映射Tabulator操作符到QueryRequest操作符
- func mapOperator(tabulatorOp string) queryreq.Operator {
- switch tabulatorOp {
- case "=", "==":
- return queryreq.OpEquals
- case "!=", "<>":
- return queryreq.OpNotEquals
- case "like", "contains":
- return queryreq.OpLike
- case "in":
- return queryreq.OpIn
- case ">":
- return queryreq.OpGreaterThan
- case "<":
- return queryreq.OpLessThan
- case ">=":
- return queryreq.OpGreaterOrEq
- case "<=":
- return queryreq.OpLessOrEq
- default:
- return queryreq.OpEquals
- }
- }
|