package com.srs.routine.mapper;
import java.util.List;
import com.srs.comprehensive.domain.SrsGrade;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.srs.routine.domain.NotificationManagement;
import org.apache.ibatis.annotations.Param;

/**
 * 通知管理Mapper接口
 *
 * @author srs
 * @date 2025-07-30
 */
public interface NotificationManagementMapper extends BaseMapper<NotificationManagement> {
    /**
     * 查询通知管理
     *
     * @param id 通知管理主键
     * @return 通知管理
     */
    public NotificationManagement selectNotificationManagementById(Long id);

    /**
     * 查询通知管理列表
     *
     * @param notificationManagement 通知管理
     * @return 通知管理集合
     */
    List<NotificationManagement> selectNotificationManagementList(NotificationManagement notificationManagement);

    /**
     * 新增通知管理
     *
     * @param notificationManagement 通知管理
     * @return 结果
     */
    int insertNotificationManagement(NotificationManagement notificationManagement);

    /**
     * 修改通知管理
     *
     * @param notificationManagement 通知管理
     * @return 结果
     */
    int updateNotificationManagement(NotificationManagement notificationManagement);

    /**
     * 删除通知管理
     *
     * @param id 通知管理主键
     * @return 结果
     */
    int deleteNotificationManagementById(Long id);

    /**
     * 批量删除通知管理
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteNotificationManagementByIds(Long[] ids);

    /**
     * 查询年级列表
     *
     * @return 年级列表
     */
    List<SrsGrade> selectGradeList();

    /**
     *
     * 根据年级ID列表查询学生用户ID
     *
     * @param gradeIds 年级ID列表
     * @return 学生用户ID列表
     */
    List<Long> selectStudentIdsByGrades(@Param("gradeIds") List<String> gradeIds);

    /**
     * 根据年级ID列表查询学生学号列表
     *
     * @param gradeIds 年级ID列表
     * @return 学生学号列表
     */
    List<String> selectStudentNosByGrades(@Param("gradeIds") List<String> gradeIds);

    /**
     * 批量插入通知记录到cph_msg表
     *
     * @param notifications 通知记录列表
     * @return 结果
     */
    int batchInsertNotification(@Param("list") List<NotificationManagement> notifications);

    /**
     * 查询当前用户发送的通知列表
     *
     * @param notificationManagement 通知管理
     * @param senderId 发送人ID
     * @return 通知管理集合
     */
    List<NotificationManagement> selectNotificationManagementListBySender(@Param("notification") NotificationManagement notificationManagement, @Param("senderId") Long senderId);

    /**
     * 批量删除cph_msg表数据
     *
     * @param notificationList 通知列表
     * @return 结果
     */
    int batchDeleteCphMsg(@Param("list") List<NotificationManagement> notificationList);

    /**
     * 批量更新cph_msg表数据
     *
     * @param oldList 原数据列表
     * @param newList 新数据列表
     * @return 结果
     */
    int batchUpdateCphMsg(@Param("oldList") List<NotificationManagement> oldList, @Param("newList") List<NotificationManagement> newList);


}
