From 438a55cc3e6caaf141ccbefa7a36c40eaaff40a2 Mon Sep 17 00:00:00 2001 From: luorijun Date: Sat, 12 Apr 2025 11:48:39 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E5=A4=84=E7=90=86=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E5=8F=82=E6=95=B0=E7=AE=80=E5=8C=96=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/common/types.go | 51 ++++++++++++++++++++++++++++++++++----- web/handlers/bill.go | 23 ++++++------------ web/handlers/resource.go | 23 ++++++------------ web/handlers/whitelist.go | 23 ++++++------------ 4 files changed, 66 insertions(+), 54 deletions(-) diff --git a/web/common/types.go b/web/common/types.go index 6bbdfda..d440e56 100644 --- a/web/common/types.go +++ b/web/common/types.go @@ -6,15 +6,52 @@ import ( "time" ) -// ErrResp 定义通用错误响应格式 -type ErrResp struct { - Message string `json:"message"` - Error bool `json:"error"` +// region req + +type PageReqInter interface { + GetPage() int + GetSize() int + GetOffset() int + GetLimit() int } type PageReq struct { - Page int `json:"page"` - Size int `json:"size"` + RawPage int `json:"page"` + RawSize int `json:"size"` +} + +func (p *PageReq) GetPage() int { + if p.RawPage < 1 { + return 1 + } + return p.RawPage +} + +func (p *PageReq) GetSize() int { + if p.RawSize < 1 { + return 10 + } + if p.RawSize > 100 { + return 100 + } + return p.RawSize +} + +func (p *PageReq) GetOffset() int { + return (p.GetPage() - 1) * p.GetSize() +} + +func (p *PageReq) GetLimit() int { + return p.GetSize() +} + +// endregion + +// region resp + +type ErrResp struct { + Message string `json:"message"` + Error bool `json:"error"` } type PageResp struct { @@ -24,6 +61,8 @@ type PageResp struct { List any `json:"list"` } +// endregion + // region LocalDateTime type LocalDateTime time.Time diff --git a/web/handlers/bill.go b/web/handlers/bill.go index 1dff142..50ee62d 100644 --- a/web/handlers/bill.go +++ b/web/handlers/bill.go @@ -13,8 +13,7 @@ import ( // region ListBill type ListBillReq struct { - Page int `json:"page" validate:"required"` - Size int `json:"size" validate:"required"` + common.PageReq BillNo *string `json:"bill_no"` Type *int `json:"type"` Status *int `json:"status"` @@ -35,14 +34,6 @@ func ListBill(c *fiber.Ctx) error { if err := c.BodyParser(req); err != nil { return err } - if req.Page < 1 { - req.Page = 1 - } - if req.Size < 1 { - req.Size = 10 - } - var offset = (req.Page - 1) * req.Size - var limit = req.Size // 查询账单列表 do := q.Bill. @@ -68,16 +59,16 @@ func ListBill(c *fiber.Ctx) error { Preload(q.Bill.Resource, q.Bill.Trade, q.Bill.Refund). Preload(q.Bill.Resource.Pss). Order(q.Bill.CreatedAt.Desc()). - Offset(offset). - Limit(limit). + Offset(req.GetOffset()). + Limit(req.GetLimit()). Find() if err != nil { return err } var total int64 - if len(bills) < limit { - total = int64(len(bills) + offset) + if len(bills) < req.GetLimit() { + total = int64(len(bills) + req.GetOffset()) } else { total, err = do.Count() if err != nil { @@ -87,8 +78,8 @@ func ListBill(c *fiber.Ctx) error { return c.JSON(common.PageResp{ Total: int(total), - Page: req.Page, - Size: req.Size, + Page: req.GetPage(), + Size: req.GetSize(), List: bills, }) } diff --git a/web/handlers/resource.go b/web/handlers/resource.go index 8d0ab5f..b4e4fb3 100644 --- a/web/handlers/resource.go +++ b/web/handlers/resource.go @@ -15,8 +15,7 @@ import ( // region ListResourcePss type ListResourcePssReq struct { - Page int `json:"page" validate:"required"` - Size int `json:"size" validate:"required"` + common.PageReq ResourceNo *string `json:"resource_no"` Active *bool `json:"active"` Type *int `json:"type"` @@ -39,14 +38,6 @@ func ListResourcePss(c *fiber.Ctx) error { if err := c.BodyParser(req); err != nil { return err } - if req.Page < 1 { - req.Page = 1 - } - if req.Size < 1 { - req.Size = 10 - } - var offset = (req.Page - 1) * req.Size - var limit = req.Size // 查询资源列表 do := q.Resource. @@ -77,16 +68,16 @@ func ListResourcePss(c *fiber.Ctx) error { var resource []*m.Resource err = do.Debug(). Order(q.ResourcePss.As(q.Resource.Pss.Name()).CreatedAt.Desc()). - Offset(offset). - Limit(limit). + Offset(req.GetOffset()). + Limit(req.GetLimit()). Scan(&resource) if err != nil { return err } var total int64 - if len(resource) < limit { - total = int64(len(resource) + offset) + if len(resource) < req.GetLimit() { + total = int64(len(resource) + req.GetOffset()) } else { total, err = do.Count() if err != nil { @@ -96,8 +87,8 @@ func ListResourcePss(c *fiber.Ctx) error { return c.JSON(common.PageResp{ Total: int(total), - Page: req.Page, - Size: req.Size, + Page: req.GetPage(), + Size: req.GetSize(), List: resource, }) } diff --git a/web/handlers/whitelist.go b/web/handlers/whitelist.go index 53c10ec..bf628af 100644 --- a/web/handlers/whitelist.go +++ b/web/handlers/whitelist.go @@ -12,8 +12,7 @@ import ( ) type ListWhitelistReq struct { - Page int `json:"page" validate:"required"` - Size int `json:"size" validate:"required"` + common.PageReq } type ListWhitelistResp struct { @@ -36,22 +35,14 @@ func ListWhitelist(c *fiber.Ctx) error { if err := c.BodyParser(req); err != nil { return err } - if req.Page < 1 { - req.Page = 1 - } - if req.Size < 1 { - req.Size = 10 - } - var offset = (req.Page - 1) * req.Size - var limit = req.Size // 获取用户信息 do := q.Whitelist. Where(q.Whitelist.UserID.Eq(authContext.Payload.Id)) list, err := do. - Offset(offset). - Limit(limit). + Offset(req.GetOffset()). + Limit(req.GetLimit()). Order(q.Whitelist.CreatedAt.Desc()). Find() if err != nil { @@ -59,8 +50,8 @@ func ListWhitelist(c *fiber.Ctx) error { } var total int64 - if len(list) < limit { - total = int64(len(list) + offset) + if len(list) < req.GetLimit() { + total = int64(len(list) + req.GetOffset()) } else { total, err = do.Count() if err != nil { @@ -72,8 +63,8 @@ func ListWhitelist(c *fiber.Ctx) error { return c.JSON(common.PageResp{ Total: int(total), List: list, - Page: req.Page, - Size: req.Size, + Page: req.GetPage(), + Size: req.GetSize(), }) }