package com.dora.mapper;

import com.dora.dto.AdminContentAuditDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 内容审核 Mapper
 */
@Mapper
public interface ContentAuditMapper {

    /**
     * 查询内容审核列表总数
     */
    Long countContentAuditList(@Param("request") AdminContentAuditDto.ContentAuditListRequest request);

    /**
     * 查询内容审核列表
     */
    List<AdminContentAuditDto.ContentAuditItem> selectContentAuditList(@Param("request") AdminContentAuditDto.ContentAuditListRequest request,
                                                                        @Param("offset") Long offset,
                                                                        @Param("limit") Long limit);

    /**
     * 审核视频
     */
    int auditVideo(@Param("id") Long id,
                   @Param("auditStatus") Integer auditStatus,
                   @Param("rejectReason") String rejectReason,
                   @Param("adminId") Long adminId);

    /**
     * 审核工作流
     */
    int auditWorkflow(@Param("id") Long id,
                      @Param("auditStatus") Integer auditStatus,
                      @Param("rejectReason") String rejectReason,
                      @Param("adminId") Long adminId);

    /**
     * 审核课程
     */
    int auditCourse(@Param("id") Long id,
                    @Param("auditStatus") Integer auditStatus,
                    @Param("rejectReason") String rejectReason,
                    @Param("adminId") Long adminId);

    /**
     * 统计待审核内容数量
     */
    AdminContentAuditDto.AuditStatistics selectAuditStatistics();

    /**
     * 统计今日审核通过数量
     */
    Long countTodayApproved();

    /**
     * 统计今日审核拒绝数量
     */
    Long countTodayRejected();

    /**
     * 更新课程属性
     */
    int updateCourseProperties(@Param("courseId") Long courseId,
                              @Param("isFree") Integer isFree,
                              @Param("level") Integer level,
                              @Param("category") String category);

    /**
     * 更新工作流属性
     */
    int updateWorkflowProperties(@Param("workflowId") Long workflowId,
                                @Param("isFree") Integer isFree,
                                @Param("fullAccessRole") Integer fullAccessRole,
                                @Param("copyAccessRole") Integer copyAccessRole,
                                @Param("category") String category,
                                @Param("rating") Integer rating);
}
