package cn.lili.modules.message.serviceimpl; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.enums.SwitchEnum; import cn.lili.common.vo.PageVO; import cn.lili.modules.message.entity.dos.MemberMessage; import cn.lili.modules.message.entity.dos.NoticeMessage; import cn.lili.modules.message.entity.dto.NoticeMessageDTO; import cn.lili.modules.message.entity.enums.MessageStatusEnum; import cn.lili.modules.message.entity.enums.NoticeMessageParameterEnum; import cn.lili.modules.message.mapper.NoticeMessageTemplateMapper; import cn.lili.modules.message.service.MemberMessageService; import cn.lili.modules.message.service.NoticeMessageService; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Map; /** * 通知类消息模板业务层实现 * * @author Bulbasaur * @since 2020/12/8 9:48 */ @Service public class NoticeMessageServiceImpl extends ServiceImpl implements NoticeMessageService { @Autowired private MemberMessageService memberMessageService; @Override public IPage getMessageTemplate(PageVO pageVO, String type) { //构建查询参数 QueryWrapper messageTemplateQueryWrapper = new QueryWrapper<>(); //消息模板类型 messageTemplateQueryWrapper.eq(!CharSequenceUtil.isEmpty(type), "type", type); messageTemplateQueryWrapper.orderByDesc("create_time"); //查询数据返回 return this.page(PageUtil.initPage(pageVO), messageTemplateQueryWrapper); } @Override public void noticeMessage(NoticeMessageDTO noticeMessageDTO) { if (noticeMessageDTO == null) { return; } try { NoticeMessage noticeMessage = this.getOne( new LambdaQueryWrapper() .eq(NoticeMessage::getNoticeNode , noticeMessageDTO.getNoticeMessageNodeEnum().getDescription().trim()),false); //如果通知类站内信开启的情况下 if (noticeMessage != null && noticeMessage.getNoticeStatus().equals(SwitchEnum.OPEN.name())) { MemberMessage memberMessage = new MemberMessage(); memberMessage.setMemberId(noticeMessageDTO.getMemberId()); memberMessage.setTitle(noticeMessage.getNoticeTitle()); memberMessage.setContent(noticeMessage.getNoticeContent()); //参数不为空,替换内容 if (noticeMessageDTO.getParameter() != null) { memberMessage.setContent(replaceNoticeContent(noticeMessage.getNoticeContent(), noticeMessageDTO.getParameter())); } else { memberMessage.setContent(noticeMessage.getNoticeContent()); } memberMessage.setStatus(MessageStatusEnum.UN_READY.name()); //添加站内信 memberMessageService.save(memberMessage); } } catch (Exception e) { log.error("站内信发送失败:", e); } } /** * 替换站内信内容 * * @param noticeContent 站内信内容 * @param parameter 参数 * @return 替换后站内信内容 */ String replaceNoticeContent(String noticeContent, Map parameter) { for (Map.Entry entry : parameter.entrySet()) { String description = NoticeMessageParameterEnum.getValueByType(entry.getKey()); if (description != null && entry.getValue() != null) { noticeContent = noticeContent.replace("#{" + description + "}".trim(), entry.getValue()); } } return noticeContent; } }