package com.snack.server.module.notice.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.snack.server.module.notice.dto.req.NoticePageReq;
import com.snack.server.module.notice.dto.req.NoticeSaveReq;
import com.snack.server.module.notice.vo.NoticeVO;

import java.util.List;

/**
 * 公告 Service
 */
public interface NoticeService {

    /** 管理端：分页查询（含全部状态，含下线） */
    Page<NoticeVO> pageNotices(NoticePageReq req);

    /** 详情 */
    NoticeVO getNoticeById(Long id);

    /** 创建 */
    Long createNotice(NoticeSaveReq req, Long publisherId);

    /** 更新 */
    void updateNotice(NoticeSaveReq req);

    /** 删除 */
    void deleteNotice(Long id);

    /** 启用 / 禁用 */
    void updateStatus(Long id, Integer status);

    /** 置顶 / 取消置顶 */
    void updateTop(Long id, Integer isTop);

    /** 用户端：获取当前生效的公告（status=1 且在生效期内），置顶优先 */
    List<NoticeVO> listActiveNotices();

    /** 用户端：增加浏览量（详情页打开时调用） */
    void incrViewCount(Long id);
}
