package com.hai.service;

import com.hai.entity.HighOilCard;
import com.hai.model.OilCardOrderModel;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 油卡
 * @author hurui
 */
public interface HighOilCardService {

    /**
     * 编辑数据
     * @param oilCard
     */
    void editData(HighOilCard oilCard);

    /**
     * 油卡充值
     * @param cardNo 油卡卡号
     * @param price  充值金额
     * @param orgId  部门id
     */
    void recharge(String cardNo, BigDecimal price, Long orgId);

    /**
     * 回收余额
     * @param cardNo
     */
    void recycleAmount(String cardNo);

    /**
     * 油卡消费
     * @param cardNo     油卡卡号
     * @param amount     充值金额
     * @param otherParam 其他参数
     */
    void consume(String cardNo, BigDecimal amount, Map<String, Object> otherParam);

    /**
     * 订单退款
     * @param orderNo 订单号
     */
    void refund(String orderNo);

    /**
     * 生成油卡
     * @param orgId        部门id
     * @param generateNum  生成数量
     */
    void generateCard(Long orgId, Integer generateNum);

    /**
     * 绑定联系人
     * @param cardNo       卡号
     * @param contactName  联系人名称
     * @param contactPhone 联系人手机号
     */
    void setContact(String cardNo,String contactName, String contactPhone);

    /**
     * 禁用
     * @param cardNo       卡号
     */
    void disabled(String cardNo);

    /**
     * 启用
     * @param cardNo       卡号
     */
    void enable(String cardNo);

    /**
     * 根据手机号查询油卡
     * @param phone 手机号
     * @return
     */
    HighOilCard getOilCardByPhone(String phone);

    /**
     * 根据卡号查询油卡
     * @param cardNo  卡号
     * @return
     */
    HighOilCard getOilCardByCardNo(String cardNo);

    /**
     * 查询油卡列表
     * @param param 参数
     * @return
     */
    List<HighOilCard> getOilCardList(Map<String,Object> param);

    /**
     * 查询油卡订单列表
     * @param param
     * @return
     */
    List<OilCardOrderModel> getOilCardOrderList(Map<String,Object> param) throws Exception;

}
