add
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user