package com.gic.haoban.manage.service.service.chat;

import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.BusinessException;
import com.gic.api.base.commons.Page;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityHmQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivitySearchQDTO;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivity;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatActivityHmBO;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatHmBO;

import java.util.List;

/**
 * 社群邀请有礼表(TabHaobanGroupChatActivity)表服务接口
 *
 * @author makejava
 * @since 2024-09-27 16:09:43
 */
public interface GroupChatActivityService {

    /**
     * 保存社群活动
     * @param qdto
     * @return
     * @throws BusinessException
     */
    Long saveActivity(GroupChatActivityQDTO qdto) throws BusinessException;

    /**
     * 获取活动详情
     * @param chatActivityId
     * @return
     */
    GroupChatActivityDTO getActivityDetail(String enterpriseId, Long chatActivityId);

    /**
     * 删除活动缓存
     * @param enterpriseId  企业id
     * @param chatActivityId 活动id
     */
    void delActivityDetailCache(String enterpriseId,Long chatActivityId);

    /**
     * 获取活动详情（缓存）
     * @param chatActivityId
     * @return
     */
    GroupChatActivityDTO getActivityDetailCache(String enterpriseId,Long chatActivityId);

    /**
     * 通过活动id列表获取
     * @param enterpriseId  企业id
     * @param chatActivityIdList 活动id列表
     * @return
     */
    List<TabGroupChatActivity> listByActivityIds(String enterpriseId, List<Long> chatActivityIdList);

    /**
     * 通过活动id列表获取（包含删除的）
     * @param enterpriseId
     * @param chatActivityIdList
     * @return
     */
    List<TabGroupChatActivity> listByActivityIdsDel(String enterpriseId, List<Long> chatActivityIdList);

    /**
     * 分页查询活动列表
     * @param enterpriseId  企业id
     * @param searchQDTO    搜索条件
     * @return
     */
    Page<GroupChatActivityDTO> pageActivity(String enterpriseId, GroupChatActivitySearchQDTO searchQDTO, BasePageInfo pageInfo);

    /**
     * 终止活动
     * @param enterpriseId  企业id
     * @param chatActivityId 活动id
     */
    GroupChatActivityDTO stopActivity(String enterpriseId, Long chatActivityId) throws BusinessException;

    /**
     * 删除活动
     * @param enterpriseId  企业id
     * @param chatActivityId 活动id
     */
    void delActivity(String enterpriseId, Long chatActivityId) throws BusinessException;

    /**
     * 更新活动状态
     * @param enterpriseId  企业id
     * @param chatActivityId 活动id
     * @param status    状态
     */
    void updateStatusActivity(String enterpriseId, Long chatActivityId,Integer status);

    /**
     * 获取有效的活动计划列表
     * @param enterpriseId  企业id
     * @return
     */
    List<TabGroupChatActivity> listEffectiveActivity(String enterpriseId);

    /**
     * 定时活动状态更新
     */
    void activityQuartzUpdateStatus();

    /**
     * 获取入群活码列表
     * @param activityHmQDTO
     * @return
     */
    List<GroupChatActivityHmBO> listGroupChatHm(GroupChatActivityHmQDTO activityHmQDTO) throws BusinessException;
}
