package cn.iocoder.yudao.module.member.service.storeorderdetail;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DishVO;
import cn.iocoder.yudao.module.member.controller.admin.screen.vo.GoodsVO;
import cn.iocoder.yudao.module.member.controller.admin.storeorderdetail.vo.StoreOrderDetailPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.storeorderdetail.vo.StoreOrderDetailSaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreOrderDetailVo;
import cn.iocoder.yudao.module.member.dal.dataobject.storeorderdetail.StoreOrderDetailDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 商品订单详情 Service 接口
 *
 * @author 管理员
 */
public interface StoreOrderDetailService {

    /**
     * 创建商品订单详情
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createStoreOrderDetail(@Valid StoreOrderDetailSaveReqVO createReqVO);

    /**
     * 更新商品订单详情
     *
     * @param updateReqVO 更新信息
     */
    void updateStoreOrderDetail(@Valid StoreOrderDetailSaveReqVO updateReqVO);

    /**
     * 删除商品订单详情
     *
     * @param id 编号
     */
    void deleteStoreOrderDetail(Integer id);

    /**
     * 获得商品订单详情
     *
     * @param id 编号
     * @return 商品订单详情
     */
    StoreOrderDetailDO getStoreOrderDetail(Integer id);

    /**
     * 获得商品订单详情分页
     *
     * @param pageReqVO 分页查询
     * @return 商品订单详情分页
     */
    PageResult<StoreOrderDetailDO> getStoreOrderDetailPage(StoreOrderDetailPageReqVO pageReqVO);

    void saveBatch(List<StoreOrderDetailDO> list);

    List<AppStoreOrderDetailVo>  getListByOrderNo(Integer orderId);

    void deleteByOrderNo(Integer orderId);

    List<StoreOrderDetailDO>  getListByOrderId(Integer orderId);

    List<GoodsVO> selectGoodsSale(Long storeId, String startTime, String endTime,Integer type);

}