package com.qmth.distributed.print.business.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.qmth.distributed.print.business.entity.BasicMessage;
import com.qmth.distributed.print.business.entity.ExamTask;
import com.qmth.distributed.print.business.enums.MessageEnum;
import com.qmth.teachcloud.common.entity.SysUser;

import java.util.List;

/**
 * @Description: 短信消息发送
 * @Author: CaoZixuan
 * @Date: 2021-04-28
 */
public interface BasicMessageService extends IService<BasicMessage> {

    /**
     * 保存消息发送日志（以下参数必传）
     *
     * @param userId         接收人id
     * @param mobileNumber   接收人电话
     * @param businessId     业务id
     * @param variableParams 变量参数
     * @param messageType    消息类型
     */
    void saveMessageSendLog(Long userId, String mobileNumber, Long businessId, String variableParams, Long createId, MessageEnum messageType, String remark);

    /**
     * 命题任务审核消息处理
     *
     * @param examTaskIdList 命题任务主键集合
     * @param messageType    消息类型枚举
     * @param sysUser        发送信息的用户
     */
    void noticeOfExamTaskAudit(List<Long> examTaskIdList, MessageEnum messageType, SysUser sysUser);

    /**
     * 发送给命题老师-命题待办提醒
     *
     * @param examTasks
     */
    void sendNoticeTaskCreate(ExamTask... examTasks);

    /**
     * 发送给考务老师-审核待办提醒、修改审核待办提醒
     *
     * @param examTask
     * @param messageType
     */
    void sendNoticeTaskAuditCreateOrReview(ExamTask examTask, MessageEnum messageType);

    /**
     * 发送到期预警、逾期提醒
     * @param messageType
     * @param userId
     * @param ids
     */
    void sendNoticeExpireOrOverdue(MessageEnum messageType, Long userId, List<String> ids);

    /**
     * 重发失败短信
     */
    void resendSmsTask();
}
