package com.hai.service;

import com.hai.entity.HighCoupon;
import com.hai.entity.HighCouponCode;
import com.hai.model.GzSinopecModel;
import com.hai.model.OrderSumModel;
import com.hai.model.UserInfoModel;

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

/**
 * @Auther: 胡锐
 * @Description:  卡券销售码
 * @Date: 2021/3/14 17:44
 */
public interface HighCouponCodeService {

    /**
     * @Author 胡锐
     * @Description 增加
     * @Date 2021/3/14 17:44
     **/
    void insertCouponCode(HighCouponCode highCouponCode);

    /**
     * @Author 胡锐
     * @Description 批量增加
     * @Date 2021/3/18 21:30
     **/
    void insertList(List<HighCouponCode> list) throws Exception;

    /**
     * @Author 胡锐
     * @Description xiug
     * @Date 2021/3/27 1:20
     **/
    void updateCouponCode(HighCouponCode highCouponCode);

    /**
     * @Author 胡锐
     * @Description 使用卡卷
     * @Date 2021/3/27 13:21
     **/
    void useCouponCode(String code, UserInfoModel userInfoModel);

    /**
     * @Author 胡锐
     * @Description 中石化回调已使用的码key
     * @Date 2021/4/19 21:53
     **/
    void cnpcCallbackCouponCode(String codeKey,Date useTime,String nodeName);

    /**
     * @Author 胡锐
     * @Description 根据订单id查询
     * @Date 2021/3/27 1:25
     **/
    HighCouponCode getCouponCodeByOrderId(Long childOrderId);

    /**
     * 根据用户优惠券查询
     * @param discountUserRelId
     * @return
     */
    HighCouponCode getCouponCodeByUserDiscount(Long discountUserRelId);

    /**
     * @Author 胡锐
     * @Description 根据销售码查询
     * @Date 2021/3/27 12:39
     **/
    HighCouponCode getCouponCodeBySalesCode(String code);

    /**
     * @Author 胡锐
     * @Description 根据销售码key查询
     * @Date 2021/4/21 20:30
     **/
    HighCouponCode getCouponCodeByKey(String codeKey);

    /**
     * @Author 胡锐
     * @Description 根据id 查询
     * @Date 2021/3/27 17:52
     **/
    HighCouponCode getCouponCodeById(Long id);

    /**
     *
     * @Title: getStockCountByCoupon
     * @Author 胡锐
     * @Description: 查询卡卷的库存数量
     * @Date 11:24 2021/3/16
     * @Param [couponId]
     * @return java.lang.Integer
     **/
    Integer getStockCountByCoupon(Long couponId);

    /**
     * @Author 胡锐
     * @Description 查询未销售的卡卷码
     * @Date 2021/3/27 1:16
     **/
    List<HighCouponCode> getNoSaleCode(Long couponId);

    /**
     * @Author 胡锐
     * @Description 查询销售码
     * @Date 2021/3/21 16:37
     **/
    List<HighCouponCode> getCouponCodeList(Map<String,Object> map);

    /**
     * 查询贵州中石化卡券
     * @param map
     * @return
     */
    List<GzSinopecModel> getGzSinopecAssignList(Map<String,Object> map) throws Exception;

}
