package com.example.jz.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.example.jz.dao.*; import com.example.jz.modle.entity.*; import com.example.jz.modle.vo.GroupMessageVo; import com.example.jz.modle.vo.GroupUserVo; import com.example.jz.service.GroupService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.el.ELClass; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * 群表 * (Group)表服务实现类 * * @author makejava * @since 2022-07-11 16:35:57 */ @Service("groupService") public class GroupServiceImpl extends ServiceImpl implements GroupService { @Resource private MessageDao messageDao; @Resource private AnnouncementDao announcementDao; @Resource private GroupDao groupDao; @Resource private UserDao userDao; @Resource private ReportDao reportDao; @Autowired public void setMessageDao(MessageDao messageDao) { this.messageDao = messageDao; } @Autowired public void setAnnouncementDao(AnnouncementDao announcementDao) { this.announcementDao = announcementDao; } @Autowired public void setGroupDao(GroupDao groupDao) { this.groupDao = groupDao; } @Override public List getAllMessage(Integer id) { List list = messageDao.selectList(new QueryWrapper().eq("group_id", id).orderByAsc("ctime")).stream().map(item -> { String username; String pic = null; Integer flag = 0; if (item.getUserId() == null) { User user = userDao.selectOne(new QueryWrapper().eq("id", item.getCopId())); flag = 2; username = user.getRealName(); } else { Report report = reportDao.selectOne(new QueryWrapper().eq("id", item.getUserId())); User user = userDao.selectOne(new QueryWrapper().eq("id", report.getUserId())); String sex = user.getSex(); if (sex == null || sex != "男"){ flag = 0; } else { flag = 1; } if (!Objects.isNull(user)){ username = user.getRealName(); }else { username=""; } pic = report.getPic(); Message message = new Message(); message.setReportName(username); messageDao.update(message, new QueryWrapper().eq("user_id", item.getUserId())); } GroupMessageVo groupMessageVo = new GroupMessageVo(); groupMessageVo.setUserName(username); groupMessageVo.setText(item.getText()); groupMessageVo.setCtime(item.getCtime()); groupMessageVo.setPic(pic); groupMessageVo.setMessageId(item.getId()); groupMessageVo.setFlag(flag); return groupMessageVo; }).collect(Collectors.toList()); return list; } @Override public List getAllNotice(Integer id) { return announcementDao.selectList(new LambdaQueryWrapper<>(Announcement.class).eq(Announcement::getGroupId, id).eq(Announcement::getStatus, 1)); } @Override public Boolean sendMessage(Integer id, String text) { Message message = new Message().setCopId(userDao.selectOne(new QueryWrapper().eq("login_username", SecurityContextHolder.getContext().getAuthentication().getPrincipal())).getId()) .setText(text).setGroupId(id).setCtime(new Date()); return messageDao.insert(message) > 0; } @Override public List getAllUser(Integer id) { return groupDao.getAllUser(id); } @Override public List getByCondition(String name, String text, Integer groupId) { return messageDao.selectList(new QueryWrapper().like(StringUtils.isNotBlank(text), "text", text).eq(StringUtils.isNotBlank(name),"report_name",name).eq("group_id", groupId).orderByAsc("ctime")).stream() .filter(item -> item.getUserId() != null) .map(item -> { Report report = reportDao.selectOne(new QueryWrapper().eq("id", item.getUserId())); GroupMessageVo groupMessageVo = new GroupMessageVo(); groupMessageVo.setUserName(item.getReportName()); groupMessageVo.setText(item.getText()); groupMessageVo.setCtime(item.getCtime()); groupMessageVo.setPic(report.getPic()); return groupMessageVo; }).collect(Collectors.toList()); } }