feat: 优化设备冷却管理,增加原子设备占用逻辑和过期记录处理
This commit is contained in:
@@ -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 <> #{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>
|
||||
|
||||
Reference in New Issue
Block a user