package cn.axzo.workflow.starter.handler;

import cn.axzo.workflow.common.model.response.mq.MessagePushDTO;
import org.springframework.core.Ordered;

/**
 * 引擎广播发送消息的事件， 业务一般无需实现，该事件由引擎的中继服务去处理待办相关动作的。
 *
 * @author wangli
 * @since 2024/5/27 16:25
 */
public interface MessageNotificationEventHandler extends Ordered {

    /**
     * 站内信推送
     *
     * @param messagePushDTO
     */
    void pushNotice(MessagePushDTO messagePushDTO);

    /**
     * 待办推送
     *
     * @param messagePushDTO
     */
    void pushPending(MessagePushDTO messagePushDTO);

    /**
     * 完成待办
     *
     * @param messagePushDTO
     */
    void completePending(MessagePushDTO messagePushDTO);

    /**
     * 审批失败，恢复待办
     *
     * @param messagePushDTO
     */
    void rollbackPending(MessagePushDTO messagePushDTO);

    /**
     * 抄送流程
     *
     * @param messagePushDTO
     */
    void carbonCopy(MessagePushDTO messagePushDTO);

    /**
     * 完成抄送
     *
     * @param messagePushDTO
     */
    void carbonCopyComplete(MessagePushDTO messagePushDTO);

    /**
     * 短信推送
     *
     * @param messagePushDTO
     */
    void pushSms(MessagePushDTO messagePushDTO);
}
