110 lines
3.2 KiB
Go
110 lines
3.2 KiB
Go
/*******************************************************************************
|
||
* Copyright 2017 Dell Inc.
|
||
* Copyright (c) 2019 Intel Corporation
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
||
* in compliance with the License. You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software distributed under the License
|
||
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
||
* or implied. See the License for the specific language governing permissions and limitations under
|
||
* the License.
|
||
*******************************************************************************/
|
||
package dtos
|
||
|
||
import "strings"
|
||
|
||
type PageRequest struct {
|
||
NameLike string `json:"nameLike" form:"nameLike"`
|
||
Page int `json:"page" form:"page"`
|
||
PageSize int `json:"pageSize" form:"pageSize"`
|
||
}
|
||
|
||
//func (p *PageRequest) ToRpc() *common.PageRequest {
|
||
// return &common.PageRequest{
|
||
// NameLike: p.NameLike,
|
||
// Page: int64(p.Page),
|
||
// PageSize: int64(p.PageSize),
|
||
// }
|
||
//}
|
||
|
||
|
||
type BaseSearchConditionQuery struct {
|
||
Page int `schema:"page,omitempty" form:"page"`
|
||
PageSize int `schema:"pageSize,omitempty" form:"pageSize" json:"pageSize"`
|
||
Id string `schema:"id,omitempty" form:"id"`
|
||
Ids string `schema:"ids,omitempty" form:"ids"`
|
||
LikeId string `schema:"likeId,omitempty" form:"likeId"`
|
||
Name string `schema:"name,omitempty" form:"name"`
|
||
NameLike string `schema:"nameLike,omitempty" form:"nameLike"`
|
||
IsAll bool `schema:"isAll,omitempty" form:"isAll"`
|
||
OrderBy string `schema:"orderBy,omitempty" form:"orderBy"`
|
||
}
|
||
|
||
func (req BaseSearchConditionQuery) GetPage() (int, int) {
|
||
var (
|
||
offset = (req.Page - 1) * req.PageSize
|
||
limit = req.PageSize
|
||
)
|
||
if req.Page == 0 && req.PageSize == 0 {
|
||
offset = 0
|
||
limit = -1
|
||
}
|
||
if req.IsAll {
|
||
offset = 0
|
||
limit = -1
|
||
}
|
||
return offset, limit
|
||
}
|
||
|
||
|
||
func ApiParamsStringToArray(str string) []string {
|
||
return strings.Split(str, ",")
|
||
}
|
||
|
||
/**
|
||
前端/后端请求查询的通用order by,查询key必须是models里存在的值
|
||
比如 通过models.Device.ProductName 排序, 那么key的值为 ProductName或则对应的数据库字段 product_name, 不能是 pn
|
||
*/
|
||
type ApiOrderBy struct {
|
||
Key string
|
||
IsDesc bool
|
||
}
|
||
|
||
func ApiParamsStringToOrderBy(str string) []ApiOrderBy {
|
||
orderBys := make([]ApiOrderBy, 0)
|
||
arr := strings.Split(str, ",")
|
||
if len(arr) <= 0 {
|
||
return nil
|
||
}
|
||
for _, v := range arr {
|
||
vArr := strings.Split(v, ":")
|
||
if len(vArr) <= 1 {
|
||
continue
|
||
}
|
||
switch vArr[1] {
|
||
case "desc":
|
||
orderBys = append(orderBys, ApiOrderBy{
|
||
Key: vArr[0],
|
||
IsDesc: true,
|
||
})
|
||
case "asc":
|
||
orderBys = append(orderBys, ApiOrderBy{
|
||
Key: vArr[0],
|
||
IsDesc: false,
|
||
})
|
||
default:
|
||
continue
|
||
}
|
||
}
|
||
return orderBys
|
||
}
|
||
|
||
|
||
func ApiParamsArrayToString(arr []string) string {
|
||
return strings.Join(arr, ",")
|
||
}
|
||
|