package com.ycl.jxkg.service.impl; import com.ycl.jxkg.domain.entity.Message; import com.ycl.jxkg.domain.entity.MessageUser; import com.ycl.jxkg.mapper.MessageMapper; import com.ycl.jxkg.mapper.MessageUserMapper; import com.ycl.jxkg.service.MessageService; import com.ycl.jxkg.domain.vo.admin.message.MessagePageRequestVO; import com.ycl.jxkg.domain.vo.student.user.MessageRequestVO; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; @Service public class MessageServiceImpl implements MessageService { private final MessageMapper messageMapper; private final MessageUserMapper messageUserMapper; @Autowired public MessageServiceImpl(MessageMapper messageMapper, MessageUserMapper messageUserMapper) { this.messageMapper = messageMapper; this.messageUserMapper = messageUserMapper; } @Override public List selectMessageByIds(List ids) { return messageMapper.selectByIds(ids); } @Override public PageInfo studentPage(MessageRequestVO requestVM) { return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() -> messageUserMapper.studentPage(requestVM) ); } @Override public PageInfo page(MessagePageRequestVO requestVM) { return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() -> messageMapper.page(requestVM) ); } @Override public List selectByMessageIds(List ids) { return messageUserMapper.selectByMessageIds(ids); } @Override @Transactional public void sendMessage(Message message, List messageUsers) { messageMapper.insert(message); messageUsers.forEach(d -> d.setMessageId(message.getId())); messageUserMapper.inserts(messageUsers); } @Override @Transactional public void read(Integer id) { MessageUser messageUser = messageUserMapper.selectById(id); if (messageUser.getReaded()) return; messageUser.setReaded(true); messageUser.setReadTime(new Date()); messageUserMapper.updateById(messageUser); messageMapper.readAdd(messageUser.getMessageId()); } @Override public Integer unReadCount(Integer userId) { return messageUserMapper.unReadCount(userId); } @Override public Message messageDetail(Integer id) { MessageUser messageUser = messageUserMapper.selectById(id); return messageMapper.selectById(messageUser.getMessageId()); } }