package com.xunwang.payment.service;

import com.xunwang.servicebase.utils.R;
import com.xunwang.payment.entity.OrderInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xunwang.payment.enums.OrderStatus;

import java.util.List;

/**
 * <p>
 * 订单表 服务类
 * </p>
 *
 * @author Long
 * @since 2023-02-23
 */
public interface OrderInfoService extends IService<OrderInfo> {

    /**
     * 根据邀请id创建订单信息
     * @param inviteId
     * @return
     */
    OrderInfo createOrderByInviteId(String inviteId);

    /**
     * 保存预交易会话id
     * @param orderNo
     * @param prepayId
     */
    void savePerpayId(String orderNo, String prepayId);

    /**
     * 查询个人订单列表，并倒叙排序
     * @return
     */
    List<OrderInfo> listOrderByCreateTimeDesc(String openId);

    /**
     * 获取订单状态
     * @param orderNo
     * @return
     */
    String getOrderStatus(String orderNo);

    /**
     * 根据订单编号更新订单状态
     * @param orderNo
     * @param orderStatus
     */
    void updateStatusByOrderNo(String orderNo, OrderStatus orderStatus);

    /**
     * 超过minutes分钟未支付订单
     * @param minutes
     * @return
     */
    List<OrderInfo> getNoPayOrderByDuration(int minutes);

    /**
     * 查询支付中本地订单状态
     * @param orderId
     */
    R queryOrderStatus(String orderId);

    /**
     * 查询本地订单是否退款
     * @param orderId
     * @return
     */
    R queryIsRefundOrder(String orderId);
}
