package cn.iocoder.yudao.module.member.service;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.entity.MemberCoupon;
import cn.iocoder.yudao.module.member.vo.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import javax.validation.Valid;
import java.util.List;

/**
 * 基础卡券 Service 接口
 *
 * @author pqz
 */
public interface MemberCouponService extends IService<MemberCoupon> {


    /**
     * 保存基础卡券信息
     *
     * @param saveReqVO MemberCouponSaveReqVO实体
     * @return void
     * @author PQZ
     * @date 14:22 2024/9/19
     **/
    void saveCoupon(@Valid MemberCouponSaveReqVO saveReqVO);

    /**
     * 通过id集合查询卡券信息
     *
     * @param ids     id集合
     * @param isChild 是否查询出关联的卡券信息
     * @return java.util.List<cn.iocoder.yudao.module.member.entity.MemberCoupon>
     * @author PQZ
     * @date 10:47 2024/9/21
     **/
    List<MemberCoupon> listByIds(List<String> ids, boolean isChild);

    /**
     * 删除基础卡券
     *
     * @param id 编号
     */
    void deleteCoupon(String id);

    /**
     * 查询基础卡券及附属信息
     *
     * @param id 卡券id
     * @return cn.iocoder.yudao.module.member.vo.MemberCouponRespVO
     * @author PQZ
     * @date 21:55 2024/9/19
     **/
    MemberCouponRespVO getCoupon(String id);

    /**
     * 分页查询基础卡券信息
     *
     * @param pageReqVO MemberCouponPageReqVO实体
     * @param page      分页参数
     * @return com.baomidou.mybatisplus.core.metadata.IPage<cn.iocoder.yudao.module.member.vo.MemberCouponRespVO>
     * @author PQZ
     * @date 14:22 2024/9/19
     **/
    IPage<MemberCouponRespVO> queryListPage(MemberCouponPageReqVO pageReqVO, Page<MemberCouponRespVO> page);

    /**
     * 复制卡券附属权益
     *
     * @param saveReqVO MemberCouponSaveReqVO
     * @author PQZ
     * @date 21:25 2024/9/19
     **/
    void copyMemberCoupon(MemberCouponSaveReqVO saveReqVO);

}