Files
quyun-v2/backend/tests/tenant.http
Rogee 3249e405ac feat: add balance and ledger endpoints for tenant
- Implemented MyBalance and MyLedgerPage methods in the ledger service to retrieve current user balance and transaction history for a specified tenant.
- Added corresponding test cases for MyBalance and MyLedgerPage methods in the ledger test suite.
- Created DTOs for balance response and ledger items to structure the response data.
- Updated Swagger documentation to include new endpoints for retrieving tenant balance and ledgers.
- Added HTTP tests for the new endpoints to ensure proper functionality.
2025-12-18 16:24:37 +08:00

144 lines
4.1 KiB
HTTP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@host = http://localhost:8080
@tenantCode = 2s
# NOTE:
# - tenant module requires JWT auth + tenant membership.
# - Get a token via `tests/super.http` (`/super/v1/auth/token`) then paste it below.
@token = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoyLCJpc3MiOiJ2MiIsImV4cCI6MTc2NjYzMzAyMSwibmJmIjoxNzY2MDI4MjExfQ.RjLVil6EnbPi4LMPyVBzR2vFaeXelypk5fKInsAzqc8
### Tenant - Me (resolved tenant/user/tenant_user)
GET {{ host }}/t/{{ tenantCode }}/v1/me
Content-Type: application/json
Authorization: Bearer {{ token }}
### Tenant - My balance
GET {{ host }}/t/{{ tenantCode }}/v1/me/balance
Content-Type: application/json
Authorization: Bearer {{ token }}
### Tenant - My ledgers (paged)
GET {{ host }}/t/{{ tenantCode }}/v1/me/ledgers?page=1&limit=20
Content-Type: application/json
Authorization: Bearer {{ token }}
### Tenant - Contents list (published)
GET {{ host }}/t/{{ tenantCode }}/v1/contents?page=1&limit=10
Content-Type: application/json
Authorization: Bearer {{ token }}
### Tenant - Content detail (visibility + access check)
@contentID = 1
GET {{ host }}/t/{{ tenantCode }}/v1/contents/{{ contentID }}
Content-Type: application/json
Authorization: Bearer {{ token }}
### Tenant - Preview assets (role=preview)
GET {{ host }}/t/{{ tenantCode }}/v1/contents/{{ contentID }}/preview
Content-Type: application/json
Authorization: Bearer {{ token }}
### Tenant - Main assets (role=main, requires access unless free/owner)
GET {{ host }}/t/{{ tenantCode }}/v1/contents/{{ contentID }}/assets
Content-Type: application/json
Authorization: Bearer {{ token }}
### Tenant - Purchase content (tenant balance)
POST {{ host }}/t/{{ tenantCode }}/v1/contents/{{ contentID }}/purchase
Content-Type: application/json
Authorization: Bearer {{ token }}
{
"idempotency_key": "purchase-{{ contentID }}-001"
}
### Tenant - My orders list
GET {{ host }}/t/{{ tenantCode }}/v1/orders?page=1&limit=10
Content-Type: application/json
Authorization: Bearer {{ token }}
### Tenant - My order detail
GET {{ host }}/t/{{ tenantCode }}/v1/orders/{{ orderID }}
Content-Type: application/json
Authorization: Bearer {{ token }}
### Tenant Admin - Create content draft
POST {{ host }}/t/{{ tenantCode }}/v1/admin/contents
Content-Type: application/json
Authorization: Bearer {{ token }}
{
"title": "",
"description": "稿",
"visibility": "tenant_only",
"preview_seconds": 60
}
### Tenant Admin - Update content (publish/unpublish/title/description/preview_seconds)
PATCH {{ host }}/t/{{ tenantCode }}/v1/admin/contents/{{ contentID }}
Content-Type: application/json
Authorization: Bearer {{ token }}
{
"title": "",
"status": "published"
}
### Tenant Admin - Upsert content price/discount
PUT {{ host }}/t/{{ tenantCode }}/v1/admin/contents/{{ contentID }}/price
Content-Type: application/json
Authorization: Bearer {{ token }}
{
"currency": "CNY",
"price_amount": 990,
"discount_type": "none",
"discount_value": 0
}
### Tenant Admin - Attach asset to content (main/cover/preview)
@assetID = 1
POST {{ host }}/t/{{ tenantCode }}/v1/admin/contents/{{ contentID }}/assets
Content-Type: application/json
Authorization: Bearer {{ token }}
{
"asset_id": {{ assetID }},
"role": "main",
"sort": 0
}
### Tenant Admin - Orders list
GET {{ host }}/t/{{ tenantCode }}/v1/admin/orders?page=1&limit=10
Content-Type: application/json
Authorization: Bearer {{ token }}
### Tenant Admin - Order detail
@orderID = 1
GET {{ host }}/t/{{ tenantCode }}/v1/admin/orders/{{ orderID }}
Content-Type: application/json
Authorization: Bearer {{ token }}
### Tenant Admin - Refund order (default window paid_at + 24h)
POST {{ host }}/t/{{ tenantCode }}/v1/admin/orders/{{ orderID }}/refund
Content-Type: application/json
Authorization: Bearer {{ token }}
{
"force": false,
"reason": "退",
"idempotency_key": "refund-{{ orderID }}-001"
}
### Tenant Admin - Topup a tenant member
@topupUserID = 2
POST {{ host }}/t/{{ tenantCode }}/v1/admin/users/{{ topupUserID }}/topup
Content-Type: application/json
Authorization: Bearer {{ token }}
{
"amount": 1000,
"reason": "",
"idempotency_key": "topup-{{ topupUserID }}-001"
}