package jnpf.cultivate.v2.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jnpf.model.cultivate.v2.course.vo.AiHelperCourseStatisticsVo;
import jnpf.model.cultivate.v2.course.vo.UserLearningStatusVo;
import jnpf.model.cultivate.v2.course.web.req.V2CultivateCourseListReq;
import jnpf.model.cultivate.v2.course.web.req.V2CultivateCourseReq;
import jnpf.model.cultivate.v2.course.web.req.V2CultivateCourseSelectReq;
import jnpf.model.cultivate.v2.course.web.vo.V2CultivateCourseDetailsVo;
import jnpf.model.cultivate.v2.course.web.vo.V2CultivateCoursePageVo;
import jnpf.model.cultivate.v2.course.web.vo.V2CultivateCourseSelectVo;

public interface V2CultivateCourseService {

    /**
     * 课程列表分页查询
     *
     * @param req 课程列表分页查询参数
     * @return 分页数据
     */
    Page<V2CultivateCoursePageVo> webList(V2CultivateCourseListReq req);

    /**
     * 添加课程
     *
     * @param req 课程参数
     * @return 课程id
     */
    String add(V2CultivateCourseReq req);

    /**
     * 修改课程
     *
     * @param req 课程参数
     */
    void update(V2CultivateCourseReq req);

    /**
     * 删除课程
     *
     * @param courseId 课程id
     */
    void delete(String courseId);

    /**
     * 课程详情
     *
     * @param courseId 课程id
     * @return 课程详情
     */
    V2CultivateCourseDetailsVo detail(String courseId);

    /**
     * 添加岗位学习OR任务时，课程列表选择
     *
     * @param req 分页请求参数
     * @return 分页数据
     */
    Page<V2CultivateCourseSelectVo> learnSelectCourseList(V2CultivateCourseSelectReq req);

    /**
     * 清空课程学习记录
     *
     * @param courseId 课程id
     */
    void clearCourseLog(String courseId);

    /**
     * 根据课程ID统计课程学习数据
     * @param courseId 课程ID
     * @return 课程学习统计结果
     */
    AiHelperCourseStatisticsVo getCourseStatistics(String courseId);

    /**
     * 查询指定用户的学习情况
     * @param userId 用户ID
     * @return 用户学习情况（包含已完成的课程、考试、鉴定列表，已去重）
     */
    UserLearningStatusVo getUserLearningStatus(String userId);
}
