package com.ruoyi.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.domain.PromotionCouponBatch;
import com.ruoyi.system.domain.PromotionCouponRule;
import java.util.List;

/**
 * 优惠券批次Service接口
 *
 * @author ruoyi
 * @date 2024-05-30
 */
public interface IPromotionCouponBatchService extends IService<PromotionCouponBatch>
{
    /**
     * 创建优惠券批次（含规则）
     *
     * @param batch 批次主体
     * @param rule 券规则
     * @return 是否成功
     */
    boolean createBatch(PromotionCouponBatch batch, PromotionCouponRule rule);

    /**
     * 创建优惠券批次（含多条规则，多商品券）
     */
    boolean createBatch(PromotionCouponBatch batch, List<PromotionCouponRule> rules);

    /**
     * 查询批次详情（含规则）
     *
     * @param id 批次ID
     * @return 批次详情
     */
    PromotionCouponBatch selectBatchWithRule(Long id);

    /**
     * 下架批次
     *
     * @param id 批次ID
     * @return 是否成功
     */
    boolean offShelfBatch(Long id);

    /**
     * 修改优惠券批次（含规则）
     *
     * @param batch 批次主体
     * @param rule 券规则
     * @return 是否成功
     */
    boolean updateBatch(PromotionCouponBatch batch, PromotionCouponRule rule);

    /**
     * 修改优惠券批次（含多条规则，多商品券）
     */
    boolean updateBatch(PromotionCouponBatch batch, List<PromotionCouponRule> rules);

    /**
     * 删除优惠券批次（仅未开始且无人领取）
     *
     * @param id 批次ID
     * @return 是否成功
     */
    boolean deleteBatch(Long id);
}
