From afc35ca586e298a91a6ecbd2c624734a1cf88f46 Mon Sep 17 00:00:00 2001 From: yang <2119157826@qq.com> Date: Sun, 16 Feb 2025 10:53:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(resource):=20=E5=85=B3=E6=B3=A8=E6=B6=88?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/SysAdviceController.java | 10 +++ .../resource/domain/vo/AttentionAdviceVo.java | 43 ++++++++++++ .../resource/service/ISysAdviceService.java | 3 + .../service/impl/SysAdviceServiceImpl.java | 67 +++++++++++++++++-- .../impl/SysUserAttentionServiceImpl.java | 18 ++++- 5 files changed, 133 insertions(+), 8 deletions(-) create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/domain/vo/AttentionAdviceVo.java diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/system/SysAdviceController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/system/SysAdviceController.java index 6d25171..37b0b93 100644 --- a/mcwl-admin/src/main/java/com/mcwl/web/controller/system/SysAdviceController.java +++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/system/SysAdviceController.java @@ -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> getAttentionMsg() { + List attentionAdviceVoList = sysAdviceService.getAttentionMsg(); + return R.ok(attentionAdviceVoList); + } + } diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/domain/vo/AttentionAdviceVo.java b/mcwl-resource/src/main/java/com/mcwl/resource/domain/vo/AttentionAdviceVo.java new file mode 100644 index 0000000..37d3b2d --- /dev/null +++ b/mcwl-resource/src/main/java/com/mcwl/resource/domain/vo/AttentionAdviceVo.java @@ -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; + +} diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/ISysAdviceService.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/ISysAdviceService.java index 5fa9f8c..cb2d0d0 100644 --- a/mcwl-resource/src/main/java/com/mcwl/resource/service/ISysAdviceService.java +++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/ISysAdviceService.java @@ -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 { List getCommentMsg(Integer productType); List getLikeMsg(Integer productType); + + List getAttentionMsg(); } diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/SysAdviceServiceImpl.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/SysAdviceServiceImpl.java index 01bcaae..20452d1 100644 --- a/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/SysAdviceServiceImpl.java +++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/SysAdviceServiceImpl.java @@ -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 commentUserIdList = new ArrayList<>(); + for (SysAdvice sysAdvice : sysAdviceList) { + commentUserIdList.add(sysAdvice.getSenderId()); + } + List sysUsers = sysUserService.selectUserByIds(commentUserIdList); + + Map commentUserMap = new HashMap<>(); + for (SysUser sysUser : sysUsers) { + commentUserMap.put(sysUser.getUserId(), sysUser); + } + List 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 likeUserIdList = new ArrayList<>(); + for (SysAdvice sysAdvice : sysAdviceList) { + likeUserIdList.add(sysAdvice.getSenderId()); + } + List sysUsers = sysUserService.selectUserByIds(likeUserIdList); + + Map likeUserMap = new HashMap<>(); + for (SysUser sysUser : sysUsers) { + likeUserMap.put(sysUser.getUserId(), sysUser); + } + List 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 getAttentionMsg() { + List sysAdviceList = baseMapper.selectList(new LambdaQueryWrapper() + .eq(SysAdvice::getType, AdviceEnum.FANS_REMIND) + .eq(SysAdvice::getReceiverId, SecurityUtils.getUserId())); + + List attentionAdviceVoList = new ArrayList<>(); + List atentUserIdList = new ArrayList<>(); + + // 通知表中获取所有关注我的用户id + for (SysAdvice sysAdvice : sysAdviceList) { + atentUserIdList.add(sysAdvice.getSenderId()); + } + + // 构建map, key为用户id,value为用户信息 + Map attentionUserMap = new HashMap<>(); + + // 批量查询用户信息, 并构建映射关系 + List 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(); diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/SysUserAttentionServiceImpl.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/SysUserAttentionServiceImpl.java index e5d2ac3..69c8e9c 100644 --- a/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/SysUserAttentionServiceImpl.java +++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/SysUserAttentionServiceImpl.java @@ -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); }