admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
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
133
134
135
136
137
138
139
140
141
142
package com.yeshi.fanli.service.impl.msg;
 
import com.yeshi.fanli.dao.user.msg.MsgOverViewsDao;
import com.yeshi.fanli.entity.bus.msg.*;
import com.yeshi.fanli.lijin.entity.MsgLijinVIPDetail;
import com.yeshi.fanli.lijin.service.MsgLijinVIPService;
import com.yeshi.fanli.lijin.service.impl.MsgLijinVIPServiceImpl;
import com.yeshi.fanli.service.inter.money.msg.MsgMoneyDetailService;
import com.yeshi.fanli.service.inter.msg.MsgOtherDetailService;
import com.yeshi.fanli.service.inter.msg.MsgOverViewsService;
import com.yeshi.fanli.service.inter.msg.UserSystemMsgService;
import com.yeshi.fanli.service.inter.order.msg.MsgOrderDetailService;
import com.yeshi.fanli.service.inter.user.invite.MsgInviteDetailService;
import com.yeshi.fanli.service.inter.user.msg.MsgAccountDetailService;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.*;
 
@Service
public class MsgOverViewsServiceImpl implements MsgOverViewsService {
 
    @Resource
    private MsgOverViewsDao msgOverViewsDao;
    @Resource
    private MsgAccountDetailService msgAccountDetailService;
    @Resource
    private MsgInviteDetailService msgInviteDetailService;
    @Resource
    private MsgMoneyDetailService msgMoneyDetailService;
    @Resource
    private MsgOrderDetailService msgOrderDetailService;
    @Resource
    private MsgOtherDetailService msgOtherDetailService;
    @Resource
    private MsgLijinVIPService msgLijinVIPService;
    @Resource
    private UserSystemMsgService userSystemMsgService;
 
    @Override
    public void save(MsgOverViews msgOverViews) {
        if (msgOverViews == null)
            return;
        if (msgOverViews.getMsgType() == null || msgOverViews.getUid() == null || msgOverViews.getIdentityCode() == null)
            return;
        msgOverViews.setId(MsgOverViews.createId(msgOverViews.getMsgType(), msgOverViews.getIdentityCode()));
        if (msgOverViews.getCreateTime() == null) {
            msgOverViews.setCreateTime(new Date());
        }
 
        msgOverViewsDao.save(msgOverViews);
    }
 
    @Override
    public void updateTime(String id, Date updateTime) {
        Update update = new Update();
        update.set("updateTime", updateTime);
        Query query = new Query();
        query.addCriteria(Criteria.where("id").is(id));
        msgOverViewsDao.update(query, update);
    }
 
    @Override
    public List<MsgOverViews> listByUid(Long uid, int page, int pageSize) {
        MsgOverViewsDao.DaoQuery daoQuery = new MsgOverViewsDao.DaoQuery();
        daoQuery.uid = uid;
        daoQuery.start = (page - 1) * pageSize;
        daoQuery.count = pageSize;
        return msgOverViewsDao.list(daoQuery);
    }
 
    @Override
    public long countByUid(Long uid) {
        MsgOverViewsDao.DaoQuery daoQuery = new MsgOverViewsDao.DaoQuery();
        daoQuery.uid = uid;
        return msgOverViewsDao.count(daoQuery);
    }
 
    @Override
    public List<Object> listDetail(List<MsgOverViews> msgList) {
        Object[] objs = new Object[msgList.size()];
        //分类型查询详情
        Map<MsgTypeEnum, List<Long>> map = new HashMap<>();
        Map<String, Integer> positionMap = new HashMap<>();
        int p = 0;
        for (MsgOverViews views : msgList) {
            positionMap.put(views.getMsgType().name() + "#" + views.getIdentityCode(), p++);
            if (map.get(views.getMsgType()) == null) {
                map.put(views.getMsgType(), new ArrayList<>());
            }
            map.get(views.getMsgType()).add(views.getIdentityCode());
        }
 
        for (Iterator<MsgTypeEnum> its = map.keySet().iterator(); its.hasNext(); ) {
            MsgTypeEnum type = its.next();
            List<Long> ids = map.get(type);
            if (type == MsgTypeEnum.lijinVip) {
                List<MsgLijinVIPDetail> list = (msgLijinVIPService.listDetail(ids));
                for (MsgLijinVIPDetail detail : list) {
                    objs[positionMap.get(type.name() + "#" + detail.getId())] = detail;
                }
            } else if (type == MsgTypeEnum.money) {
                List<MsgMoneyDetail> list = (msgMoneyDetailService.listDetail(ids));
                for (MsgMoneyDetail detail : list) {
                    objs[positionMap.get(type.name() + "#" + detail.getId())] = detail;
                }
            } else if (type == MsgTypeEnum.order) {
                List<MsgOrderDetail> list = (msgOrderDetailService.listDetail(ids));
                for (MsgOrderDetail detail : list) {
                    objs[positionMap.get(type.name() + "#" + detail.getId())] = detail;
                }
            } else if (type == MsgTypeEnum.other) {
                List<MsgOtherDetail> list = (msgOtherDetailService.listDetail(ids));
                for (MsgOtherDetail detail : list) {
                    objs[positionMap.get(type.name() + "#" + detail.getId())] = detail;
                }
            } else if (type == MsgTypeEnum.account) {
                List<MsgAccountDetail> list = (msgAccountDetailService.listDetail(ids));
                for (MsgAccountDetail detail : list) {
                    objs[positionMap.get(type.name() + "#" + detail.getId())] = detail;
                }
            } else if (type == MsgTypeEnum.invite) {
                List<MsgInviteDetail> list = (msgInviteDetailService.listDetail(ids));
                for (MsgInviteDetail detail : list) {
                    objs[positionMap.get(type.name() + "#" + detail.getId())] = detail;
                }
            } else if (type == MsgTypeEnum.system) {
                List<UserSystemMsg> list = (userSystemMsgService.listDetail(ids));
                for (UserSystemMsg detail : list) {
                    objs[positionMap.get(type.name() + "#" + detail.getId())] = detail;
                }
            }
        }
        return Arrays.asList(objs);
    }
 
 
}