package com.moka.gdtauto.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.moka.gdtauto.entity.AdPlanCreative;

/**
 * 广告计划创意服务接口
 * 
 * @author moka
 * @since 2026-02-24
 */
public interface AdPlanCreativeService extends IService<AdPlanCreative> {

    /**
     * 创建广告计划创意
     * 
     * @param adPlanCreative 广告计划创意
     * @return 创意ID
     */
    Long createAdPlanCreative(AdPlanCreative adPlanCreative);

    /**
     * 批量创建广告计划创意
     * 
     * @param adPlanCreatives 广告计划创意列表
     * @return 是否成功
     */
    boolean batchCreateAdPlanCreatives(List<AdPlanCreative> adPlanCreatives);

    /**
     * 更新广告计划创意
     * 
     * @param adPlanCreative 广告计划创意
     * @return 是否成功
     */
    boolean updateAdPlanCreative(AdPlanCreative adPlanCreative);

    /**
     * 删除广告计划创意
     * 
     * @param creativeId 创意ID
     * @return 是否成功
     */
    boolean deleteAdPlanCreative(Long creativeId);

    /**
     * 根据计划ID获取创意列表
     * 
     * @param planId 计划ID
     * @return 创意列表
     */
    List<AdPlanCreative> getCreativesByPlanId(Long planId);

    /**
     * 获取广告计划创意列表（分页）
     * 
     * @param planId 计划ID（可选）
     * @param status 状态（可选）
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 创意分页列表
     */
    Page<AdPlanCreative> getAdPlanCreatives(Long planId, Integer status, Integer pageNum, Integer pageSize);

    /**
     * 获取广告计划创意详情
     * 
     * @param creativeId 创意ID
     * @return 创意信息
     */
    AdPlanCreative getAdPlanCreativeById(Long creativeId);

    List<AdPlanCreative> getCreativesByConfId(Long confId);

    void syncAdPlanCreativeStatus(Long confId);
    void adPlanCreativeStatus(Long confId);
}
