فهرست منبع

feat: add withdraw review endpoints for admin

yangyi 3 روز پیش
والد
کامیت
05c1346dd6

+ 21 - 0
src/main/java/space/anyi/serve/controller/WalletController.java

@@ -81,6 +81,27 @@ public class WalletController {
         return Response.ok(Map.of("transactionId", tx.getId().toString(), "status", tx.getStatus()));
     }
 
+    @Operation(summary = "获取待审核提现列表(管理员)")
+    @PreAuthorize("hasRole('ROLE_admin')")
+    @GetMapping("withdraw/pending")
+    public Response<List<WalletTransactionVo>> listPendingWithdrawals(
+            @RequestParam(defaultValue = "1") int pageNum,
+            @RequestParam(defaultValue = "20") int pageSize) {
+        List<WalletTransaction> list = walletService.listPendingWithdrawals(pageNum, pageSize);
+        return Response.ok(WalletTransactionVo.from(list));
+    }
+
+    @Operation(summary = "审核提现(管理员)")
+    @PreAuthorize("hasRole('ROLE_admin')")
+    @PutMapping("withdraw/{id}/review")
+    public Response<Void> reviewWithdraw(@PathVariable Long id, @RequestBody Map<String, Object> body) {
+        Boolean approved = (Boolean) body.get("approved");
+        String rejectReason = (String) body.get("rejectReason");
+        if (approved == null) return Response.error("请指定审核结果");
+        walletService.reviewWithdraw(id, approved, rejectReason);
+        return Response.ok();
+    }
+
     @Operation(summary = "资金明细")
     @PreAuthorize("hasAnyRole('ROLE_user', 'ROLE_expert', 'ROLE_admin')")
     @GetMapping("transactions")

+ 1 - 0
src/main/java/space/anyi/serve/service/WalletService.java

@@ -15,4 +15,5 @@ public interface WalletService extends IService<Wallet> {
     List<WalletTransaction> getTransactions(Long userId, int page, int size);
     WalletTransaction applyWithdraw(Long userId, BigDecimal amount);
     void reviewWithdraw(Long transactionId, boolean approved, String rejectReason);
+    List<WalletTransaction> listPendingWithdrawals(int page, int size);
 }

+ 10 - 0
src/main/java/space/anyi/serve/service/impl/WalletServiceImpl.java

@@ -141,6 +141,16 @@ public class WalletServiceImpl extends ServiceImpl<WalletMapper, Wallet> impleme
         return tx;
     }
 
+    @Override
+    public List<WalletTransaction> listPendingWithdrawals(int page, int size) {
+        Page<WalletTransaction> p = new Page<>(page, size);
+        LambdaQueryWrapper<WalletTransaction> wrapper = new LambdaQueryWrapper<WalletTransaction>()
+                .eq(WalletTransaction::getType, "withdraw")
+                .eq(WalletTransaction::getStatus, "pending")
+                .orderByDesc(WalletTransaction::getCreatedAt);
+        return walletTransactionMapper.selectPage(p, wrapper).getRecords();
+    }
+
     @Override
     @Transactional
     public void reviewWithdraw(Long transactionId, boolean approved, String rejectReason) {