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