package com.moka.gdtauto.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.moka.gdtauto.entity.TencentAdsAdgroup;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;

/**
 * 腾讯广告组Mapper
 * 提供广告组相关的数据库操作方法
 * 
 * @author moka
 * @since 2026-02-04
 */
@Mapper
public interface TencentAdsAdgroupMapper extends BaseMapper<TencentAdsAdgroup> {
    
    /**
     * 批量插入或更新广告组数据
     * 使用 INSERT INTO ... ON DUPLICATE KEY UPDATE
     * 
     * @param list 广告组列表
     * @return 影响行数
     */
    int batchInsertOrUpdate(List<TencentAdsAdgroup> list);
    
    /**
     * 按状态统计广告组数量
     * 
     * @return 状态和对应数量的列表
     */
    List<Map<String, Object>> selectCountByStatus();
    
    /**
     * 按营销场景统计广告组数量
     * 
     * @return 营销场景和对应数量的列表
     */
    List<Map<String, Object>> selectCountByMarketingScene();
    
    /**
     * 按账户统计广告组数量
     * 
     * @return 账户ID和对应广告组数量的列表
     */
    List<Map<String, Object>> selectCountByAccount();
    
    /**
     * 统计今日新增广告组数量
     * 
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 今日新增数量
     */
    long selectTodayCount(String startTime, String endTime);
    
    /**
     * 统计指定时间段内的广告组数量
     * 
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 时间段内数量
     */
    long selectPeriodCount(String startTime, String endTime);
}
