mg
2022-10-19 d830cc0812ec66dcb6dd3300f09ab1998ab170e3
 添加发送消息优化。
9个文件已修改
148 ■■■■ 已修改文件
ycl-common/src/main/java/com/ycl/entity/user/UmsDepartManage.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/entity/message/Message.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/entity/message/SmsAudit.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/message/ISmsAuditService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/message/factory/InnerSender.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/message/factory/MailSender.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/message/impl/MessageScheduleServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/message/impl/SmsAuditServiceImpl.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}
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")
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")
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);
}
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;
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;
        }
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));
    }
}
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("未匹配到该类型");
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);
    }
}