package com.fs.course.service;

import java.time.LocalDate;
import java.util.List;

import com.fs.common.core.domain.R;
import com.fs.course.domain.FsUserVipOrder;
import com.fs.course.param.FsUserVipOrderCreateUParam;
import com.fs.course.param.FsUserVipOrderParam;
import com.fs.course.param.FsUserVipOrderPayUParam;
import com.fs.course.vo.FsUserVipOrderListPVO;
import com.fs.his.param.FsPackageOrderDoPayParam;

/**
 * 购买会员订单Service接口
 *
 * @author fs
 * @date 2024-06-27
 */
public interface IFsUserVipOrderService
{
    /**
     * 查询购买会员订单
     *
     * @param orderId 购买会员订单主键
     * @return 购买会员订单
     */
    public FsUserVipOrder selectFsUserVipOrderByOrderId(Long orderId);

    /**
     * 查询购买会员订单列表
     *
     * @param fsUserVipOrder 购买会员订单
     * @return 购买会员订单集合
     */
    public List<FsUserVipOrder> selectFsUserVipOrderList(FsUserVipOrder fsUserVipOrder);

    /**
     * 新增购买会员订单
     *
     * @param fsUserVipOrder 购买会员订单
     * @return 结果
     */
    public int insertFsUserVipOrder(FsUserVipOrder fsUserVipOrder);

    /**
     * 修改购买会员订单
     *
     * @param fsUserVipOrder 购买会员订单
     * @return 结果
     */
    public int updateFsUserVipOrder(FsUserVipOrder fsUserVipOrder);

    /**
     * 批量删除购买会员订单
     *
     * @param orderIds 需要删除的购买会员订单主键集合
     * @return 结果
     */
    public int deleteFsUserVipOrderByOrderIds(Long[] orderIds);

    /**
     * 删除购买会员订单信息
     *
     * @param orderId 购买会员订单主键
     * @return 结果
     */
    public int deleteFsUserVipOrderByOrderId(Long orderId);

    List<FsUserVipOrderListPVO> selectFsUserVipOrderListPVO(FsUserVipOrderParam param);

    R createVipPurchaseOrder(FsUserVipOrderCreateUParam param);

    R updateUserVipInfo(Long userId, Long orderId);

    R payment(FsUserVipOrderPayUParam param);

    R payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type,String bankTransactionId,String bankSerialNo);

    R aliPayment(FsUserVipOrderPayUParam param);
}
