package com.fs.doctor.service;

import java.util.List;
import com.fs.doctor.domain.DoctorLevelApply;
import com.fs.doctor.vo.*;

/**
 * 讲者定级申请Service接口
 * 
 * @author fs
 * @date 2025-12-30
 */
public interface IDoctorLevelApplyService 
{
    /**
     * 查询讲者定级申请
     * 
     * @param id 讲者定级申请主键
     * @return 讲者定级申请
     */
    public DoctorLevelApplyVO selectDoctorLevelApplyById(Long id);

    /**
     * 查询讲者定级申请列表
     * 
     * @param doctorLevelApply 讲者定级申请
     * @return 讲者定级申请集合
     */
    public List<DoctorLevelApply> selectDoctorLevelApplyList(DoctorLevelApply doctorLevelApply);

    /**
     * 新增讲者定级申请
     * 
     * @param doctorLevelApplyVO 讲者定级申请
     * @return 结果
     */
    public int insertDoctorLevelApply(DoctorLevelApplyVO doctorLevelApplyVO);


    /**
     * 修改讲者定级申请
     * 
     * @param doctorLevelApplyVO 讲者定级申请
     * @return 结果
     */
    public int updateDoctorLevelApply(DoctorLevelApplyVO doctorLevelApplyVO);

    /**
     * 批量删除讲者定级申请
     * 
     * @param ids 需要删除的讲者定级申请主键集合
     * @return 结果
     */
    public int deleteDoctorLevelApplyByIds(Long[] ids);

    /**
     * 删除讲者定级申请信息
     * 
     * @param id 讲者定级申请主键
     * @return 结果
     */
    public int deleteDoctorLevelApplyById(Long id);

    DoctorApplyDetailInfoVO getDoctorApplyDetailInfoById(Long id);

    void doAudit(DoctorApplyAuditReqVO doctorApplyAuditReqVO);
    void appDoAudit(DoctorApplyAuditReqVO doctorApplyAuditReqVO);

    /**
     * 新增动态申请
     * @param addVO 包含申请表、动态数据、问卷信息
     * @return 申请表ID
     */
    Long insertDynamicApply(DynamicApplyAddVO addVO);

    /**
     * 修改动态申请
     * @param updateVO 包含申请表、动态数据、问卷信息
     */
    void updateDynamicApply(DynamicApplyUpdateVO updateVO);


    DoctorApplyDetailInfoVO getAdminDoctorApplyDetailInfoById(Long id);
}
