新增掉线自动结算命令并修复跨天日志归零问题
- 新建 CloseStaleDutyLogs 命令:每 15 分钟扫描无心跳开放日志自动关闭 - 注册调度 duty:close-stale-logs everyFifteenMinutes - 修复 closeDutyLog:跨天遗留日志保留 duration_seconds,不再硬归零
This commit is contained in:
@@ -1025,14 +1025,14 @@ class ChatController extends Controller
|
||||
'duration_seconds' => DB::raw('GREATEST(0, TIMESTAMPDIFF(SECOND, login_at, NOW()))'),
|
||||
]);
|
||||
|
||||
// 清理历史遭留未关闭的日志(login_at 非今日),直接将它们的时长置 0,避免被算入任何榜单
|
||||
// 关闭历史遗留的跨天未关闭日志(login_at 非今日)
|
||||
// 保留最后一次心跳刷新的 duration_seconds,确保已积累时长不丢失
|
||||
PositionDutyLog::query()
|
||||
->where('user_id', $userId)
|
||||
->whereNull('logout_at')
|
||||
->whereDate('login_at', '<', today())
|
||||
->update([
|
||||
'logout_at' => DB::raw('login_at'), // 时长 = 0
|
||||
'duration_seconds' => 0,
|
||||
'logout_at' => DB::raw('login_at + INTERVAL duration_seconds SECOND'),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user