package com.kxs.product.biz.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kxs.common.core.util.R;
import com.kxs.product.api.model.KxsTicket;
import com.kxs.product.api.vo.kxsapp.ticket.TicketListVO;

/**
 * 客小爽券码表(KxsTicket)表服务接口
 *
 * @author 系统
 * @since 2023-12-20 10:09:35
 */
public interface KxsTicketService extends IService<KxsTicket> {

    /**
     * 兑换券列表
     *
     * @param page       页
     * @param ticketType
     * @return {@link IPage}<{@link TicketListVO}>
     */
    IPage<TicketListVO> getByPage(Page<TicketListVO> page, Integer ticketType);
    /**
     * 校验用户名下劵大于等于3或下单过指定商品
     */
    Boolean verifyUserTicketCountAndShopAndAct(Long userId);

    /**
     * 检查用户是否满足预设职级条件
     *
     * @param userId 用户 ID
     * @param level  水平
     * @return {@link R}
     */
    Boolean checkUserPreLevelTicket(Long userId, Long level);

    /**
     * 用户购券
     *
     * @param userId     用户 ID
     * @param ticketType 门票类型
     * @param orderId    订单 ID
     * @param number 购买数量
     */
    Boolean userBuyTicket(Long userId, Integer ticketType, Integer orderId, Integer number);
}

