package com.jeesharp.business.modules.coupon.service;

import com.jeesharp.business.modules.coupon.entity.MemberCoupon;
import com.jeesharp.business.modules.coupon.vo.MemberCouponQueryVO;
import com.jeesharp.framework.mybatis.core.service.BaseInterface;

/**
 * 会员优惠券领域服务。
 *
 * @author jeesharp
 * @since 2026-05-07
 */
public interface MemberCouponService extends BaseInterface<MemberCoupon, MemberCouponQueryVO> {

    /**
     * 统计会员已领取某模板的有效券数量（不含作废、不含逻辑删）。
     */
    long countByMemberAndTemplate(String memberId, String templateId);

    /**
     * 查询会员在某模板下最近领取的一张券（按领取时间倒序）。
     */
    MemberCoupon findLatestByMemberAndTemplate(String memberId, String templateId);

    /**
     * 将当前会员已到期但仍为「未使用」的券置为过期。
     */
    void markExpiredIfPastEnd(String memberId);

      /**
     * 按商城订单主键查找已冻结的会员券（下单预占）。
     */
    MemberCoupon findByFreezeOrderId(String orderId);

    /**
     * 按订单主键查找已使用且未退回的会员券（退款退券）。
     */
    MemberCoupon findUsedByOrderId(String orderId);
}
