Skip to content

管理员礼品卡 API

管理员礼品卡管理路由,提供礼品卡的创建(含批量)、查询、统计和作废功能。

基础路径

/admin/gift-cards

认证方式

使用 combinedAuth + adminAudit 中间件。仅支持 JWT Bearer Token 认证,且需要 site:admin 权限。

Authorization: Bearer <jwt_token>

端点列表

GET /admin/gift-cards

获取礼品卡列表(含创建者和兑换者信息)。

请求参数(Query)

参数类型必填默认值说明
pagenumber1页码
pageSizenumber20每页数量
statusstring状态筛选(如 activeredeemedvoidedexpired
batchIdstring按批次 ID 筛选
sortBystringcreated_at排序字段:created_at / credits_milli / redeemed_at
sortOrderstringdesc排序方向:asc / desc

响应格式

json
{
  "success": true,
  "items": [
    {
      "id": "uuid",
      "code": "GIFT-XXXX-XXXX",
      "credits_milli": 10000000,
      "credits": 10000,
      "status": "active",
      "batch_id": "uuid",
      "owner_user_id": "uuid",
      "redeemer_user_id": null,
      "redeemed_at": null,
      "expires_at": "2026-12-31T23:59:59Z",
      "note": "测试礼品卡",
      "created_at": "2026-03-07T00:00:00Z",
      "owner": {
        "user_id": "uuid",
        "email": "admin@example.com",
        "display_name": "管理员"
      },
      "redeemer": null
    }
  ],
  "total": 100,
  "page": 1,
  "pageSize": 20
}

响应字段说明

字段类型说明
items[].credits_millinumber积分数(毫积分,数据库存储格式)
items[].creditsnumber积分数(用户可见单位,= credits_milli / 1000)
items[].statusstring状态:active / redeemed / voided / expired
items[].ownerobject创建者信息
items[].redeemerobject | null兑换者信息

错误码

HTTP 状态码说明
403仅支持 JWT 认证 / 缺少 site:admin 权限
500获取礼品卡列表失败

GET /admin/gift-cards/stats

获取礼品卡统计数据。

请求参数

无。

响应格式

json
{
  "success": true,
  "stats": {
    "total": 500,
    "active": 300,
    "redeemed": 150,
    "voided": 30,
    "expired": 20,
    "total_credits_milli": 5000000000,
    "redeemed_credits_milli": 1500000000
  }
}

错误码

HTTP 状态码说明
403仅支持 JWT 认证 / 缺少 site:admin 权限
500获取统计失败

GET /admin/gift-cards/:id

获取礼品卡详情(含创建者和兑换者信息)。

请求参数

参数位置类型必填说明
idPathstring礼品卡 ID

响应格式

json
{
  "success": true,
  "giftCard": {
    "id": "uuid",
    "code": "GIFT-XXXX-XXXX",
    "credits_milli": 10000000,
    "credits": 10000,
    "status": "active",
    "batch_id": "uuid",
    "owner_user_id": "uuid",
    "redeemer_user_id": null,
    "redeemed_at": null,
    "expires_at": "2026-12-31T23:59:59Z",
    "note": "备注",
    "created_at": "2026-03-07T00:00:00Z",
    "owner": {
      "user_id": "uuid",
      "email": "admin@example.com",
      "display_name": "管理员"
    },
    "redeemer": null
  }
}

错误码

HTTP 状态码说明
403仅支持 JWT 认证 / 缺少 site:admin 权限
404礼品卡不存在
500获取礼品卡详情失败

POST /admin/gift-cards

创建礼品卡(支持批量创建)。

请求参数(Body)

字段类型必填默认值说明
creditsnumber-积分数量(用户可见单位,必须大于 0)
quantitynumber1创建数量(1-100)
expiresAtstring过期时间(ISO 格式)
notestring备注

响应格式

HTTP 201:

json
{
  "success": true,
  "giftCards": [
    {
      "id": "uuid",
      "code": "GIFT-XXXX-XXXX",
      "credits_milli": 10000000,
      "credits": 10000,
      "status": "active",
      "batch_id": "uuid",
      "owner_user_id": "uuid",
      "expires_at": "2026-12-31T23:59:59Z",
      "note": "备注",
      "created_at": "2026-03-07T00:00:00Z"
    }
  ],
  "count": 1
}

错误码

HTTP 状态码说明
400积分数量必须大于 0 / 数量必须在 1-100 之间
401未认证
403仅支持 JWT 认证 / 缺少 site:admin 权限
500创建礼品卡失败

POST /admin/gift-cards/:id/void

作废礼品卡。仅可作废状态为 active 的礼品卡。

请求参数

参数位置类型必填说明
idPathstring礼品卡 ID

响应格式

json
{
  "success": true
}

错误码

HTTP 状态码说明
400只能作废可用状态的礼品卡
403仅支持 JWT 认证 / 缺少 site:admin 权限
404礼品卡不存在
500作废失败

源码

  • 路由文件apps/backend/src/routes/admin/gift-cards.ts
  • 礼品卡服务apps/backend/src/services/gift-card.service.ts

AI Workflow Editor