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.
This commit is contained in:
2025-12-18 16:24:37 +08:00
parent 435e541dbe
commit 3249e405ac
13 changed files with 990 additions and 33 deletions

View File

@@ -116,6 +116,19 @@ func (r *Routes) Register(router fiber.Router) {
Local[*models.User]("user"),
Local[*models.TenantUser]("tenant_user"),
))
r.log.Debugf("Registering route: Get /t/:tenantCode/v1/me/balance -> me.balance")
router.Get("/t/:tenantCode/v1/me/balance"[len(r.Path()):], DataFunc2(
r.me.balance,
Local[*models.Tenant]("tenant"),
Local[*models.User]("user"),
))
r.log.Debugf("Registering route: Get /t/:tenantCode/v1/me/ledgers -> me.ledgers")
router.Get("/t/:tenantCode/v1/me/ledgers"[len(r.Path()):], DataFunc3(
r.me.ledgers,
Local[*models.Tenant]("tenant"),
Local[*models.User]("user"),
Query[dto.MyLedgerListFilter]("filter"),
))
// Register routes for controller: order
r.log.Debugf("Registering route: Post /t/:tenantCode/v1/contents/:contentID/purchase -> order.purchaseContent")
router.Post("/t/:tenantCode/v1/contents/:contentID/purchase"[len(r.Path()):], DataFunc4(