package com.cyksj.mapper.special; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.cyksj.model.entity.SpecialPayOrder; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import java.util.Date; public interface SpecialPayOrderMapper extends BaseMapper { @Select("select id, order_no as orderNo, user_id as userId, product_code as productCode, " + "subject, amount, duration_days as durationDays, status, shop_id as shopId, " + "alipay_trade_no as alipayTradeNo, buyer_id as buyerId, pay_time as payTime, " + "expire_time as expireTime, fulfill_status as fulfillStatus, fulfill_time as fulfillTime, " + "created_time as createdTime, update_time as updateTime " + "from special_pay_order where order_no = #{orderNo} limit 1 for update") SpecialPayOrder selectByOrderNoForUpdate(@Param("orderNo") String orderNo); @Update("update special_pay_order set status = 'PAID', alipay_trade_no = #{tradeNo}, " + "buyer_id = #{buyerId}, pay_time = #{payTime}, update_time = now() " + "where id = #{orderId} and status = 'CREATED'") int markPaid(@Param("orderId") Long orderId, @Param("tradeNo") String tradeNo, @Param("buyerId") String buyerId, @Param("payTime") Date payTime); @Update("update special_pay_order set fulfill_status = 'SUCCESS', fulfill_time = now(), " + "update_time = now() where id = #{orderId} and status = 'PAID' and fulfill_status = 'INIT'") int markFulfilled(@Param("orderId") Long orderId); @Update("update special_pay_order set status = 'REFUNDED', update_time = now() where id = #{orderId} and status = 'PAID'") int markRefunded(@Param("orderId") Long orderId); }