From 95b2334658f5fa5d8c7d6f78d7b2ce8529ea8c27 Mon Sep 17 00:00:00 2001 From: huang Date: Sat, 21 Mar 2026 11:01:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B5=84=E4=BA=A7=E5=A5=97=E9=A4=90?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=8E=A5=E5=8F=A3=E6=96=B0=E5=A2=9E=20packag?= =?UTF-8?q?e=5Ftype=20=E5=92=8C=20status=20=E7=AD=9B=E9=80=89=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GET /api/c/v1/asset/package-history 支持可选参数: - package_type: formal(正式套餐) / addon(加油包) - status: 0(待生效) / 1(生效中) / 2(已用完) / 3(已过期) / 4(已失效) 不传则返回全部,保持向后兼容。 --- internal/handler/app/client_asset.go | 7 +++++++ internal/model/dto/client_asset_dto.go | 8 +++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/internal/handler/app/client_asset.go b/internal/handler/app/client_asset.go index 62a7600..798a015 100644 --- a/internal/handler/app/client_asset.go +++ b/internal/handler/app/client_asset.go @@ -270,6 +270,13 @@ func (h *ClientAssetHandler) GetPackageHistory(c *fiber.Ctx) error { } else { query = query.Where("device_id = ?", resolved.Asset.AssetID) } + if req.Status != nil { + query = query.Where("status = ?", *req.Status) + } + if req.PackageType != nil { + query = query.Where("package_id IN (?)", + h.db.Model(&model.Package{}).Select("id").Where("package_type = ?", *req.PackageType)) + } var total int64 if err := query.Count(&total).Error; err != nil { diff --git a/internal/model/dto/client_asset_dto.go b/internal/model/dto/client_asset_dto.go index 2faf067..a663bf6 100644 --- a/internal/model/dto/client_asset_dto.go +++ b/internal/model/dto/client_asset_dto.go @@ -56,9 +56,11 @@ type AssetPackageListResponse struct { // AssetPackageHistoryRequest B3 资产套餐历史请求 type AssetPackageHistoryRequest struct { - Identifier string `json:"identifier" query:"identifier" validate:"required,min=1,max=50" required:"true" minLength:"1" maxLength:"50" description:"资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN)"` - Page int `json:"page" query:"page" validate:"required,min=1" required:"true" minimum:"1" description:"页码"` - PageSize int `json:"page_size" query:"page_size" validate:"required,min=1,max=100" required:"true" minimum:"1" maximum:"100" description:"每页数量"` + Identifier string `json:"identifier" query:"identifier" validate:"required,min=1,max=50" required:"true" minLength:"1" maxLength:"50" description:"资产标识符(SN/IMEI/虚拟号/ICCID/MSISDN)"` + PackageType *string `json:"package_type" query:"package_type" validate:"omitempty,oneof=formal addon" description:"套餐类型 (formal:正式套餐, addon:加油包)"` + Status *int `json:"status" query:"status" validate:"omitempty,min=0,max=4" minimum:"0" maximum:"4" description:"套餐状态 (0:待生效, 1:生效中, 2:已用完, 3:已过期, 4:已失效)"` + Page int `json:"page" query:"page" validate:"required,min=1" required:"true" minimum:"1" description:"页码"` + PageSize int `json:"page_size" query:"page_size" validate:"required,min=1,max=100" required:"true" minimum:"1" maximum:"100" description:"每页数量"` } // AssetPackageHistoryResponse B3 资产套餐历史响应