package com.pig4cloud.pig.marketing.service;


import com.pig4cloud.pig.common.core.util.R;
import com.pig4cloud.pig.marketing.api.dto.config.*;
import com.pig4cloud.pig.marketing.api.vo.config.*;
import jakarta.validation.Valid;

import java.util.List;


/**
 * @author: lwh
 * @date: 2025-07-16
 * @description: TODO
 */

public interface MarketingConfigService {
	/**
	 * 添加分组
	 * @param reqDto 添加分组入参
	 * @return Boolean
	 */
	R addMarketingConfigGroup(AddMarketingGroupDTO reqDto);

	/**
	 * 删除分组
	 * @param reqDto 入参
	 * @return Boolean
	 */
	Boolean delMarketingConfigGroup(DelMarketingGroupDTO reqDto);

	/**
	 * 根据ID查询分组详情
	 * @param id ID
	 * @return 分组详情
	 */
	R getMarketingGroupDetail(Long id);

	/**
	 * 修改域名分组
	 * @param reqDto 修改域名分组入参
	 * @return Boolean
	 */
	R modMarketingGroupDomain(ModMarketingGroupDomainDTO reqDto);

	/**
	 * 获取域名分组列表
	 * @return 域名分组列表
	 */
	List<GetMarketingDomainGroupVO> getMarketingDomainGroupList();

	/**
	 * 修改分组IP
	 * @param reqDto 修改IP分组入参
	 * @return R
	 */
	R modMarketingGroupIp(ModMarketingGroupIPDTO reqDto);

	/**
	 * 获取ip分组列表
	 * @return ip分组列表
	 */
	List<GetMarketingIpGroupVO> getMarketingIpGroupList();

	/**
	 * 获取IP集合
	 * @return IP集合
	 */
    List<GetMarketingConfigIpListVO> getMarketingConfigIpList();

	/**
	 * 添加IP集合
	 * @param reqDto 添加IP集合入参
	 * @return ID
	 */
	Boolean addMarketingConfigIpList(@Valid AddMarketingConfigIpListDTO reqDto);

	/**
	 * 删除IP集合
	 * @param id id
	 * @return Boolean
	 */
	Boolean delMarketingConfigIpList(Long id);

	/**
	 * 获取域名集合
	 * @return 域名集合
	 */
	List<GetMarketingConfigDomainListVO> getMarketingConfigDomainList();

	/**
	 * 添加域名集合
	 * @param reqDto 添加域名集合入参
	 * @return Boolean
	 */
	Boolean addMarketingConfigDomainList(@Valid AddMarketingConfigDomainListDTO reqDto);

	/**
	 * 删除域名集合
	 * @param id id
	 * @return Boolean
	 */
	Boolean delMarketingConfigDomainList(Long id);

	/**
	 * 查询全局配置信息
	 * @return 全局配置信息
	 */
	GetMarketingGlobalConfigVO getMarketingGlobalConfig();

	/**
	 * 设置全局配置信息
	 * @param reDto 全局配置信息
	 * @return 全局配置信息
	 */
	Boolean setMarketingGlobalConfig(GetMarketingGlobalConfigVO reDto);
}
