package com.ruoyi.project.system.service.impl; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.xiaoymin.knife4j.core.util.StrUtil; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import com.ruoyi.project.system.domain.SysNotice; import com.ruoyi.project.system.mapper.SysNoticeMapper; import com.ruoyi.project.system.service.ISysNoticeService; /** * 公告 服务层实现 * * @author ruoyi */ @Service public class SysNoticeServiceImpl extends ServiceImpl implements ISysNoticeService { @Autowired private SysNoticeMapper noticeMapper; @Autowired private SysUserMapper userMapper; @Autowired @Lazy private ISysNoticeService sysNoticeService; /** * 查询公告信息 * * @param noticeId 公告ID * @return 公告信息 */ @Override public SysNotice selectNoticeById(Long noticeId) { return noticeMapper.selectNoticeById(noticeId); } /** * 查询公告列表 * * @param notice 公告信息 * @return 公告集合 */ @Override public IPage selectNoticeList(SysNotice notice, Page page) { return noticeMapper.selectNoticeList(notice, page); } /** * 新增公告 * * @param notice 公告信息 * @return 结果 */ @Override public int insertNotice(SysNotice notice) { return noticeMapper.insertNotice(notice); } /** * 修改公告 * * @param notice 公告信息 * @return 结果 */ @Override public int updateNotice(SysNotice notice) { return noticeMapper.updateNotice(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 public Long getCount(Long consigneeId) { return noticeMapper.selectCount(Wrappers.lambdaQuery() .eq(SysNotice::getStatus, "0") .eq(SysNotice::getConsigneeId, consigneeId)); } @Override public int readAll() { Long userId = SecurityUtils.getUserId(); return noticeMapper.update(null, Wrappers.lambdaUpdate() .eq(SysNotice::getConsigneeId, userId) .eq(SysNotice::getStatus, "0") .set(SysNotice::getStatus, "1")); } @Override public void simpleNoticeByUser(String title, String message, List consigneeId, Long tenantId, String jumpPath) { Long userId = SecurityUtils.getLoginUser().getUserId(); List sysNotices = consigneeId.stream().map(it -> convertSysNotice(title, message, it,tenantId, jumpPath, userId)).collect(Collectors.toList()); sysNoticeService.saveBatch(sysNotices); } @Override public void simpleNoticeAll(String title, String message, Long tenantId,String jumpPath) { Long userId = SecurityUtils.getLoginUser().getUserId(); List sysUsers = userMapper.selectList(Wrappers.lambdaQuery() .eq(SysUser::getStatus, "0") .eq(SysUser::getTenantId, tenantId)); List collect = sysUsers.stream().map(it -> convertSysNotice(title, message, it.getUserId(),tenantId, jumpPath, userId)).collect(Collectors.toList()); sysNoticeService.saveBatch(collect); } private SysNotice convertSysNotice(String title,String message,Long consigneeId, Long tenantId,String jumpPath,Long currentUserId) { SysNotice sysNotice = new SysNotice(); sysNotice.setNoticeType("1"); sysNotice.setNoticeTitle(title);//标题 sysNotice.setNoticeContent(message); sysNotice.setStatus("0"); sysNotice.setConsigneeId(consigneeId); sysNotice.setSenderId(currentUserId); sysNotice.setJumpPath(jumpPath); sysNotice.setTenantId(tenantId); return sysNotice; } }