From c4aa721a61edb5ff4502d621897c266b98ef3d1c Mon Sep 17 00:00:00 2001
From: baizonghao <1719256278@qq.com>
Date: 星期五, 24 二月 2023 11:18:58 +0800
Subject: [PATCH] 按报警点位统计,按区域统计

---
 ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java |  141 ++++++++++++++++++++++++++++++++---------------
 1 files changed, 96 insertions(+), 45 deletions(-)

diff --git a/ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java
index 8c09bae..015b95e 100644
--- a/ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java
+++ b/ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java
@@ -1,24 +1,21 @@
 package com.ycl.service.message.impl;
 
-import cn.hutool.core.net.url.UrlBuilder;
-import cn.hutool.core.net.url.UrlPath;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.ycl.controller.video.common.constant.ChannelCode;
-import com.ycl.controller.video.common.util.CommonUtils;
+import com.ycl.common.constant.ChannelCode;
+import com.ycl.common.util.CommonUtils;
 import com.ycl.dto.message.MessageParam;
 import com.ycl.entity.message.Message;
 import com.ycl.entity.message.SendReq;
 import com.ycl.entity.message.SendRes;
-import com.ycl.entity.user.UmsAdmin;
 import com.ycl.exception.ApiException;
 import com.ycl.mapper.message.MessageMapper;
 import com.ycl.mapper.user.UmsAdminMapper;
 import com.ycl.service.message.IMessageService;
 import com.ycl.utils.MD5Util;
+import com.ycl.vo.message.MessageVO;
 import lombok.SneakyThrows;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -38,6 +35,7 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Properties;
 import java.util.stream.Collectors;
 
 /**
@@ -82,25 +80,35 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public String sendMessage(Message message) {
+    public void sendMessage(Message message) {
+
         Message savedMessage = messageMapper.selectOne(new LambdaQueryWrapper<Message>()
                 .eq(Message::getTargetTo, message.getTargetTo())
-                .eq(Message::getTargetFrom, message.getTargetFrom()));
+                .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<>();
-
-        for (String receive : message.getTargetTo().split(",")) {
-            Message sendMessage = new Message();
-            BeanUtils.copyProperties(message, sendMessage);
-            sendMessage.setCreateTime(new Date());
-            sendMessage.setSendTime(new Date());
-            sendMessage.setTargetTo(receive);
-            sendMessage.setSendTime(new Date());
-            this.save(sendMessage);
-            ids.add(sendMessage.getId());
+        message.setTargetFrom(umsAdminMapper.selectById(message.getCreateUser()).getUsername());
+        if (message.getId() == null) {
+            for (String receive : message.getTargetTo().split(",")) {
+                Message sendMessage = new Message();
+                BeanUtils.copyProperties(message, sendMessage);
+                sendMessage.setCreateTime(new Date());
+                sendMessage.setSendTime(new Date());
+                sendMessage.setTargetTo(receive);
+                sendMessage.setSendTime(new Date());
+                sendMessage.setPhoneNumber(umsAdminMapper.selectById(receive).getMobile());
+                if (ChannelCode.INNER.equals(message.getChannelCode())){
+                    sendMessage.setIsView(0);
+                }
+                this.save(sendMessage);
+                ids.add(sendMessage.getId());
+            }
         }
         switch (message.getChannelCode()) {
             //閭欢鍙戦��
@@ -111,14 +119,69 @@
             case ChannelCode.MAIL:
                 sendMail(message);
                 break;
+            case ChannelCode.INNER:
+                break;
             default:
                 throw new ApiException("鏈尮閰嶅埌璇ョ被鍨�");
         }
-        return "send message success!";
     }
 
     @SneakyThrows
-    private void sendSMS(Message message, List<Long> mesIds) {
+    @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();
+        }
+        message.setPhoneNumber(StringUtils.join(mobiles, ","));
+        Integer messageStatus = sendMessages(message);
+        Message messaged = new Message();
+        for (Long id : mesIds) {
+            if (messageStatus == 2) {
+                messaged.setStatus(2);
+                messaged.setRespondResult("鍙戦�佹垚鍔�");
+            }
+            if (messageStatus == 3) {
+                messaged.setStatus(3);
+                messaged.setRespondResult("鍙戦�佸け璐�");
+            }
+            messaged.setId(id);
+            messaged.setUpdateTime(new Date());
+            messaged.setSendTime(new Date());
+            messageMapper.updateById(messaged);
+        }
+    }
+
+    @Override
+    @SneakyThrows
+    @Transactional(rollbackFor = Exception.class)
+    public void sendMessageByPhone(Message message) {
+        Message sendMessage = new Message();
+        BeanUtils.copyProperties(message, sendMessage);
+        sendMessage.setCreateTime(new Date());
+        sendMessage.setSendTime(new Date());
+        sendMessage.setSendTime(new Date());
+        sendMessage.setTargetFrom(umsAdminMapper.selectById(message.getCreateUser()).getUsername());
+        this.save(sendMessage);
+        Integer messageStatus = sendMessages(message);
+        Message messaged = new Message();
+        if (messageStatus == 2) {
+            messaged.setStatus(2);
+            messaged.setRespondResult("鍙戦�佹垚鍔�");
+        }
+        if (messageStatus == 3) {
+            messaged.setStatus(3);
+            messaged.setRespondResult("鍙戦�佸け璐�");
+        }
+        messaged.setId(sendMessage.getId());
+        messaged.setUpdateTime(new Date());
+        messaged.setSendTime(new Date());
+        messageMapper.updateById(messaged);
+    }
+
+    @SneakyThrows
+    private Integer sendMessages(Message message) {
         String context = "銆�" + message.getHead() + "銆�" + message.getBody();
         String addSerial = "";
         SendReq sendReq = new SendReq();
@@ -126,12 +189,7 @@
         sendReq.setApId(apId);
         sendReq.setSign(sign);
         sendReq.setContext(context);
-        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();
-        }
-        sendReq.setMobiles(StringUtils.join(mobiles, ","));
+        sendReq.setMobiles(message.getPhoneNumber());
         sendReq.setAddSerial(addSerial);
 
         StringBuffer mac = new StringBuffer();
@@ -151,25 +209,10 @@
         HttpEntity<String> stringHttpEntity = new HttpEntity<>(Base64Utils.encodeToString(objectMapper.writeValueAsBytes(mac)), httpHeaders);
 
         SendRes sendRes = objectMapper.readValue(restTemplate.postForEntity(url, stringHttpEntity, String.class).getBody(), SendRes.class);
-        Message sendedMessage = new Message();
         if (sendRes.getRspcod().equals("success")) {
-            for (Long id : mesIds) {
-                sendedMessage.setStatus(2);
-                sendedMessage.setRespondResult("鍙戦�佹垚鍔�");
-                sendedMessage.setId(id);
-                sendedMessage.setUpdateTime(new Date());
-                sendedMessage.setSendTime(new Date());
-                messageMapper.updateById(sendedMessage);
-            }
+            return 2;
         } else {
-            for (Long id : mesIds) {
-                sendedMessage.setStatus(3);
-                sendedMessage.setRespondResult("鍙戦�佸け璐�");
-                sendedMessage.setSendTime(new Date());
-                sendedMessage.setId(id);
-                sendedMessage.setUpdateTime(new Date());
-                messageMapper.updateById(sendedMessage);
-            }
+            return 3;
         }
     }
 
@@ -180,6 +223,14 @@
         javaMailSender.setHost(sendHost);
         javaMailSender.setUsername(userName);
         javaMailSender.setPassword(password);
+        javaMailSender.setPort(465);
+        Properties properties = new Properties();
+        properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
+        properties.put("mail.smtp.auth", "true");//蹇呴』鏄瓧绗︿覆鑰屼笉鑳芥槸boolean鍚﹀垯鎶ラ敊
+        properties.put("mail.smtp.starttls.enable", "true");
+        properties.put("mail.smtp.timeout", "1000");
+        properties.put("mail.smtp.host", sendHost);
+        javaMailSender.setJavaMailProperties(properties);
         MimeMessage mimeMessage = javaMailSender.createMimeMessage();
         MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
         helper.setText(message.getBody());
@@ -195,9 +246,9 @@
     }
 
     @Override
-    public Page<Message> list(MessageParam messageParam) {
+    public Page<MessageVO> list(MessageParam messageParam) {
         Page<Message> page = new Page<>(messageParam.getCurrent(), messageParam.getPageSize());
-        return messageMapper.selectMessagePage(page,messageParam);
+        return messageMapper.selectMessagePage(page, messageParam);
     }
 
     @Override

--
Gitblit v1.8.0