package common import ( "database/sql/driver" "encoding/json" "fmt" "gorm.io/gorm" ) // 分页响应 type PageResult struct { List interface{} `json:"list"` Total int64 `json:"total"` Page int `json:"page"` PageSize int `json:"pageSize"` } // PageInfo Paging common input parameter structure type PageInfo struct { Page int `json:"page" form:"page"` // 页码 PageSize int `json:"pageSize" form:"pageSize"` // 每页大小 Keyword string `json:"keyword" form:"keyword"` // 关键字 } func (r *PageInfo) Paginate() func(db *gorm.DB) *gorm.DB { return func(db *gorm.DB) *gorm.DB { if r.Page <= 0 { r.Page = 1 } switch { case r.PageSize > 100: r.PageSize = 100 case r.PageSize <= 0: r.PageSize = 10 } offset := (r.Page - 1) * r.PageSize return db.Offset(offset).Limit(r.PageSize) } } // GetById Find by id structure type GetById struct { ID int `json:"id" form:"id"` // 主键ID } func (r *GetById) Uint() uint { return uint(r.ID) } type IdsReq struct { Ids []int `json:"ids" form:"ids"` } // GetAuthorityId Get role by id structure type GetAuthorityId struct { AuthorityId uint `json:"authorityId" form:"authorityId"` // 角色ID } type Empty struct{} type ClearDB struct { TableName string CompareField string Interval string } type JSONMap map[string]interface{} func (m JSONMap) Value() (driver.Value, error) { if m == nil { return nil, nil } return json.Marshal(m) } func (m *JSONMap) Scan(value interface{}) error { if value == nil { *m = make(map[string]interface{}) return nil } var err error switch value.(type) { case []byte: err = json.Unmarshal(value.([]byte), m) case string: err = json.Unmarshal([]byte(value.(string)), m) default: err = fmt.Errorf("basetypes.JSONMap.Scan: invalid value type") } if err != nil { return err } return nil }