feat:完善项目
This commit is contained in:
134
app/common/model/where.go
Normal file
134
app/common/model/where.go
Normal file
@ -0,0 +1,134 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// ModelWhere
|
||||
type ModelWhere struct {
|
||||
Condition string `json:"condition"` // 条件
|
||||
Value interface{} `json:"value"` // 内容
|
||||
}
|
||||
|
||||
// ModelOrder
|
||||
type ModelOrder struct {
|
||||
Field string `json:"field"` // 字段值
|
||||
Mode OrderMode `json:"mode"` // 排序模式
|
||||
}
|
||||
|
||||
// ModelWhereOrder
|
||||
type ModelWhereOrder struct {
|
||||
Where *ModelWhere
|
||||
Order *ModelOrder
|
||||
}
|
||||
|
||||
// OrderMode
|
||||
type OrderMode string
|
||||
|
||||
const (
|
||||
// OrderModeToAsc asc
|
||||
OrderModeToAsc = "asc"
|
||||
// OrderModeToDesc desc
|
||||
OrderModeToDesc = "desc"
|
||||
)
|
||||
|
||||
// NewWhere where
|
||||
func NewWhere(filed string, value interface{}) *ModelWhere {
|
||||
return &ModelWhere{
|
||||
Condition: filed + " = ?",
|
||||
Value: value,
|
||||
}
|
||||
}
|
||||
|
||||
// NewWhereLike like where
|
||||
func NewWhereLike(filed string, value interface{}) *ModelWhere {
|
||||
return &ModelWhere{
|
||||
Condition: filed + " LIKE ?",
|
||||
Value: "%" + fmt.Sprintf("%v", value) + "%",
|
||||
}
|
||||
}
|
||||
|
||||
func NewWhereIn(filed string, value interface{}) *ModelWhere {
|
||||
return &ModelWhere{
|
||||
Condition: filed + " IN ?",
|
||||
Value: value,
|
||||
}
|
||||
}
|
||||
|
||||
func NewWhereNotIn(filed string, value interface{}) *ModelWhere {
|
||||
return &ModelWhere{
|
||||
Condition: filed + " NOT IN ?",
|
||||
Value: value,
|
||||
}
|
||||
}
|
||||
|
||||
func NewWhereCondition(filed, condition string, value interface{}) *ModelWhere {
|
||||
return &ModelWhere{
|
||||
Condition: filed + " " + condition + " ?",
|
||||
Value: value,
|
||||
}
|
||||
}
|
||||
|
||||
func NewWhereValue(value interface{}) *ModelWhere {
|
||||
return &ModelWhere{
|
||||
Condition: "",
|
||||
Value: value,
|
||||
}
|
||||
}
|
||||
|
||||
func NewWhereFindInSet(filed string, value interface{}) *ModelWhere {
|
||||
return &ModelWhere{
|
||||
Condition: fmt.Sprintf("FIND_IN_SET(?, %s)", filed),
|
||||
Value: value,
|
||||
}
|
||||
}
|
||||
|
||||
func NewWhereSectionAt(filed string, value []string) []*ModelWhere {
|
||||
return []*ModelWhere{
|
||||
&ModelWhere{
|
||||
Condition: filed + " >= ?",
|
||||
Value: value[0],
|
||||
},
|
||||
&ModelWhere{
|
||||
Condition: filed + " <= ?",
|
||||
Value: value[1],
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func NewWhereSectionTime(filed string, value []string) []*ModelWhere {
|
||||
return []*ModelWhere{
|
||||
&ModelWhere{
|
||||
Condition: filed + " >= ?",
|
||||
Value: value[0] + " 00:00:00",
|
||||
},
|
||||
&ModelWhere{
|
||||
Condition: filed + " <= ?",
|
||||
Value: value[1] + " 23:59:59",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// NewOrder order Asc Or Desc
|
||||
func NewOrder(filed string, order OrderMode) *ModelOrder {
|
||||
return &ModelOrder{Field: filed, Mode: order}
|
||||
}
|
||||
|
||||
// NewOrderSplit param to split for order Asc Or Desc
|
||||
func NewOrderSplit(param string) *ModelOrder {
|
||||
params := strings.Split(param, "-")
|
||||
|
||||
if len(params) <= 1 {
|
||||
return nil
|
||||
}
|
||||
order := new(ModelOrder)
|
||||
|
||||
order.Field = params[0]
|
||||
order.Mode = OrderModeToAsc
|
||||
|
||||
if params[1] == OrderModeToDesc {
|
||||
order.Mode = OrderModeToDesc
|
||||
}
|
||||
return order
|
||||
}
|
Reference in New Issue
Block a user