package cn.iocoder.yudao.module.base.service.impl;

import cn.iocoder.yudao.common.BaseConstants;
import cn.iocoder.yudao.common.SystemEnum;
import cn.iocoder.yudao.module.base.constant.SchoolBaseConstants;
import cn.iocoder.yudao.module.base.service.SchoolNotifyMessageSendService;
import cn.iocoder.yudao.module.system.api.notify.NotifyMessageSendApi;
import cn.iocoder.yudao.module.system.api.notify.dto.NotifySendSingleToUserReqDTO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;

import static cn.iocoder.yudao.module.base.constant.SchoolBaseConstants.SCHOOL_NOTIFY_MESSAGE_TYPE_ADMIN;
import static cn.iocoder.yudao.module.base.constant.SchoolBaseConstants.SCHOOL_NOTIFY_MESSAGE_TYPE_MEMBER;

/**
 * @Description: 驾校站内信发送
 * @Author: 86187
 * @Date: 2025/04/07 17:02
 * @Version: 1.0
 */
@Service
@RequiredArgsConstructor
public class SchoolNotifyMessageSendServiceImpl implements SchoolNotifyMessageSendService {

    private final NotifyMessageSendApi sendApi;

    /**
     * 发送站内信
     *
     * @param userId  用户id
     * @param message 消息内容
     */
    @Override
    public void sendMessage(Long userId, String message, String type, Long tenantId) {
        NotifySendSingleToUserReqDTO dto = new NotifySendSingleToUserReqDTO();
        dto.setUserId(userId);
        dto.setSystemCode(SystemEnum.SCHOOL.getCode());
        dto.setTemplateCode(BaseConstants.TICKET_EMPLOY);

        // 准备发送参数
        Map<String, Object> templateParams = new HashMap<>();
        // 发送模版内容
        templateParams.put("text", message);
        dto.setTemplateParams(templateParams);

        // 发送消息
        if (SCHOOL_NOTIFY_MESSAGE_TYPE_ADMIN.equals(type)) {
            sendApi.sendSingleMessageToAdmin(dto, tenantId);
        } else if (SCHOOL_NOTIFY_MESSAGE_TYPE_MEMBER.equals(type)) {
            sendApi.sendSingleMessageToMember(dto, tenantId);
        }
    }
}
