package com.ruoyi.group.service;

import com.ruoyi.group.domain.dto.CustGroupQueryDTO;
import com.ruoyi.group.domain.entity.CustGroup;
import com.ruoyi.group.domain.vo.CustGroupVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 客群Service接口
 *
 * @author ruoyi
 */
public interface ICustGroupService {

    /**
     * 查询客群列表
     */
    List<CustGroupVO> listCustGroup(CustGroupQueryDTO dto);

    /**
     * 根据ID查询客群详情
     */
    CustGroupVO getCustGroup(Long id);

    /**
     * 校验当前用户是否有客群查看权限
     */
    void checkCustGroupViewPermission(Long id);

    /**
     * 异步创建客群（模板导入）
     * gridType、regionGridIds、drawGridIds 从 custGroup 中获取
     *
     * @param custGroup 客群实体（包含 gridType、regionGridIds、drawGridIds）
     * @param file      Excel文件
     * @return 客群ID
     */
    String createCustGroupByTemplate(CustGroup custGroup, MultipartFile file);

    /**
     * 更新客群（模板导入）
     * gridType、regionGridIds、drawGridIds 从 custGroup 中获取
     *
     * @param custGroup 客群实体（包含 gridType、regionGridIds、drawGridIds）
     * @param file      Excel文件
     * @return 结果消息
     */
    String updateCustGroupByTemplate(CustGroup custGroup, MultipartFile file);

    /**
     * 删除客群
     */
    String deleteCustGroup(List<Long> idList);

    /**
     * 检查客群名称是否存在
     */
    boolean checkGroupNameExist(String groupName);

    /**
     * 查询客群创建状态
     */
    String getCreateStatus(Long id);

    /**
     * 更新动态客群（定时任务调用）
     */
    void updateDynamicCustGroups();

    /**
     * 检查并禁用过期客群（定时任务调用）
     */
    void checkAndDisableExpiredGroups();

    /**
     * 获取所有已有的客群标签列表
     *
     * @return 标签列表
     */
    List<String> getAllGroupTags();

}
