Commit e29ab850 authored by shiyu's avatar shiyu

关注和粉丝

parent 4b76075a
...@@ -74,5 +74,20 @@ public class DateTimeUtil { ...@@ -74,5 +74,20 @@ public class DateTimeUtil {
} }
/**
* 判断是否是当前的日期
* @param date
* @param pattern
* @return
*/
public static boolean isThisTime(Date date, String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
String param = sdf.format(date);
String now = sdf.format(new Date());
if (param.equals(now)) {
return true;
}
return false;
}
} }
...@@ -42,7 +42,7 @@ public class MessageRecordDaoImpl implements MessageRecordDao { ...@@ -42,7 +42,7 @@ public class MessageRecordDaoImpl implements MessageRecordDao {
JdbcHelper.ifPresent(dto.getState(), criteria::andStateEqualTo); JdbcHelper.ifPresent(dto.getState(), criteria::andStateEqualTo);
//排除删除的消息 //排除删除的消息
JdbcHelper.ifPresent(dto.getExcluedState(), criteria::andStateNotEqualTo); JdbcHelper.ifPresent(dto.getExcluedState(), criteria::andStateNotEqualTo);
example.setOrderByClause(" update_time desc"); example.setOrderByClause(" create_time desc");
PageHelper.startPage(dto.getPage(), dto.getLimit()); PageHelper.startPage(dto.getPage(), dto.getLimit());
return messageRecordMapper.selectByExample(example); return messageRecordMapper.selectByExample(example);
} }
......
...@@ -55,5 +55,7 @@ public class MessageVo implements Entity { ...@@ -55,5 +55,7 @@ public class MessageVo implements Entity {
*/ */
private Date createTime; private Date createTime;
private String time;
} }
...@@ -135,10 +135,26 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService { ...@@ -135,10 +135,26 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
List<FollowFansRecordVo> followFansRecordVos = new ArrayList<>(); List<FollowFansRecordVo> followFansRecordVos = new ArrayList<>();
dto.setFollowerId(dto.getSearchTargetId()); dto.setFollowerId(dto.getSearchTargetId());
List<FollowFansRecord> followFansRecordList = followFansRecordDao.findList(dto); List<FollowFansRecord> followFansRecordList = followFansRecordDao.findList(dto);
//查询关注的人
FollowFansRecordRequestDto followFansRecordRequestDto = new FollowFansRecordRequestDto();
followFansRecordRequestDto.setFansId(dto.getSearchTargetId());
Result followResult = findFollowList(followFansRecordRequestDto);
if (!followResult.getSuccess()) {
return Result.failed();
}
List<FollowFansRecord> followRecordList = (List<FollowFansRecord>) followResult.getData();
List<Long> followerIdList = followRecordList.stream().map(FollowFansRecord::getFansId).collect(Collectors.toList());
followFansRecordList.forEach(f -> { followFansRecordList.forEach(f -> {
FollowFansRecordVo followFansRecordVo = new FollowFansRecordVo(); FollowFansRecordVo followFansRecordVo = new FollowFansRecordVo();
EntityMapper.copyAttribute(f, followFansRecordVo); EntityMapper.copyAttribute(f, followFansRecordVo);
followFansRecordVo.setFansName(cacheUtil.getAppletUserNameById(f.getFansId())); followFansRecordVo.setFansName(cacheUtil.getAppletUserNameById(f.getFansId()));
if (followerIdList.contains(f.getFansId().longValue())) {
followFansRecordVo.setRelation("互相关注");
} else {
followFansRecordVo.setRelation("回关");
}
followFansRecordVos.add(followFansRecordVo); followFansRecordVos.add(followFansRecordVo);
}); });
return Result.success(followFansRecordVos); return Result.success(followFansRecordVos);
......
package com.wwdz.ch.wx.impl; package com.wwdz.ch.wx.impl;
import com.github.pagehelper.PageInfo;
import com.wwdz.ch.core.consts.MessageEnum; import com.wwdz.ch.core.consts.MessageEnum;
import com.wwdz.ch.core.consts.ResultCode; import com.wwdz.ch.core.consts.ResultCode;
import com.wwdz.ch.core.type.PageSearchResult;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.CacheUtil; import com.wwdz.ch.core.util.CacheUtil;
import com.wwdz.ch.core.util.DateTimeUtil;
import com.wwdz.ch.core.util.MediaUtil;
import com.wwdz.ch.core.util.StringUtil;
import com.wwdz.ch.db.dao.ItemDao;
import com.wwdz.ch.db.dao.MessageContentDao; import com.wwdz.ch.db.dao.MessageContentDao;
import com.wwdz.ch.db.dao.MessageRecordDao; import com.wwdz.ch.db.dao.MessageRecordDao;
import com.wwdz.ch.db.domain.Item;
import com.wwdz.ch.db.domain.MessageContent; import com.wwdz.ch.db.domain.MessageContent;
import com.wwdz.ch.db.domain.MessageRecord; import com.wwdz.ch.db.domain.MessageRecord;
import com.wwdz.ch.db.dto.MessageRecordRequestDto; import com.wwdz.ch.db.dto.MessageRecordRequestDto;
import com.wwdz.ch.wx.entity.request.MessageRequestDto; import com.wwdz.ch.wx.entity.request.MessageRequestDto;
import com.wwdz.ch.wx.entity.vo.MessageVo;
import com.wwdz.ch.wx.service.MessageService; import com.wwdz.ch.wx.service.MessageService;
import com.xxdxxs.entity.Entity; import com.xxdxxs.entity.Entity;
import com.xxdxxs.service.FormHandler; import com.xxdxxs.service.FormHandler;
...@@ -22,9 +30,12 @@ import org.springframework.stereotype.Service; ...@@ -22,9 +30,12 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.Date; import java.awt.*;
import java.util.HashMap; import java.text.SimpleDateFormat;
import java.util.Map; import java.util.*;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service @Service
public class MessageServiceImpl implements MessageService { public class MessageServiceImpl implements MessageService {
...@@ -37,6 +48,9 @@ public class MessageServiceImpl implements MessageService { ...@@ -37,6 +48,9 @@ public class MessageServiceImpl implements MessageService {
@Autowired @Autowired
MessageContentDao messageContentDao; MessageContentDao messageContentDao;
@Autowired
ItemDao itemDao;
@Autowired @Autowired
CacheUtil cacheUtil; CacheUtil cacheUtil;
...@@ -81,11 +95,98 @@ public class MessageServiceImpl implements MessageService { ...@@ -81,11 +95,98 @@ public class MessageServiceImpl implements MessageService {
@Override @Override
public Result findList(MessageRequestDto messageRequestDto) { public Result findList(MessageRequestDto messageRequestDto) {
return null; try {
MessageRecordRequestDto messageRecordRequestDto = new MessageRecordRequestDto();
messageRecordRequestDto.setReceiverId(messageRequestDto.getReceiverId());
messageRecordRequestDto.setType(messageRequestDto.getType());
List<MessageRecord> list = messageRecordDao.findList(messageRecordRequestDto);
PageInfo<MessageRecord> pageInfo = new PageInfo<>(list);
List<Integer> idList = list.stream().map(MessageRecord::getMessageId).collect(Collectors.toList());
//查询消息内容
List<MessageContent> messageContentList = messageContentDao.findListByIds(idList);
Map<Integer, MessageContent> messageContentMap = messageContentList.stream().collect(Collectors.toMap(MessageContent::getId, Function.identity()));
List<MessageVo> messageVos = new ArrayList<>();
list.forEach(m -> {
MessageVo messageVo = new MessageVo();
messageVo.setMessageId(m.getMessageId());
messageVo.setSenderId(messageContentMap.get(m.getMessageId()).getSenderId());
messageVo.setSenderName(cacheUtil.getAppletUserNameById(messageContentMap.get(m.getMessageId()).getSenderId()));
messageVo.setReceiverId(m.getReceiverId());
messageVo.setReceiverName(cacheUtil.getAppletUserNameById(m.getReceiverId()));
messageVo.setType(m.getType());
messageVo.setTypeName(MessageEnum.TypeEnum.getNameByCode(m.getType()));
Date messageCreateTime = m.getCreateTime();
String time;
if (DateTimeUtil.isThisTime(messageCreateTime, "yyyy-MM-dd")) {
time = new SimpleDateFormat("HH:mm").format(messageCreateTime);
} else if (DateTimeUtil.isThisTime(messageCreateTime, "yyyy")) {
time = new SimpleDateFormat("MM-dd").format(messageCreateTime);
} else {
time = new SimpleDateFormat("yyyy-MM-dd").format(messageCreateTime);
}
Map<String, Object> contentMap = new HashMap<>();
if (MessageEnum.TypeEnum.SHARE.getCode() == m.getType().intValue()) {
long itemId = Long.valueOf(messageContentMap.get(m.getMessageId()).getContent());
Item item = itemDao.findDetails(itemId);
contentMap.put("item", MediaUtil.getHomePageImage(item.getImages(), item.getVideos()));
contentMap.put("msg", "分享了您的藏品");
} else if (MessageEnum.TypeEnum.COLLECT.getCode() == m.getType().intValue()) {
long itemId = Long.valueOf(messageContentMap.get(m.getMessageId()).getContent());
Item item = itemDao.findDetails(itemId);
contentMap.put("item", MediaUtil.getHomePageImage(item.getImages(), item.getVideos()));
contentMap.put("msg", "收藏了您的藏品");
}
else if (MessageEnum.TypeEnum.FOLLOW.getCode() == m.getType().intValue()) {
contentMap.put("msg", "关注了您");
}
contentMap.put("time", time);
messageVo.setContent(contentMap);
messageVos.add(messageVo);
});
//把未读消息修改为已读
List<Integer> unreadList = list.stream().filter(m->m.getState().intValue() == MessageEnum.StateEnum.UNREAD.getCode()).map(MessageRecord::getMessageId).collect(Collectors.toList());
unreadList.forEach(i -> {
MessageRecord record = new MessageRecord();
record.setId(i);
record.setState(MessageEnum.StateEnum.READED.getCode());
record.setUpdateTime(new Date());
messageRecordDao.update(record);
});
return Result.success(PageSearchResult.of(pageInfo, messageVos));
} catch (Exception e) {
logger.error("查询对应消息列表 error : {}", e);
}
return Result.failed();
}
@Override
public Result countUnreadNumGroupByType(MessageRequestDto messageRequestDto) {
try {
MessageRecordRequestDto messageRecordRequestDto = new MessageRecordRequestDto();
messageRecordRequestDto.setReceiverId(messageRequestDto.getReceiverId());
messageRecordRequestDto.setState(MessageEnum.StateEnum.UNREAD.getCode());
List<MessageRecord> list = messageRecordDao.findList(messageRecordRequestDto);
Map<Integer, Long> typeNumMap = list.stream().collect(Collectors.groupingBy(MessageRecord::getType, Collectors.counting()));
Map<Object, Object> map = new HashMap<>();
for (Map.Entry<Integer, Long> entry : typeNumMap.entrySet()) {
int type = entry.getKey();
long num = entry.getValue();
map.put(type, num);
} }
return Result.success(map);
} catch (Exception e) {
logger.error("统计未读消息 error : {}", e);
}
return Result.failed();
}
@Override @Override
public Result findUnreadNum(MessageRequestDto messageRequestDto) { public Result countUnreadNum(MessageRequestDto messageRequestDto) {
try { try {
if (messageRequestDto.getReceiverId() == null) { if (messageRequestDto.getReceiverId() == null) {
return Result.failed(ResultCode.PARAM_ERROR); return Result.failed(ResultCode.PARAM_ERROR);
......
...@@ -26,7 +26,15 @@ public interface MessageService { ...@@ -26,7 +26,15 @@ public interface MessageService {
* @param messageRequestDto * @param messageRequestDto
* @return * @return
*/ */
Result findUnreadNum(MessageRequestDto messageRequestDto); Result countUnreadNum(MessageRequestDto messageRequestDto);
/**
* 按消息类型统计未读信息数量
* @param messageRequestDto
* @return
*/
Result countUnreadNumGroupByType(MessageRequestDto messageRequestDto);
/** /**
......
package com.wwdz.ch.wx.web;
import com.alibaba.fastjson.JSON;
import com.wwdz.ch.core.consts.ResultCode;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.wx.entity.request.MessageRequestDto;
import com.wwdz.ch.wx.service.MessageService;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/wx/message")
public class MessageController {
private static final Logger logger = LoggerFactory.getLogger(MessageController.class);
@Autowired
MessageService messageService;
@ApiOperation(value = "统计未读消息数量")
@PostMapping("/countUnreadNum")
public Result countUnreadNum(@RequestBody MessageRequestDto dto) {
logger.info("统计未读消息数量,请求参数:{}", JSON.toJSONString(dto));
if (dto.getReceiverId() == null) {
return Result.failed(ResultCode.PARAM_ERROR);
}
return messageService.countUnreadNum(dto);
}
@ApiOperation(value = "根据消息类型统计未读消息数量")
@PostMapping("/countUnreadNumGroupByType")
public Result countUnreadNumGroupByType(@RequestBody MessageRequestDto dto) {
logger.info("根据消息类型统计未读消息数量,请求参数:{}", JSON.toJSONString(dto));
if (dto.getReceiverId() == null) {
return Result.failed(ResultCode.PARAM_ERROR);
}
return messageService.countUnreadNum(dto);
}
@ApiOperation(value = "根据消息类型统计未读消息数量")
@PostMapping("/findList")
public Result findList(@RequestBody MessageRequestDto dto) {
logger.info("根据消息类型统计未读消息数量,请求参数:{}", JSON.toJSONString(dto));
if (dto.getReceiverId() == null) {
return Result.failed(ResultCode.PARAM_ERROR);
}
return messageService.findList(dto);
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment