package com.imooc.service.impl; import com.imooc.base.BaseInfoProperties; import com.imooc.enums.MessageEnum; import com.imooc.mo.MessageMO; import com.imooc.pojo.Users; import com.imooc.repository.MessageRepository; import com.imooc.service.MsgService; import com.imooc.service.UserService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @Service public class MsgServiceImpl extends BaseInfoProperties implements MsgService { @Autowired private MessageRepository messageRepository; @Autowired private UserService userService; @Override public void createMsg(String fromUserId, String toUserId, Integer type, Map msgContent) { Users fromUser = userService.getUser(fromUserId); MessageMO messageMO = new MessageMO(); messageMO.setFromUserId(fromUserId); messageMO.setFromNickname(fromUser.getNickname()); messageMO.setFromFace(fromUser.getFace()); messageMO.setToUserId(toUserId); messageMO.setMsgType(type); if (msgContent != null) { messageMO.setMsgContent(msgContent); } messageMO.setCreateTime(new Date()); messageRepository.save(messageMO); } // @Override public List queryList(String toUserId, Integer page, Integer pageSize) { Pageable pageable = PageRequest.of(page, pageSize, Sort.Direction.DESC, "createTime"); List list = messageRepository .findAllByToUserIdEqualsOrderByCreateTimeDesc(toUserId, pageable); for (MessageMO msg : list) { // 如果类型是关注消息,则需要查询我之前有没有关注过他,用于在前端标记“互粉”“互关” if (msg.getMsgType() != null && msg.getMsgType() == MessageEnum.FOLLOW_YOU.type) { Map map = msg.getMsgContent(); if (map == null) { map = new HashMap(); } String relationship = redis.get(REDIS_FANS_AND_VLOGGER_RELATIONSHIP + ":" + msg.getToUserId() + ":" + msg.getFromUserId()); if (StringUtils.isNotBlank(relationship) && relationship.equalsIgnoreCase("1")) { map.put("isFriend", true); } else { map.put("isFriend", false); } msg.setMsgContent(map); } } return list; } }