123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- package base
- import (
- "fmt"
- "strings"
- )
- type IPage interface {
- GetTotal() int64
- SetTotal(int64)
- GetCurrent() int64
- SetCurrent(int64)
- GetPageSize() int64
- SetPageSize(int64)
- AddOrderItem(OrderItem)
- AddOrderItems([]OrderItem)
- GetOrderItemsString() string
- Offset() int64
- GetPages() int64
- }
- type OrderItem struct {
- column string
- asc bool
- }
- type BaseData struct {
- Page *Page `json:"page"`
- List interface{} `json:"list"`
- }
- type Page struct {
- Total int64 `json:"total"`
- Pages int64 `json:"pages"`
- PageSize int64 `json:"page_size"`
- Current int64 `json:"current"`
- orders []OrderItem `json:"orders"`
- }
- type PageReq struct {
- PageSize int64 `json:"page_size" form:"page_size,default=20"`
- Current int64 `json:"current" form:"current,default=1"`
- }
- func (b *BaseData) GetList() interface{} {
- return b.List
- }
- func (b *BaseData) SetList(list interface{}) {
- b.List = list
- }
- func (b *BaseData) GetPage() *Page {
- return b.Page
- }
- func (b *BaseData) SetPage(page *Page) {
- b.Page = page
- }
- func (page *Page) GetTotal() int64 {
- return page.Total
- }
- func (page *Page) SetTotal(total int64) {
- page.Total = total
- page.SetPages()
- }
- func (page *Page) GetCurrent() int64 {
- return page.Current
- }
- func (page *Page) SetCurrent(current int64) {
- page.Current = current
- }
- func (page *Page) GetPageSize() int64 {
- return page.PageSize
- }
- func (page *Page) SetPageSize(size int64) {
- page.PageSize = size
- }
- func (page *Page) AddOrderItem(orderItem OrderItem) {
- page.orders = append(page.orders, orderItem)
- }
- func (page *Page) AddOrderItems(orderItems []OrderItem) {
- page.orders = append(page.orders, orderItems...)
- }
- func (page *Page) GetOrderItemsString() string {
- arr := make([]string, 0)
- var order string
- for _, val := range page.orders {
- if val.asc {
- order = ""
- } else {
- order = "desc"
- }
- arr = append(arr, fmt.Sprintf("%s %s", val.column, order))
- }
- return strings.Join(arr, ",")
- }
- func (page *Page) Offset() int64 {
- if page.GetCurrent() > 0 {
- return (page.GetCurrent() - 1) * page.GetPageSize()
- } else {
- return 0
- }
- }
- func (page *Page) GetPages() int64 {
- if page.GetPageSize() == 0 {
- return 0
- }
- pages := page.GetTotal() / page.GetPageSize()
- if page.GetTotal()%page.PageSize != 0 {
- pages++
- }
- return pages
- }
- func (page *Page) SetPages() {
- if page.GetPageSize() == 0 {
- page.Pages = 0
- } else {
- pages := page.GetTotal() / page.GetPageSize()
- if page.GetTotal()%page.PageSize != 0 {
- pages++
- }
- page.Pages = pages
- }
- }
- func BuildAsc(column string) OrderItem {
- return OrderItem{column: column, asc: true}
- }
- func BuildDesc(column string) OrderItem {
- return OrderItem{column: column, asc: false}
- }
- func BuildAscs(columns ...string) []OrderItem {
- items := make([]OrderItem, 0)
- for _, val := range columns {
- items = append(items, BuildAsc(val))
- }
- return items
- }
- func BuildDescs(columns ...string) []OrderItem {
- items := make([]OrderItem, 0)
- for _, val := range columns {
- items = append(items, BuildDesc(val))
- }
- return items
- }
- func NewPage(pageSize, current int64, orderItems ...OrderItem) *Page {
- return &Page{PageSize: pageSize, Current: current, orders: orderItems}
- }
|