Pārlūkot izejas kodu

埋点系统的信息更新

liuchengsen 4 nedēļas atpakaļ
vecāks
revīzija
2874932ca3

+ 9 - 0
backend-java/src/main/java/com/pharmacopoeia/controller/AnalyticsController.java

@@ -32,6 +32,15 @@ public class AnalyticsController {
                 analyticsService.queryEvents(eventType, startDate, endDate, page, pageSize)));
     }
 
+    @GetMapping("/events/{id}")
+    public ResponseEntity<ApiResponse<Map<String, Object>>> getEventDetail(@PathVariable long id) {
+        var detail = analyticsService.getEventDetail(id);
+        if (detail.isEmpty()) {
+            return ResponseEntity.ok(ApiResponse.<Map<String, Object>>builder().code(404).message("事件不存在").build());
+        }
+        return ResponseEntity.ok(ApiResponse.success(detail));
+    }
+
     @PostMapping("/events")
     public ResponseEntity<ApiResponse<Map<String, String>>> saveEvent(@RequestBody Map<String, Object> body) {
         String eventType = (String) body.getOrDefault("event_type", "unknown");

+ 20 - 5
backend-java/src/main/java/com/pharmacopoeia/service/AnalyticsService.java

@@ -51,6 +51,7 @@ public class AnalyticsService {
 
     // ==================== 埋点查询 ====================
 
+    /** 列表(精简字段,不含 event_data / page_url / referrer / user_agent) */
     public Map<String, Object> queryEvents(String eventType, String startDate, String endDate,
                                            int page, int pageSize) {
         Instant startTime = parseDate(startDate);
@@ -79,13 +80,9 @@ public class AnalyticsService {
                 .map(e -> {
                     Map<String, Object> m = new LinkedHashMap<>();
                     m.put("id", e.getId());
-                    m.put("user_key", e.getUserKey());
                     m.put("event_type", e.getEventType());
-                    m.put("event_data", e.getEventData());
-                    m.put("page_url", e.getPageUrl());
-                    m.put("referrer", e.getReferrer());
+                    m.put("user_key", e.getUserKey());
                     m.put("ip", e.getIp());
-                    m.put("user_agent", e.getUserAgent());
                     m.put("created_at", e.getCreatedAt());
                     return m;
                 })
@@ -99,6 +96,24 @@ public class AnalyticsService {
         return response;
     }
 
+    /** 详情(返回全部字段) */
+    public Map<String, Object> getEventDetail(long id) {
+        var opt = repo.findById(id);
+        if (opt.isEmpty()) return Map.of();
+        var e = opt.get();
+        Map<String, Object> m = new LinkedHashMap<>();
+        m.put("id", e.getId());
+        m.put("user_key", e.getUserKey());
+        m.put("event_type", e.getEventType());
+        m.put("event_data", e.getEventData());
+        m.put("page_url", e.getPageUrl());
+        m.put("referrer", e.getReferrer());
+        m.put("ip", e.getIp());
+        m.put("user_agent", e.getUserAgent());
+        m.put("created_at", e.getCreatedAt());
+        return m;
+    }
+
     private Instant parseDate(String date) {
         if (date == null || date.isBlank()) return null;
         return LocalDate.parse(date).atStartOfDay(ZoneOffset.UTC).toInstant();