From d830cc0812ec66dcb6dd3300f09ab1998ab170e3 Mon Sep 17 00:00:00 2001
From: mg <maokecheng@163.com>
Date: 星期三, 19 十月 2022 11:39:14 +0800
Subject: [PATCH] 添加发送消息优化。
---
ycl-platform/src/main/java/com/ycl/service/message/ISmsAuditService.java | 3 +
ycl-platform/src/main/java/com/ycl/entity/message/SmsAudit.java | 12 ++++
ycl-platform/src/main/java/com/ycl/service/message/impl/SmsAuditServiceImpl.java | 49 ++++++++++++++++
ycl-platform/src/main/java/com/ycl/service/message/factory/InnerSender.java | 25 +++++++-
ycl-platform/src/main/java/com/ycl/service/message/impl/MessageScheduleServiceImpl.java | 15 ++++
ycl-common/src/main/java/com/ycl/entity/user/UmsDepartManage.java | 6 ++
ycl-platform/src/main/java/com/ycl/entity/message/Message.java | 8 ++
ycl-platform/src/main/java/com/ycl/service/message/factory/MailSender.java | 19 +++++-
ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java | 11 +--
9 files changed, 133 insertions(+), 15 deletions(-)
diff --git a/ycl-common/src/main/java/com/ycl/entity/user/UmsDepartManage.java b/ycl-common/src/main/java/com/ycl/entity/user/UmsDepartManage.java
index 09ffb0a..3e965d0 100644
--- a/ycl-common/src/main/java/com/ycl/entity/user/UmsDepartManage.java
+++ b/ycl-common/src/main/java/com/ycl/entity/user/UmsDepartManage.java
@@ -1,5 +1,7 @@
package com.ycl.entity.user;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ycl.api.BaseEntity;
import io.swagger.annotations.ApiModel;
@@ -26,6 +28,7 @@
private static final long serialVersionUID = 1L;
@ApiModelProperty("涓婚敭")
+ @TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty("鐢ㄦ埛id")
@@ -33,4 +36,7 @@
@ApiModelProperty("閮ㄩ棬id")
private Long departId;
+
+ @ApiModelProperty("鏄惁鏄瀵�")
+ private Integer isLeader;
}
diff --git a/ycl-platform/src/main/java/com/ycl/entity/message/Message.java b/ycl-platform/src/main/java/com/ycl/entity/message/Message.java
index 1171542..4926c55 100644
--- a/ycl-platform/src/main/java/com/ycl/entity/message/Message.java
+++ b/ycl-platform/src/main/java/com/ycl/entity/message/Message.java
@@ -38,6 +38,14 @@
private Long id;
/**
+ * 娑堟伅鐖剁被Id
+ */
+ @TableField("parent_id")
+ @ApiModelProperty(value = "娑堟伅鐖剁被Id")
+ private Long parentId;
+
+
+ /**
* 鏍囬
*/
@TableField("head")
diff --git a/ycl-platform/src/main/java/com/ycl/entity/message/SmsAudit.java b/ycl-platform/src/main/java/com/ycl/entity/message/SmsAudit.java
index e126d41..456f047 100644
--- a/ycl-platform/src/main/java/com/ycl/entity/message/SmsAudit.java
+++ b/ycl-platform/src/main/java/com/ycl/entity/message/SmsAudit.java
@@ -53,6 +53,18 @@
@ApiModelProperty(value = "瀹℃牳鐘舵��")
private Integer auditStatus;
/**
+ * 瀹℃牳缁撴灉
+ */
+ @TableField("audit_result")
+ @ApiModelProperty(value = "瀹℃牳缁撴灉")
+ private Integer auditResult;
+ /**
+ * 瀹℃牳鎰忚
+ */
+ @TableField("audit_opinion")
+ @ApiModelProperty(value = "瀹℃牳鎰忚")
+ private Integer auditOpinion;
+ /**
* 鍒涘缓浜�
*/
@TableField("create_user")
diff --git a/ycl-platform/src/main/java/com/ycl/service/message/ISmsAuditService.java b/ycl-platform/src/main/java/com/ycl/service/message/ISmsAuditService.java
index 1bf6a6f..12423fb 100644
--- a/ycl-platform/src/main/java/com/ycl/service/message/ISmsAuditService.java
+++ b/ycl-platform/src/main/java/com/ycl/service/message/ISmsAuditService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.ycl.entity.message.Message;
import com.ycl.entity.message.SmsAudit;
/**
@@ -14,4 +15,6 @@
*/
public interface ISmsAuditService extends IService<SmsAudit> {
IPage<SmsAudit> list(SmsAudit smsAudit);
+
+ void startAuditSms(Message message);
}
diff --git a/ycl-platform/src/main/java/com/ycl/service/message/factory/InnerSender.java b/ycl-platform/src/main/java/com/ycl/service/message/factory/InnerSender.java
index 83a8744..6f7a149 100644
--- a/ycl-platform/src/main/java/com/ycl/service/message/factory/InnerSender.java
+++ b/ycl-platform/src/main/java/com/ycl/service/message/factory/InnerSender.java
@@ -4,6 +4,7 @@
import com.ycl.common.util.UtilNumber;
import com.ycl.dto.message.MessageParam;
import com.ycl.entity.message.Message;
+import com.ycl.mapper.message.MessageMapper;
import com.ycl.service.message.IMessageService;
import com.ycl.service.message.Sender;
import org.springframework.beans.BeanUtils;
@@ -32,16 +33,35 @@
public void setIMessageService(IMessageService iMessageService) {
InnerSender.iMessageService = iMessageService;
}
+ private static MessageMapper messageMapper;
+ @Autowired
+ public void setMessageMapper(MessageMapper messageMapper) {
+ InnerSender.messageMapper = messageMapper;
+ }
@Override
public Message sendMessage(MessageParam messageParam) {
Message message = new Message();
- List<Message> messages = new ArrayList<>();
- String[] ids = messageParam.getTargetTo().split(",");
String messageNumber = UtilNumber.getNumber("MC", 6);
+ List<Message> messages = new ArrayList<>();
+ BeanUtils.copyProperties(messageParam, message);
+ //鐢熸垚娑堟伅缂栫爜
+ message.setMessageNumber(messageNumber);
+ //鐢熸垚榛樿鍙傛暟
+ message.setIsView(0);
+ message.setVersion(0);
+ message.setIsScan(1);
+ message.setCreateTime(new Date());
+ message.setUpdateTime(new Date());
+ message.setCreateUser(messageParam.getCreateUser());
+ message.setUpdateUser(messageParam.getCreateUser());
+ messageMapper.insert(message);
+ String[] ids = messageParam.getTargetTo().split(",");
for (String id : ids) {
Message messageAdd = new Message();
BeanUtils.copyProperties(messageParam, messageAdd);
+ //璁剧疆鐖剁被Id
+ messageAdd.setParentId(message.getId());
//璁剧疆鎺ユ敹鑰�
messageAdd.setTargetTo(id);
//鐢熸垚8浣嶉殢鏈烘暟娑堟伅缂栫爜
@@ -64,7 +84,6 @@
messageAdd.setVersion(0);
messages.add(messageAdd);
}
- BeanUtils.copyProperties(messageParam, message);
//鎵归噺鏂板
iMessageService.saveBatch(messages);
return message;
diff --git a/ycl-platform/src/main/java/com/ycl/service/message/factory/MailSender.java b/ycl-platform/src/main/java/com/ycl/service/message/factory/MailSender.java
index d029e16..c13045a 100644
--- a/ycl-platform/src/main/java/com/ycl/service/message/factory/MailSender.java
+++ b/ycl-platform/src/main/java/com/ycl/service/message/factory/MailSender.java
@@ -4,6 +4,7 @@
import com.ycl.dto.message.MessageParam;
import com.ycl.entity.message.Message;
import com.ycl.exception.ApiException;
+import com.ycl.service.message.ISmsAuditService;
import com.ycl.service.message.Sender;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,25 +36,35 @@
public void setPropertyValueUtil(PropertyValueUtil propertyValueUtil) {
MailSender.propertyValueUtil = propertyValueUtil;
}
+ private static ISmsAuditService iSmsAuditService;
+ @Autowired
+ public void setISmsAuditService(ISmsAuditService iSmsAuditService) {
+ MailSender.iSmsAuditService = iSmsAuditService;
+ }
@Override
public Message sendMessage(MessageParam messageParam) {
-
//鍏ュ簱淇濆瓨
Message message = innerSender.sendMessage(messageParam);
+ //鍙戣捣瀹℃牳
+ iSmsAuditService.startAuditSms(message);
+ return message;
+ }
+
+ public Message sendMail(Message message) {
//缁勮閭欢鍙戦��
JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost(propertyValueUtil.getHost());
sender.setUsername(propertyValueUtil.getUsername());
sender.setPassword(propertyValueUtil.getAuthorizationCode());
- String[] mailUrls = messageParam.getTargetTo().split(",");
+ String[] mailUrls = message.getTargetTo().split(",");
SimpleMailMessage[] messageList = new SimpleMailMessage[mailUrls.length];
for (int i=0;i<messageList.length;i++) {
SimpleMailMessage messageTo = new SimpleMailMessage();
- messageTo.setFrom(messageParam.getTargetFrom());
+ messageTo.setFrom(message.getTargetFrom());
messageTo.setTo(mailUrls[i]);
- messageTo.setSubject(messageParam.getHead());
+ messageTo.setSubject(message.getHead());
messageTo.setText(message.getBody());
messageList[i] = messageTo;
}
diff --git a/ycl-platform/src/main/java/com/ycl/service/message/impl/MessageScheduleServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/message/impl/MessageScheduleServiceImpl.java
index 0ee9501..f52d9df 100644
--- a/ycl-platform/src/main/java/com/ycl/service/message/impl/MessageScheduleServiceImpl.java
+++ b/ycl-platform/src/main/java/com/ycl/service/message/impl/MessageScheduleServiceImpl.java
@@ -3,10 +3,12 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ycl.entity.message.Message;
import com.ycl.mapper.message.MessageMapper;
+import com.ycl.service.message.ISmsAuditService;
import com.ycl.service.message.MessageScheduleService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -24,12 +26,21 @@
@Resource
MessageMapper messageMapper;
+ @Resource
+ ISmsAuditService iSmsAuditService;
+
@Override
public void sendSmsSchedule() {
QueryWrapper<Message> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(Message::getIsScan, 0).le(Message::getSendTime,new Date());
- List<Message> messages = messageMapper.selectList(wrapper);
- System.out.println("--------------------寮�濮嬫壂鎻忕煭淇′俊鎭�-------------------澶у皬涓�"+messages.size());
+ //List<Message> messages = messageMapper.selectList(wrapper);
+ System.out.println("--------------------寮�濮嬫壂鎻忕煭淇′俊鎭�-------------------澶у皬涓�");
+ List<Long> ids = new ArrayList<>();
+ ids.add(3L);
+ ids.add(4L);
+ ids.add(21L);
+ //iSmsAuditService.startAuditSms(messages.get(0));
+
}
}
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 f8b0e1a..50c7c1c 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
@@ -47,16 +47,15 @@
case ChannelCode.SMS:
provider = new MailFactory();
//id鎹㈡垚閭鍙�
- String targetToMail = adminService.getTargetTo(messageParam.getTargetTo(), messageParam.getChannelCode());
- messageParam.setTargetTo(targetToMail);
-
+ //String targetToMail = adminService.getTargetTo(messageParam.getTargetTo(), messageParam.getChannelCode());
+ //messageParam.setTargetTo(targetToMail);
break;
- //鐭俊鍙戦��
+ //鐭俊鍙戦��
case ChannelCode.MAIL:
provider = new SmsFactory();
//id鎹㈡垚鎵嬫満鍙�
- String targetToPhone = adminService.getTargetTo(messageParam.getTargetTo(), messageParam.getChannelCode());
- messageParam.setTargetTo(targetToPhone);
+ //String targetToPhone = adminService.getTargetTo(messageParam.getTargetTo(), messageParam.getChannelCode());
+ //messageParam.setTargetTo(targetToPhone);
break;
default:
throw new ApiException("鏈尮閰嶅埌璇ョ被鍨�");
diff --git a/ycl-platform/src/main/java/com/ycl/service/message/impl/SmsAuditServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/message/impl/SmsAuditServiceImpl.java
index b0bb2c3..aecf6fd 100644
--- a/ycl-platform/src/main/java/com/ycl/service/message/impl/SmsAuditServiceImpl.java
+++ b/ycl-platform/src/main/java/com/ycl/service/message/impl/SmsAuditServiceImpl.java
@@ -4,10 +4,17 @@
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.ycl.entity.message.Message;
import com.ycl.entity.message.SmsAudit;
+import com.ycl.entity.user.UmsDepartManage;
import com.ycl.mapper.message.SmsAuditMapper;
+import com.ycl.mapper.user.UmsDepartManageMapper;
import com.ycl.service.message.ISmsAuditService;
import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* <p>
@@ -19,6 +26,10 @@
*/
@Service
public class SmsAuditServiceImpl extends ServiceImpl<SmsAuditMapper, SmsAudit> implements ISmsAuditService {
+
+ @Resource
+ private UmsDepartManageMapper umsDepartManageMapper;
+
@Override
public IPage<SmsAudit> list(SmsAudit smsAudit) {
Page<SmsAudit> page = new Page<>(smsAudit.getCurrent(), smsAudit.getPageSize());
@@ -29,4 +40,42 @@
Page<SmsAudit> result = baseMapper.selectPage(page, queryWrapper);
return result;
}
+
+ @Override
+ public void startAuditSms(Message message) {
+ String[] arr = message.getTargetTo().split(",");
+ List<Long> ids = new ArrayList<>();
+ for (int i = 0; i < arr.length; i++) {
+ ids.add(Long.parseLong(arr[i]));
+ }
+ //鏌ヨ閮ㄩ棬
+ LambdaQueryWrapper<UmsDepartManage> queryDeptWrapper = new LambdaQueryWrapper<>();
+ queryDeptWrapper.in(UmsDepartManage::getUserId, ids);
+ List<UmsDepartManage> depts = umsDepartManageMapper.selectList(queryDeptWrapper);
+ //閮ㄩ棬鍘婚噸
+ List<UmsDepartManage> uniques = depts.stream().collect(
+ Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o->o.getDepartId()))),
+ ArrayList::new));
+ List<Long> deptLeadIds = uniques.stream().map(UmsDepartManage::getDepartId).collect(Collectors.toList());
+ LambdaQueryWrapper<UmsDepartManage> queryDeptLeadWrapper = new LambdaQueryWrapper<>();
+ queryDeptLeadWrapper.in(UmsDepartManage::getDepartId, deptLeadIds).eq(UmsDepartManage::getIsLeader,1);
+ List<UmsDepartManage> deptLeads = umsDepartManageMapper.selectList(queryDeptLeadWrapper);
+ //娣诲姞鐭俊瀹℃牳
+ List<SmsAudit> audits = new ArrayList<>();
+ for (UmsDepartManage depart : deptLeads) {
+ SmsAudit audit = new SmsAudit();
+ audit.setMessageId(message.getId());
+ audit.setAuditId(depart.getUserId());
+ //寰呭鏍哥姸鎬�
+ audit.setAuditStatus(0);
+ Long userId = Long.parseLong(message.getTargetFrom());
+ audit.setCreateUser(userId);
+ audit.setCreateTime(new Date());
+ audit.setUpdateUser(userId);
+ audit.setUpdateTime(new Date());
+ audits.add(audit);
+ }
+ saveBatch(audits);
+
+ }
}
--
Gitblit v1.8.0