package com.hai.service;

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

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

/**
 * 车队油卡服务
 * @className: HighFleetOilCardService
 * @author: HuRui
 * @date: 2022/12/12
 **/
public interface HighFleetOilCardService {

    /**
     * 编辑数据
     * @param fleetOilCard
     */
    void editData(HighFleetOilCard fleetOilCard);

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

    /**
     * 回收余额
     * @param fleetCardNo   车队油卡卡号
     */
    void recycleAmount(String fleetCardNo);

    /**
     * 查询车队油卡详情
     * @param fleetCardNo 卡号
     * @return
     */
    HighFleetOilCard getFleetOilCardByCardNo(String fleetCardNo);

    /**
     * 油卡消费
     * @param fleetCardNo    车队油卡卡号
     * @param contactPhone    使用人电话
     * @param amount         充值金额
     * @param otherParam     其他参数
     */
    void consume(String fleetCardNo, String contactPhone,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 fleetCardNo       车队油卡卡号
     */
    void disabled(String fleetCardNo);

    /**
     * 启用
     * @param fleetCardNo       车队油卡卡号
     */
    void enable(String fleetCardNo);

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

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

}
