package com.hc.business.mapper;

import com.hc.business.dto.ZccmOrderInvoicesDto;
import com.hc.business.model.ZccmOrders;
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 ZccmOrdersMapper extends Mapper<ZccmOrders> {

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

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

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

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

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

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

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

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

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

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

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


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

}