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 资产套餐历史响应