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