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.resource.domain.vo.AdviceVo;
import com.mcwl.resource.domain.vo.AttentionAdviceVo;
import com.mcwl.resource.domain.vo.CommentAdviceVo;
import com.mcwl.resource.domain.vo.LikeAdviceVo;
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.mcwl.resource.domain.SysAdvice;
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.LikeAdviceVo;
@ -26,4 +27,6 @@ public interface ISysAdviceService extends IService<SysAdvice> {
List<CommentAdviceVo> getCommentMsg(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.WorkFlow;
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.LikeAdviceVo;
import com.mcwl.resource.mapper.SysAdviceMapper;
@ -22,10 +23,7 @@ import com.mcwl.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
@ -100,12 +98,24 @@ public class SysAdviceServiceImpl extends ServiceImpl<SysAdviceMapper, SysAdvice
.eq(SysAdvice::getReceiverId, SecurityUtils.getUserId())
.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<>();
for (SysAdvice sysAdvice : sysAdviceList) {
CommentAdviceVo commentAdviceVo = BeanUtil.copyProperties(sysAdvice, CommentAdviceVo.class);
Long senderId = sysAdvice.getSenderId();
SysUser senderUser = sysUserService.selectUserById(senderId);
SysUser senderUser = commentUserMap.get(senderId);
commentAdviceVo.setUserAvatar(senderUser.getAvatar());
if (productType == 0) {
ModelProduct modelProduct = modelProductMap.get(sysAdvice.getProductId());
@ -146,13 +156,24 @@ public class SysAdviceServiceImpl extends ServiceImpl<SysAdviceMapper, SysAdvice
.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<>();
for (SysAdvice sysAdvice : sysAdviceList) {
LikeAdviceVo likeAdviceVo = BeanUtil.copyProperties(sysAdvice, LikeAdviceVo.class);
Long senderId = sysAdvice.getSenderId();
SysUser senderUser = sysUserService.selectUserById(senderId);
SysUser senderUser = likeUserMap.get(senderId);
likeAdviceVo.setUserAvatar(senderUser.getAvatar());
if (productType == 0) {
ModelProduct modelProduct = modelProductMap.get(sysAdvice.getProductId());
@ -177,6 +198,40 @@ public class SysAdviceServiceImpl extends ServiceImpl<SysAdviceMapper, SysAdvice
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() {
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.PageInfo;
import com.mcwl.common.core.domain.AjaxResult;
import com.mcwl.common.core.domain.R;
import com.mcwl.common.core.domain.entity.SysUser;
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.SysUserInfo;
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.SysUserAttentionMapper;
import com.mcwl.resource.service.SysUserAttentionService;
import com.mcwl.system.domain.enums.AdviceEnum;
import com.mcwl.system.mapper.SysUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -53,7 +55,7 @@ public class SysUserAttentionServiceImpl implements SysUserAttentionService {
//查看是否已关注
Boolean aBoolean = selectAttention(userId);
if (aBoolean == true) {
if (aBoolean) {
//取关
sysUserAttentionMapper.deleteByUserId(SecurityUtils.getUserId(), userId);
return R.ok(false);
@ -66,6 +68,18 @@ public class SysUserAttentionServiceImpl implements SysUserAttentionService {
.createTime(new Date())
.build();
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);
}