package com.dora.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;

/**
 * 工作流复制统计Mapper接口
 */
@Mapper
public interface WorkflowCopyStatMapper {

    /**
     * 根据工作流创建者ID统计复制次数
     */
    Integer countCopiesByOwnerId(@Param("ownerId") Long ownerId);

    /**
     * 根据工作流ID统计复制次数
     */
    Integer countCopiesByWorkflowId(@Param("workflowId") Long workflowId);

    /**
     * 统计今日工作流复制次数
     */
    Long countTodayCopies(@Param("today") LocalDateTime today);

    /**
     * 插入工作流复制记录
     */
    int insertCopyRecord(@Param("workflowId") Long workflowId, 
                        @Param("ownerId") Long ownerId, 
                        @Param("copyUserId") Long copyUserId);
    
    /**
     * 检查用户是否已经使用过该工作流（用于防重复收益）
     */
    Integer countUserCopiesByWorkflowId(@Param("workflowId") Long workflowId, 
                                       @Param("copyUserId") Long copyUserId);
    
    /**
     * 统计工作流的不重复用户使用数（用于收益计算）
     */
    Integer countUniqueUsersByWorkflowId(@Param("workflowId") Long workflowId);

    /**
     * 统计工作流的不重复用户使用数（排除创作者本人）
     */
    Integer countUniqueUsersByWorkflowIdExcludeOwner(@Param("workflowId") Long workflowId, 
                                                    @Param("ownerId") Long ownerId);

    /**
     * 统计工作流复制次数（排除创作者本人）
     */
    Integer countCopiesByWorkflowIdExcludeOwner(@Param("workflowId") Long workflowId, 
                                              @Param("ownerId") Long ownerId);
} 