package com.doumee.service.business.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; import com.doumee.dao.business.BookingsMapper; import com.doumee.dao.business.NoticeMapper; import com.doumee.dao.business.join.NoticeJoinMapper; import com.doumee.dao.business.model.Notice; import com.doumee.dao.web.request.MeetingPageRequest; import com.doumee.dao.web.request.NoticeCardRequest; import com.doumee.dao.web.response.MeetingListResponse; import com.doumee.dao.web.response.NoticeCardResponse; import com.doumee.dao.system.SystemUserJoinMapper; import com.doumee.dao.system.SystemUserMapper; import com.doumee.dao.system.model.SystemDepartment; import com.doumee.dao.system.model.SystemDepartmentUser; import com.doumee.dao.system.model.SystemUser; import com.doumee.dao.system.vo.SystemUserSimpleVo; import com.doumee.service.business.NoticeService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.models.auth.In; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.BeanUtils; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; import java.util.List; import java.util.stream.Collectors; import java.util.Objects; import java.util.stream.Collectors; /** * 消息通知信息表Service实现 * @author 江蹄蹄 * @date 2023/05/04 18:18 */ @Service public class NoticeServiceImpl implements NoticeService { @Autowired private NoticeMapper noticeMapper; @Autowired private SystemUserJoinMapper systemUserJoinMapper; @Autowired private NoticeJoinMapper noticeJoinMapper; @Autowired private BookingsMapper bookingsMapper; @Override public Integer create(Notice notice) { Notice insert = new Notice(); insert.setCreator(notice.getCreator()); insert.setEditor(notice.getEditor()); insert.setTitle(notice.getTitle()); insert.setContent(notice.getContent()); insert.setType(Constants.ZERO); if (Objects.nonNull(notice.getObjId()) && Objects.nonNull(notice.getObjType())){ insert.setObjId(notice.getObjId()); insert.setObjType(notice.getObjType()); insert.setMemberId(notice.getMemberId()); insert.setType(Constants.ONE); } noticeMapper.insert(insert); return insert.getId(); } @Override public void deleteById(Integer id) { noticeMapper.deleteById(id); } @Override public void delete(Notice notice) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(notice); noticeMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } noticeMapper.deleteBatchIds(ids); } @Override public void updateById(Notice notice) { noticeMapper.updateById(notice); } @Override public void updateByIdInBatch(List notices) { if (CollectionUtils.isEmpty(notices)) { return; } for (Notice notice: notices) { this.updateById(notice); } } @Override public Notice findById(Integer id) { return noticeMapper.selectById(id); } @Override public Notice findOne(Notice notice) { QueryWrapper wrapper = new QueryWrapper<>(notice); return noticeMapper.selectOne(wrapper); } @Override public List findList(Notice notice) { QueryWrapper wrapper = new QueryWrapper<>(notice); return noticeMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); queryWrapper.selectAll(Notice.class); queryWrapper.selectAs(SystemUser::getRealname,Notice::getCreatorName); queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,Notice::getCreator); if(StringUtils.isNotBlank(pageWrap.getModel().getCreatorName())){ queryWrapper.like(SystemUser::getRealname,pageWrap.getModel().getCreatorName()); } if (pageWrap.getModel().getId() != null) { queryWrapper.eq(Notice::getId, pageWrap.getModel().getId()); } if (pageWrap.getModel().getCreator() != null) { queryWrapper.eq(Notice::getCreator, pageWrap.getModel().getCreator()); } if (pageWrap.getModel().getCreateDate() != null) { queryWrapper.ge(Notice::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); queryWrapper.le(Notice::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); } if (pageWrap.getModel().getEditor() != null) { queryWrapper.eq(Notice::getEditor, pageWrap.getModel().getEditor()); } if (pageWrap.getModel().getEditDate() != null) { queryWrapper.ge(Notice::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); queryWrapper.le(Notice::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); } if (pageWrap.getModel().getRemark() != null) { queryWrapper.eq(Notice::getRemark, pageWrap.getModel().getRemark()); } if (pageWrap.getModel().getMemberId() != null) { queryWrapper.eq(Notice::getMemberId, pageWrap.getModel().getMemberId()); } if (pageWrap.getModel().getTitle() != null) { queryWrapper.eq(Notice::getTitle, pageWrap.getModel().getTitle()); } if (pageWrap.getModel().getContent() != null) { queryWrapper.eq(Notice::getContent, pageWrap.getModel().getContent()); } if (pageWrap.getModel().getObjId() != null) { queryWrapper.eq(Notice::getObjId, pageWrap.getModel().getObjId()); } if (pageWrap.getModel().getObjType() != null) { queryWrapper.eq(Notice::getObjType, pageWrap.getModel().getObjType()); } if (pageWrap.getModel().getType() != null) { queryWrapper.eq(Notice::getType, pageWrap.getModel().getType()); } if (pageWrap.getModel().getStatus() != null) { queryWrapper.eq(Notice::getStatus, pageWrap.getModel().getStatus()); } queryWrapper.eq(Notice::getType, Constants.ZERO); queryWrapper.orderByDesc(Notice::getCreateDate); // for(PageWrap.SortData sortData: pageWrap.getSorts()) { // if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { // queryWrapper.orderByDesc(sortData.getProperty()); // } else { // queryWrapper.orderByAsc(sortData.getProperty()); // } // } return PageData.from(noticeJoinMapper.selectJoinPage(page, Notice.class,queryWrapper)); } @Override public long count(Notice notice) { QueryWrapper wrapper = new QueryWrapper<>(notice); return noticeMapper.selectCount(wrapper); } @Override public List findNoticeCreators() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select("DISTINCT CREATOR "); wrapper.lambda().isNotNull(Notice::getCreator); List notices = noticeMapper.selectList(wrapper); List collect = notices.stream().map(s -> s.getCreator()).collect(Collectors.toList()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.selectAll(SystemUser.class); queryWrapper.selectAs(SystemDepartment::getId, SystemUserSimpleVo::getDepartmentId); queryWrapper.selectAs(SystemDepartment::getName, SystemUserSimpleVo::getDepartmentName); queryWrapper.leftJoin(SystemDepartmentUser.class,SystemDepartmentUser::getUserId,SystemUser::getId) .leftJoin(SystemDepartment.class,SystemDepartment::getId,SystemDepartmentUser::getDepartmentId); queryWrapper.in(SystemUser::getId,collect); List systemUserSimpleVos = systemUserJoinMapper.selectJoinList(SystemUserSimpleVo.class, queryWrapper); return systemUserSimpleVos; } // @Override // public PageData findNoticeCardDTOPage(PageWrap pageWrap,Integer userId) { // IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); // LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); // Utils.MP.blankToNull(pageWrap.getModel()); // queryWrapper.eq(!Objects.isNull(pageWrap.getModel().getType()),Notice::getType,pageWrap.getModel().getType()) // .eq(Notice::getMemberId,userId) // .orderByDesc(Notice::getCreateDate); // IPage noticeIPage = noticeMapper.selectPage(page, queryWrapper); // // if (CollectionUtils.isEmpty(noticeIPage.getRecords())){ // return PageData.from(new Page<>()); // } // List noticeCardDTOs = noticeIPage.getRecords().stream().map(s -> { // NoticeCardResponse noticeCardResponse = new NoticeCardResponse(); // BeanUtils.copyProperties(s, noticeCardResponse); // return noticeCardResponse; // }).collect(Collectors.toList()); // // PageData pageData = new PageData<>(); // noticeCardDTOs.forEach(i->{ // if(i.getType().equals(Constants.ONE)){ // i.setMeetingDetailResponse(bookingsMapper.meetingDetail(i.getObjId())); // } // }); // pageData.setPage(pageWrap.getPage()); // pageData.setCapacity(pageWrap.getCapacity()); // pageData.setTotal(page.getTotal()); // pageData.setRecords(noticeCardDTOs); // return pageData; // } /****************************************移动端接口开始********************************************************************/ /** * 发送会议通知 * @param type 0 = 预定会议 1 = 参与会议 2 = 预定成功 3=会议取消 * @param userId * @param objId * @param creator */ @Override public void sendNotice(Integer type,Integer userId,Integer objId,Integer creator){ Notice notice = new Notice(); notice.setCreator(creator); notice.setCreateDate(new Date()); notice.setMemberId(userId); if(type.equals(Constants.ZERO)){ notice.setTitle("你预定的会议即将开始"); }else if(type.equals(Constants.ONE)){ notice.setTitle("你参与的会议即将开始"); }else if(type.equals(Constants.TWO)){ notice.setTitle("会议预定成功"); }else if(type.equals(3)){ notice.setTitle("会议预定取消"); } notice.setObjId(objId); notice.setObjType(Constants.ONE); notice.setType(Constants.ONE); notice.setStatus(Constants.ZERO); noticeMapper.insert(notice); } @Override public IPage noticePage(PageWrap pageWrap) { IPage page = noticeMapper.noticePage(pageWrap.toPage(), pageWrap.getModel().getMemberId()); page.getRecords().forEach(i->{ if(i.getType().equals(Constants.ONE)){ i.setMeetingDetailResponse(bookingsMapper.meetingDetail(i.getObjId())); } }); return page; } @Override public NoticeCardResponse newNotice(Integer userId) { return noticeMapper.newNotice(userId); } @Override public NoticeCardResponse getNoticeDetail(Integer noticeId) { return noticeMapper.getNoticeDetail(noticeId); } }