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<Notice> deleteWrapper = new UpdateWrapper<>(notice);
|
noticeMapper.delete(deleteWrapper);
|
}
|
|
@Override
|
public void deleteByIdInBatch(List<Integer> ids) {
|
if (CollectionUtils.isEmpty(ids)) {
|
return;
|
}
|
noticeMapper.deleteBatchIds(ids);
|
}
|
|
@Override
|
public void updateById(Notice notice) {
|
noticeMapper.updateById(notice);
|
}
|
|
@Override
|
public void updateByIdInBatch(List<Notice> 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<Notice> wrapper = new QueryWrapper<>(notice);
|
return noticeMapper.selectOne(wrapper);
|
}
|
|
@Override
|
public List<Notice> findList(Notice notice) {
|
QueryWrapper<Notice> wrapper = new QueryWrapper<>(notice);
|
return noticeMapper.selectList(wrapper);
|
}
|
|
@Override
|
public PageData<Notice> findPage(PageWrap<Notice> pageWrap) {
|
IPage<Notice> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
MPJLambdaWrapper<Notice> 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<Notice> wrapper = new QueryWrapper<>(notice);
|
return noticeMapper.selectCount(wrapper);
|
}
|
|
|
@Override
|
public List<SystemUserSimpleVo> findNoticeCreators() {
|
|
QueryWrapper<Notice> wrapper = new QueryWrapper<>();
|
wrapper.select("DISTINCT CREATOR ");
|
wrapper.lambda().isNotNull(Notice::getCreator);
|
List<Notice> notices = noticeMapper.selectList(wrapper);
|
List<Integer> collect = notices.stream().map(s -> s.getCreator()).collect(Collectors.toList());
|
|
MPJLambdaWrapper<SystemUser> 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<SystemUserSimpleVo> systemUserSimpleVos = systemUserJoinMapper.selectJoinList(SystemUserSimpleVo.class, queryWrapper);
|
return systemUserSimpleVos;
|
}
|
|
|
|
|
|
// @Override
|
// public PageData<NoticeCardResponse> findNoticeCardDTOPage(PageWrap<Notice> pageWrap,Integer userId) {
|
// IPage<Notice> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
// LambdaQueryWrapper<Notice> 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<Notice> noticeIPage = noticeMapper.selectPage(page, queryWrapper);
|
//
|
// if (CollectionUtils.isEmpty(noticeIPage.getRecords())){
|
// return PageData.from(new Page<>());
|
// }
|
// List<NoticeCardResponse> noticeCardDTOs = noticeIPage.getRecords().stream().map(s -> {
|
// NoticeCardResponse noticeCardResponse = new NoticeCardResponse();
|
// BeanUtils.copyProperties(s, noticeCardResponse);
|
// return noticeCardResponse;
|
// }).collect(Collectors.toList());
|
//
|
// PageData<NoticeCardResponse> 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<NoticeCardResponse> noticePage(PageWrap<NoticeCardRequest> pageWrap) {
|
IPage<NoticeCardResponse> 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);
|
}
|
}
|