package com.hai.service;

import com.hai.entity.*;
import com.hai.model.HighCouponModel;

import java.util.List;
import java.util.Map;

/**
 * @Auther: 胡锐
 * @Description:
 * @Date: 2021/3/11 22:04
 */
public interface HighCouponService {

    /**
     * @Author 胡锐
     * @Description 增加卡卷业务
     * @Date 2021/3/11 22:05
     **/
    void insertCoupon(HighCoupon highCouponModel);

    /**
     * @Author 胡锐
     * @Description 修改卡卷业务
     * @Date 2021/3/12 20:41
     **/
    void updateCoupon(HighCoupon highCouponModel);

    /**
     * @Author 胡锐
     * @Description 修改卡卷信息
     * @Date 2021/3/14 20:52
     **/
    void update(HighCoupon highCoupon);

    /**
     * @Author 胡锐
     * @Description 卡卷上架
     * @Date 2021/3/14 22:46
     **/
    void upShelfApprove(Long id);

    /**
     *
     * @Title: upShelfApproveResult
     * @Author 胡锐
     * @Description: 卡卷上架审批结果
     * @Date 15:39 2021/3/16
     * @Param [highApprove]
     * @return void
     **/
    void upShelfApproveResult(HighApprove highApprove);

    /**
     * @Author 胡锐
     * @Description 卡卷下架
     * @Date 2021/3/14 20:56
     **/
    void ofShelfCoupon(Long id);

    /**
     * @Author 胡锐
     * @Description 删除
     * @Date 2021/3/22 19:25
     **/
    void deleteCoupon(Long id);

    /**
     * @Author 胡锐
     * @Description 价格审批结果
     * @Date 2021/3/21 22:08
     **/
    void priceApproveResult(HighApprove highApprove);

    /**
     * @Author 胡锐
     * @Description 根据id查询卡卷基本信息、赠送信息
     * @Date 2021/3/14 16:58
     **/
    HighCoupon getCouponById(Long id);

    /**
     *
     * @Title: getCouponDetail
     * @Author 胡锐
     * @Description: 根据id查询卡卷基本信息
     * @Date 11:56 2021/3/16
     * @Param [id]
     * @return com.hai.model.HighCouponModel
     **/
    HighCoupon getCouponDetail(Long id);

    /**
     * 根据卡券key查询
     * @param couponKey
     * @return
     */
    HighCoupon getCouponDetail(String couponKey);

    /**
     * @Author 胡锐
     * @Description 获取卡卷集合
     * @Date 2021/3/15 23:12
     **/
    List<HighCoupon> getCouponList(Map<String, Object> map);

    /**
     * @Author 胡锐
     * @Description 获取数量
     * @Date 2021/3/15 23:12
     **/
    Long getCouponByCouponName(Long companyId,String couponName);

    /**
     * @Author 胡锐
     * @Description 根据商户 查询处于已上架的卡卷
     * @Date 2021/3/24 18:29
     **/
    List<HighCoupon> getCouponListByMerchant(Long merchantId);

    /**
     * @Author 胡锐
     * @Description 用户购买卡卷数量上限
     * @Date 2021/4/2 22:21
     **/
    Boolean userBuyLimitNumber(Long userId,Long couponId);

}
