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);
|
}
|
|
|
}
|