common.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package common
  2. import (
  3. "database/sql/driver"
  4. "encoding/json"
  5. "fmt"
  6. "gorm.io/gorm"
  7. )
  8. // 分页响应
  9. type PageResult struct {
  10. List interface{} `json:"list"`
  11. Total int64 `json:"total"`
  12. Page int `json:"page"`
  13. PageSize int `json:"pageSize"`
  14. }
  15. // PageInfo Paging common input parameter structure
  16. type PageInfo struct {
  17. Page int `json:"page" form:"page"` // 页码
  18. PageSize int `json:"pageSize" form:"pageSize"` // 每页大小
  19. Keyword string `json:"keyword" form:"keyword"` // 关键字
  20. }
  21. func (r *PageInfo) Paginate() func(db *gorm.DB) *gorm.DB {
  22. return func(db *gorm.DB) *gorm.DB {
  23. if r.Page <= 0 {
  24. r.Page = 1
  25. }
  26. switch {
  27. case r.PageSize > 100:
  28. r.PageSize = 100
  29. case r.PageSize <= 0:
  30. r.PageSize = 10
  31. }
  32. offset := (r.Page - 1) * r.PageSize
  33. return db.Offset(offset).Limit(r.PageSize)
  34. }
  35. }
  36. // GetById Find by id structure
  37. type GetById struct {
  38. ID int `json:"id" form:"id"` // 主键ID
  39. }
  40. func (r *GetById) Uint() uint {
  41. return uint(r.ID)
  42. }
  43. type IdsReq struct {
  44. Ids []int `json:"ids" form:"ids"`
  45. }
  46. // GetAuthorityId Get role by id structure
  47. type GetAuthorityId struct {
  48. AuthorityId uint `json:"authorityId" form:"authorityId"` // 角色ID
  49. }
  50. type Empty struct{}
  51. type ClearDB struct {
  52. TableName string
  53. CompareField string
  54. Interval string
  55. }
  56. type JSONMap map[string]interface{}
  57. func (m JSONMap) Value() (driver.Value, error) {
  58. if m == nil {
  59. return nil, nil
  60. }
  61. return json.Marshal(m)
  62. }
  63. func (m *JSONMap) Scan(value interface{}) error {
  64. if value == nil {
  65. *m = make(map[string]interface{})
  66. return nil
  67. }
  68. var err error
  69. switch value.(type) {
  70. case []byte:
  71. err = json.Unmarshal(value.([]byte), m)
  72. case string:
  73. err = json.Unmarshal([]byte(value.(string)), m)
  74. default:
  75. err = fmt.Errorf("basetypes.JSONMap.Scan: invalid value type")
  76. }
  77. if err != nil {
  78. return err
  79. }
  80. return nil
  81. }