From 2044db864bea04b93e59f2417b7a635a82581ecb Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期二, 13 十二月 2022 11:25:03 +0800
Subject: [PATCH] 视频流地址修改
---
ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java | 224 ++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 187 insertions(+), 37 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 619cac2..f57fa44 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,22 +1,42 @@
package com.ycl.service.message.impl;
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.dto.message.MessageParam;
import com.ycl.entity.message.Message;
+import com.ycl.entity.message.SendReq;
+import com.ycl.entity.message.SendRes;
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.service.message.Provider;
-import com.ycl.service.message.Sender;
-import com.ycl.service.message.factory.InnerFactory;
-import com.ycl.service.message.factory.MailFactory;
-import com.ycl.service.message.factory.SmsFactory;
-import com.ycl.service.user.UmsAdminService;
-import org.springframework.beans.factory.annotation.Autowired;
+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;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.mail.javamail.JavaMailSenderImpl;
+import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.Base64Utils;
+import org.springframework.web.client.RestTemplate;
+
+import javax.annotation.Resource;
+import javax.mail.internet.MimeMessage;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Properties;
+import java.util.stream.Collectors;
/**
* <p>
@@ -29,47 +49,177 @@
@Service
public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> implements IMessageService {
- @Autowired
- private UmsAdminService adminService;
+ @Value("${e-mail.sendHost}")
+ private String sendHost;
+
+ @Value("${e-mail.username}")
+ private String userName;
+
+ @Value("${e-mail.password}")
+ private String password;
+
+ @Value(value = "${SMS.ecName}")
+ private String ecName; //闆嗗洟瀹㈡埛鍚嶇О
+
+ @Value(value = "${SMS.apId}")
+ private String apId; //鐢ㄦ埛鍚�
+
+ @Value(value = "${SMS.sign}")
+ private String sign; //缃戝叧绛惧悕缂栫爜锛屽繀濉紝绛惧悕缂栫爜鍦ㄤ腑鍥界Щ鍔ㄩ泦鍥㈠紑閫氬笎鍙峰悗鍒嗛厤锛屽彲浠ュ湪浜慚AS缃戦〉绔鐞嗗瓙绯荤粺-SMS鎺ュ彛绠$悊鍔熻兘涓笅杞姐��
+
+ @Value(value = "${SMS.url}")
+ private String url;
+
+ @Resource
+ private UmsAdminMapper umsAdminMapper;
+ @Resource
+ private MessageMapper messageMapper;
+
+ @Resource
+ RestTemplate restTemplate;
@Override
- public Message sendMessage(MessageParam messageParam) {
- Message message = null;
- Provider provider = null;
- switch (messageParam.getChannelCode())
- {
- //鍐呯珯鍙戦��
- case "01":
- provider = new InnerFactory();
- break;
- //閭欢鍙戦��
- case "02":
- provider = new MailFactory();
- //id鎹㈡垚閭鍙�
- String targetToMail = adminService.getTargetTo(messageParam.getTargetTo(), messageParam.getChannelCode());
- messageParam.setTargetTo(targetToMail);
+ @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())
+ .eq(Message::getBody, message.getBody())
+ .eq(Message::getHead, message.getHead()));
+ if (savedMessage != null) {
+ messageMapper.deleteById(savedMessage);
+ }
+
+ ArrayList<Long> ids = new ArrayList<>();
+ message.setTargetFrom(umsAdminMapper.selectById(message.getCreateUser()).getUsername());
+ 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()) {
+ //閭欢鍙戦��
+ case ChannelCode.SMS:
+ sendSMS(message, ids);
break;
- //鐭俊鍙戦��
- case "03":
- provider = new SmsFactory();
- //id鎹㈡垚鎵嬫満鍙�
- String targetToPhone = adminService.getTargetTo(messageParam.getTargetTo(), messageParam.getChannelCode());
- messageParam.setTargetTo(targetToPhone);
+ //鐭俊鍙戦��
+ case ChannelCode.MAIL:
+ sendMail(message);
+ break;
+ case ChannelCode.INNER:
break;
default:
throw new ApiException("鏈尮閰嶅埌璇ョ被鍨�");
}
- Sender sender = provider.produce();
- sender.sendMessage(messageParam);
- return message;
+ return "send message success!";
+ }
+
+ @SneakyThrows
+ private void sendSMS(Message message, List<Long> mesIds) {
+ String context = "銆�" + message.getHead() + "銆�" + message.getBody();
+ String addSerial = "";
+ SendReq sendReq = new SendReq();
+ sendReq.setEcName(ecName);
+ 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.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")) {
+ for (Long id : mesIds) {
+ sendedMessage.setStatus(2);
+ sendedMessage.setRespondResult("鍙戦�佹垚鍔�");
+ sendedMessage.setId(id);
+ sendedMessage.setUpdateTime(new Date());
+ sendedMessage.setSendTime(new Date());
+ messageMapper.updateById(sendedMessage);
+ }
+ } else {
+ for (Long id : mesIds) {
+ sendedMessage.setStatus(3);
+ sendedMessage.setRespondResult("鍙戦�佸け璐�");
+ sendedMessage.setSendTime(new Date());
+ sendedMessage.setId(id);
+ sendedMessage.setUpdateTime(new Date());
+ messageMapper.updateById(sendedMessage);
+ }
+ }
+ }
+
+ //鍙戦�侀偖浠�
+ @SneakyThrows
+ private void sendMail(Message message) {
+ JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
+ 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());
+ helper.setSubject(message.getHead());
+ helper.setFrom(userName);
+ String[] ids = message.getTargetTo().split(",");
+ String[] address = new String[ids.length];
+ for (int i = 0; i < ids.length; i++) {
+ address[i] = umsAdminMapper.selectById(ids[i]).getEmail();
+ }
+ helper.setTo(address);
+ javaMailSender.send(mimeMessage);
}
@Override
- public IPage<Message> list(MessageParam messageParam) {
+ public Page<MessageVO> list(MessageParam messageParam) {
Page<Message> page = new Page<>(messageParam.getCurrent(), messageParam.getPageSize());
+ return messageMapper.selectMessagePage(page, messageParam);
+ }
+
+ @Override
+ public Boolean deleteMessages(List<Long> ids) {
LambdaQueryWrapper<Message> queryWrapper = new LambdaQueryWrapper<>();
- Page<Message> result = baseMapper.selectPage(page, queryWrapper);
- return result;
+ queryWrapper.in(Message::getId, ids).or().in(Message::getParentId, ids);
+ List<Message> messages = baseMapper.selectList(queryWrapper);
+ if (CommonUtils.isNotEmpty(messages)) {
+ List<Long> deleteIds = messages.stream().map(Message::getId).collect(Collectors.toList());
+ baseMapper.deleteBatchIds(deleteIds);
+ }
+ return true;
}
}
--
Gitblit v1.8.0