package ink.wgink.module.instantmessage.service;

import ink.wgink.module.instantmessage.pojo.bos.NoticeBO;
import ink.wgink.module.instantmessage.pojo.bos.NoticeTargetBO;
import ink.wgink.module.instantmessage.pojo.vos.NoticeSendVO;
import ink.wgink.module.instantmessage.pojo.vos.NoticeVO;
import ink.wgink.pojo.session.WebSocketSession;

import java.util.List;

/**
 * When you feel like quitting. Think about why you started
 * 当你想要放弃的时候，想想当初你为何开始
 *
 * @ClassName: IMessageService
 * @Description: 消息
 * @Author: wanggeng
 * @Date: 2021/1/14 3:28 下午
 * @Version: 1.0
 */
public interface IMessageService {

    /**
     * 通知
     *
     * @param noticeSendVO
     */
    void notice(NoticeSendVO noticeSendVO) throws Exception;

    /**
     * 通知
     *
     * @param noticeBO 通知内容
     */
    void notice(NoticeBO noticeBO);

    /**
     * 通知
     *
     * @param clientName 客户端名称
     * @param noticeBO   通知内容
     */
    void notice(String clientName, NoticeBO noticeBO);

    /**
     * 通知
     *
     * @param noticeTargetBO 通知内容
     */
    void notice(NoticeTargetBO noticeTargetBO);

    /**
     * 通知
     *
     * @param clientName     客户端名称
     * @param noticeTargetBO 通知内容
     */
    void notice(String clientName, NoticeTargetBO noticeTargetBO);

    /**
     * 通知并保存
     *
     * @param noticeBO
     */
    void saveNotice(NoticeVO noticeVO, boolean isSave) throws Exception;

    /**
     * 删除通知
     *
     * @param serviceIds
     */
    void delete(List<String> serviceIds);

    /**
     * 通知未发送消息的用户
     *
     * @param 当前会话
     */
    void noticeUnSendByUserId(WebSocketSession webSocketSession);

}
