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