青羊经侦大队-数据平台
11
baizonghao
2023-05-25 7ea5eece501c98a91555a5358931367e78e9d23b
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 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;
            Integer flag = 0;
            if (item.getUserId() == null) {
                User user = userDao.selectOne(new QueryWrapper<User>().eq("id", item.getCopId()));
                flag = 2;
                username = user.getRealName();
            } else {
                Report report = reportDao.selectOne(new QueryWrapper<Report>().eq("id", item.getUserId()));
 
                User user = userDao.selectOne(new QueryWrapper<User>().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<Message>().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<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());
    }
}