package com.qs.mp.user.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.qs.mp.admin.domain.TicketBox;
import com.qs.mp.common.enums.UserCouponStatusEnum;
import com.qs.mp.user.domain.UserCoupon;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.mp.user.domain.vo.UserCouponVO;
import java.util.List;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 * 用户的优惠券 服务类
 * </p>
 *
 * @author quanshu
 * @since 2022-03-07
 */
public interface IUserCouponService extends IService<UserCoupon> {

  /**
   * 根据用户优惠券ID列表查询
   * @param userCouponIds
   * @return
   */
  List<UserCouponVO> listTicketOrderCouponByIds(List<String> userCouponIds);

  /**
   * 查询用户当前可用于盲票购买的优惠券，按优惠大小排序
   * @param userId
   * @return
   */
  List<UserCouponVO> listCoupon(Long userId, UserCouponStatusEnum status);

  /**
   * 查询券列表
   * @param queryWrapper
   * @return
   */
  List<UserCouponVO> listUserCouponVO(Wrapper<UserCoupon> queryWrapper);

  /**
   * 查询盲票购买可用优惠券
   * @param userId
   * @param orderAmt
   * @param ticketBox
   * @return
   */
  List<UserCouponVO> queryUserCouponList(Long userId, Integer orderAmt, TicketBox ticketBox);

  /**
   * 根据条件统计派发优惠券金额
   * @param queryWrapper
   * @return
   */
  Integer sumDiscountByQueryWrapper(QueryWrapper<UserCoupon> queryWrapper);
}
