From aeea62d121a1a8fd4475da30f1ef8b44b4776c7b Mon Sep 17 00:00:00 2001
From: wl <173@qq.com>
Date: 星期三, 04 一月 2023 14:02:47 +0800
Subject: [PATCH] fix: 店铺消息发送

---
 ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java |  119 +++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 95 insertions(+), 24 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..e0c1a53 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;
 
 /**
@@ -83,24 +81,30 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public String sendMessage(Message message) {
-        Message savedMessage = messageMapper.selectOne(new LambdaQueryWrapper<Message>()
-                .eq(Message::getTargetTo, message.getTargetTo())
-                .eq(Message::getTargetFrom, message.getTargetFrom()));
-        if (savedMessage != null) {
-            messageMapper.deleteById(savedMessage);
+
+        if (!StringUtils.equals(message.getChannelCode(),ChannelCode.SMS)){
+            Message savedMessage = messageMapper.selectOne(new LambdaQueryWrapper<Message>()
+                    .eq(Message::getTargetTo, message.getTargetTo())
+                    .eq(Message::getTargetFrom, message.getTargetFrom())
+                    .eq(Message::getBody, message.getBody())
+                    .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());
+                this.save(sendMessage);
+                ids.add(sendMessage.getId());
+            }
         }
         switch (message.getChannelCode()) {
             //閭欢鍙戦��
@@ -110,6 +114,8 @@
             //鐭俊鍙戦��
             case ChannelCode.MAIL:
                 sendMail(message);
+                break;
+            case ChannelCode.INNER:
                 break;
             default:
                 throw new ApiException("鏈尮閰嶅埌璇ョ被鍨�");
@@ -173,6 +179,63 @@
         }
     }
 
+    @Override
+    @SneakyThrows
+    public String sendMessageByPhone(Message message) {
+        Message sendMessage = new Message();
+        BeanUtils.copyProperties(message, sendMessage);
+        sendMessage.setCreateTime(new Date());
+        sendMessage.setSendTime(new Date());
+        sendMessage.setSendTime(new Date());
+        this.save(sendMessage);
+
+        String context = "銆�" + message.getHead() + "銆�" + message.getBody();
+        String addSerial = "";
+        SendReq sendReq = new SendReq();
+        sendReq.setEcName(ecName);
+        sendReq.setApId(apId);
+        sendReq.setSign(sign);
+        sendReq.setContext(context);
+        sendReq.setMobiles(message.getPhoneNumber());
+        sendReq.setAddSerial(addSerial);
+
+        StringBuffer mac = new StringBuffer();
+        mac.append(ecName);
+        mac.append(apId);
+        mac.append(sendReq.getMobiles());
+        mac.append(context);
+        mac.append(sign);
+        mac.append(addSerial);
+        sendReq.setMac(MD5Util.md5Encrypt32Lower(mac.toString()));
+
+        HttpHeaders httpHeaders = new HttpHeaders();
+        httpHeaders.setContentType(MediaType.APPLICATION_JSON);
+
+        ObjectMapper objectMapper = new ObjectMapper();
+
+        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")) {
+            sendedMessage.setStatus(2);
+            sendedMessage.setRespondResult("鍙戦�佹垚鍔�");
+            sendedMessage.setId(sendMessage.getId());
+            sendedMessage.setUpdateTime(new Date());
+            sendedMessage.setSendTime(new Date());
+            messageMapper.updateById(sendedMessage);
+            return "send message success!";
+        } else {
+            sendedMessage.setStatus(3);
+            sendedMessage.setRespondResult("鍙戦�佸け璐�");
+            sendedMessage.setSendTime(new Date());
+            sendedMessage.setId(sendedMessage.getId());
+            sendedMessage.setUpdateTime(new Date());
+            messageMapper.updateById(sendedMessage);
+            return "send message fail!";
+        }
+    }
+
     //鍙戦�侀偖浠�
     @SneakyThrows
     private void sendMail(Message message) {
@@ -180,6 +243,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 +266,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