package jnpf.cultivate.service;

import com.baomidou.mybatisplus.extension.service.IService;
import jnpf.base.vo.PageListVO;
import jnpf.model.cultivate.dto.casebase.FtbCultivateCaseBaseAuditDTO;
import jnpf.model.cultivate.dto.casebase.FtbCultivateCaseBaseDTO;
import jnpf.model.cultivate.dto.casebase.app.FtbCultivateCaseBaseCreatDTO;
import jnpf.model.cultivate.po.casebase.FtbCultivateCaseBase;
import jnpf.model.cultivate.vo.casebase.FtbCultivateCaseBaseVO;

/**
*
*@Title: 
*@Author: peng.hao
*@create: 2024/7/22:11:21
*
*/
public interface FtbCultivateCaseBaseService extends IService<FtbCultivateCaseBase> {

    /**
     * 分页查询培养案例列表
     * 该方法用于展示培养案例的基础信息列表，通常用于Web界面的分页显示
     *
     * @param dto 查询参数对象，包含查询培养案例所需的条件和分页信息
     * @return 返回一个PageListVO对象，包含分页后的培养案例列表和总记录数
     */
    PageListVO<FtbCultivateCaseBaseVO> listDisplay(FtbCultivateCaseBaseDTO dto);

    /**
     * 审核培养案例
     * 该方法用于对培养案例进行审核操作，包括通过或驳回案例
     *
     * @param baseAuditDTO 审核参数对象，包含审核结果、审核意见等信息
     */
    void reviewCase(FtbCultivateCaseBaseAuditDTO baseAuditDTO);

    /**
     * 获取培养案例详情
     * 该方法用于获取单个培养案例的详细信息，通常用于查看或编辑案例时
     *
     * @param id 培养案例的唯一标识符
     * @return 返回一个FtbCultivateCaseBaseVO对象，包含培养案例的详细信息
     */
    FtbCultivateCaseBaseVO getDetail(String id);

    /**
     * 创建培养案例基础信息
     * 该方法用于录入新的培养案例基础信息，包括案例的基本属性和元数据
     *
     * @param caseBaseCreatDTO 创建参数对象，包含新培养案例的基础信息
     */
    void caseBaseCreatDTO(FtbCultivateCaseBaseCreatDTO caseBaseCreatDTO);

    /**
     * 更新培养案例库
     * 该方法用于更新或修改培养案例库中的案例信息，可能涉及案例内容的变更或更新
     *
     * @param caseBaseCreatDTO 更新参数对象，包含需要更新的培养案例信息
     */
    void updateCaseLibrary(FtbCultivateCaseBaseCreatDTO caseBaseCreatDTO);

    /**
     * 分页查询培养案例列表（用于App端）
     * 该方法与listDisplay方法类似，但专门用于App端展示培养案例列表
     * 可能会包含或强调一些适合移动设备显示的字段或格式
     *
     * @param dto 查询参数对象，包含查询培养案例所需的条件和分页信息
     * @return 返回一个PageListVO对象，包含分页后的培养案例列表和总记录数，格式适合App端显示
     */
    PageListVO<FtbCultivateCaseBaseVO> listDisplayForApp(FtbCultivateCaseBaseDTO dto);
}
