package com.hc.business.service;

import com.github.pagehelper.PageInfo;
import com.hc.business.model.UserVideoPosition;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * 用户视频观看记录(UserVideoPosition)表服务接口
 *
 * @author java
 * @since 2020-05-29 15:50:50
 */
 
@Component 
public interface UserVideoPositionService {

    /**
     * 通过ID查询单条数据
     *
     * @param userVideoPositionId 主键
     * @return 实例对象
     */
    UserVideoPosition queryById(Integer userVideoPositionId);

    /**
     * 新增数据
     *
     * @param userVideoPosition 实例对象
     * @return 实例对象
     */
    UserVideoPosition insert(UserVideoPosition userVideoPosition);

    /**
     * 修改数据
     *
     * @param userVideoPosition 实例对象
     * @return 实例对象
     */
    UserVideoPosition update(UserVideoPosition userVideoPosition);

    /**
     * 通过主键删除数据
     *
     * @param userVideoPositionId 主键
     * @return 是否成功
     */
    Boolean deleteById(Integer userVideoPositionId);

    /**
     * 分页查询所有数据
     *
     * @param page 页码
     * @param size 每页大小
     * @return 实例对象数组
     */
    PageInfo queryAllByLimit(Integer page, Integer size);


    /**
     * 添加一条播放进度redis
     *
     * @param userVideoPosition
     * @param courseId
     * @return
     */
    UserVideoPosition insertPositionToRedis(UserVideoPosition userVideoPosition, Integer courseId);


    /*
    刷新视频进度到数据库
     */
    int flushToDb(Integer userId, Integer videoId, Integer courseId, String years,Integer classId);

    /**
     * 获取视频进度
     *
     * @param positionId
     * @return
     */
    UserVideoPosition getVideoPosition(Integer positionId);

    /**
     * 获取用户课程进度
     *
     * @param userId
     * @param videoId
     * @param courseId
     * @return
     */
    Map<String, String> findVideoPosition(Integer userId, Integer videoId, Integer courseId,Integer classId);

}