package com.fs.course.service;

import java.util.List;

import com.fs.common.core.domain.R;
import com.fs.course.domain.FsUserCourseOrder;
import com.fs.course.param.*;
import com.fs.course.vo.FsUserCourseOrderListPVO;
import com.fs.course.vo.FsUserCourseOrderListUVO;
import com.fs.his.param.FsPackageOrderDoPayParam;

/**
 * 课程订单信息Service接口
 *
 * @author fs
 * @date 2024-05-21
 */
public interface IFsUserCourseOrderService
{
    /**
     * 查询课程订单信息
     *
     * @param orderId 课程订单信息主键
     * @return 课程订单信息
     */
    public FsUserCourseOrder selectFsUserCourseOrderByOrderId(Long orderId);

    /**
     * 查询课程订单信息列表
     *
     * @param fsUserCourseOrder 课程订单信息
     * @return 课程订单信息集合
     */
    public List<FsUserCourseOrder> selectFsUserCourseOrderList(FsUserCourseOrder fsUserCourseOrder);

    /**
     * 新增课程订单信息
     *
     * @param fsUserCourseOrder 课程订单信息
     * @return 结果
     */
    public int insertFsUserCourseOrder(FsUserCourseOrder fsUserCourseOrder);

    /**
     * 修改课程订单信息
     *
     * @param fsUserCourseOrder 课程订单信息
     * @return 结果
     */
    public int updateFsUserCourseOrder(FsUserCourseOrder fsUserCourseOrder);

    /**
     * 批量删除课程订单信息
     *
     * @param orderIds 需要删除的课程订单信息主键集合
     * @return 结果
     */
    public int deleteFsUserCourseOrderByOrderIds(Long[] orderIds);

    /**
     * 删除课程订单信息信息
     *
     * @param orderId 课程订单信息主键
     * @return 结果
     */
    public int deleteFsUserCourseOrderByOrderId(Long orderId);

    List<FsUserCourseOrderListPVO> selectFsUserCourseOrderListPVO(FsUserCourseOrderParam param);

    FsUserCourseOrderListPVO selectFsUserCourseOrderVOByOrderId(Long orderId);

    R createOrder(FsUserCourseOrderCreateParam param);

    R payment(FsUserCourseOrderDoPayParam param);

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

    R computeOrder(FsUserCourseOrderComputeParam param);

    R test(Long orderId);

    R aliPayment(FsUserCourseOrderDoPayParam param);

    R createIntegralOrder(FsUserCourseOrderCreateParam param);

    List<FsUserCourseOrderListUVO> selectFsUserCourseOrderListUVO(FsUserCourseOrderListUParam param);
}
