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); } }