feat: 优化设备冷却管理,增加原子设备占用逻辑和过期记录处理

This commit is contained in:
zyh
2025-09-13 10:46:52 +08:00
parent 86140b1294
commit 40479fa38e
16 changed files with 819 additions and 643 deletions

View File

@@ -255,4 +255,25 @@
WHERE status = #{status}
ORDER BY created_at ASC
</select>
<!-- 原子占用设备,避免并发下同一设备被多个链接占用 -->
<update id="reserveDeviceIfFree">
UPDATE link_task lt
LEFT JOIN (
SELECT 1 as has_conflict
FROM link_task x
WHERE x.machine_id = #{deviceId}
AND x.status IN ('USING','LOGGED_IN')
AND x.id &lt;&gt; #{id}
) conflict_check ON 1=1
SET lt.status = 'USING',
lt.region = #{region},
lt.machine_id = #{deviceId},
lt.qr_created_at = NOW(),
lt.qr_expire_at = DATE_ADD(NOW(), INTERVAL #{qrExpireSeconds} SECOND),
lt.updated_at = NOW()
WHERE lt.id = #{id}
AND conflict_check.has_conflict IS NULL
</update>
</mapper>