博客项目学习笔记二十:我的消息(删除消息以及未读消息提示)

博客项目目录: 请戳这里

准备

需求:用户登录后,如果有未读消息,会在右上角提示,进入我的消息页面,点击删除,可删除对应消息。
在这里插入图片描述在这里插入图片描述

删除消息

1.在controller层添加对应方法

传入一个消息id和一个all标记变量(默认为false),当id为当前id,并且用户为当前账户时,如果all为false,删除当前消息;如果为true,删除全部消息。

	//删除消息
    @ResponseBody
    @PostMapping("/message/remove/")
    public Result msgRemove(Long id,
                            @RequestParam(defaultValue = "false") Boolean all) {

        boolean remove = messageService.remove(new QueryWrapper<UserMessage>()
                .eq("to_user_id", getProfileId())
                .eq(!all, "id", id));

        return remove ? Result.success(null) : Result.fail("删除失败");
    }

2.测试

  • 删除系统消息:
    发现原来的系统消息没有了,第二页的消息也转到第一页了
    在这里插入图片描述
  • 删除全部消息:
    操作之后,发现所有消息都没有了
    在这里插入图片描述
    在这里插入图片描述

账户信息同步

由于许多地方的信息都是从账户信息取的,所以在进行一些操作后,需要跟新账户信息,并且登录后的账户信息在前端也需要同步

1.登录时同步

在这里插入图片描述

2.基本设置同步

跟新头像:
在这里插入图片描述

跟新其他信息:
在这里插入图片描述

3.layout.ftl同步

在这里插入图片描述

未读消息提示

跟新账户信息完成,当用户登录后,前端用户id会由游客状态的-1转为实际的id,触发前端请求
在这里插入图片描述

1.请求函数分析

可以看出,user的id不是-1时,会触发请求,将请求得到的未读消息,以及一些前端模块拼接成一个元素,返回到页面。
在这里插入图片描述

2.在controller层添加对应方法

前面定义了status这个变量,当其为0时是未读,为1时是已读。我们设置一个key为status和count(未读消息数量)的键值对,作为参数传给请求函数。

	//未读消息
    @ResponseBody
    @RequestMapping("/message/nums/")
    public Map msgNums() {

        int count = messageService.count(new QueryWrapper<UserMessage>()
                .eq("to_user_id", getProfileId())
                .eq("status", "0")
        );
        return MapUtil.builder("status", 0)
                .put("count", count).build();
    }

3.测试

登录用户:
发现没有错误了,并出现一条未读消息
在这里插入图片描述

参考资料:

https://github.com/MarkerHub/eblog

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值