| | |
| | | |
| | | import com.tourguide.common.api.ApiResponse; |
| | | import com.tourguide.common.api.PageResponse; |
| | | import com.tourguide.common.exception.BusinessException; |
| | | import com.tourguide.modules.finance.dto.FinanceLedgerPageResponse; |
| | | import com.tourguide.modules.finance.dto.WithdrawalProcessRequest; |
| | | import com.tourguide.modules.finance.dto.WithdrawalResponse; |
| | | import com.tourguide.modules.finance.service.AdminFinanceService; |
| | | import com.tourguide.security.AppUserPrincipal; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | import org.springframework.security.core.Authentication; |
| | | import org.springframework.security.core.annotation.AuthenticationPrincipal; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.PathVariable; |
| | | import org.springframework.web.bind.annotation.PutMapping; |
| | |
| | | @RequestParam(required = false) String keyword, |
| | | @RequestParam(required = false) String paymentMethod, |
| | | @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate, |
| | | @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate) { |
| | | @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate, |
| | | Authentication authentication) { |
| | | String requiredAuthority = "REFUND".equalsIgnoreCase(direction) |
| | | ? "PERM_FINANCE_REFUND_VIEW" : "PERM_FINANCE_DETAIL_VIEW"; |
| | | if (authentication.getAuthorities().stream() |
| | | .noneMatch(authority -> requiredAuthority.equals(authority.getAuthority()))) { |
| | | throw new BusinessException(403, "无权访问该财务流水"); |
| | | } |
| | | return ApiResponse.success(financeService.ledger(page, size, direction, keyword, paymentMethod, startDate, endDate)); |
| | | } |
| | | |
| | |
| | | @PutMapping("/withdrawals/{id}/process") |
| | | public ApiResponse<WithdrawalResponse> processWithdrawal(@PathVariable Long id, |
| | | @Valid @RequestBody WithdrawalProcessRequest request, |
| | | Authentication authentication) { |
| | | return ApiResponse.success(financeService.processWithdrawal(id, request, authentication.getName())); |
| | | @AuthenticationPrincipal AppUserPrincipal principal) { |
| | | return ApiResponse.success(financeService.processWithdrawal(id, request, principal.getUsername())); |
| | | } |
| | | } |