package jnpf.notice.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jnpf.model.notice.domain.FtbNoticeAnnouncements;
import jnpf.model.notice.dto.FtbNoticeAnnouncementsDto;
import jnpf.model.notice.dto.MyNoticeAnnouncementsDto;
import jnpf.model.notice.dto.MyNoticeAnnouncementsMsgDto;
import jnpf.model.notice.req.announcement.InnerAppQueryAnnouncementListReq;
import jnpf.model.notice.req.announcement.InnerAppQueryMyAnnouncementListReq;
import jnpf.model.notice.req.announcement.InnerQueryMyWebAnnouncementListReq;
import jnpf.model.notice.req.announcement.QueryAnnouncementListReq;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author 许贵林
 * @description 针对表【ftb_notice_announcements(公告表)】的数据库操作Mapper
 * @createDate 2024-05-08 09:42:09
 * @Entity jnpf.notice.domain.FtbNoticeAnnouncements
 */
public interface FtbNoticeAnnouncementsMapper extends BaseMapper<FtbNoticeAnnouncements> {

    /**
     * web端分页查询公告信息
     * @param page
     * @param params
     * @return
     */
    Page<FtbNoticeAnnouncementsDto> getWebPageList(@Param("page") Page<FtbNoticeAnnouncements> page, @Param("params") QueryAnnouncementListReq params);

    /**
     * App端分页查询公告信息
     * @param page
     * @param params
     * @return
     */
    Page<FtbNoticeAnnouncementsDto> getAppPageList(@Param("page") Page<FtbNoticeAnnouncements> page, @Param("params") InnerAppQueryAnnouncementListReq params);

    /**
     * 分页查询我的公告信息
     * @param page
     * @param params
     * @return
     */
    Page<MyNoticeAnnouncementsDto> getMyWebPageList(@Param("page") Page<FtbNoticeAnnouncements> page, @Param("params") InnerQueryMyWebAnnouncementListReq params);
    /**
     * 获取当前用户公告列表的分页信息
     *
     * @param page 分页信息
     * @param params 查询当前用户公告列表的请求参数，包括分页信息和查询条件等
     * @return 返回包含当前用户公告列表的分页信息对象，其中包含公告数据和分页元数据
     */
    Page<MyNoticeAnnouncementsDto> getAppMyPageList(@Param("page") Page<FtbNoticeAnnouncements> page, @Param("params") InnerAppQueryMyAnnouncementListReq params);
    /**
     * 查询用户最新的3条记录
     *
     * @param userId 用户ID
     * @param num    数量
     * @return
     */
    List<MyNoticeAnnouncementsDto> getAppMyList(@Param("userId") String userId, @Param("num") Integer num);

    /**
     * 查询所有未读消息
     *
     * @param userId   用户ID
     * @param needRead 0:全部 1：非必读，2：必读
     * @return
     */
    List<MyNoticeAnnouncementsMsgDto> queryAllMyNoRead(@Param("userId") String userId, @Param("num") Integer num, @Param("needRead") Integer needRead);
    /**
     * web查询所有未读消息
     *
     * @param userId   用户ID
     * @param needRead 0:全部 1：非必读，2：必读
     * @return
     */
    List<MyNoticeAnnouncementsMsgDto> queryAllWebMyNoRead(@Param("userId") String userId, @Param("needRead") Integer needRead);
}




