feat(resource): 关注消息

master
yang 2025-02-16 10:53:36 +08:00
parent 5a5ab268dd
commit afc35ca586
5 changed files with 133 additions and 8 deletions

View File

@ -2,6 +2,7 @@ package com.mcwl.web.controller.system;
import com.mcwl.common.core.domain.R; import com.mcwl.common.core.domain.R;
import com.mcwl.resource.domain.vo.AdviceVo; import com.mcwl.resource.domain.vo.AdviceVo;
import com.mcwl.resource.domain.vo.AttentionAdviceVo;
import com.mcwl.resource.domain.vo.CommentAdviceVo; import com.mcwl.resource.domain.vo.CommentAdviceVo;
import com.mcwl.resource.domain.vo.LikeAdviceVo; import com.mcwl.resource.domain.vo.LikeAdviceVo;
import com.mcwl.resource.service.ISysAdviceService; import com.mcwl.resource.service.ISysAdviceService;
@ -87,4 +88,13 @@ public class SysAdviceController {
} }
/**
*
*/
@GetMapping("getAttentionMsg")
public R<List<AttentionAdviceVo>> getAttentionMsg() {
List<AttentionAdviceVo> attentionAdviceVoList = sysAdviceService.getAttentionMsg();
return R.ok(attentionAdviceVoList);
}
} }

View File

@ -0,0 +1,43 @@
package com.mcwl.resource.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel(description = "关注消息")
public class AttentionAdviceVo {
/**
* id
*/
@ApiModelProperty(value = "通知id")
private Long id;
/**
*
*/
@ApiModelProperty(value = "关注我的用户头像")
private String userAvatar;
/**
*
*/
@ApiModelProperty(value = "内容")
private String content;
/**
* 0 1
*/
@ApiModelProperty(value = "是否已读 0否 1是")
private Integer isRead;
/**
*
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
}

View File

@ -3,6 +3,7 @@ package com.mcwl.resource.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.mcwl.resource.domain.SysAdvice; import com.mcwl.resource.domain.SysAdvice;
import com.mcwl.resource.domain.vo.AdviceVo; import com.mcwl.resource.domain.vo.AdviceVo;
import com.mcwl.resource.domain.vo.AttentionAdviceVo;
import com.mcwl.resource.domain.vo.CommentAdviceVo; import com.mcwl.resource.domain.vo.CommentAdviceVo;
import com.mcwl.resource.domain.vo.LikeAdviceVo; import com.mcwl.resource.domain.vo.LikeAdviceVo;
@ -26,4 +27,6 @@ public interface ISysAdviceService extends IService<SysAdvice> {
List<CommentAdviceVo> getCommentMsg(Integer productType); List<CommentAdviceVo> getCommentMsg(Integer productType);
List<LikeAdviceVo> getLikeMsg(Integer productType); List<LikeAdviceVo> getLikeMsg(Integer productType);
List<AttentionAdviceVo> getAttentionMsg();
} }

View File

@ -10,6 +10,7 @@ import com.mcwl.resource.domain.ModelProduct;
import com.mcwl.resource.domain.SysAdvice; import com.mcwl.resource.domain.SysAdvice;
import com.mcwl.resource.domain.WorkFlow; import com.mcwl.resource.domain.WorkFlow;
import com.mcwl.resource.domain.vo.AdviceVo; import com.mcwl.resource.domain.vo.AdviceVo;
import com.mcwl.resource.domain.vo.AttentionAdviceVo;
import com.mcwl.resource.domain.vo.CommentAdviceVo; import com.mcwl.resource.domain.vo.CommentAdviceVo;
import com.mcwl.resource.domain.vo.LikeAdviceVo; import com.mcwl.resource.domain.vo.LikeAdviceVo;
import com.mcwl.resource.mapper.SysAdviceMapper; import com.mcwl.resource.mapper.SysAdviceMapper;
@ -22,10 +23,7 @@ import com.mcwl.system.service.ISysUserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
@ -100,12 +98,24 @@ public class SysAdviceServiceImpl extends ServiceImpl<SysAdviceMapper, SysAdvice
.eq(SysAdvice::getReceiverId, SecurityUtils.getUserId()) .eq(SysAdvice::getReceiverId, SecurityUtils.getUserId())
.eq(productType != 3, SysAdvice::getProductType, productType)); .eq(productType != 3, SysAdvice::getProductType, productType));
List<Long> commentUserIdList = new ArrayList<>();
for (SysAdvice sysAdvice : sysAdviceList) {
commentUserIdList.add(sysAdvice.getSenderId());
}
List<SysUser> sysUsers = sysUserService.selectUserByIds(commentUserIdList);
Map<Long, SysUser> commentUserMap = new HashMap<>();
for (SysUser sysUser : sysUsers) {
commentUserMap.put(sysUser.getUserId(), sysUser);
}
List<CommentAdviceVo> commentAdviceVoList = new ArrayList<>(); List<CommentAdviceVo> commentAdviceVoList = new ArrayList<>();
for (SysAdvice sysAdvice : sysAdviceList) { for (SysAdvice sysAdvice : sysAdviceList) {
CommentAdviceVo commentAdviceVo = BeanUtil.copyProperties(sysAdvice, CommentAdviceVo.class); CommentAdviceVo commentAdviceVo = BeanUtil.copyProperties(sysAdvice, CommentAdviceVo.class);
Long senderId = sysAdvice.getSenderId(); Long senderId = sysAdvice.getSenderId();
SysUser senderUser = sysUserService.selectUserById(senderId); SysUser senderUser = commentUserMap.get(senderId);
commentAdviceVo.setUserAvatar(senderUser.getAvatar()); commentAdviceVo.setUserAvatar(senderUser.getAvatar());
if (productType == 0) { if (productType == 0) {
ModelProduct modelProduct = modelProductMap.get(sysAdvice.getProductId()); ModelProduct modelProduct = modelProductMap.get(sysAdvice.getProductId());
@ -146,13 +156,24 @@ public class SysAdviceServiceImpl extends ServiceImpl<SysAdviceMapper, SysAdvice
.eq(productType != 4, SysAdvice::getProductType, productType)); .eq(productType != 4, SysAdvice::getProductType, productType));
} }
List<Long> likeUserIdList = new ArrayList<>();
for (SysAdvice sysAdvice : sysAdviceList) {
likeUserIdList.add(sysAdvice.getSenderId());
}
List<SysUser> sysUsers = sysUserService.selectUserByIds(likeUserIdList);
Map<Long, SysUser> likeUserMap = new HashMap<>();
for (SysUser sysUser : sysUsers) {
likeUserMap.put(sysUser.getUserId(), sysUser);
}
List<LikeAdviceVo> likeAdviceVoList = new ArrayList<>(); List<LikeAdviceVo> likeAdviceVoList = new ArrayList<>();
for (SysAdvice sysAdvice : sysAdviceList) { for (SysAdvice sysAdvice : sysAdviceList) {
LikeAdviceVo likeAdviceVo = BeanUtil.copyProperties(sysAdvice, LikeAdviceVo.class); LikeAdviceVo likeAdviceVo = BeanUtil.copyProperties(sysAdvice, LikeAdviceVo.class);
Long senderId = sysAdvice.getSenderId(); Long senderId = sysAdvice.getSenderId();
SysUser senderUser = sysUserService.selectUserById(senderId); SysUser senderUser = likeUserMap.get(senderId);
likeAdviceVo.setUserAvatar(senderUser.getAvatar()); likeAdviceVo.setUserAvatar(senderUser.getAvatar());
if (productType == 0) { if (productType == 0) {
ModelProduct modelProduct = modelProductMap.get(sysAdvice.getProductId()); ModelProduct modelProduct = modelProductMap.get(sysAdvice.getProductId());
@ -177,6 +198,40 @@ public class SysAdviceServiceImpl extends ServiceImpl<SysAdviceMapper, SysAdvice
return likeAdviceVoList; return likeAdviceVoList;
} }
@Override
public List<AttentionAdviceVo> getAttentionMsg() {
List<SysAdvice> sysAdviceList = baseMapper.selectList(new LambdaQueryWrapper<SysAdvice>()
.eq(SysAdvice::getType, AdviceEnum.FANS_REMIND)
.eq(SysAdvice::getReceiverId, SecurityUtils.getUserId()));
List<AttentionAdviceVo> attentionAdviceVoList = new ArrayList<>();
List<Long> atentUserIdList = new ArrayList<>();
// 通知表中获取所有关注我的用户id
for (SysAdvice sysAdvice : sysAdviceList) {
atentUserIdList.add(sysAdvice.getSenderId());
}
// 构建map, key为用户idvalue为用户信息
Map<Long, SysUser> attentionUserMap = new HashMap<>();
// 批量查询用户信息, 并构建映射关系
List<SysUser> atentUserList = sysUserService.listByIds(atentUserIdList);
for (SysUser sysUser : atentUserList) {
attentionUserMap.put(sysUser.getUserId(), sysUser);
}
for (SysAdvice sysAdvice : sysAdviceList) {
AttentionAdviceVo attentionAdviceVo = BeanUtil.copyProperties(sysAdvice, AttentionAdviceVo.class);
Long senderId = sysAdvice.getSenderId();
SysUser attentionUser = attentionUserMap.get(senderId);
attentionAdviceVo.setUserAvatar(attentionUser.getAvatar());
attentionAdviceVoList.add(attentionAdviceVo);
}
return attentionAdviceVoList;
}
public void postConstruct() { public void postConstruct() {
Long userId = SecurityUtils.getUserId(); Long userId = SecurityUtils.getUserId();

View File

@ -2,10 +2,11 @@ package com.mcwl.resource.service.impl;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.mcwl.common.core.domain.AjaxResult;
import com.mcwl.common.core.domain.R; import com.mcwl.common.core.domain.R;
import com.mcwl.common.core.domain.entity.SysUser; import com.mcwl.common.core.domain.entity.SysUser;
import com.mcwl.common.utils.SecurityUtils; import com.mcwl.common.utils.SecurityUtils;
import com.mcwl.common.utils.StringUtils;
import com.mcwl.resource.domain.SysAdvice;
import com.mcwl.resource.domain.SysUserAttention; import com.mcwl.resource.domain.SysUserAttention;
import com.mcwl.resource.domain.SysUserInfo; import com.mcwl.resource.domain.SysUserInfo;
import com.mcwl.resource.domain.vo.PageVo; import com.mcwl.resource.domain.vo.PageVo;
@ -14,6 +15,7 @@ import com.mcwl.resource.mapper.ModelImageMapper;
import com.mcwl.resource.mapper.ModelMapper; import com.mcwl.resource.mapper.ModelMapper;
import com.mcwl.resource.mapper.SysUserAttentionMapper; import com.mcwl.resource.mapper.SysUserAttentionMapper;
import com.mcwl.resource.service.SysUserAttentionService; import com.mcwl.resource.service.SysUserAttentionService;
import com.mcwl.system.domain.enums.AdviceEnum;
import com.mcwl.system.mapper.SysUserMapper; import com.mcwl.system.mapper.SysUserMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -53,7 +55,7 @@ public class SysUserAttentionServiceImpl implements SysUserAttentionService {
//查看是否已关注 //查看是否已关注
Boolean aBoolean = selectAttention(userId); Boolean aBoolean = selectAttention(userId);
if (aBoolean == true) { if (aBoolean) {
//取关 //取关
sysUserAttentionMapper.deleteByUserId(SecurityUtils.getUserId(), userId); sysUserAttentionMapper.deleteByUserId(SecurityUtils.getUserId(), userId);
return R.ok(false); return R.ok(false);
@ -66,6 +68,18 @@ public class SysUserAttentionServiceImpl implements SysUserAttentionService {
.createTime(new Date()) .createTime(new Date())
.build(); .build();
sysUserAttentionMapper.insert(sysUserAttention); sysUserAttentionMapper.insert(sysUserAttention);
// 添加通知
String content = StringUtils.format("{}关注了您,快去看看吧!", SecurityUtils.getUsername());
SysAdvice sysAdvice = new SysAdvice();
sysAdvice.setSenderId(SecurityUtils.getUserId());
sysAdvice.setReceiverId(userId);
sysAdvice.setContent(content);
sysAdvice.setIsRead(0);
sysAdvice.setType(AdviceEnum.FANS_REMIND);
return R.ok(true); return R.ok(true);
} }