package cn.iocoder.yudao.common;

import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.yudao.common.dto.MessageDTO;
import cn.iocoder.yudao.module.system.api.notify.NotifyMessageSendApi;
import cn.iocoder.yudao.module.system.api.notify.dto.NotifySendSingleToUserReqDTO;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;

import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception0;

/**
 * 用于发送消息
 *
 * @author 小李
 * @date 17:15 2024/10/9
 **/
@Component
public class MessageSend {

    @Resource
    private NotifyMessageSendApi messageSendApi;

    /**
     * 通用消息发送
     *
     * @param messageDTO 消息对象
     * @author 小李
     * @date 9:58 2024/10/10
     **/
    public void send(MessageDTO messageDTO) {
        // 设置参数
        Map<String, Object> map = new HashMap<>();
        for (int i = 1; i <= messageDTO.getParamList().size(); i++) {
            map.put("key" + i, messageDTO.getParamList().get(i - 1));
        }
        if (CollectionUtil.isEmpty(messageDTO.getUserIds())){
            throw exception0(500, "没有接收人");
        }
        messageDTO.getUserIds().forEach(id -> {
            messageSendApi.sendSingleMessageToAdmin(
                    new NotifySendSingleToUserReqDTO()
                            .setUserId(id)
                            .setTemplateCode(messageDTO.getTemplateCode())
                            .setTemplateParams(map));
        });
    }
}
