zhanghua
2025-04-14 1cad14bca191807e18705c3a5526eda8151be439
ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java
@@ -35,7 +35,6 @@
import javax.annotation.Resource;
import javax.mail.internet.MimeMessage;
import javax.xml.ws.Response;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -83,20 +82,39 @@
    RestTemplate restTemplate;
    @Override
    @SneakyThrows
    @Transactional(rollbackFor = Exception.class)
    public void sendSMS(Message message) {
        Integer messageStatus = sendMessages(message);
        if (messageStatus == 2) {
            message.setStatus(2);
            message.setRespondResult("发送成功");
        }
        if (messageStatus == 3) {
            message.setStatus(3);
            message.setRespondResult("发送失败");
        }
        message.setUpdateTime(new Date());
        message.setSendTime(new Date());
        messageMapper.updateById(message);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void sendMessage(Message message) {
        Message savedMessage = messageMapper.selectOne(new LambdaQueryWrapper<Message>()
                .eq(Message::getTargetTo, message.getTargetTo())
                .eq(Message::getTargetFrom, message.getTargetFrom())
                .eq(Message::getBody, message.getBody())
                .eq(Message::getStatus, 1)
                .eq(Message::getHead, message.getHead()));
        if (savedMessage != null) {
            messageMapper.deleteById(savedMessage);
        }
//        Message savedMessage = messageMapper.selectOne(new LambdaQueryWrapper<Message>()
//                .eq(Message::getTargetTo, message.getTargetTo())
//                .eq(Message::getTargetFrom, message.getTargetFrom())
//                .eq(Message::getBody, message.getBody())
//                .eq(Message::getStatus, 1)
//                .eq(Message::getHead, message.getHead()));
//        if (savedMessage != null) {
//            messageMapper.deleteById(savedMessage);
//        }
        ArrayList<Long> ids = new ArrayList<>();
        ArrayList<Message> ids = new ArrayList<>();
        message.setTargetFrom(umsAdminMapper.selectById(message.getCreateUser()).getUsername());
        if (message.getId() == null) {
            for (String receive : message.getTargetTo().split(",")) {
@@ -106,37 +124,39 @@
                sendMessage.setSendTime(new Date());
                sendMessage.setTargetTo(receive);
                sendMessage.setSendTime(new Date());
                sendMessage.setPhoneNumber(umsAdminMapper.selectById(receive).getMobile());
                sendMessage.setPhoneNumber(message.getTargetTo());
                if (ChannelCode.INNER.equals(message.getChannelCode())) {
                    sendMessage.setIsView(0);
                }
                this.save(sendMessage);
                ids.add(sendMessage.getId());
                ids.add(sendMessage);
            }
        }
        switch (message.getChannelCode()) {
            //邮件发送
            case ChannelCode.SMS:
                sendSMS(message, ids);
                break;
            //短信发送
            case ChannelCode.MAIL:
                sendMail(message);
                break;
            case ChannelCode.INNER:
                break;
            default:
                throw new ApiException("未匹配到该类型");
        }
//        switch (message.getChannelCode()) {
//            //短信发送
//            case ChannelCode.SMS:
//                sendSMS(message, ids);
//                break;
//            //邮件发送
//            case ChannelCode.MAIL:
//                sendMail(message);
//                break;
//            case ChannelCode.INNER:
//                break;
//            default:
//                throw new ApiException("未匹配到该类型");
//        }
    }
    @SneakyThrows
    @Transactional(rollbackFor = Exception.class)
    void sendSMS(Message message, List<Long> mesIds) {
        String[] ids = message.getTargetTo().split(",");
        String[] mobiles = new String[ids.length];
        for (int i = 0; i < ids.length; i++) {
            mobiles[i] = umsAdminMapper.selectById(ids[i]).getMobile();
    public void sendSMS(Message message, List<Message> messageList) {
        List<String> mobiles = new ArrayList<>();
        List<Long> mesIds = new ArrayList<>();
        for (Message m : messageList) {
            mobiles.add(m.getPhoneNumber());
            mesIds.add(m.getId());
        }
        message.setPhoneNumber(StringUtils.join(mobiles, ","));
        Integer messageStatus = sendMessages(message);
@@ -212,12 +232,15 @@
        HttpEntity<String> stringHttpEntity = new HttpEntity<>(Base64Utils.encodeToString(objectMapper.writeValueAsBytes(mac)), httpHeaders);
        ResponseEntity<String> response = restTemplate.postForEntity(url + "/sms/submit", sendReq, String.class);
        SendRes sendRes = objectMapper.readValue(response.getBody(), SendRes.class);
        if (sendRes.getRspcod().equals("success")) {
            return 2;
        } else {
            return 3;
        if(com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank( response.getBody())) {
            SendRes sendRes = objectMapper.readValue(response.getBody(), SendRes.class);
            if (sendRes.getRspcod().equals("success")) {
                return 2;
            } else {
                return 3;
            }
        }
        return 3;
    }
    //发送邮件