package org.jeecg.modules.xcx.order.service;

import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.pay.MpWxPayService;
import org.jeecg.modules.xcx.goods.req.EditLeaseNumReq;
import org.jeecg.modules.xcx.order.req.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

public interface IOrderService {

    /**
     * 订单分页
     * @param orderPageReq
     * @return
     */
    Result<?> orderPage(OrderPageReq orderPageReq);

    Result<?> orderPage2(OrderPageReq orderPageReq);

    Result<?> orderPage3(OrderPageReq orderPageReq);

    /**
     * 水洗店水洗订单分页
     * @param orderPageReq
     * @return
     */
    Result<?> shopWashOrderPage(OrderPageReq orderPageReq);

    /**
     * 订单详情
     * @param id
     * @param token
     * @return
     */
    Result<?> orderDetail(String id,String token);

    Result<?> orderDetail2(String id,String token);

    Result<?> orderDetail3(String id,String token);

    /**
     * 水洗店水洗订单详情
     * @param id
     * @param token
     * @return
     */
    Result<?> shopWashOrderDetail(String id,String token);

    /**
     * 创建订单
     * @param req
     * @return
     */
    Result<?> createOrder(String req, String token);

    Result<?> createOrder2(String req, String token);

    Result<?> createOrder3(String req, String token);

    Result<?> createOrder4(String req, String token);

    /**
     * 支付
     * @param orderPayReq
     * @return
     */
    Result<?> orderPay(OrderPayReq orderPayReq);

    /**
     * 支付
     * @param orderPayReq
     * @return
     */
    Result<?> orderPay2(OrderPayReq orderPayReq);

    /**
     * 支付回调
     * @param requestBody
     * @return
     */
    Object orderNotify(String requestBody);

    /**
     * 支付回调
     * @param requestBody
     * @return
     */
    Object orderNotify2(String requestBody);

    /**
     * 支付回调
     * @param requestBody
     * @return
     */
    Object orderNotify3(String requestBody);

    /**
     * 支付回调
     * @param requestBody
     * @return
     */
    Object orderNotify4(String requestBody);

    /**
     * 支付回调
     * @param requestBody
     * @return
     */
    Object orderNotify5(String requestBody);

    /**
     * 申请退货/换货
     * @param applyRefundOrderReq
     * @return
     */
    Result<?> applyRefundOrder(ApplyRefundOrderReq applyRefundOrderReq);




    /**
     * 确认收货
     * @param confirmOrderReq
     * @return
     */
    Result<?> confirmOrder(ConfirmOrderReq confirmOrderReq);

    Result<?> confirmOrder2(ConfirmOrderReq confirmOrderReq);

    Result<?> confirmOrder3(ConfirmOrderReq confirmOrderReq);

    /**
     * 上传桌布
     * @param uploadTableclothReq
     * @return
     */
    Result<?> uploadTablecloth(UploadTableclothReq uploadTableclothReq);

    /**
     * 确认接单
     * @param confirmAcceptOrderReq
     * @return
     */
    Result<?> confirmAcceptOrder(ConfirmAcceptOrderReq confirmAcceptOrderReq);

    /**
     * 水洗店水洗订单确认收货
     * @param shopReceiptOrderReq
     * @return
     */
    Result<?> shopReceiptOrder(ShopReceiptOrderReq shopReceiptOrderReq);

    /**
     * 酒店端水洗订单确认收货
     * @param shopReceiptOrderReq
     * @return
     */
    Result<?> receiptWashOrder(ShopReceiptOrderReq shopReceiptOrderReq);

    /**
     * 取消订单
     * @param cancelOrderReq
     * @return
     */
    Result<?> cancelOrder(CancelOrderReq cancelOrderReq);

    Result<?> cancelOrder2(CancelOrderReq cancelOrderReq);


    /**
     * 换货订单支付接口
     * @param replaceOrderPayReq
     * @return
     */
    Result<?> replaceOrderPay(ReplaceOrderPayReq replaceOrderPayReq);

    /**
     * 换货订单支付回调
     * @param requestBody
     * @return
     */
    Object replaceOrderNotify(String requestBody);

    /**
     * 换货发货
     * @param sendLogisticsReq
     * @return
     */
    Result<?> sendLogistics(SendLogisticsReq sendLogisticsReq);

    /**
     * 订单详情列表
     * @param id 订单id
     * @return
     */
    Result<?> getOrderDetails(String id);

    /**
     * 修改自己上传物品得数量
     * @param editLeaseNumReq
     * @return
     */
    Result<?> editLeaseNum(EditLeaseNumReq editLeaseNumReq);
}
