项目之我收到的赞

189 阅读1分钟

显示在个人主页信息那里

统计用户发过多少个帖子 评论 每个帖子评论获得多少赞 再加起来 明显太麻烦了 所以考虑重构点赞功能

再定义一个常量key userlikekey 用int 即opsForValue存储 增加减少则用对应的in/de crement 同样编写一个静态方法将常量和userid拼接

重构service的like方法 对应的controller层也得多增加一个entityuserid 当然页面也得多传一个数据 即被点赞者

一个方法里有两个更新的操纵 需要考虑事务管理 这里使用编程式事务管理 因为这是一个方法里的 声明式事务管理显得不方便

redisTemplate.execute(new sessioncallback()) 去override重写execute方法: 传入两个key redis查询必须放在 事务范围外 即Boolean ismember=operations.opsfotset.ismember查询是否点赞 得放在事务外 开启事务operations.multi 在事务间执行判断

判断ismember true则点过赞 从opsset和value中移除 反之加入 执行事务.exec 如此已经记下了用户被赞的数量

下一步造方法去查询 finduserlikecount 先通过userid得到对应的key 再通过redistemplate.opsforvalue.get 传入key参数得到结果

去usercontroller改造主页

requestmapping指定路径 希望传入一个userid表示是看谁的主页 get 加pathvariable注解 得到userid去解析路径 为了给页面携带参数 用上model userservice.findbyid得到当前user 把查询到的用户传给model 再通过likeservice的finduserlikecount方法得到点赞数量 再传给model 而后返回给对应的模板