package com.xinelu.manage.service.goodsOrder;

import com.xinelu.manage.domain.goodsOrder.GoodsOrder;
import com.xinelu.manage.dto.goodsorder.GoodsOrderDTO;
import com.xinelu.manage.vo.goodsorder.AppGoodsOrderVO;
import com.xinelu.manage.vo.goodsorder.GoodsInfoOrderVO;
import com.xinelu.manage.vo.goodsorder.GoodsOrderDetailsVO;
import com.xinelu.manage.vo.goodsorder.GoodsOrderRefundVO;
import com.xinelu.manage.vo.goodsorder.GoodsOrderVO;
import java.util.List;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * 商品订单Service接口
 *
 * @author xinyilu
 * @date 2022-10-18
 */
public interface IGoodsOrderService {
    /**
     * 查询商品订单
     *
     * @param id 商品订单主键
     * @return 商品订单
     */
    GoodsOrder selectGoodsOrderById(Long id);

    /**
     * 查询商品订单列表
     *
     * @param goodsOrder 商品订单
     * @return 商品订单集合
     */
    List<GoodsInfoOrderVO> selectGoodsOrderList(GoodsInfoOrderVO goodsOrder);

    /**
     * 新增商品订单
     *
     * @param goodsOrder 商品订单
     * @return 结果
     */
    int insertGoodsOrder(GoodsOrder goodsOrder);

    /**
     * 修改商品订单 退款
     *
     * @param goodsOrder 商品订单
     * @return 结果
     */
    int updateGoodsOrder(GoodsOrder goodsOrder);

    /**
     * 批量删除商品订单
     *
     * @param ids 需要删除的商品订单主键集合
     * @return 结果
     */
    int deleteGoodsOrderByIds(Long[] ids);

    /**
     * 删除商品订单信息
     *
     * @param id 商品订单主键
     * @return 结果
     */
    int deleteGoodsOrderById(Long id);


    /**
     * 预约订单管理列表页面查看明细
     *
     * @param orderNo 订单编号
     * @return GoodsOrderDetailsVO
     **/
    GoodsOrderDetailsVO getGoodsOrderDetailsByOrderNo(String orderNo);

    /**
     * 查询商品订单详情
     *
     * @param orderNo 商品订单编号
     * @return com.xinyilu.base.vo.goodsorder.GoodsOrderVO
     **/
    GoodsOrderVO getGoodsOrderByOrder(String orderNo);


    /**
     * 修改商品订单 添加物流单号
     *
     * @param goodsOrder 商品订单
     * @return 结果
     */
    int updateGoodsOrderExpressNo(GoodsOrder goodsOrder);

    /**
     * 根据订单id查询商品退款原因
     *
     * @param goodsOrderId 订单id
     * @return com.xinyilu.base.vo.goodsorder.GoodsOrderRefundVO
     **/
    GoodsOrderRefundVO getGoodsOrderRefund(Long goodsOrderId);

	/**
	 * 医生APP专家咨询工单列表查询
	 * @param goodsOrderDTO
	 * @return
	 */
	List<AppGoodsOrderVO> getConsultationOrders(GoodsOrderDTO goodsOrderDTO);

	/**
	 * 修改订单状态
	 * @param goodsOrderDTO
	 * @return
	 */
	int updateStatus(@RequestBody GoodsOrderDTO goodsOrderDTO);
}
