当前位置: 首页 > news >正文

百度站长平台链接英文网站设计公司

百度站长平台链接,英文网站设计公司,小程序开发定制北京公司,新疆建设兵团JavaWeb_LeadNews_Day9-Redis实现用户行为 网关配置点赞阅读不喜欢关注收藏文章详情-行为数据回显来源Gitee 网关配置 nacos: leadnews-app-gateway # 用户行为微服务 - id: leadnews-behavioruri: lb://leadnews-behaviorpredicates:- Path/behavior/**filters:- StripPrefi…

JavaWeb_LeadNews_Day9-Redis实现用户行为

  • 网关配置
  • 点赞
  • 阅读
  • 不喜欢
  • 关注
  • 收藏
  • 文章详情-行为数据回显
  • 来源
  • Gitee

网关配置

nacos: leadnews-app-gateway

# 用户行为微服务
- id: leadnews-behavioruri: lb://leadnews-behaviorpredicates:- Path=/behavior/**filters:- StripPrefix= 1

nacos: leadnews-behavior
在配置文件中去除数据源自动配置

spring:# redis配置redis:host: localhost# password: port: 6379autoconfigure:exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

点赞

  • 当前登录的用户点击了”赞“,就要保存当前行为数据
  • 可以取消点赞
public ResponseResult likesBehavior(LikesBehaviorDto dto) {// 1. 检查参数if(dto == null || dto.getArticleId() == null || checkParam(dto)){return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);}// 2. 是否登录ApUser user = AppThreadLocalUtil.getUser();if(user == null){return ResponseResult.errorResult(AppHttpCodeEnum.NEED_LOGIN);}// 3. 点赞, 保存数据if(dto.getOperation() == 0){// 点赞Object obj = cacheService.hGet(BehaviorConstants.LIKE_BEHAVIOR + dto.getArticleId().toString(), user.getId().toString());if(obj != null){return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID, "已点赞");}// 保存当前keylog.info("保存当前key:{} ,{}, {}", BehaviorConstants.LIKE_BEHAVIOR+dto.getArticleId(), user.getId(), dto);cacheService.hPut(BehaviorConstants.LIKE_BEHAVIOR + dto.getArticleId().toString(), user.getId().toString(), JSON.toJSONString(dto));}else{// 取消点赞// 删除当前keylog.info("删除当前key:{}, {}", BehaviorConstants.LIKE_BEHAVIOR+dto.getArticleId(), user.getId());cacheService.hDelete(BehaviorConstants.LIKE_BEHAVIOR + dto.getArticleId().toString(), user.getId().toString());}return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}private boolean checkParam(LikesBehaviorDto dto) {if(dto.getType() > 2 || dto.getType() < 0 || dto.getOperation() > 1 || dto.getOperation() < 0){return true;}return false;
}

阅读

  • 当用户查看了某一篇文章,需要记录当前用户查看的次数
public ResponseResult readBehavior(ReadBehaviorDto dto) {// 1. 检查次数if(dto == null || dto.getArticleId() == null || dto.getCount() == null){return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);}// 2. 是否登录ApUser user = AppThreadLocalUtil.getUser();if(user == null){return ResponseResult.errorResult(AppHttpCodeEnum.NEED_LOGIN);}// 3. 阅读, 保存数据// 3.1 更新阅读次数String readBehaviorJson = (String) cacheService.hGet(BehaviorConstants.READ_BEHAVIOR + dto.getArticleId().toString(), user.getId().toString());if(StringUtils.isNotBlank(readBehaviorJson)){ReadBehaviorDto readBehaviorDto = JSON.parseObject(readBehaviorJson, ReadBehaviorDto.class);dto.setCount(readBehaviorDto.getCount()+dto.getCount());}// 3.2 保存数据// 保存当前keylog.info("保存当前key:{} {} {}", BehaviorConstants.READ_BEHAVIOR+dto.getArticleId(), user.getId(), dto);cacheService.hPut(BehaviorConstants.READ_BEHAVIOR+dto.getArticleId().toString(), user.getId().toString(), JSON.toJSONString(dto));return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}

不喜欢

用户点击了不喜欢, 就不再给当前用户推荐这一类型的文章信息

public ResponseResult unLikesBehavior(UnLikesBehaviorDto dto) {// 1. 检查次数if(dto == null || dto.getArticleId() == null || dto.getType() > 1 || dto.getType() < 0){return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);}// 2. 是否登录ApUser user = AppThreadLocalUtil.getUser();if(user == null){return ResponseResult.errorResult(AppHttpCodeEnum.NEED_LOGIN);}// 3. 不喜欢文章, 保存数据if(dto.getType() == 0){// 不喜欢Object o = cacheService.hGet(BehaviorConstants.UN_LIKE_BEHAVIOR + dto.getArticleId().toString(), user.getId().toString());if(o != null){return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID, "已经不喜欢");}log.info("保存当前key:{} ,{}, {}", BehaviorConstants.UN_LIKE_BEHAVIOR+dto.getArticleId(), user.getId(), dto);cacheService.hPut(BehaviorConstants.UN_LIKE_BEHAVIOR + dto.getArticleId().toString(), user.getId().toString(), JSON.toJSONString(dto));}else{// 取消不喜欢log.info("删除当前key:{}, {}", BehaviorConstants.UN_LIKE_BEHAVIOR+dto.getArticleId(), user.getId());cacheService.hDelete(BehaviorConstants.UN_LIKE_BEHAVIOR + dto.getArticleId().toString(), user.getId().toString());}return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}

关注

  • 当前登录后的用户可以关注作者,也可以取消关注作者
  • 从用户的角度出发:一个用户可以关注其他多个作者 —— 我的关注
  • 从作者的角度出发:一个用户(同是作者)也可以拥有很多个粉丝 —— 我的粉丝
public ResponseResult userFollow(UserRelationDto dto) {// 1. 检查参数if(dto == null || checkParam(dto)){return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);}// 2. 是否登录ApUser user = AppThreadLocalUtil.getUser();if(user == null){return ResponseResult.errorResult(AppHttpCodeEnum.NEED_LOGIN);}// 3. 关注, 保存数据if(dto.getOperation() == 0){// 关注// 将作者写入我的关注中cacheService.zAdd(BehaviorConstants.APUSER_FOLLOW_RELATION+user.getId(), dto.getAuthorId().toString(), System.currentTimeMillis());// 将我写入作者的粉丝中cacheService.zAdd(BehaviorConstants.APUSER_FANS_RELATION+dto.getAuthorId(), user.getId().toString(), System.currentTimeMillis());}else{// 取消关注cacheService.zRemove(BehaviorConstants.APUSER_FOLLOW_RELATION+user.getId(), dto.getAuthorId().toString());cacheService.zRemove(BehaviorConstants.APUSER_FANS_RELATION+dto.getAuthorId(), user.getId().toString());}return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}private boolean checkParam(UserRelationDto dto) {if(dto.getArticleId() == null || dto.getAuthorId() == null){return true;}if(dto.getOperation() > 1 || dto.getOperation() < 0){return true;}return false;
}

收藏

  • 记录当前登录人收藏的文章
public ResponseResult collectionBehavior(CollectionBehaviorDto dto) {// 1. 检查参数if(dto == null || checkParam(dto)){return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);}// 2. 是否登录ApUser user = AppThreadLocalUtil.getUser();if(user == null){return ResponseResult.errorResult(AppHttpCodeEnum.NEED_LOGIN);}// 3. 文章收藏, 数据保存if(dto.getOperation() == 0){// 收藏// 判断是否已经收藏String collectionJson = (String) cacheService.hGet(BehaviorConstants.COLLECTION_BEHAVIOR + dto.getEntryId(), user.getId().toString());if(StringUtils.isNotBlank(collectionJson)){return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID, "已收藏");}log.info("文章收藏,保存key:{},{},{}",BehaviorConstants.COLLECTION_BEHAVIOR + user.getId(),dto.getEntryId().toString(), JSON.toJSONString(dto));cacheService.hPut(BehaviorConstants.COLLECTION_BEHAVIOR + user.getId(),dto.getEntryId().toString(), JSON.toJSONString(dto));}else{// 取消收藏log.info("文章收藏,删除key:{},{},{}",BehaviorConstants.COLLECTION_BEHAVIOR + user.getId(),dto.getEntryId().toString());cacheService.hDelete(BehaviorConstants.COLLECTION_BEHAVIOR + user.getId(),dto.getEntryId().toString());}return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}

文章详情-行为数据回显

展示文章的关系,app端用户必须登录,判断当前用户是否已经关注该文章的作者、是否收藏了此文章、是否点赞了文章、是否不喜欢该文章等

public ResponseResult loadArticleBehavior(ArticleInfoDto dto) {// 1. 检查数据if(dto == null || dto.getArticleId() == null || dto.getAuthorId() == null){return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);}// 2. 是否登录ApUser user = AppThreadLocalUtil.getUser();if(user == null){return ResponseResult.errorResult(AppHttpCodeEnum.NEED_LOGIN);}// 3. 回显数据Map<String, Boolean> map = new HashMap<>();Boolean islike = false, isunlike = false, iscollection = false, isfollow = false;// 3.1 是否点赞String likeJson = (String) cacheService.hGet(BehaviorConstants.LIKE_BEHAVIOR + dto.getArticleId(), user.getId().toString());if(likeJson != null){islike = true;}// 3.2 是否不喜欢String unLikeJson = (String) cacheService.hGet(BehaviorConstants.UN_LIKE_BEHAVIOR + dto.getArticleId(), user.getId().toString());if(unLikeJson != null){isunlike = true;}// 3.3 是否收藏String collectiontJson = (String) cacheService.hGet(BehaviorConstants.COLLECTION_BEHAVIOR + user.getId(), dto.getArticleId().toString());if(collectiontJson != null){iscollection = true;}// 3.4 是否关注Double score = cacheService.zScore(BehaviorConstants.APUSER_FOLLOW_RELATION + user.getId(), dto.getAuthorId().toString());if(score != null){isfollow = true;}map.put("islike", islike);map.put("isunlike", isunlike);map.put("iscollection", iscollection);map.put("isfollow", isfollow);return ResponseResult.okResult(map);
}

来源

黑马程序员. 黑马头条

Gitee

https://gitee.com/yu-ba-ba-ba/leadnews

http://www.dinnco.com/news/52063.html

相关文章:

  • 下载官方正版app夜狼seo
  • 空包自己可以做物流信息的网站搜索引擎广告优化
  • 昆明网站快速优化排名搜索引擎优化技巧
  • 微信内部劵网站怎么做谷歌推广代理
  • 重庆网站APP台州关键词优化报价
  • 网站滚动的图片是怎么做百度网站链接提交入口
  • 做播放器电影网站需要多少钱6百度退款客服电话
  • 网页怎么赚钱seo的范畴是什么
  • 渝中网站建设网站建设百度推广
  • 网站系统jsp模板无锡网站建设方案优化
  • 做古玩生意哪些网站好营销型网站推广
  • 免费网站营销计划百度搜索关键词排名优化
  • 北京网站建设飞沐佛山网站建设制作
  • 美颜秘籍网站建设网站排名英文
  • 加强政府网站信息内容建设网站的推广方案的内容有哪些
  • 马鞍山的网站建设公司网店代运营骗局
  • id 怎么转wordpress深圳seo优化方案
  • 广东网站建设微信商城开发如何搭建个人网站
  • 应届生求职网站官网腾讯网qq网站
  • 做网页到哪个网站找素材典型的口碑营销案例
  • 网站建设开题报告数据库建立seo的基本步骤
  • 手机网站制作行业排行推广文章的步骤
  • 网站源码绑定域名处理建站模板免费下载
  • 网站播放器源码搜索引擎调词平台
  • 网页制作与网站开发从入门到精通打开百度
  • 太原关键词网站排名全网营销是什么意思
  • 将wordpress压缩包解压至一个空文件夹_并上传它贵阳关键词优化平台
  • 用asp.net做网站的书做外贸网站哪家公司好
  • 做微博网站品牌推广方案怎么写
  • 深圳网站建设技术百度问一问付费咨询