package com.kym.service.miniapp;

import com.kym.entity.admin.queryParams.CustomChargeOrdersQueryParam;
import com.kym.entity.admin.queryParams.StatQueryParam;
import com.kym.entity.admin.vo.CustomOrderVo;
import com.kym.entity.admin.vo.StationStatVo;
import com.kym.entity.common.PageBean;
import com.kym.entity.miniapp.ChargeOrder;
import com.kym.entity.miniapp.queryParams.OrderQueryParams;
import com.kym.entity.miniapp.vo.ChargeOrderVo;
import com.kym.service.mybatisplus.MyBaseService;
import jakarta.servlet.http.HttpServletResponse;

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

/**
 * <p>
 * 充电订单表 服务类
 * </p>
 *
 * @author skyline
 * @since 2023-08-08
 */
public interface ChargeOrderService extends MyBaseService<ChargeOrder> {

    ChargeOrder getChargingOrderByUserId(Long userId);

    ChargeOrder getChargingOrderByStartChargeSeq(String startChargeSeq);

    PageBean<CustomOrderVo> customChargeOrders(CustomChargeOrdersQueryParam params);

    ChargeOrderVo orderDetailForApp(String startChargeSeq);

    PageBean<StationStatVo> stationStat(StatQueryParam params);

    Map<String, Object> stationTodayStat(String stationId);

    List<ChargeOrder> getChargeOrdersBySeqs(String[] startChargeSeqs);

    void exportCustomChargeOrders(CustomChargeOrdersQueryParam params, HttpServletResponse response);

    PageBean<ChargeOrderVo> listUserChargeOrders(OrderQueryParams params);

    Map<String, ?> stationStatDetail(StatQueryParam params);

    Object orderDiscountDetail(String startChargeSeq, String discountType);

    void closeChargeOrder(String startChargeSeq);
}
