修复数据仪表盘API编译错误

修复的问题:
1. PaymentRepository中Map类型引用问题
   - 将Map<String, Object>改为java.util.Map<String, Object>
   - 解决类型引用缺失错误

2. MembershipLevelRepository中Query注解问题
   - 添加缺失的@Query导入
   - 修复Query注解无法解析错误

3. DashboardApiController中类型转换问题
   - 添加Order模型导入
   - 修复List<Order>到List<Map<String,Object>>的类型转换
   - 实现Order对象到Map的转换逻辑

4. 清理未使用的导入
   - 移除DateTimeFormatter未使用导入
   - 移除Map未使用导入
   - 优化代码整洁度

所有编译错误已解决,代码可以正常编译运行
This commit is contained in:
AIGC Developer
2025-10-22 10:09:00 +08:00
parent c671dd66ff
commit 9b301f8df7
3 changed files with 19 additions and 5 deletions

View File

@@ -5,12 +5,12 @@ import com.example.demo.repository.OrderRepository;
import com.example.demo.repository.PaymentRepository;
import com.example.demo.repository.UserMembershipRepository;
import com.example.demo.repository.MembershipLevelRepository;
import com.example.demo.model.Order;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import org.springframework.data.domain.PageRequest;
@@ -168,7 +168,21 @@ public class DashboardApiController {
Map<String, Object> response = new HashMap<>();
// 获取最近的订单
List<Map<String, Object>> recentOrders = orderRepository.findRecentOrders(PageRequest.of(0, limit));
List<Order> recentOrdersList = orderRepository.findRecentOrders(PageRequest.of(0, limit));
List<Map<String, Object>> recentOrders = recentOrdersList.stream()
.map(order -> {
Map<String, Object> orderMap = new HashMap<>();
orderMap.put("id", order.getId());
orderMap.put("orderNumber", order.getOrderNumber());
orderMap.put("totalAmount", order.getTotalAmount());
orderMap.put("status", order.getStatus());
orderMap.put("orderType", order.getOrderType());
orderMap.put("description", order.getDescription());
orderMap.put("createdAt", order.getCreatedAt());
orderMap.put("username", order.getUser() != null ? order.getUser().getUsername() : "未知用户");
return orderMap;
})
.collect(Collectors.toList());
response.put("recentOrders", recentOrders);
return ResponseEntity.ok(response);

View File

@@ -2,10 +2,10 @@ package com.example.demo.repository;
import com.example.demo.model.MembershipLevel;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@Repository
@@ -16,5 +16,5 @@ public interface MembershipLevelRepository extends JpaRepository<MembershipLevel
@Query("SELECT ml.displayName as levelName, COUNT(um) as userCount " +
"FROM MembershipLevel ml LEFT JOIN UserMembership um ON ml.id = um.membershipLevelId AND um.status = 'ACTIVE' " +
"GROUP BY ml.id, ml.displayName")
List<Map<String, Object>> findMembershipStats();
List<java.util.Map<String, Object>> findMembershipStats();
}

View File

@@ -61,5 +61,5 @@ public interface PaymentRepository extends JpaRepository<Payment, Long> {
@Query("SELECT MONTH(p.paidAt) as month, SUM(p.amount) as revenue, COUNT(p) as orderCount " +
"FROM Payment p WHERE p.status = 'COMPLETED' AND YEAR(p.paidAt) = :year " +
"GROUP BY MONTH(p.paidAt) ORDER BY MONTH(p.paidAt)")
List<Map<String, Object>> findMonthlyRevenueByYear(@Param("year") int year);
List<java.util.Map<String, Object>> findMonthlyRevenueByYear(@Param("year") int year);
}