package cn.pluss.platform.device;

import cn.pluss.platform.api.Result;
import cn.pluss.platform.dto.MercOrderDetailDTO;
import cn.pluss.platform.entity.MercOrderDetail;
import cn.pluss.platform.entity.PhoneValidateCode;
import cn.pluss.platform.vo.MercOrderExpressVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 订单详情表 服务类
 * </p>
 *
 * @author Djh
 * @since 2022-03-17
 */
public interface MercOrderDetailService extends IService<MercOrderDetail> {

    void receiving(Long id);

    /**
     * 查看物流信息
     * @param id
     * @return
     */
    MercOrderExpressVO getOrderExpressInfo(Long id);

    /**
     * 根据订单号查询订单详情
     * @param orderNo
     * @param status
     * @return
     */
    List<MercOrderDetail> getDetailByOrderNo(String orderNo,String status);

    /**
     * 设备订单退款
     * @param dto
     */
    void refund(MercOrderDetailDTO dto);

    /**
     * 设置退款物流单号
     * @param dto
     */
    void setRefundExpressNo(MercOrderDetailDTO dto);

    /**
     * 审核退款
     * @param orderDetail
     * @return
     */
    Result<Object> auditRefund(MercOrderDetail orderDetail);

    /**
     * 获取手机验证码
     * @param phoneValidateCode
     * @return
     */
    Result<Object> getVerifyCode(PhoneValidateCode phoneValidateCode);

    /**
     * 推送物流信息
     * @param ids
     * @return
     */
    Result<Object> printLogistInfo(List<Long> ids);

    /**
     * 分页查询
     * @param page
     * @param condition
     * @return
     */
    Page<MercOrderDetail> pageInfo(Page<MercOrderDetail> page, MercOrderDetail condition);

    /**
     * 拒绝退货，退款申请
     * @param orderDetail
     */
    void refundReject(MercOrderDetail orderDetail);

    /**
     * 同意退货
     * @param id
     */
    void refundAgree(Long id);

    /**
     * 填写快递单号
     * @param id
     * @param expressNo
     * @return
     */
    Result<Object> inputExpressNo(Long id, String expressNo);

    /**
     * 根据订单查询和类型查询订单详情
     * @param orderNo
     * @param code
     * @return
     */
    List<MercOrderDetail> listByOrderNoAndCode(String orderNo, String code);
}
