package com.njcn.rdms.module.system.service.notice;

import com.njcn.rdms.framework.common.pojo.PageResult;
import com.njcn.rdms.module.system.controller.admin.notice.vo.NoticePageReqVO;
import com.njcn.rdms.module.system.controller.admin.notice.vo.NoticeSaveReqVO;
import com.njcn.rdms.module.system.dal.dataobject.notice.NoticeDO;

import java.util.List;

/**
 * 通知公告 Service 接口
 */
public interface NoticeService {

    /**
     * 创建通知公告
     *
     * @param createReqVO 通知公告
     * @return 编号
     */
    Long createNotice(NoticeSaveReqVO createReqVO);

    /**
     * 更新通知公告
     *
     * @param reqVO 通知公告
     */
    void updateNotice(NoticeSaveReqVO reqVO);

    /**
     * 删除通知公告
     *
     * @param id 编号
     */
    void deleteNotice(Long id);

    /**
     * 批量删除通知公告
     *
     * @param ids 编号列表
     */
    void deleteNoticeList(List<Long> ids);

    /**
     * 获得通知公告分页列表
     *
     * @param reqVO 分页条件
     * @return 部门分页列表
     */
    PageResult<NoticeDO> getNoticePage(NoticePageReqVO reqVO);

    /**
     * 获得通知公告
     *
     * @param id 编号
     * @return 通知公告
     */
    NoticeDO getNotice(Long id);

    /**
     * 获取最近 N 条公告（工作台首页用）：仅正常状态，可按 type 过滤。
     *
     * @param size 条数，默认 3
     * @param type 公告类型（{@link com.njcn.rdms.module.system.enums.notice.NoticeTypeEnum}），null 表示不过滤
     * @return 公告列表
     */
    List<NoticeDO> getRecentNotices(Integer size, Integer type);

}
