package com.zehong.system.mapper.train;

import com.zehong.system.domain.form.TStaffForm;
import com.zehong.system.domain.train.StatisticsTrainCourse;
import com.zehong.system.domain.train.TNews;
import com.zehong.system.domain.train.TTrainCourse;
import com.zehong.system.domain.vo.UserCourseVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 培训课程Mapper接口
 *
 * @author zehong
 * @date 2022-09-19
 */
public interface TTrainCourseMapper
{
    /**
     * 查询培训课程
     *
     * @param courseId 培训课程ID
     * @return 培训课程
     */
    public TTrainCourse selectTTrainCourseById(Long courseId);

    /**
     * 查询培训课程列表
     *
     * @param tTrainCourse 培训课程
     * @return 培训课程集合
     */
    public List<TTrainCourse> selectTTrainCourseList(TTrainCourse tTrainCourse);

    /**
     * 新增培训课程
     *
     * @param tTrainCourse 培训课程
     * @return 结果
     */
    public int insertTTrainCourse(TTrainCourse tTrainCourse);

    /**
     * 修改培训课程
     *
     * @param tTrainCourse 培训课程
     * @return 结果
     */
    public int updateTTrainCourse(TTrainCourse tTrainCourse);

    /**
     * 删除培训课程
     *
     * @param courseId 培训课程ID
     * @return 结果
     */
    public int deleteTTrainCourseById(Long courseId);

    /**
     * 批量删除培训课程
     *
     * @param courseIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteTTrainCourseByIds(Long[] courseIds);

    /**
     * 批量新增用户课程
     * @param courseId
     * @param userIds
     * @return
     */
    public int insertUserCourse(@Param("courseId") Long courseId, @Param("userIds") List<String> userIds, @Param("personnelType") Integer personnelType);

    /**
     * 用户课程表
     * @param userId
     * @return
     */
    public List<UserCourseVo> userCourseList(@Param("userId") Long userId, @Param("type") Integer type, @Param("personnelType") Integer personnelType);

    /**
     * 考试统计接口
     * @param statisticsTrainCourse 统计实体
     * @return List<StatisticsTrainCourse>
     */
    List<StatisticsTrainCourse> statisticsTrainCourse(StatisticsTrainCourse statisticsTrainCourse);

    List<UserCourseVo> userCourseLists(TStaffForm tStaff);

    /**
     * 消息添加
     * @param tNews
     */
    void insertNews(TNews tNews);

    /**
     * 手机端  最新消息查询
     * @param recipientId
     * @return
     */
    TNews selectLatestNews(Long recipientId);

    /**
     * 手机端 查询历史消息
     * @param recipientId
     * @return
     */
    List<TNews> historicalMessages(Long recipientId);

    /**
     * 修改消息状态为已读
     * @param newsId
     * @return
     */
    int updateReadStatus(Long newsId);

    /**
     * 查询接收人姓名
     */
    String selectRecipient(Long userid);
}
