package org.nl.system.service.notice;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.domain.query.PageQuery;
import org.nl.system.service.notice.dao.SysNotice;

import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
* @description 服务接口
* @author lyd
* @date 2023-05-09
**/
public interface ISysNoticeService extends IService<SysNotice> {

    /**
    * 查询数据分页
    * @param whereJson 条件
    * @param pageable 分页参数
    * @return IPage<SysNotice>
    */
    IPage<SysNotice> queryAll(Map whereJson, PageQuery pageable);

    /**
    * 创建
    * @param entity /
    */
    void create(SysNotice entity);

    /**
    * 编辑
    * @param entity /
    */
    void update(SysNotice entity);

    /**
    * 多选删除
    * @param ids /
    */
    void deleteAll(Set<String> ids);

    /**
     * 获取未读的接收消息条数
     */
    Integer countByReceiveNotRead();

    /**
     * 获取不同类型的前三条信息
     * @return
     */
    LinkedList<List<SysNotice>> pageByReceive();

    /**
     * 标记已读
     * @param id
     */
    void read(String id);

    /**
     * 处理信息
     * @param id
     */
    void deal(String id);

    /**
     * 批量已读
     * @param jsonObject
     */
    void changeRead(JSONObject jsonObject);

    /**
     * 写入信息
     * @param msg
     * @param title
     * @param type
     */
    void createNotice(String msg, String title, String type);
}
