package com.ycl.service.message.factory;
import com.ycl.common.constant.ChannelCode;
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;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
*
* 内站发送器
*
*
* @author mg
* @since 2022-10-09
*/
@Component
public class InnerSender implements Sender {
private static IMessageService iMessageService;
@Autowired
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();
String messageNumber = UtilNumber.getNumber("MC", 6);
List messages = new ArrayList<>();
BeanUtils.copyProperties(messageParam, message);
//父Id为0
message.setParentId(0L);
//生成消息编码
message.setMessageNumber(messageNumber);
//生成默认参数
//发送时间
if (message.getSendTime() == null) {
message.setSendTime(new Date());
}
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位随机数消息编码
messageAdd.setMessageNumber(messageNumber);
//发送时间
if (messageAdd.getSendTime() == null) {
messageAdd.setSendTime(new Date());
}
if (ChannelCode.MAIL.equals(messageParam.getChannelCode())) {
messageAdd.setIsScan(1);
} else {
messageAdd.setIsScan(0);
}
//生成默认参数
messageAdd.setCreateTime(new Date());
messageAdd.setUpdateTime(new Date());
messageAdd.setCreateUser(messageParam.getCreateUser());
messageAdd.setUpdateUser(messageParam.getCreateUser());
messageAdd.setIsView(0);
messageAdd.setVersion(0);
messages.add(messageAdd);
}
//批量新增
iMessageService.saveBatch(messages);
return message;
}
}