package com.nbport.zgwl.manifest.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nbport.zgwl.manifest.dto.ContractTemplateDto;
import com.nbport.zgwl.manifest.dto.ContractTemplateQueryDto;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 模板管理 Mapper
 */
public interface ContractTemplateMapper {

    /** 获取模板主表序列（Oracle 主键生成） */
    Long selectTemplateSeqNextVal();

    /** 分页查询模板列表 */
    IPage<ContractTemplateDto> selectTemplatePage(Page<ContractTemplateDto> page, @Param("query") ContractTemplateQueryDto queryDto);

    /** 查询已发布模板列表 */
    List<ContractTemplateDto> selectPublishedTemplates();

    /** 根据主键查询模板详情 */
    ContractTemplateDto selectTemplateById(@Param("id") Long id);

    /** 新增模板 */
    int insertTemplate(ContractTemplateDto template);

    /** 修改模板 */
    int updateTemplate(ContractTemplateDto template);

    /** 更新模板状态 */
    int updateTemplateStatus(@Param("id") Long id,
                             @Param("status") String status,
                             @Param("updateBy") String updateBy,
                             @Param("updateTime") LocalDateTime updateTime);

    /** 删除模板（逻辑删除） */
    int deleteTemplateById(@Param("id") Long id,
                           @Param("updateBy") String updateBy,
                           @Param("updateTime") LocalDateTime updateTime,
                           @Param("delFlag") String delFlag);
}
