青羊经侦大队-数据平台
baizonghao
2023-04-23 028bd9c7cccb1ba7569636c631fa3c83a16d3e48
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
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<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()));
 
                User user = userDao.selectOne(new QueryWrapper<User>().eq("id", report.getUserId()));
 
                if (!Objects.isNull(user)){
                    username = user.getRealName();
                }else {
                    username="";
                }
                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).eq(Announcement::getStatus, 1));
    }
 
    @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) {
        return messageDao.selectList(new QueryWrapper<Message>().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<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());
    }
}