代码拉取完成,页面将自动刷新
package wrapper
import (
"gitee.com/h79/goutils/common"
"strings"
)
// Range 时间范围
type Range[T common.IntegerType] struct {
Column string `form:"col" json:"col"`
Operator string `form:"operator" json:"operator"`
Min T `form:"begin" json:"begin"`
Max T `form:"end" json:"end"`
}
func (rg *Range[T]) Adjust() {
if rg.Min > rg.Max {
rg.Min, rg.Max = rg.Max, rg.Min
}
}
func (rg *Range[T]) RangeLegal(legal T) {
rg.Adjust()
if rg.Max-rg.Min <= legal {
return
}
rg.Min = rg.Max - legal
if rg.Min < 0 {
rg.Min = 0
}
}
func (rg *Range[T]) HasValid() bool {
// 时间有效,操作符长度不能太长(wrapper.Gt,wrapper.Between...),太长就是无效,在进行ToUpper时,造成时间消耗
return len(rg.Operator) > 0 && len(rg.Operator) < 8 && len(rg.Column) > 0
}
func (rg *Range[T]) Cond(cond *Condition) {
if !rg.HasValid() {
return
}
operator := strings.ToUpper(rg.Operator)
if operator == ">" {
cond.Gt(rg.Column, rg.Min)
} else if operator == ">=" {
cond.GtEq(rg.Column, rg.Min)
} else if operator == "<" {
cond.Lt(rg.Column, rg.Max)
} else if operator == "<=" {
cond.LtEq(rg.Column, rg.Max)
} else if operator == "BETWEEN" {
cond.Between(rg.Column, rg.Min, rg.Max)
}
}
// RangeV2 时间范围
type RangeV2[T common.IntegerType] struct {
Column string `form:"col" json:"col"`
Op string `form:"op" json:"op"`
Min T `form:"start" json:"start"`
Max T `form:"end" json:"end"`
}
func (rg *RangeV2[T]) HasValid() bool {
// 时间有效,操作符长度不能太长,太长就是无效,在进行ToUpper时,造成时间消耗
return len(rg.Op) > 0 && len(rg.Op) < 5 && len(rg.Column) > 0
}
func (rg *RangeV2[T]) Cond(cond *Condition) {
if !rg.HasValid() {
return
}
operator := strings.ToUpper(rg.Op)
if operator == "GT" {
cond.Gt(rg.Column, rg.Min)
} else if operator == "GTE" {
cond.GtEq(rg.Column, rg.Min)
} else if operator == "LT" {
cond.Lt(rg.Column, rg.Max)
} else if operator == "LTE" {
cond.LtEq(rg.Column, rg.Max)
} else if operator == "BET" {
cond.Between(rg.Column, rg.Min, rg.Max)
}
}
func (rg *RangeV2[T]) Adjust() {
if rg.Max > rg.Min {
rg.Min, rg.Max = rg.Max, rg.Min
}
}
func (rg *RangeV2[T]) RangeLegal(legal T) {
rg.Adjust()
if rg.Max-rg.Min <= legal {
return
}
rg.Min = rg.Max - legal
if rg.Min < 0 {
rg.Min = 0
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。