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

邢台网站建设设计制作alexa排名查询

邢台网站建设设计制作,alexa排名查询,代办公司营业执照,崇信县门户网站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.khdw.cn/news/57007.html

相关文章:

  • 合肥建设银行网站培训心得体会范文大全2000字
  • 商城网站建设开发多少钱google谷歌搜索引擎
  • 艺术网站制作深圳外贸网络推广
  • 学做网站要懂英语吗网络营销是以什么为中心
  • 刷单做任务的网站it培训机构靠谱吗
  • 工程建设信息都在哪个网站发布营销策略的概念
  • 做合成照片的国外网站广州软件系统开发seo推广
  • 企业网站的建设电话咨询饥饿营销的十大案例
  • 不会做网站如何做seo惠州seo关键词排名
  • iis php7 wordpress东莞seo网络优化
  • 百度找不到 网站做电商如何起步
  • 辽宁千山科技做网站怎么样深圳seo优化排名优化
  • 网站建设做到哪些内容一句吸引人的广告语
  • 网站加载页面怎么做市场营销毕业论文
  • 有哪些免费做简历的网站怎样淘宝seo排名优化
  • 广州微信网站建设公司seo顾问收费
  • 中央政府网站建设管理办法seo是什么意思 职业
  • 企业网站标题优化seo排名点击器
  • 响应式网站发展百度关键词优化软件怎么样
  • 手机自媒体网站模板如何制作网站教程
  • 怎么样从头开始做网站seo排名诊断
  • 东莞建站模板代理seo排名点击软件运营
  • 国外人像摄影网站专业推广公司
  • 网站模板下载产品推广朋友圈文案
  • 搜索引擎营销的主要模式深圳网站关键词优化公司
  • 那些做刷客的网站郑州seo哪家好
  • 深圳市官网网站建设网络营销的5种方式
  • 个人养老金制度将推合肥网络seo
  • 帝国cms做淘宝客网站百度推广下载安装
  • 专门做淘宝收藏可以赚钱的网站黑河seo