package com.ruoyi.system.service.impl; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.domain.SysNoticeUser; import com.ruoyi.system.mapper.SysNoticeUserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.system.domain.SysNotice; import com.ruoyi.system.mapper.SysNoticeMapper; import com.ruoyi.system.service.ISysNoticeService; import org.springframework.transaction.annotation.Transactional; /** * 公告 服务层实现 * * @author ruoyi */ @Service public class SysNoticeServiceImpl extends ServiceImpl implements ISysNoticeService { @Autowired private SysNoticeMapper noticeMapper; @Autowired private SysNoticeUserMapper noticeUserMapper; /** * 查询公告信息 * * @param noticeId 公告ID * @return 公告信息 */ @Override public SysNotice selectNoticeById(Long noticeId) { return noticeMapper.selectById(noticeId); } /** * 查询公告列表 * * @param notice 公告信息 * @return 公告集合 */ @Override public List selectNoticeList(SysNotice notice) { return noticeMapper.selectNoticeList(notice); } /** * 新增公告 * * @param notice 公告信息 * @return 结果 */ @Override public int insertNotice(SysNotice notice) { return noticeMapper.insertNotice(notice); } /** * 修改公告 * * @param notice 公告信息 * @return 结果 */ @Override public int updateNotice(SysNotice notice) { return noticeMapper.updateById(notice); } /** * 删除公告对象 * * @param noticeId 公告ID * @return 结果 */ @Override public int deleteNoticeById(Long noticeId) { return noticeMapper.deleteNoticeById(noticeId); } /** * 批量删除公告信息 * * @param noticeIds 需要删除的公告ID * @return 结果 */ @Override public int deleteNoticeByIds(Long[] noticeIds) { return noticeMapper.deleteNoticeByIds(noticeIds); } @Override @Transactional public int addNoticeUser(Long noticeId, List users) { Long userId = SecurityUtils.getUserId(); Date date = new Date(); List userIds = users.stream().map(SysUser::getUserId).collect(Collectors.toList()); //查询已经添加的学生 List userList = noticeUserMapper.selectNoticeUsers(noticeId, userIds); List hasExistIds = userList.stream().map(SysNoticeUser::getUserId).collect(Collectors.toList()); List noticeUsers = new ArrayList<>(); for (SysUser user : users) { if (!hasExistIds.contains(user.getUserId())) { SysNoticeUser st = new SysNoticeUser(); st.setUserId(user.getUserId()); st.setNoticeId(noticeId); st.setCreateBy(userId.toString()); st.setCreateTime(date); st.setStatus("0"); noticeUsers.add(st); } } if (!noticeUsers.isEmpty()) { noticeUserMapper.insertBatch(noticeUsers); } SysNoticeUser noticeUser = new SysNoticeUser(); noticeUser.setNoticeId(noticeId); return noticeUserMapper.selectNoticeUserList(noticeUser).size(); } }