|
@@ -3,46 +3,48 @@ package shop.alien.store.service.impl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
-import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.github.pagehelper.util.StringUtil;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
-import org.springframework.util.StringUtils;
|
|
|
import shop.alien.entity.store.*;
|
|
|
+import shop.alien.entity.store.vo.LifeBlacklistVo;
|
|
|
import shop.alien.entity.store.vo.LifeFansVo;
|
|
|
import shop.alien.entity.store.vo.LifeMessageVo;
|
|
|
-import shop.alien.mapper.LifeFansMapper;
|
|
|
-import shop.alien.mapper.LifeMessageMapper;
|
|
|
-import shop.alien.mapper.LifeUserMapper;
|
|
|
+import shop.alien.mapper.*;
|
|
|
import shop.alien.store.service.LifeMessageService;
|
|
|
import shop.alien.store.service.LifeUserService;
|
|
|
import shop.alien.util.common.JwtUtil;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Comparator;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
@RequiredArgsConstructor
|
|
|
public class LifeMessageServiceImpl extends ServiceImpl<LifeMessageMapper, LifeMessage> implements LifeMessageService {
|
|
|
|
|
|
- private final LifeMessageMapper messageMapper;
|
|
|
-
|
|
|
+ private final LifeMessageMapper lifeMessageMapper;
|
|
|
private final LifeFansMapper fansMapper;
|
|
|
private final LifeFansMapper lifeFansMapper;
|
|
|
private final LifeUserMapper lifeUserMapper;
|
|
|
private final StoreUserServiceImpl storeUserService;
|
|
|
private final StoreImgServiceImpl storeImgService;
|
|
|
private final LifeUserService lifeUserService;
|
|
|
-
|
|
|
+ private final LifeMessageNotDisturbMapper lifeMessageNotDisturbMapper;
|
|
|
+ private final LifeBlacklistMapper lifeBlacklistMapper;
|
|
|
+ private final LifeNoticeMapper lifeNoticeMapper;
|
|
|
|
|
|
@Override
|
|
|
- public List<LifeMessageVo> getMessageList(String receiverId, int friendType, String search) {
|
|
|
- // 查询所有好友
|
|
|
+ public List<LifeMessageVo> getMessageList(String receiverId, int friendType, String search) throws Exception {
|
|
|
+ try {
|
|
|
+ // 查询所有好友
|
|
|
// QueryWrapper<LifeFansVo> wrapper = new QueryWrapper<>();
|
|
|
// wrapper.groupBy("foll.phoneId");
|
|
|
|
|
@@ -72,283 +74,364 @@ public class LifeMessageServiceImpl extends ServiceImpl<LifeMessageMapper, LifeM
|
|
|
// wrapper.apply("(sender_id not in (" + friendsIdsStr + ") and receiver_id not in (" + friendsIdsStr + "))");
|
|
|
// }
|
|
|
|
|
|
- String blockerType = "user".equals(Objects.requireNonNull(JwtUtil.getCurrentUserInfo()).getString("userType")) ? "2" : "1";
|
|
|
- String blockerId = JwtUtil.getCurrentUserInfo().getString("userId");
|
|
|
- QueryWrapper<LifeFansVo> wrapper = new QueryWrapper<>();
|
|
|
- wrapper.eq("message.num", 1);
|
|
|
- // 过滤拉黑
|
|
|
- wrapper.apply("(user.id not in ( " +
|
|
|
- " select blocked_id from life_blacklist " +
|
|
|
- " where blocker_type = '" + blockerType + "' and blocker_id = '" + blockerId + "' and blocked_type = '2' and delete_flag = 0 " +
|
|
|
- ") or user.id is null)");
|
|
|
- wrapper.apply("(suser.id not in ( " +
|
|
|
- " select blocked_id from life_blacklist " +
|
|
|
- " where blocker_type = '" + blockerType + "' and blocker_id = '" + blockerId + "' and blocked_type = '1' and delete_flag = 0 " +
|
|
|
- ") or suser.id is null)");
|
|
|
-
|
|
|
- // 通过搜索查询的情况下 不区分是否聊过 搜索所有消息
|
|
|
- if (0 == friendType && StringUtil.isNotEmpty(search)) {
|
|
|
- wrapper.apply("(user.user_name like '%" + search + "%' or suser.name like '%" + search + "%')");
|
|
|
- // 聊过
|
|
|
- } else if (1 == friendType) {
|
|
|
- wrapper.apply("message.phoneId in ( " +
|
|
|
- " select receiver_id " +
|
|
|
- " from life_message " +
|
|
|
- " where sender_id = '" + receiverId + "'" +
|
|
|
- " group by receiver_id " +
|
|
|
- ")");
|
|
|
- // 没聊过
|
|
|
- } else if (2 == friendType) {
|
|
|
- wrapper.apply("message.phoneId not in ( " +
|
|
|
- " select receiver_id " +
|
|
|
- " from life_message " +
|
|
|
- " where sender_id = '" + receiverId + "'" +
|
|
|
- " group by receiver_id " +
|
|
|
- ")");
|
|
|
- }
|
|
|
- wrapper.orderByDesc("message.created_time");
|
|
|
+ String blockerType = "user".equals(Objects.requireNonNull(JwtUtil.getCurrentUserInfo()).getString("userType")) ? "2" : "1";
|
|
|
+ String blockerId = JwtUtil.getCurrentUserInfo().getString("userId");
|
|
|
+ QueryWrapper<LifeFansVo> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.eq("message.num", 1);
|
|
|
+ // 过滤拉黑
|
|
|
+ wrapper.apply("(user.id not in ( " +
|
|
|
+ " select blocked_id from life_blacklist " +
|
|
|
+ " where blocker_type = '" + blockerType + "' and blocker_id = '" + blockerId + "' and blocked_type = '2' and delete_flag = 0 " +
|
|
|
+ ") or user.id is null)");
|
|
|
+ wrapper.apply("(suser.id not in ( " +
|
|
|
+ " select blocked_id from life_blacklist " +
|
|
|
+ " where blocker_type = '" + blockerType + "' and blocker_id = '" + blockerId + "' and blocked_type = '1' and delete_flag = 0 " +
|
|
|
+ ") or suser.id is null)");
|
|
|
+
|
|
|
+ // 通过搜索查询的情况下 不区分是否聊过 搜索所有消息
|
|
|
+ if (0 == friendType && StringUtil.isNotEmpty(search)) {
|
|
|
+ wrapper.apply("(user.user_name like '%" + search + "%' or suser.name like '%" + search + "%')");
|
|
|
+ // 聊过
|
|
|
+ } else if (1 == friendType) {
|
|
|
+ wrapper.apply("message.phoneId in ( " +
|
|
|
+ " select receiver_id " +
|
|
|
+ " from life_message " +
|
|
|
+ " where sender_id = '" + receiverId + "'" +
|
|
|
+ " group by receiver_id " +
|
|
|
+ ")");
|
|
|
+ // 没聊过
|
|
|
+ } else if (2 == friendType) {
|
|
|
+ wrapper.apply("message.phoneId not in ( " +
|
|
|
+ " select receiver_id " +
|
|
|
+ " from life_message " +
|
|
|
+ " where sender_id = '" + receiverId + "'" +
|
|
|
+ " group by receiver_id " +
|
|
|
+ ")");
|
|
|
+ }
|
|
|
+ wrapper.orderByDesc("message.created_time");
|
|
|
// IPage<LifeMessageVo> ipage = new Page<>(page, size);
|
|
|
- List<LifeMessageVo> lifeMessagePageList = messageMapper.getLifeMessagePageByPhoneId(receiverId, wrapper);
|
|
|
- if (!CollectionUtils.isEmpty(lifeMessagePageList)) {
|
|
|
- // 取出所有发送消息的用户
|
|
|
+ List<LifeMessageVo> lifeMessagePageList = lifeMessageMapper.getLifeMessagePageByPhoneId(receiverId, wrapper);
|
|
|
+ if (!CollectionUtils.isEmpty(lifeMessagePageList)) {
|
|
|
+ // 取出所有发送消息的用户
|
|
|
// List<String> phoneIdList = lifeMessagePageList.stream().map(LifeMessageVo::getPhoneId).filter(item -> item.contains("_")).collect(Collectors.toList());
|
|
|
|
|
|
- // 当前用户的所有关注
|
|
|
- LambdaQueryWrapper<LifeFans> followWrapper = new LambdaQueryWrapper<>();
|
|
|
- followWrapper.eq(LifeFans::getFansId, receiverId);
|
|
|
- followWrapper.eq(LifeFans::getDeleteFlag, 0);
|
|
|
- List<LifeFans> followList = fansMapper.selectList(followWrapper);
|
|
|
- List<String> followIds = followList.stream().map(LifeFans::getFollowedId).collect(Collectors.toList());
|
|
|
-
|
|
|
- // 当前用户的所有粉丝
|
|
|
- LambdaQueryWrapper<LifeFans> fansWrapper = new LambdaQueryWrapper<>();
|
|
|
- fansWrapper.eq(LifeFans::getFollowedId, receiverId);
|
|
|
- followWrapper.eq(LifeFans::getDeleteFlag, 0);
|
|
|
- List<LifeFans> fansList = fansMapper.selectList(fansWrapper);
|
|
|
- List<String> fansIds = fansList.stream().map(LifeFans::getFansId).collect(Collectors.toList());
|
|
|
-
|
|
|
- // 查询所有未读消息
|
|
|
- LambdaQueryWrapper<LifeMessage> messageWrapper = new LambdaQueryWrapper<>();
|
|
|
- messageWrapper.eq(LifeMessage::getReceiverId, receiverId);
|
|
|
- messageWrapper.eq(LifeMessage::getIsRead, 0);
|
|
|
- messageWrapper.eq(LifeMessage::getType, "1");
|
|
|
- messageWrapper.eq(LifeMessage::getDeleteFlag, 0);
|
|
|
- List<LifeMessage> noReadList = messageMapper.selectList(messageWrapper);
|
|
|
+ // 当前用户的所有关注
|
|
|
+ LambdaQueryWrapper<LifeFans> followWrapper = new LambdaQueryWrapper<>();
|
|
|
+ followWrapper.eq(LifeFans::getFansId, receiverId);
|
|
|
+ followWrapper.eq(LifeFans::getDeleteFlag, 0);
|
|
|
+ List<LifeFans> followList = fansMapper.selectList(followWrapper);
|
|
|
+ List<String> followIds = followList.stream().map(LifeFans::getFollowedId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 当前用户的所有粉丝
|
|
|
+ LambdaQueryWrapper<LifeFans> fansWrapper = new LambdaQueryWrapper<>();
|
|
|
+ fansWrapper.eq(LifeFans::getFollowedId, receiverId);
|
|
|
+ followWrapper.eq(LifeFans::getDeleteFlag, 0);
|
|
|
+ List<LifeFans> fansList = fansMapper.selectList(fansWrapper);
|
|
|
+ List<String> fansIds = fansList.stream().map(LifeFans::getFansId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 查询所有未读消息
|
|
|
+ LambdaQueryWrapper<LifeMessage> messageWrapper = new LambdaQueryWrapper<>();
|
|
|
+ messageWrapper.eq(LifeMessage::getReceiverId, receiverId);
|
|
|
+ messageWrapper.eq(LifeMessage::getIsRead, 0);
|
|
|
+ messageWrapper.eq(LifeMessage::getDeleteFlag, 0);
|
|
|
+ List<LifeMessage> noReadList = lifeMessageMapper.selectList(messageWrapper);
|
|
|
+
|
|
|
+ // 查询免打扰用户
|
|
|
+ QueryWrapper<LifeMessageNotDisturb> notDisturbWrapper = new QueryWrapper<>();
|
|
|
+ notDisturbWrapper.eq("phone_id", receiverId);
|
|
|
+ List<String> notDisturbList = lifeMessageNotDisturbMapper.selectList(notDisturbWrapper).stream().map(LifeMessageNotDisturb::getNotDisturbId).collect(Collectors.toList());
|
|
|
|
|
|
// // 根据手机号查询发送人信息
|
|
|
// List<String> storePhoneList = phoneIdList.stream().filter(item -> "store".equals(item.split("_")[0])).map(item -> item.split("_")[1]).collect(Collectors.toList());
|
|
|
// List<String> userPhoneList = phoneIdList.stream().filter(item -> "user".equals(item.split("_")[0])).map(item -> item.split("_")[1]).collect(Collectors.toList());
|
|
|
// String storePhones = "'" + String.join("','", storePhoneList) + "'";
|
|
|
// String userPhones = "'" + String.join("','", userPhoneList) + "'";
|
|
|
-// List<LifeMessageVo> userList = messageMapper.getLifeUserAndStoreUserByPhone(storePhones, userPhones);
|
|
|
+// List<LifeMessageVo> userList = lifeMessageMapper.getLifeUserAndStoreUserByPhone(storePhones, userPhones);
|
|
|
|
|
|
- for (LifeMessageVo messageVo : lifeMessagePageList) {
|
|
|
+ for (LifeMessageVo messageVo : lifeMessagePageList) {
|
|
|
// // 发送人信息
|
|
|
// LifeMessageVo user = userList.stream().filter(item -> item.getPhoneId().equals(messageVo.getPhoneId())).findFirst().orElse(null);
|
|
|
// messageVo.setUserName(null == user ? "" : user.getUserName());
|
|
|
// messageVo.setUserImage(null == user ? "" : user.getUserImage());
|
|
|
|
|
|
- // 未读消息数量
|
|
|
- messageVo.setNotReadCount(noReadList.stream().filter(item -> item.getSenderId().equals(messageVo.getPhoneId())).count());
|
|
|
-
|
|
|
- // 我是否关注对方
|
|
|
- if (followIds.contains(messageVo.getPhoneId())) {
|
|
|
- messageVo.setIsFollowThis("1");
|
|
|
- } else {
|
|
|
- messageVo.setIsFollowThis("0");
|
|
|
- }
|
|
|
-
|
|
|
- // 对方是否关注我
|
|
|
- if (fansIds.contains(messageVo.getPhoneId())) {
|
|
|
- messageVo.setIsFollowMe("1");
|
|
|
- } else {
|
|
|
- messageVo.setIsFollowMe("0");
|
|
|
- }
|
|
|
-
|
|
|
- // 判断当前登录人是否是商户
|
|
|
- boolean store = messageVo.getPhoneId().contains("store_");
|
|
|
- if (store) {
|
|
|
- messageVo.setIsMerchant("1");
|
|
|
- } else {
|
|
|
- messageVo.setIsMerchant("0");
|
|
|
+ // 免打扰
|
|
|
+ if (notDisturbList.contains(messageVo.getPhoneId())) {
|
|
|
+ messageVo.setIsNotDisturb("1");
|
|
|
+ // 未读消息数量
|
|
|
+ messageVo.setNotReadCount(0L);
|
|
|
+ } else {
|
|
|
+ messageVo.setIsNotDisturb("0");
|
|
|
+ messageVo.setNotReadCount(noReadList.stream().filter(item -> item.getSenderId().equals(messageVo.getPhoneId())).count());
|
|
|
+ // 未读消息数量
|
|
|
+ }
|
|
|
+
|
|
|
+ // 我是否关注对方
|
|
|
+ if (followIds.contains(messageVo.getPhoneId())) {
|
|
|
+ messageVo.setIsFollowThis("1");
|
|
|
+ } else {
|
|
|
+ messageVo.setIsFollowThis("0");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 对方是否关注我
|
|
|
+ if (fansIds.contains(messageVo.getPhoneId())) {
|
|
|
+ messageVo.setIsFollowMe("1");
|
|
|
+ } else {
|
|
|
+ messageVo.setIsFollowMe("0");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断当前登录人是否是商户
|
|
|
+ boolean store = messageVo.getPhoneId().contains("store_");
|
|
|
+ if (store) {
|
|
|
+ messageVo.setIsMerchant("1");
|
|
|
+ } else {
|
|
|
+ messageVo.setIsMerchant("0");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- return lifeMessagePageList;
|
|
|
+ return lifeMessagePageList;
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("LifeMessageServiceImpl.getMessageList Error Mgs={}", e.getMessage());
|
|
|
+ throw new Exception(e);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public LifeMessageVo getStrangerMessageNum(String receiverId) {
|
|
|
- String blockerType = "user".equals(Objects.requireNonNull(JwtUtil.getCurrentUserInfo()).getString("userType")) ? "2" : "1";
|
|
|
- String blockerId = JwtUtil.getCurrentUserInfo().getString("userId");
|
|
|
- QueryWrapper<LifeFansVo> wrapper = new QueryWrapper<>();
|
|
|
- // 过滤拉黑
|
|
|
- wrapper.apply("(user.id not in ( " +
|
|
|
- " select blocked_id from life_blacklist " +
|
|
|
- " where blocker_type = '" + blockerType + "' and blocker_id = '" + blockerId + "' and blocked_type = '2' and delete_flag = 0 " +
|
|
|
- ") or user.id is null)");
|
|
|
- wrapper.apply("(suser.id not in ( " +
|
|
|
- " select blocked_id from life_blacklist " +
|
|
|
- " where blocker_type = '" + blockerType + "' and blocker_id = '" + blockerId + "' and blocked_type = '1' and delete_flag = 0 " +
|
|
|
- ") or suser.id is null)");
|
|
|
- // 没聊过
|
|
|
- wrapper.apply("message.phoneId not in ( " +
|
|
|
- " select receiver_id " +
|
|
|
- " from life_message " +
|
|
|
- " where sender_id = '" + receiverId + "'" +
|
|
|
- " group by receiver_id " +
|
|
|
- ")");
|
|
|
- wrapper.orderByDesc("message.created_time");
|
|
|
-// IPage<LifeMessageVo> ipage = new Page<>(1, Integer.MAX_VALUE);
|
|
|
- List<LifeMessageVo> lifeMessagePageList = messageMapper.getLifeMessagePageByPhoneId(receiverId, wrapper);
|
|
|
- LifeMessageVo vo = new LifeMessageVo();
|
|
|
- if (!CollectionUtils.isEmpty(lifeMessagePageList)) {
|
|
|
- vo.setUserName(lifeMessagePageList.get(0).getUserName());
|
|
|
- vo.setNotReadCount(lifeMessagePageList.stream().filter(item -> 0 == item.getIsRead()).count());
|
|
|
- }
|
|
|
+ public LifeMessageVo getStrangerMessageNum(String receiverId) throws Exception {
|
|
|
+ try {
|
|
|
+ // 查询免打扰用户
|
|
|
+ QueryWrapper<LifeMessageNotDisturb> notDisturbWrapper = new QueryWrapper<>();
|
|
|
+ notDisturbWrapper.eq("phone_id", receiverId);
|
|
|
+ List<String> notDisturbList = lifeMessageNotDisturbMapper.selectList(notDisturbWrapper).stream().map(LifeMessageNotDisturb::getNotDisturbId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ String blockerType = "user".equals(Objects.requireNonNull(JwtUtil.getCurrentUserInfo()).getString("userType")) ? "2" : "1";
|
|
|
+ String blockerId = JwtUtil.getCurrentUserInfo().getString("userId");
|
|
|
+ QueryWrapper<LifeFansVo> wrapper = new QueryWrapper<>();
|
|
|
+ // 过滤拉黑
|
|
|
+ wrapper.apply("(user.id not in ( " +
|
|
|
+ " select blocked_id from life_blacklist " +
|
|
|
+ " where blocker_type = '" + blockerType + "' and blocker_id = '" + blockerId + "' and blocked_type = '2' and delete_flag = 0 " +
|
|
|
+ ") or user.id is null)");
|
|
|
+ wrapper.apply("(suser.id not in ( " +
|
|
|
+ " select blocked_id from life_blacklist " +
|
|
|
+ " where blocker_type = '" + blockerType + "' and blocker_id = '" + blockerId + "' and blocked_type = '1' and delete_flag = 0 " +
|
|
|
+ ") or suser.id is null)");
|
|
|
+ // 没聊过
|
|
|
+ wrapper.apply("message.phoneId not in ( " +
|
|
|
+ " select receiver_id " +
|
|
|
+ " from life_message " +
|
|
|
+ " where sender_id = '" + receiverId + "'" +
|
|
|
+ " group by receiver_id " +
|
|
|
+ ")");
|
|
|
+ wrapper.orderByDesc("message.created_time");
|
|
|
+
|
|
|
+ List<LifeMessageVo> lifeMessagePageList = lifeMessageMapper.getLifeMessagePageByPhoneId(receiverId, wrapper);
|
|
|
+ LifeMessageVo vo = new LifeMessageVo();
|
|
|
+ if (!CollectionUtils.isEmpty(lifeMessagePageList)) {
|
|
|
+ vo.setUserName(lifeMessagePageList.get(0).getUserName());
|
|
|
+ lifeMessagePageList = lifeMessagePageList.stream().filter(item -> !notDisturbList.contains(item.getPhoneId())).collect(Collectors.toList());
|
|
|
+ vo.setNotReadCount(lifeMessagePageList.stream().filter(item -> 0 == item.getIsRead()).count());
|
|
|
+ }
|
|
|
|
|
|
- return vo;
|
|
|
+ return vo;
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("LifeMessageServiceImpl.getStrangerMessageNum Error Mgs={}", e.getMessage());
|
|
|
+ throw new Exception(e);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public LifeMessageVo getNoFriendMessageNum(String receiverId) {
|
|
|
- // 查询所有好友
|
|
|
- QueryWrapper<LifeFansVo> wrapper = new QueryWrapper<>();
|
|
|
- wrapper.groupBy("foll.phoneId");
|
|
|
- String blockerType = "";
|
|
|
- String blockerId = "";
|
|
|
- if ("user".equals(receiverId.split("_")[0])) {
|
|
|
- String myselfUserPhone = receiverId.split("_")[1];
|
|
|
- blockerType = "2";
|
|
|
- LifeUser myLifeUser = lifeUserService.getUserByPhone(myselfUserPhone);
|
|
|
- blockerId = String.valueOf(myLifeUser.getId());
|
|
|
- } else {
|
|
|
- String myselfStorePhone = receiverId.split("_")[1];
|
|
|
- blockerType = "1";
|
|
|
- StoreUser myStoreUser = storeUserService.getUserByPhone(myselfStorePhone);
|
|
|
- blockerId = String.valueOf(myStoreUser.getId());
|
|
|
- }
|
|
|
-
|
|
|
- List<LifeFansVo> lifeFansList = lifeFansMapper.getMutualAttention(new Page<>(1, Integer.MAX_VALUE), receiverId, blockerType, blockerId, wrapper).getRecords();
|
|
|
- List<String> friendsIds = lifeFansList.stream().map(LifeFansVo::getPhoneId).filter(item -> !item.equals(receiverId)).collect(Collectors.toList());
|
|
|
- String friendsIdsStr = "'" + String.join("','", friendsIds) + "'";
|
|
|
-
|
|
|
- // 当前用户的所有未关注人消息
|
|
|
- wrapper = new QueryWrapper<>();
|
|
|
- wrapper.eq("num", 1);
|
|
|
- wrapper.apply("(sender_id not in (" + friendsIdsStr + ") and receiver_id not in (" + friendsIdsStr + "))");
|
|
|
- wrapper.orderByDesc("created_time");
|
|
|
-// IPage<LifeMessageVo> ipage = new Page<>(1, Integer.MAX_VALUE);
|
|
|
- List<LifeMessageVo> lifeMessageVoList = messageMapper.getLifeMessagePageByPhoneId(receiverId, wrapper);
|
|
|
-
|
|
|
- LifeMessageVo messageVo = lifeMessageVoList.stream().max(Comparator.comparing(LifeMessageVo::getCreatedTime)).orElse(null);
|
|
|
- if (messageVo != null) {
|
|
|
- messageVo.setNotReadCount(lifeMessageVoList.stream().filter(item -> 0 == item.getIsRead()).count());
|
|
|
- // 根据手机号查询发送人信息
|
|
|
- String storePhones = "''";
|
|
|
- String userPhones = "''";
|
|
|
- if (messageVo.getPhoneId().split("_")[0].equals("store")) {
|
|
|
- storePhones = "'" + messageVo.getPhoneId().split("_")[1] + "'";
|
|
|
+ public LifeMessageVo getNoFriendMessageNum(String receiverId) throws Exception {
|
|
|
+ try {
|
|
|
+ // 查询所有好友
|
|
|
+ QueryWrapper<LifeFansVo> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.groupBy("foll.phoneId");
|
|
|
+ String blockerType = "";
|
|
|
+ String blockerId = "";
|
|
|
+ if ("user".equals(receiverId.split("_")[0])) {
|
|
|
+ String myselfUserPhone = receiverId.split("_")[1];
|
|
|
+ blockerType = "2";
|
|
|
+ LifeUser myLifeUser = lifeUserService.getUserByPhone(myselfUserPhone);
|
|
|
+ blockerId = String.valueOf(myLifeUser.getId());
|
|
|
} else {
|
|
|
- userPhones = "'" + messageVo.getPhoneId().split("_")[1] + "'";
|
|
|
+ String myselfStorePhone = receiverId.split("_")[1];
|
|
|
+ blockerType = "1";
|
|
|
+ StoreUser myStoreUser = storeUserService.getUserByPhone(myselfStorePhone);
|
|
|
+ blockerId = String.valueOf(myStoreUser.getId());
|
|
|
}
|
|
|
- List<LifeMessageVo> userList = messageMapper.getLifeUserAndStoreUserByPhone(storePhones, userPhones);
|
|
|
- if (!CollectionUtils.isEmpty(userList)) {
|
|
|
- messageVo.setUserName(userList.get(0).getUserName());
|
|
|
- messageVo.setUserImage(userList.get(0).getUserImage());
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- return messageVo;
|
|
|
- }
|
|
|
+ List<LifeFansVo> lifeFansList = lifeFansMapper.getMutualAttention(new Page<>(1, Integer.MAX_VALUE), receiverId, blockerType, blockerId, wrapper).getRecords();
|
|
|
+ List<String> friendsIds = lifeFansList.stream().map(LifeFansVo::getPhoneId).filter(item -> !item.equals(receiverId)).collect(Collectors.toList());
|
|
|
+ String friendsIdsStr = "'" + String.join("','", friendsIds) + "'";
|
|
|
|
|
|
- @Override
|
|
|
- public List<LifeMessageVo> getMessageListByReceiverId(String receiverId, String senderId) {
|
|
|
-
|
|
|
-
|
|
|
- // 获取发送方与接收方头像
|
|
|
- LifeUser lifeUser1 = null;
|
|
|
- StoreImg storeImg = null;
|
|
|
- if (receiverId.startsWith("user_")) {
|
|
|
- lifeUser1 = lifeUserMapper.selectOne(new QueryWrapper<LifeUser>().eq("user_phone", receiverId.substring(5)));
|
|
|
- } else {
|
|
|
- StoreUser storeUser1 = storeUserService.getOne(new QueryWrapper<StoreUser>().eq("phone", receiverId.substring(6)));
|
|
|
- List<StoreImg> storeImgList = storeImgService.getStoreImg(storeUser1.getStoreId(), 10);
|
|
|
- if (!storeImgList.isEmpty()) {
|
|
|
- storeImg = storeImgList.get(0);
|
|
|
+ // 当前用户的所有未关注人消息
|
|
|
+ wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.eq("num", 1);
|
|
|
+ wrapper.apply("(sender_id not in (" + friendsIdsStr + ") and receiver_id not in (" + friendsIdsStr + "))");
|
|
|
+ wrapper.orderByDesc("created_time");
|
|
|
+// IPage<LifeMessageVo> ipage = new Page<>(1, Integer.MAX_VALUE);
|
|
|
+ List<LifeMessageVo> lifeMessageVoList = lifeMessageMapper.getLifeMessagePageByPhoneId(receiverId, wrapper);
|
|
|
+
|
|
|
+ LifeMessageVo messageVo = lifeMessageVoList.stream().max(Comparator.comparing(LifeMessageVo::getCreatedTime)).orElse(null);
|
|
|
+ if (messageVo != null) {
|
|
|
+ messageVo.setNotReadCount(lifeMessageVoList.stream().filter(item -> 0 == item.getIsRead()).count());
|
|
|
+ // 根据手机号查询发送人信息
|
|
|
+ String storePhones = "''";
|
|
|
+ String userPhones = "''";
|
|
|
+ if (messageVo.getPhoneId().split("_")[0].equals("store")) {
|
|
|
+ storePhones = "'" + messageVo.getPhoneId().split("_")[1] + "'";
|
|
|
+ } else {
|
|
|
+ userPhones = "'" + messageVo.getPhoneId().split("_")[1] + "'";
|
|
|
+ }
|
|
|
+ List<LifeMessageVo> userList = lifeMessageMapper.getLifeUserAndStoreUserByPhone(storePhones, userPhones);
|
|
|
+ if (!CollectionUtils.isEmpty(userList)) {
|
|
|
+ messageVo.setUserName(userList.get(0).getUserName());
|
|
|
+ messageVo.setUserImage(userList.get(0).getUserImage());
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- LifeUser lifeUser2 = null;
|
|
|
- StoreImg storeImg1 = null;
|
|
|
- if (senderId.startsWith("user_")) {
|
|
|
- lifeUser2 = lifeUserMapper.selectOne(new QueryWrapper<LifeUser>().eq("user_phone", senderId.substring(5)));
|
|
|
- } else {
|
|
|
- StoreUser storeUser2 = storeUserService.getOne(new QueryWrapper<StoreUser>().eq("phone", senderId.substring(6)));
|
|
|
- List<StoreImg> storeImgList = storeImgService.getStoreImg(storeUser2.getStoreId(), 10);
|
|
|
- if (!storeImgList.isEmpty()) {
|
|
|
- storeImg1 = storeImgList.get(0);
|
|
|
- }
|
|
|
+ return messageVo;
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("LifeMessageServiceImpl.getNoFriendMessageNum Error Mgs={}", e.getMessage());
|
|
|
+ throw new Exception(e);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
- List<LifeMessageVo> lifeMessageVos = messageMapper.selectUserImageLists(receiverId, senderId);
|
|
|
- for (LifeMessageVo lifeMessageVo : lifeMessageVos) {
|
|
|
- if (lifeMessageVo.getReceiverId().equals(receiverId)) {
|
|
|
- if (null != lifeUser1) {
|
|
|
- lifeMessageVo.setReceiverImg(lifeUser1.getUserImage());
|
|
|
- } else if (null != storeImg) {
|
|
|
- lifeMessageVo.setReceiverImg(storeImg.getImgUrl());
|
|
|
+ @Override
|
|
|
+ public List<LifeMessageVo> getMessageListByReceiverId(String receiverId, String senderId) throws Exception {
|
|
|
+ try {
|
|
|
+ // 获取发送方与接收方头像
|
|
|
+ LifeUser lifeUser1 = null;
|
|
|
+ StoreImg storeImg = null;
|
|
|
+ if (receiverId.startsWith("user_")) {
|
|
|
+ lifeUser1 = lifeUserMapper.selectOne(new QueryWrapper<LifeUser>().eq("user_phone", receiverId.substring(5)));
|
|
|
+ } else {
|
|
|
+ StoreUser storeUser1 = storeUserService.getOne(new QueryWrapper<StoreUser>().eq("phone", receiverId.substring(6)));
|
|
|
+ List<StoreImg> storeImgList = storeImgService.getStoreImg(storeUser1.getStoreId(), 10);
|
|
|
+ if (!storeImgList.isEmpty()) {
|
|
|
+ storeImg = storeImgList.get(0);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- if (null != lifeUser2) {
|
|
|
- lifeMessageVo.setSenderImg(lifeUser2.getUserImage());
|
|
|
- } else if (null != storeImg1) {
|
|
|
- lifeMessageVo.setSenderImg(storeImg1.getImgUrl());
|
|
|
- }
|
|
|
+ LifeUser lifeUser2 = null;
|
|
|
+ StoreImg storeImg1 = null;
|
|
|
+ if (senderId.startsWith("user_")) {
|
|
|
+ lifeUser2 = lifeUserMapper.selectOne(new QueryWrapper<LifeUser>().eq("user_phone", senderId.substring(5)));
|
|
|
} else {
|
|
|
- if (null != lifeUser1) {
|
|
|
- lifeMessageVo.setSenderImg(lifeUser1.getUserImage());
|
|
|
- } else if (null != storeImg) {
|
|
|
- lifeMessageVo.setSenderImg(storeImg.getImgUrl());
|
|
|
+ StoreUser storeUser2 = storeUserService.getOne(new QueryWrapper<StoreUser>().eq("phone", senderId.substring(6)));
|
|
|
+ List<StoreImg> storeImgList = storeImgService.getStoreImg(storeUser2.getStoreId(), 10);
|
|
|
+ if (!storeImgList.isEmpty()) {
|
|
|
+ storeImg1 = storeImgList.get(0);
|
|
|
}
|
|
|
- if (null != lifeUser2) {
|
|
|
- lifeMessageVo.setReceiverImg(lifeUser2.getUserImage());
|
|
|
- } else if (null != storeImg1) {
|
|
|
- lifeMessageVo.setReceiverImg(storeImg1.getImgUrl());
|
|
|
+ }
|
|
|
+
|
|
|
+ List<LifeMessageVo> lifeMessageVos = lifeMessageMapper.selectUserImageLists(receiverId, senderId);
|
|
|
+ for (LifeMessageVo lifeMessageVo : lifeMessageVos) {
|
|
|
+ if (lifeMessageVo.getReceiverId().equals(receiverId)) {
|
|
|
+ if (null != lifeUser1) {
|
|
|
+ lifeMessageVo.setReceiverImg(lifeUser1.getUserImage());
|
|
|
+ } else if (null != storeImg) {
|
|
|
+ lifeMessageVo.setReceiverImg(storeImg.getImgUrl());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (null != lifeUser2) {
|
|
|
+ lifeMessageVo.setSenderImg(lifeUser2.getUserImage());
|
|
|
+ } else if (null != storeImg1) {
|
|
|
+ lifeMessageVo.setSenderImg(storeImg1.getImgUrl());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (null != lifeUser1) {
|
|
|
+ lifeMessageVo.setSenderImg(lifeUser1.getUserImage());
|
|
|
+ } else if (null != storeImg) {
|
|
|
+ lifeMessageVo.setSenderImg(storeImg.getImgUrl());
|
|
|
+ }
|
|
|
+ if (null != lifeUser2) {
|
|
|
+ lifeMessageVo.setReceiverImg(lifeUser2.getUserImage());
|
|
|
+ } else if (null != storeImg1) {
|
|
|
+ lifeMessageVo.setReceiverImg(storeImg1.getImgUrl());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ return lifeMessageVos;
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("LifeMessageServiceImpl.getMessageListByReceiverId Error Mgs={}", e.getMessage());
|
|
|
+ throw new Exception(e);
|
|
|
}
|
|
|
- return lifeMessageVos;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public int read(String receiverId, String senderId) {
|
|
|
- LambdaUpdateWrapper<LifeMessage> wrapper = new LambdaUpdateWrapper<>();
|
|
|
- wrapper.eq(LifeMessage::getReceiverId, receiverId);
|
|
|
- wrapper.eq(LifeMessage::getSenderId, senderId);
|
|
|
- wrapper.eq(LifeMessage::getDeleteFlag, 0);
|
|
|
- wrapper.set(LifeMessage::getIsRead, 1);
|
|
|
- return messageMapper.update(null, wrapper);
|
|
|
+ public int read(String receiverId, String senderId) throws Exception {
|
|
|
+ try {
|
|
|
+ LambdaUpdateWrapper<LifeMessage> wrapper = new LambdaUpdateWrapper<>();
|
|
|
+ wrapper.eq(LifeMessage::getReceiverId, receiverId);
|
|
|
+ wrapper.eq(LifeMessage::getSenderId, senderId);
|
|
|
+ wrapper.eq(LifeMessage::getDeleteFlag, 0);
|
|
|
+ wrapper.set(LifeMessage::getIsRead, 1);
|
|
|
+ return lifeMessageMapper.update(null, wrapper);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("LifeMessageServiceImpl.read Error Mgs={}", e.getMessage());
|
|
|
+ throw new Exception(e);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public int noReadCount(String receiverId) {
|
|
|
- LambdaUpdateWrapper<LifeMessage> wrapper = new LambdaUpdateWrapper<>();
|
|
|
- wrapper.eq(LifeMessage::getReceiverId, receiverId);
|
|
|
- wrapper.eq(LifeMessage::getIsRead, 0);
|
|
|
- wrapper.eq(LifeMessage::getDeleteFlag, 0);
|
|
|
- return messageMapper.selectCount(wrapper);
|
|
|
+ public int noReadCount(String receiverId) throws Exception {
|
|
|
+ try {
|
|
|
+ LambdaUpdateWrapper<LifeMessage> wrapper = new LambdaUpdateWrapper<>();
|
|
|
+ wrapper.eq(LifeMessage::getReceiverId, receiverId);
|
|
|
+ wrapper.eq(LifeMessage::getIsRead, 0);
|
|
|
+ wrapper.eq(LifeMessage::getDeleteFlag, 0);
|
|
|
+ return lifeMessageMapper.selectCount(wrapper);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("LifeMessageServiceImpl.noReadCount Error Mgs={}", e.getMessage());
|
|
|
+ throw new Exception(e);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public int deleteMessageByPhoneId(String senderId, String receiverId) {
|
|
|
- return messageMapper.deleteMessageByPhoneId(senderId, receiverId);
|
|
|
+ public int deleteMessageByPhoneId(String senderId, String receiverId) throws Exception {
|
|
|
+ try {
|
|
|
+ return lifeMessageMapper.deleteMessageByPhoneId(senderId, receiverId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("LifeMessageServiceImpl.deleteMessageByPhoneId Error Mgs={}", e.getMessage());
|
|
|
+ throw new Exception(e);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public boolean notDisturb(String receiverId, int disturbId, int type) {
|
|
|
- return false;
|
|
|
+ public int getAllNoReadCount(String receiverId) throws Exception {
|
|
|
+ try {
|
|
|
+ String blockerType = "user".equals(Objects.requireNonNull(JwtUtil.getCurrentUserInfo()).getString("userType")) ? "2" : "1";
|
|
|
+ String blockerId = JwtUtil.getCurrentUserInfo().getString("userId");
|
|
|
+
|
|
|
+ // 查询拉黑
|
|
|
+ List<String> lifeBlacklistVoList = lifeBlacklistMapper.getPhoneIdByUserId(blockerType, blockerId).stream().map(LifeBlacklistVo::getPhoneId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 查询免打扰用户
|
|
|
+ QueryWrapper<LifeMessageNotDisturb> notDisturbWrapper = new QueryWrapper<>();
|
|
|
+ notDisturbWrapper.eq("phone_id", receiverId);
|
|
|
+ List<String> notDisturbList = lifeMessageNotDisturbMapper.selectList(notDisturbWrapper).stream().map(LifeMessageNotDisturb::getNotDisturbId).collect(Collectors.toList());
|
|
|
+ notDisturbList.addAll(lifeBlacklistVoList);
|
|
|
+ String notDisturbIdsStr = "'" + String.join("','", notDisturbList) + "'";
|
|
|
+
|
|
|
+ // 查询未读消息数量
|
|
|
+ LambdaQueryWrapper<LifeMessage> messageWrapper = new LambdaQueryWrapper<>();
|
|
|
+ messageWrapper.eq(LifeMessage::getReceiverId, receiverId);
|
|
|
+ messageWrapper.eq(LifeMessage::getIsRead, 0);
|
|
|
+ messageWrapper.notIn(LifeMessage::getSenderId, notDisturbIdsStr);
|
|
|
+ int noReadMessageCount = lifeMessageMapper.selectCount(messageWrapper);
|
|
|
+
|
|
|
+ // 查询未读通知数量
|
|
|
+ LambdaQueryWrapper<LifeNotice> noticeWrapper = new LambdaQueryWrapper<>();
|
|
|
+ noticeWrapper.eq(LifeNotice::getReceiverId, receiverId);
|
|
|
+ noticeWrapper.eq(LifeNotice::getIsRead, 0);
|
|
|
+ int noReadNoticeCount = lifeNoticeMapper.selectCount(noticeWrapper);
|
|
|
+
|
|
|
+ return noReadMessageCount + noReadNoticeCount;
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("LifeMessageServiceImpl.getAllNoReadCount Error Mgs={}", e.getMessage());
|
|
|
+ throw new Exception(e);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|