package com.hc.business.mapper;

import com.hc.business.dto.OrderInvoicesDto;
import com.hc.business.dto.OrdersDto;
import com.hc.business.model.Orders;
import com.hc.core.utils.mapper.Mapper;
import org.springframework.stereotype.Repository;

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

/**
 * 订单表(Orders)表数据库访问层
 *
 * @author java
 * @since 2020-11-26 16:46:42
 */

@Repository
public interface OrdersMapper extends Mapper<Orders> {

    /**
     * 依据订单编号获取订单信息
     *
     * @param orderNo 订单编号
     * @return 实例对象
     */
    Orders queryByOrderNo(String orderNo);

    /**
     * 依据用户id 查询
     *
     * @param userId 用户id
     * @return 实例对象数组
     */
    List<Orders> queryAllByUserId(Integer userId);

    /**
     * 用户 查询多条数据
     *
     * @param classId 班次id
     * @return 对象列表
     */
    List<Orders> queryAllByClassId(Integer classId);

    /**
     * 用户 查询多条数据
     *
     * @param className 班次名称
     * @return 对象列表
     */
    List<Orders> queryAllByClassName(String className);

    /**
     * 用户 查询多条数据
     *
     * @param status 订单状态
     * @return 对象列表
     */
    List<Orders> queryAllByStatus(Integer status);

    /**
     * 依据发票id查询
     *
     * @param userInvoicesId 发票id
     * @return 实例对象数组
     */
    List<Orders> queryByUserInvoicesId(Integer userInvoicesId);

    /**
     * 查询总金额
     *
     * @return 实例对象数组
     */
    BigDecimal countPrice();

    /**
     * 当天订单金额
     *
     * @return int
     */
    BigDecimal queryToday();

    /**
     * 当月订单金额
     *
     * @return int
     */
    BigDecimal queryMonth();

    /**
     * 当年订单金额
     *
     * @return int
     */
    BigDecimal queryYear();

    /**
     * 获取订单数量
     *
     * @return 实例对象
     */
    Integer countOrderTotal();


    /**
     * 查询有效的发票和订单
     *
     * @return 实例对象数组
     */
    List<OrderInvoicesDto> queryAllWithInvoices();


    /**
     * @Author ymnets
     * @Description 获取所有订单
     * @return java.util.List<com.hc.business.dto.OrdersDto>
     **/
    List<OrdersDto> queryAllOrders(Integer orderId,String orderNo,Integer status,Integer payType,Integer isPay,Integer classId,Integer checkFlag,String payCompany,Long begin,Long end);
}