feat(resource): 关注消息
parent
5a5ab268dd
commit
afc35ca586
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
}
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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为用户id,value为用户信息
|
||||||
|
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();
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue