xiangpei
2024-05-31 c9d04bc519b73f7fc4841c34e2f15fca9db7aad2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package com.ycl.jxkg.service.impl;
 
import com.ycl.jxkg.domain.Message;
import com.ycl.jxkg.domain.MessageUser;
import com.ycl.jxkg.mapper.MessageMapper;
import com.ycl.jxkg.mapper.MessageUserMapper;
import com.ycl.jxkg.service.MessageService;
import com.ycl.jxkg.vo.admin.message.MessagePageRequestVO;
import com.ycl.jxkg.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<Message> selectMessageByIds(List<Integer> ids) {
        return messageMapper.selectByIds(ids);
    }
 
    @Override
    public PageInfo<MessageUser> studentPage(MessageRequestVO requestVM) {
        return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() ->
                messageUserMapper.studentPage(requestVM)
        );
    }
 
    @Override
    public PageInfo<Message> page(MessagePageRequestVO requestVM) {
        return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() ->
                messageMapper.page(requestVM)
        );
    }
 
    @Override
    public List<MessageUser> selectByMessageIds(List<Integer> ids) {
        return messageUserMapper.selectByMessageIds(ids);
    }
 
    @Override
    @Transactional
    public void sendMessage(Message message, List<MessageUser> 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());
    }
 
}