package com.ycl.service.message.factory;
import com.ycl.common.constant.ChannelCode;
import com.ycl.common.util.CommonUtils;
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();
List messages = new ArrayList<>();
if (CommonUtils.isEmpty(messageParam.getId())) {
String messageNumber = UtilNumber.getNumber("MC", 6);
BeanUtils.copyProperties(messageParam, message);
//父Id为0
message.setParentId(0L);
//生成消息编码
message.setMessageNumber(messageNumber);
//生成默认参数
//发送时间
if (message.getSendTime() == null) {
message.setSendTime(new Date());
}
if (ChannelCode.SMS.equals(messageParam.getChannelCode())) {
message.setIsScan(1);
} else {
message.setIsScan(0);
}
message.setIsView(0);
message.setVersion(0);
message.setCreateTime(new Date());
message.setUpdateTime(new Date());
message.setCreateUser(messageParam.getCreateUser());
message.setUpdateUser(messageParam.getCreateUser());
messageMapper.insert(message);
} else {
message.setId(messageParam.getId());
BeanUtils.copyProperties(messageParam, message);
message.setUpdateTime(new Date());
message.setUpdateUser(messageParam.getCreateUser());
messageMapper.updateById(message);
}
//发布消息
if (message.getStatus() == 1) {
String[] ids = messageParam.getTargetTo().split(",");
for (String id : ids) {
Message messageAdd = new Message();
BeanUtils.copyProperties(message, messageAdd);
//子类id设置为空
messageAdd.setId(null);
//设置父类Id
messageAdd.setParentId(message.getId());
//设置接收者
messageAdd.setTargetTo(id);
messages.add(messageAdd);
}
//批量新增
iMessageService.saveBatch(messages);
}
return message;
}
}