package com.haha.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.haha.entity.dto.AnnouncementQueryDTO;
import com.haha.entity.Announcement;

import java.util.List;

/**
 * 系统公告服务接口
 */
public interface AnnouncementService extends IService<Announcement> {

    /**
     * 分页查询公告列表
     *
     * @param page     页码
     * @param pageSize 每页条数
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    IPage<Announcement> getPage(int page, int pageSize, AnnouncementQueryDTO queryDTO);

    /**
     * 发布公告
     *
     * @param id          公告ID
     * @param publisherId 发布人ID
     * @param publisherName 发布人名称
     * @return 是否成功
     */
    boolean publish(Long id, Long publisherId, String publisherName);

    /**
     * 下线公告
     *
     * @param id 公告ID
     * @return 是否成功
     */
    boolean offline(Long id);

    /**
     * 置顶/取消置顶
     *
     * @param id    公告ID
     * @param isTop 是否置顶
     * @return 是否成功
     */
    boolean setTop(Long id, Integer isTop);

    /**
     * 获取小程序端公告列表（已发布）
     *
     * @param limit 数量限制
     * @return 公告列表
     */
    List<Announcement> getAppList(int limit);

    /**
     * 获取公告详情（并增加阅读次数）
     *
     * @param id 公告ID
     * @return 公告详情
     */
    Announcement getDetail(Long id);
}
