package com.ycl.service.message.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.common.constant.ChannelCode; import com.ycl.common.util.CommonUtils; import com.ycl.dto.message.MessageParam; import com.ycl.entity.message.Message; import com.ycl.entity.user.UmsAdmin; import com.ycl.exception.ApiException; import com.ycl.mapper.message.MessageMapper; import com.ycl.mapper.user.UmsAdminMapper; import com.ycl.service.message.IMessageService; import com.ycl.service.message.Provider; import com.ycl.service.message.Sender; import com.ycl.service.message.factory.InnerFactory; import com.ycl.service.message.factory.MailFactory; import com.ycl.service.message.factory.SmsFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.stream.Collectors; /** *

* 消息 服务实现类 *

* * @author mg * @since 2022-10-08 */ @Service public class MessageServiceImpl extends ServiceImpl implements IMessageService { @Resource private UmsAdminMapper umsAdminMapper; @Override public Message sendMessage(MessageParam messageParam) { Message message = null; Provider provider = null; switch (messageParam.getChannelCode()) { //内站发送 case ChannelCode.INNER: provider = new InnerFactory(); break; //邮件发送 case ChannelCode.SMS: provider = new MailFactory(); break; //短信发送 case ChannelCode.MAIL: provider = new SmsFactory(); break; default: throw new ApiException("未匹配到该类型"); } Sender sender = provider.produce(); sender.sendMessage(messageParam); return message; } @Override public IPage list(MessageParam messageParam) { Page page = new Page<>(messageParam.getCurrent(), messageParam.getPageSize()); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Message::getParentId, 0); if (!CommonUtils.isEmpty(messageParam.getHead())) { queryWrapper.eq(Message::getHead, messageParam.getHead()); } if (!CommonUtils.isEmpty(messageParam.getChannelCode())) { queryWrapper.eq(Message::getChannelCode, messageParam.getChannelCode()); } if (!CommonUtils.isEmpty(messageParam.getStatus())) { queryWrapper.eq(Message::getStatus, messageParam.getStatus()); } queryWrapper.orderByDesc(Message::getCreateTime); Page result = baseMapper.selectPage(page, queryWrapper); List messages = result.getRecords(); if (!CommonUtils.isEmpty(messages)) { List ids = messages.stream().map(e -> Long.parseLong(e.getTargetFrom().trim())).collect(Collectors.toList()); LambdaQueryWrapper queryUSers = new LambdaQueryWrapper<>(); queryUSers.in(UmsAdmin::getId, ids); List users = umsAdminMapper.selectList(queryUSers); if (!CommonUtils.isEmpty(users)) { for (UmsAdmin user : users) { for (Message message : messages) { if (message.getTargetFrom().equals(user.getId()+"")) { message.setTargetFrom(user.getUsername()); } } } } } return result; } }