| | |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.tourguide.modules.finance.entity.GuideWithdrawal; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.apache.ibatis.annotations.Select; |
| | | import org.apache.ibatis.annotations.Update; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.util.List; |
| | | |
| | | public interface GuideWithdrawalMapper extends BaseMapper<GuideWithdrawal> { |
| | | @Select("SELECT COUNT(*) FROM guide_withdrawal WHERE guide_id = #{guideId} AND deleted = 0 " + |
| | | "AND status NOT IN ('APPROVED', 'REJECTED')") |
| | | long countActiveByGuideId(@Param("guideId") Long guideId); |
| | | |
| | | @Select("SELECT * FROM guide_withdrawal WHERE id = #{id} AND deleted = 0 FOR UPDATE") |
| | | GuideWithdrawal selectForUpdate(@Param("id") Long id); |
| | | |
| | | @Select("SELECT * FROM guide_withdrawal WHERE deleted = 0 " + |
| | | "AND (cash_req_seq_id = #{requestSequence} OR withdrawal_no = #{requestSequence}) " + |
| | | "LIMIT 1 FOR UPDATE") |
| | | GuideWithdrawal selectByPayoutSequenceForUpdate(@Param("requestSequence") String requestSequence); |
| | | |
| | | @Select("SELECT id FROM guide_withdrawal WHERE deleted = 0 " + |
| | | "AND status IN ('TRANSFERRING', 'TRANSFERRED', 'PROCESSING') " + |
| | | "AND updated_at <= #{beforeTime} ORDER BY updated_at, id LIMIT #{limit}") |
| | | List<Long> selectPendingPayoutIds(@Param("beforeTime") LocalDateTime beforeTime, |
| | | @Param("limit") int limit); |
| | | |
| | | @Update("UPDATE guide_withdrawal SET status = 'TRANSFERRED', " + |
| | | "cash_req_seq_id = NULL, cash_req_date = NULL, cash_hf_seq_id = NULL, " + |
| | | "payout_message = #{message}, processed_at = #{processedAt}, updated_at = #{updatedAt} " + |
| | | "WHERE id = #{id} AND deleted = 0 AND status IN ('PROCESSING', 'TRANSFERRED')") |
| | | int resetCashForRetry(@Param("id") Long id, |
| | | @Param("message") String message, |
| | | @Param("processedAt") LocalDateTime processedAt, |
| | | @Param("updatedAt") LocalDateTime updatedAt); |
| | | |
| | | } |