Files
as-daycard-openapi/src/main/resources/mapper/daycard/DayCardPoolDao.xml

22 lines
713 B
XML
Raw Normal View History

<?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>