2025-03-10 15:40:51 +08:00

90 lines
3.0 KiB
Java

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<MessageMO> queryList(String toUserId,
Integer page,
Integer pageSize) {
Pageable pageable = PageRequest.of(page,
pageSize,
Sort.Direction.DESC,
"createTime");
List<MessageMO> 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;
}
}