package shop.alien.store.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartRequest;
import shop.alien.entity.store.ProtocolManagement;

/**
 * 协议管理表 服务类
 *
 * @author alien
 * @since 2025-12-09
 */
public interface ProtocolManagementService extends IService<ProtocolManagement> {

    /**
     * 分页查询协议列表
     *
     * @param pageNum          页数
     * @param pageSize         页容
     * @param protocolFileName 协议名称
     * @param displayPosition  展示位置
     * @return IPage<ProtocolManagement>
     */
    IPage<ProtocolManagement> getProtocolPage(Integer pageNum, Integer pageSize, String protocolFileName, String displayPosition);

    /**
     * 根据ID查询协议详情
     *
     * @param id 协议ID
     * @param response 响应流
     */
    void getProtocolById(Integer id, javax.servlet.http.HttpServletResponse response);

    /**
     * 新增协议
     *
     * @param protocolManagement 协议对象
     * @return boolean
     */
    boolean addProtocol(MultipartFile multipartFile, ProtocolManagement protocolManagement);

    /**
     * 更新协议
     *
     * @param protocolManagement 协议对象
     * @return boolean
     */
    boolean updateProtocol(MultipartRequest multipartRequest, ProtocolManagement protocolManagement);

    /**
     * 删除协议（逻辑删除）
     *
     * @param id 协议ID
     * @return boolean
     */
    boolean deleteProtocol(Integer id);

    /**
     * 批量删除协议
     *
     * @param ids 协议ID列表
     * @return boolean
     */
    boolean batchDeleteProtocol(String ids);

    /**
     * 校验文件名是否重复
     *
     * @param protocolFileName 协议文件名
     * @return String "已重复" 或 "不重复"
     */
    Boolean checkFileNameDuplicate(String protocolFileName);
}

