package com.hai.service;

import com.hai.entity.HighCouponAgentCode;
import com.hai.entity.HighCouponAgentRecord;
import com.hai.entity.HighCouponAgentRel;
import com.hai.entity.HighCouponCode;
import org.apache.ibatis.annotations.Param;

import java.security.PrivateKey;
import java.util.List;
import java.util.Map;

/**
 * @Auther: 胡锐
 * @Description: 代理商与卡券的声音
 * @Date: 2021/4/20 22:59
 */
public interface HighCouponAgentService {

    /**
     * @Author 胡锐
     * @Description 卡券分配给代理商
     * @Date 2021/4/20 23:01
     **/
    void assignCouponAgent(HighCouponAgentRel highCouponAgentRel,Integer stockCount);

    /**
     * @Author 胡锐
     * @Description 修改
     * @Date 2021/4/24 13:29
     **/
    void updateCouponAgentCode(HighCouponAgentCode highCouponAgentCode);

    /**
     * @Author 胡锐
     * @Description 根据卡券id和代理商id 查询
     * @Date 2021/4/20 23:52
     **/
    HighCouponAgentRel getRelByCouponAgent(Long couponId,Long agentId, Integer type);

    /**
     * 根据id查询关系
     * @param couponAgentRelId
     * @return
     */
    HighCouponAgentRel getRelById(Long couponAgentRelId);

    /**
     * @Author 胡锐
     * @Description 查询卡券与代理商关系列表
     * @Date 2021/4/21 21:58
     **/
    List<HighCouponAgentRel> getCouponAgentList(Map<String, Object> map);

    /**
     * @Author 胡锐
     * @Description 查询已分配销售码
     * @Date 2021/4/21 22:05
     **/
    List<HighCouponAgentCode> getCouponCodeList(Map<String, Object> map);

    /**
     * @Author 胡锐
     * @Description 根据分配的销售码id 查询
     * @Date 2021/4/21 22:31
     **/
    HighCouponAgentCode getCodeById(Long couponAgentCodeId);


    /**
     * @Author 胡锐
     * @Description 根据销售码id和代理商 查询代理商销售码
     * @Date 2021/4/24 21:58
     **/
    HighCouponAgentCode getAgentCodeByCodeIdAgent(Long codeId,Long agentId);

    /**
     * @Author 胡锐
     * @Description 生成二维码
     * @Date 2021/4/21 22:35
     **/
    Map<String, Object> generateCode(Long couponAgentCodeId,String remark);

    /**
     * @Author 胡锐
     * @Description 根据代理商 查询销售统计
     * @Date 2021/4/22 22:26
     **/
    Map<String, Object> getSalesCountByAgent(Long agentId, Integer type) throws Exception;

    Map<String, Object> getConvertCodeCountByAgent(Long agentId);

    /**
     *
     * @param map
     * @return 查询分发记录
     * @throws Exception
     */
    List<HighCouponAgentRecord> getRecordList(Map<String, Object> map);

    /**
     * 查询代理商的卡券
     * @param map
     * @return
     */
    List<HighCouponAgentCode> getCouponAgentCodeList(Map<String, Object> map);

    /**
     * 根据时间查询 代理商已销售的卡券
     * @param agentId
     * @param consumeTimeS
     * @param consumeTimeE
     * @return
     */
    List<HighCouponAgentCode> getAgentSalesCodeList(Long agentId,String consumeTimeS,String consumeTimeE);

    /**
     * 生成兑换码
     * @param couponAgentRelId
     * @return
     */
    String generateConvertCode(Long couponAgentRelId);

    /**
     * 查询兑换码
     * @param convertCode
     * @return
     */
    HighCouponAgentCode getConvertCode(String convertCode);

    /**
     * 使用兑换码
     * @param code
     * @return
     */
    Map<String, Object> useConvertCode(String phone, String code) throws Exception;

    /**
     * 推送贵州中石化
     * @param phone  手机号
     * @param remark 备注
     * @return
     */
    Map<String, Object> pushGzSinopec(Long couponAgentRelId, String phone, String remark) throws Exception;

    /**
     * 查询代理商未分配的 销售码、兑换码
     * @param couponAgentRelId
     * @return
     */
    List<HighCouponAgentCode> getNoSaleCode(Long couponAgentRelId);
}
