/******************************************************************************* * 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, ",") }