package com.yushu.system.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.yushu.system.domain.SysFileShare;

/**
 * 文件分享Mapper接口
 * 
 * @author yushu
 * @date 2024-11-15
 */
public interface SysFileShareMapper 
{
    /**
     * 查询文件分享
     * 
     * @param shareId 文件分享主键
     * @return 文件分享
     */
    public SysFileShare selectSysFileShareByShareId(Long shareId);

    /**
     * 根据分享码查询文件分享
     * 
     * @param shareCode 分享码
     * @return 文件分享
     */
    public SysFileShare selectSysFileShareByShareCode(String shareCode);

    /**
     * 查询文件分享列表
     * 
     * @param sysFileShare 文件分享
     * @return 文件分享集合
     */
    public List<SysFileShare> selectSysFileShareList(SysFileShare sysFileShare);

    /**
     * 新增文件分享
     * 
     * @param sysFileShare 文件分享
     * @return 结果
     */
    public int insertSysFileShare(SysFileShare sysFileShare);

    /**
     * 修改文件分享
     * 
     * @param sysFileShare 文件分享
     * @return 结果
     */
    public int updateSysFileShare(SysFileShare sysFileShare);

    /**
     * 删除文件分享
     * 
     * @param shareId 文件分享主键
     * @return 结果
     */
    public int deleteSysFileShareByShareId(Long shareId);

    /**
     * 批量删除文件分享
     * 
     * @param shareIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSysFileShareByShareIds(Long[] shareIds);
    
    /**
     * 增加查看次数
     * 
     * @param shareId 分享ID
     * @return 结果
     */
    public int increaseViewCount(Long shareId);
    
    /**
     * 增加下载次数
     * 
     * @param shareId 分享ID
     * @return 结果
     */
    public int increaseDownloadCount(Long shareId);
    
    /**
     * 根据文件ID和用户ID查询分享
     * 
     * @param fileId 文件ID
     * @param userId 用户ID
     * @return 文件分享
     */
    public SysFileShare selectSysFileShareByFileIdAndUserId(@Param("fileId") Long fileId, @Param("userId") Long userId);
    
    /**
     * 根据文件夹ID和用户ID查询分享
     * 
     * @param folderId 文件夹ID
     * @param userId 用户ID
     * @return 文件分享
     */
    public SysFileShare selectSysFileShareByFolderIdAndUserId(@Param("folderId") Long folderId, @Param("userId") Long userId);
    
    /**
     * 根据文件ID删除分享
     * 
     * @param fileId 文件ID
     * @return 结果
     */
    public int deleteSysFileShareByFileId(Long fileId);
}
