From 1a89c487901c85a6a9dd33d5c818400724f7f87d Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Mon, 8 Sep 2025 14:26:17 +0800 Subject: [PATCH] :bug: Fix transaction query :sparkles: Add orderes query --- DysonNetwork.Pass/Wallet/WalletController.cs | 41 ++++++++++++++++---- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/DysonNetwork.Pass/Wallet/WalletController.cs b/DysonNetwork.Pass/Wallet/WalletController.cs index 45132be..ea0b6f5 100644 --- a/DysonNetwork.Pass/Wallet/WalletController.cs +++ b/DysonNetwork.Pass/Wallet/WalletController.cs @@ -49,25 +49,50 @@ public class WalletController(AppDatabase db, WalletService ws, PaymentService p var accountWallet = await db.Wallets.Where(w => w.AccountId == currentUser.Id).FirstOrDefaultAsync(); if (accountWallet is null) return NotFound(); - var query = db.PaymentTransactions.AsQueryable() - .Where(t => - (t.PayeeWalletId == null || t.PayeeWalletId == accountWallet.Id) && - (t.PayerWalletId == null || t.PayerWalletId == accountWallet.Id) && - !(t.PayerWalletId == null && t.PayeeWalletId == null) - ); + var query = db.PaymentTransactions + .Where(t => t.PayeeWalletId == accountWallet.Id || t.PayerWalletId == accountWallet.Id) + .AsQueryable(); var transactionCount = await query.CountAsync(); + Response.Headers["X-Total"] = transactionCount.ToString(); + var transactions = await query .Skip(offset) .Take(take) .OrderByDescending(t => t.CreatedAt) .ToListAsync(); - Response.Headers["X-Total"] = transactionCount.ToString(); - return Ok(transactions); } + [HttpGet("orders")] + [Authorize] + public async Task>> GetOrders( + [FromQuery] int offset = 0, [FromQuery] int take = 20 + ) + { + if (HttpContext.Items["CurrentUser"] is not Account.Account currentUser) return Unauthorized(); + + var accountWallet = await db.Wallets.Where(w => w.AccountId == currentUser.Id).FirstOrDefaultAsync(); + if (accountWallet is null) return NotFound(); + + var query = db.PaymentOrders.AsQueryable() + .Include(o => o.Transaction) + .Where(o => o.Transaction != null && (o.Transaction.PayeeWalletId == accountWallet.Id || o.Transaction.PayerWalletId == accountWallet.Id)) + .AsQueryable(); + + var orderCount = await query.CountAsync(); + Response.Headers["X-Total"] = orderCount.ToString(); + + var orders = await query + .Skip(offset) + .Take(take) + .OrderByDescending(t => t.CreatedAt) + .ToListAsync(); + + return Ok(orders); + } + public class WalletBalanceRequest { public string? Remark { get; set; }