package com.xinyilu.system.service.motionprescriptionlibrary;

import com.xinyilu.common.core.domain.AjaxResult;
import com.xinyilu.system.domain.dto.MotionPrescriptionVideoDTO;
import com.xinyilu.system.domain.motionprescriptionlibrary.MotionPrescriptionLibrary;
import com.xinyilu.system.domain.vo.MotionPrescriptionVideoVO;
import com.xinyilu.system.domain.vo.motionprescriptionlibrary.MotionPrescriptionLibraryVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;


/**
 * 运动处方库数据Service接口
 *
 * @author xinyilu
 * @date 2023-04-03
 */
public interface IMotionPrescriptionLibraryService {
    /**
     * 查询运动处方库数据
     *
     * @param id 运动处方库数据主键
     * @return 运动处方库数据
     */
    MotionPrescriptionLibrary selectMotionPrescriptionLibraryById(Long id);

    /**
     * 查询运动处方库数据列表
     *
     * @param motionPrescriptionLibrary 运动处方库数据
     * @return 运动处方库数据集合
     */
    List<MotionPrescriptionLibraryVO> selectMotionPrescriptionLibraryList(MotionPrescriptionLibrary motionPrescriptionLibrary);

    /**
     * 新增运动处方库数据
     *
     * @param motionPrescriptionLibrary 运动处方库数据
     * @return 结果
     */
    int insertMotionPrescriptionLibrary(MotionPrescriptionLibrary motionPrescriptionLibrary);

    /**
     * 修改运动处方库数据
     *
     * @param motionPrescriptionLibrary 运动处方库数据
     * @return 结果
     */
    int updateMotionPrescriptionLibrary(MotionPrescriptionLibrary motionPrescriptionLibrary);

    /**
     * 批量删除运动处方库数据
     *
     * @param ids 需要删除的运动处方库数据主键集合
     * @return 结果
     */
    AjaxResult deleteMotionPrescriptionLibraryByIds(Long[] ids);

    /**
     * 处方上传视频
     *
     * @param prescriptionVideoDTO 输入参数
     * @return 上传结果
     * @throws Exception 错误信息
     */
    AjaxResult confirmUploadVideo(MotionPrescriptionVideoDTO prescriptionVideoDTO) throws Exception;

    /**
     * 处方视频上传
     *
     * @param multipartFile        文件
     * @param motionPrescriptionId 处方id
     * @return 上传结果
     * @throws Exception 异常信息
     */
    AjaxResult uploadMotionPrescriptionVideo(MultipartFile multipartFile, Long motionPrescriptionId) throws Exception;

    /**
     * 查询运动处方干预视频查看方法
     *
     * @param motionPrescriptionId 运动处方库表id
     * @return 干预视频信息集合
     */
    AjaxResult getPrescriptionVideoList(Long motionPrescriptionId);

    /**
     * 查询运动处方库数据
     *
     * @param id 运动处方库数据主键
     * @return 运动处方库数据
     */
    MotionPrescriptionVideoVO getMotionPrescriptionVideoInfo(Long id);
}