package com.hc.business.service;

import com.github.pagehelper.PageInfo;
import com.hc.business.dto.UserPriceTotal;
import com.hc.business.model.Orders;
import org.springframework.stereotype.Component;

import java.util.List;


/**
 * 订单表(Orders)表服务接口
 *
 * @author java
 * @since 2020-11-26 16:46:44
 */

@Component
public interface OrdersService {

    /**
     * 通过ID查询单条数据
     *
     * @param ordersId 主键
     * @return 实例对象
     */
    Orders queryById(Integer ordersId);

    /**
     * 新增数据
     *
     * @param orders 实例对象
     * @return 实例对象
     */
    Orders insert(Orders orders);

    /**
     * 创建订单编号
     *
     * @return 实体对象
     */
    String createOrderNo();

    /**
     * 修改数据
     *
     * @param orders 实例对象
     * @return 实例对象
     */
    Orders update(Orders orders);

    /**
     * 通过主键删除数据
     *
     * @param ordersId 主键
     * @return 是否成功
     */
    boolean deleteById(Integer ordersId);

    /**
     * 分页查询多条数据
     *
     * @param page 页码
     * @param size 查询条数
     * @return 对象列表
     */
    PageInfo queryAllByLimit(int page, int size);

    /**
     * 分页查询多条数据
     *
     * @param page 页码
     * @param size 查询条数
     * @return 对象列表
     */
    PageInfo queryAllWithOrderInvoices(int page, int size);

    /**
     * 用户 查询多条数据
     *
     * @param page   页码
     * @param size   查询条数
     * @param userId 用户id
     * @return 对象列表
     */
    PageInfo queryAllByUserId(int page, int size, Integer userId);

    /**
     * 用户 查询多条数据
     *
     * @param page    页码
     * @param size    查询条数
     * @param classId 班次id
     * @return 对象列表
     */
    PageInfo queryAllByClassId(int page, int size, Integer classId);

    /**
     * 用户 查询多条数据
     *
     * @param page      页码
     * @param size      查询条数
     * @param className 班次名称
     * @return 对象列表
     */
    PageInfo queryAllByClassName(int page, int size, String className);

    /**
     * 用户 查询多条数据
     *
     * @param page   页码
     * @param size   查询条数
     * @param status 订单状态
     * @return 对象列表
     */
    PageInfo queryAllByStatus(int page, int size, Integer status);

    /**
     * 查询发票下的名单信息
     *
     * @param userInvoicesId 发票id
     * @return 实例对象数组
     */
    List<Orders> queryByUserInvoicesId(Integer userInvoicesId);

    /**
     * 获取用户订单金额统计数量
     *
     * @return 实例对象
     */
    UserPriceTotal queryUserCount();

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

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

    PageInfo queryAllOrders(int page, int size, Integer orderId, String orderNo, Integer status, Integer payType, Integer classId,Integer checkFlag,String payCompany, Long begin, Long end);

}