This commit is contained in:
王子琦
2026-01-13 13:55:40 +08:00
parent 6affd0c77e
commit f58e05d962
72 changed files with 3251 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
package com.flower.admin;
import com.flower.common.ApiResponse;
import com.flower.order.OrderRepository;
import com.flower.security.AdminOnly;
import com.flower.user.UserRepository;
import lombok.Data;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
@RestController
@RequestMapping("/api/admin/dashboard")
@AdminOnly
public class AdminDashboardController {
private final OrderRepository orderRepository;
private final UserRepository userRepository;
public AdminDashboardController(OrderRepository orderRepository, UserRepository userRepository) {
this.orderRepository = orderRepository;
this.userRepository = userRepository;
}
@GetMapping
public ApiResponse<DashboardStats> stats() {
long totalOrders = orderRepository.count();
long totalUsers = userRepository.count();
BigDecimal totalSales = orderRepository.findAll().stream()
.filter(order -> "PAID".equals(order.getStatus()) || "SHIPPED".equals(order.getStatus())
|| "COMPLETED".equals(order.getStatus()))
.map(order -> order.getTotalAmount() == null ? BigDecimal.ZERO : order.getTotalAmount())
.reduce(BigDecimal.ZERO, BigDecimal::add);
DashboardStats stats = new DashboardStats();
stats.setTotalOrders(totalOrders);
stats.setTotalUsers(totalUsers);
stats.setTotalSales(totalSales);
return ApiResponse.ok(stats);
}
@Data
public static class DashboardStats {
private long totalOrders;
private long totalUsers;
private BigDecimal totalSales;
}
}