22 lines
713 B
XML
22 lines
713 B
XML
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
||
|
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||
|
|
|
||
|
|
<mapper namespace="io.as.modules.daycard.dao.DayCardPoolDao">
|
||
|
|
|
||
|
|
<!-- 使用 FOR UPDATE SKIP LOCKED 抢占一张未使用的天卡,避免并发下单分配到同一张卡 -->
|
||
|
|
<select id="selectOneForUpdateSkipLocked" resultType="io.as.modules.daycard.entity.DayCardPoolEntity">
|
||
|
|
SELECT * FROM day_card_pool
|
||
|
|
WHERE delete_flag = 'UNDEL'
|
||
|
|
AND (
|
||
|
|
status = 'UNUSED'
|
||
|
|
OR (status = 'REUSABLE' AND expire_at > NOW())
|
||
|
|
)
|
||
|
|
ORDER BY
|
||
|
|
CASE WHEN status = 'REUSABLE' THEN 0 ELSE 1 END,
|
||
|
|
id ASC
|
||
|
|
LIMIT 1
|
||
|
|
FOR UPDATE SKIP LOCKED
|
||
|
|
</select>
|
||
|
|
|
||
|
|
</mapper>
|