|
@@ -34,17 +34,24 @@ public class AnalyticsService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Async
|
|
@Async
|
|
|
- public void saveEvent(String userKey, String eventType, Map<String, Object> eventData,
|
|
|
|
|
- String pageUrl, String referrer, String ip, String userAgent) {
|
|
|
|
|
|
|
+ public void saveEvent(
|
|
|
|
|
+ final String userKey,
|
|
|
|
|
+ final String eventType,
|
|
|
|
|
+ @SuppressWarnings("rawtypes") final Map eventData,
|
|
|
|
|
+ final String pageUrl,
|
|
|
|
|
+ final String referrer,
|
|
|
|
|
+ final String ip,
|
|
|
|
|
+ final String userAgent) {
|
|
|
try {
|
|
try {
|
|
|
|
|
+ // Truncate data to avoid sql errors when user-agent is longer than the column, etc.
|
|
|
UserEvent event = UserEvent.builder()
|
|
UserEvent event = UserEvent.builder()
|
|
|
- .userKey(userKey)
|
|
|
|
|
- .eventType(eventType)
|
|
|
|
|
|
|
+ .userKey(trunc(userKey, 128))
|
|
|
|
|
+ .eventType(trunc(eventType, 64))
|
|
|
.eventData(eventData != null ? eventData : Map.of())
|
|
.eventData(eventData != null ? eventData : Map.of())
|
|
|
- .pageUrl(pageUrl)
|
|
|
|
|
- .referrer(referrer)
|
|
|
|
|
- .ip(ip)
|
|
|
|
|
- .userAgent(userAgent)
|
|
|
|
|
|
|
+ .pageUrl(trunc(pageUrl, 512))
|
|
|
|
|
+ .referrer(trunc(referrer, 512))
|
|
|
|
|
+ .ip(trunc(ip, 64))
|
|
|
|
|
+ .userAgent(trunc(userAgent, 512))
|
|
|
.build();
|
|
.build();
|
|
|
repo.save(event);
|
|
repo.save(event);
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
@@ -52,6 +59,11 @@ public class AnalyticsService {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private static String trunc(String s, int max) {
|
|
|
|
|
+ if (s == null) return null;
|
|
|
|
|
+ return s.length() <= max ? s : s.substring(0, max);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// ==================== 埋点事件列表 ====================
|
|
// ==================== 埋点事件列表 ====================
|
|
|
|
|
|
|
|
public Map<String, Object> queryEvents(String eventType, String startDate, String endDate,
|
|
public Map<String, Object> queryEvents(String eventType, String startDate, String endDate,
|