You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
1.7 KiB
91 lines
1.7 KiB
package http |
|
|
|
import ( |
|
"fmt" |
|
"strings" |
|
"time" |
|
|
|
"go-common/app/service/main/antispam/model" |
|
"go-common/app/service/main/antispam/service" |
|
"go-common/app/service/main/antispam/util" |
|
) |
|
|
|
// Condition . |
|
type Condition struct { |
|
*util.Pagination |
|
|
|
Tag string |
|
Tags []string |
|
|
|
Content string |
|
Contents []string |
|
|
|
Area string |
|
Search string |
|
State string |
|
HitCounts string |
|
|
|
Order, OrderBy string |
|
LimitType, LimitScope string |
|
StartTime, EndTime *time.Time |
|
} |
|
|
|
// ToServiceCond . |
|
func ToServiceCond(cond *Condition) *service.Condition { |
|
if cond == nil { |
|
return nil |
|
} |
|
res := &service.Condition{ |
|
Pagination: cond.Pagination, |
|
|
|
Area: cond.Area, |
|
Order: cond.Order, |
|
OrderBy: cond.OrderBy, |
|
|
|
Tags: cond.Tags, |
|
Contents: cond.Contents, |
|
|
|
Search: cond.Search, |
|
State: cond.State, |
|
HitCounts: cond.HitCounts, |
|
LimitType: cond.LimitType, |
|
LimitScope: cond.LimitScope, |
|
|
|
StartTime: cond.StartTime, |
|
EndTime: cond.EndTime, |
|
} |
|
// TODO: how to handler it graceful ? |
|
if cond.Tag != "" { |
|
res.Tags = []string{cond.Tag} |
|
} |
|
if cond.Content != "" { |
|
res.Contents = []string{cond.Content} |
|
} |
|
// history reasons |
|
if res.OrderBy == "show_up_counts" { |
|
res.OrderBy = "hit_counts" |
|
} |
|
return res |
|
} |
|
|
|
// Valid . |
|
func (c *Condition) Valid() error { |
|
if c.Pagination != nil { |
|
if c.CurPage == 0 { |
|
c.CurPage = 1 |
|
} |
|
if c.PerPage == 0 { |
|
c.PerPage = 20 |
|
} |
|
} |
|
c.Search, c.Order = strings.TrimSpace(c.Search), strings.TrimSpace(c.Order) |
|
if c.Order == "" { |
|
c.Order = model.OrderASC |
|
} else { |
|
c.Order = strings.ToUpper(c.Order) |
|
} |
|
if c.Order != model.OrderASC && c.Order != model.OrderDESC { |
|
return fmt.Errorf("Order by should be 'ASC' or 'DESC' but got(%s)", c.Order) |
|
} |
|
return nil |
|
}
|
|
|