package com.srs.routine.service;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.srs.routine.domain.NotificationManagement;
import com.srs.routine.domain.dto.SendNotificationDto;
import com.srs.comprehensive.domain.SrsGrade;

/**
 * 通知管理Service接口
 *
 * @author srs
 * @date 2025-07-30
 */
public interface INotificationManagementService extends IService<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 ids 需要删除的通知管理主键集合
     * @return 结果
     */
    int deleteNotificationManagementByIds(Long[] ids);

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

    /**
     * 获取年级列表
     *
     * @return 年级列表
     */
    List<SrsGrade> getGradeList();

    /**
     * 按年级发送通知
     *
     * @param sendNotificationDto 发送通知DTO
     * @return 结果
     */
    int sendNotificationByGrades(SendNotificationDto sendNotificationDto);

    /**
     * 根据年级获取学生学号列表
     *
     * @param gradeIds 年级ID列表
     * @return 学生学号列表
     */
    List<String> getStudentNosByGrades(List<String> gradeIds);

    /**
     * 查询当前用户发送的通知列表
     *
     * @param notificationManagement 通知管理
     * @return 通知管理集合
     */
    List<NotificationManagement> selectNotificationManagementListBySender(NotificationManagement notificationManagement);
}
