青羊经侦大队-数据平台
wl
2022-08-16 1fb2cfb2bcb152bee03f8a332700241693cfd9b6
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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 java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
 
/**
 * 群表
 * (Group)表服务实现类
 *
 * @author makejava
 * @since 2022-07-11 16:35:57
 */
@Service("groupService")
public class GroupServiceImpl extends ServiceImpl<GroupDao, Group> 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<GroupMessageVo> getAllMessage(Integer id) {
        List<GroupMessageVo> list = messageDao.selectList(new QueryWrapper<Message>().eq("group_id", id).orderByAsc("ctime")).stream().map(item -> {
            String username;
            String pic = null;
            if (item.getUserId() == null) {
                username = userDao.selectOne(new QueryWrapper<User>().eq("id", item.getCopId())).getRealName();
            } else {
                Report report = reportDao.selectOne(new QueryWrapper<Report>().eq("id", item.getUserId()));
                username = userDao.selectOne(new QueryWrapper<User>().eq("id", report.getUserId())).getRealName();
                pic = report.getPic();
                Message message = new Message();
                message.setReportName(username);
                messageDao.update(message,new QueryWrapper<Message>().eq("user_id",item.getUserId()));
            }
            GroupMessageVo groupMessageVo = new GroupMessageVo();
            groupMessageVo.setUserName(username);
            groupMessageVo.setText(item.getText());
            groupMessageVo.setCtime(item.getCtime());
            groupMessageVo.setPic(pic);
            return groupMessageVo;
        }).collect(Collectors.toList());
        return list;
    }
 
    @Override
    public List<Announcement> getAllNotice(Integer id) {
        return announcementDao.selectList(new LambdaQueryWrapper<>(Announcement.class).eq(Announcement::getGroupId, id));
    }
 
    @Override
    public Boolean sendMessage(Integer id, String text) {
        Message message = new Message().setCopId(userDao.selectOne(new QueryWrapper<User>().eq("login_username", SecurityContextHolder.getContext().getAuthentication().getPrincipal())).getId())
                .setText(text).setGroupId(id).setCtime(new Date());
        return messageDao.insert(message) > 0;
    }
 
    @Override
    public List<GroupUserVo> getAllUser(Integer id) {
        return groupDao.getAllUser(id);
    }
 
    @Override
    public List<GroupMessageVo> getByCondition(String name, String text,Integer groupId) {
        List<GroupMessageVo> groupUserVoList;
        if (StringUtils.isBlank(name)) {
          groupUserVoList = messageDao.selectList(new QueryWrapper<Message>().like(StringUtils.isNotBlank(text), "text", text).eq("group_id",groupId).orderByAsc("ctime")).stream().map(item -> {
                String username;
                String pic = null;
                if (item.getUserId() == null) {
                    username = userDao.selectOne(new QueryWrapper<User>().eq("cop_id", item.getCopId())).getRealName();
                } else {
                    Report report = reportDao.selectOne(new QueryWrapper<Report>().eq("id", item.getUserId()));
                    username = userDao.selectOne(new QueryWrapper<User>().eq("id", report.getUserId())).getRealName();
                    pic = report.getPic();
                }
                GroupMessageVo groupMessageVo = new GroupMessageVo();
                groupMessageVo.setUserName(username);
                groupMessageVo.setText(item.getText());
                groupMessageVo.setCtime(item.getCtime());
                groupMessageVo.setPic(pic);
                return groupMessageVo;
            }).collect(Collectors.toList());
        } else {
             groupUserVoList = messageDao.selectList(new QueryWrapper<Message>().eq("report_Name", name).eq("group_id",groupId).orderByAsc("ctime")).stream().map(item -> {
                Report report = reportDao.selectOne(new QueryWrapper<Report>().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());
        }
        return groupUserVoList;
    }
}