package org.jeecg.modules.system.service.impl; import java.util.Arrays; import java.util.Collection; import java.util.Date; import java.util.List; import javax.annotation.Resource; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.system.entity.SysAnnouncement; import org.jeecg.modules.system.entity.SysAnnouncementSend; import org.jeecg.modules.system.mapper.SysAnnouncementMapper; import org.jeecg.modules.system.mapper.SysAnnouncementSendMapper; import org.jeecg.modules.system.service.ISysAnnouncementService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * @Description: 系统通告表 * @Author: jeecg-boot * @Date: 2019-01-02 * @Version: V1.0 */ @Service public class SysAnnouncementServiceImpl extends ServiceImpl implements ISysAnnouncementService { @Resource private SysAnnouncementMapper sysAnnouncementMapper; @Resource private SysAnnouncementSendMapper sysAnnouncementSendMapper; @Transactional @Override public void saveAnnouncement(SysAnnouncement sysAnnouncement) { if(sysAnnouncement.getMsgType().equals(CommonConstant.MSG_TYPE_ALL)) { sysAnnouncementMapper.insert(sysAnnouncement); }else { // 1.插入通告表记录 sysAnnouncementMapper.insert(sysAnnouncement); // 2.插入用户通告阅读标记表记录 String userId = sysAnnouncement.getUserIds(); String[] userIds = userId.substring(0, (userId.length()-1)).split(","); String anntId = sysAnnouncement.getId(); Date refDate = new Date(); for(int i=0;i queryWrapper = new LambdaQueryWrapper(); queryWrapper.eq(SysAnnouncementSend::getAnntId, anntId); queryWrapper.eq(SysAnnouncementSend::getUserId, userIds[i]); List announcementSends=sysAnnouncementSendMapper.selectList(queryWrapper); if(announcementSends.size()<=0) { SysAnnouncementSend announcementSend = new SysAnnouncementSend(); announcementSend.setAnntId(anntId); announcementSend.setUserId(userIds[i]); announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); announcementSend.setReadTime(refDate); sysAnnouncementSendMapper.insert(announcementSend); } } // 3. 删除多余通知用户数据 Collection delUserIds = Arrays.asList(userIds); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); queryWrapper.notIn(SysAnnouncementSend::getUserId, delUserIds); queryWrapper.eq(SysAnnouncementSend::getAnntId, anntId); sysAnnouncementSendMapper.delete(queryWrapper); } return true; } // @功能:流程执行完成保存消息通知 @Override public void saveSysAnnouncement(String title, String msgContent) { SysAnnouncement announcement = new SysAnnouncement(); announcement.setTitile(title); announcement.setMsgContent(msgContent); announcement.setSender("JEECG BOOT"); announcement.setPriority(CommonConstant.PRIORITY_L); announcement.setMsgType(CommonConstant.MSG_TYPE_ALL); announcement.setSendStatus(CommonConstant.HAS_SEND); announcement.setSendTime(new Date()); announcement.setDelFlag(CommonConstant.DEL_FLAG_0.toString()); sysAnnouncementMapper.insert(announcement); } @Override public Page querySysCementPageByUserId(Page page, String userId,String msgCategory) { return page.setRecords(sysAnnouncementMapper.querySysCementListByUserId(page, userId, msgCategory)); } }