|
|
@@ -217,12 +217,29 @@ public class BehaviorRecordServiceImpl implements BehaviorRecordService {
|
|
|
return 0L;
|
|
|
}
|
|
|
|
|
|
- Long firstStartStamp = events.get(0).getStartStamp();
|
|
|
+ // 查找第一个非null的startStamp
|
|
|
+ Long firstStartStamp = null;
|
|
|
+ for (BehaviorRecord.BehaviorEvent event : events) {
|
|
|
+ if (event.getStartStamp() != null) {
|
|
|
+ firstStartStamp = event.getStartStamp();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (firstStartStamp == null) {
|
|
|
return 0L;
|
|
|
}
|
|
|
|
|
|
- if (firstStartStamp < 5000 && lastEndStamp > 5000) {
|
|
|
+ // 检测页面刷新:如果起始时间戳小于5秒,认为是页面刷新后提交的
|
|
|
+ // 需要应用偏移以保持时间连续性
|
|
|
+ if (firstStartStamp < 5000 && lastEndStamp > 0) {
|
|
|
+ return lastEndStamp;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 检测时间戳回退:如果新版本的起始时间小于上一版本的结束时间
|
|
|
+ // 说明可能是同页面内的连续提交,但时间戳相对于页面加载时间
|
|
|
+ // 也需要应用偏移
|
|
|
+ if (firstStartStamp < lastEndStamp) {
|
|
|
return lastEndStamp;
|
|
|
}
|
|
|
|