旅游项目day08

1. 旅游日记(游记)

后端:实体类,列表,查看,审核
前端:目的地明细中-游记->带范围条件查询,游记首页,【扩展】游记添加/编辑,【扩展】添加游记时间没登录时给提示,【扩展】只有当前登录用户是游记作者时,才可以显式编辑按钮

在这里插入图片描述

1.1 游记表结构分析

找到游记相关的页面,寻找原型字段
分析关联字段
分析隐藏字段

游记表结构:
原型字段:(id,目的地,封面,标题,子标题,简介,作者,发布时间,浏览数,评论数,置顶数,分享数,收藏数,出行时间,出行天数,人物,人均费用,是否公开)
分析及隐藏字段:(状态,审核人,审核时间,创建时间,修改时间,删除标记)
作者记录方式:1. 记录作者id,可以实时查询作者信息;2. 记录作者基本信息(快照数据)
游记内容表结构:
(id,游记内容)

1.2 游记的crud

1.2.1 游记实体类:

在这里插入图片描述
在这里插入图片描述

1.2.2 游记内容实体类:

在这里插入图片描述

1.2.3 用户服务用户DTO

用户的DTO(Data Transfer Object)数据传输对象:微服务之间跨服务数据传输,必须要实现序列化接口
在这里插入图片描述
在这里插入图片描述

1.3 游记范围条件查询

在这里插入图片描述

1.3.1 游记范围条件查询:

前端只查传递一个参数值,后端需要拼接的sql中实现范围查询

  1. 人均花费:
    【1-999】、【1000-6000】、【6000-20000】、【20000,+∞】
  2. 出行天数:
    【1-3】、【4-7】、【8-14】、【15,+∞】

在Java中,如何同时存储两个值?
集合、数组、对象
1:【1-999】、2:【1000-6000】、3:【6000-20000】、4:【20000,+∞】
1:【1-3】、2:【4-7】、3:【8-14】、4:【15,+∞】
通过映射思想,实现前端传入一个值,映射到后端对应的一个范围参数

集合:Map是k-v键值对操作不方便,HashSet具有无序性故不合适,LinkedList和ArrayList还凑合
数组:通过索引操作 [min,max]
对象:封装min max两个属性,分别存储对应数据

随便用哪一种都可以,借鉴面向对象思想选择使用对象存储

TravelRange{private Integer min;private Integer max;
}

前端参数与范围对象之间的映射=》使用map,例如map.put(1,new TravelRange(1,999));

1.3.2 实现细节

出行时间条件查询:
在这里插入图片描述
最新/最热条件查询:
在这里插入图片描述

查询实体类:
在这里插入图片描述
在这里插入图片描述

查询逻辑:按照范围条件查询游记时,需要展示用户名等用户信息,每查询出一条游记,就向用户服务发起远程调用,根据游记存储的用户id,查询用户信息,保存在需要向前端返回的数据中,这里可用多线程异步发起调用,提升效率。CountDownLatch。使用线程池异步向用户服务发送远程调用并返回用户信息
在这里插入图片描述
在这里插入图片描述

1.4 游记详情查询

详情页面:
在这里插入图片描述

1.5 游记列表区分游客与登录用户

在这里插入图片描述
如何判断用户是否登录?
基于请求中是否有token。
希望在任意地方可以拿到用户对象。
获取请求对象工具类:
在这里插入图片描述
其中,以下类是SpringMVC封装的快速获取请求对象的工具类,使用到了ThreadLocal。
在这里插入图片描述
可以在请求对象中获取到token:
在这里插入图片描述

实际用户信息是保存在redis中的,故需要根据当前token去redis获取用户对象:
在这里插入图片描述

游客只能看已发布且公开的游记:

在这里插入图片描述
登录用户:
在这里插入图片描述

在这里插入图片描述

1.6 攻略排行列表查询

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/422839.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十二站(20天):C++泛型编程

模板 C提供了模板(template)编程的概念。所谓模板,实际上是建立一个通用函数或类, 其 类内部的类型和函数的形参类型不具体指定 ,用一个虚拟的类型来代表。这种通用的方式称 为模板。 模板是泛型编程的基础, 泛型编程即以一种独立于任何特定…

代码随想录刷题题Day40

刷题的第四十天,希望自己能够不断坚持下去,迎来蜕变。😀😀😀 刷题语言:C Day40 任务 ● 392.判断子序列 ● 115.不同的子序列 1 判断子序列 392.判断子序列 思路: 动态规划 (1&am…

《高教学刊》是什么级别的期刊?是正规期刊吗?是核心期刊吗?

​标题解答 1、《高教学刊》是什么级别的期刊? 省级 2、《高教学刊》是核心期刊吗? 不是,只是封面有核心字样 《高教学刊》刊发高等教育教学与高教理论研究成果,交流高校教学与建设的改革措施和实践经验,探索高等教…

【Linux】解决普通用户无法进行sudo提权

当某个普通用户进行sudo指令提权的时候,可能存在无法操作的问题,如下图: 这个图中有一个细节,我们使用sudo进行提权的时候,用的可是zhangsan的密码,因此有人可能会有疑问,这不是有问题吗&#x…

1 认识微服务

1.认识微服务 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢? 1.0.学习目标 了解微服务架构的优缺点 1.1.单体架构 单体架构:将业务的所有…

windows下载安装ffmpeg最新版

windows环境搭建专栏🔗点击跳转 win系统环境搭建(十六)——windows下载安装ffmpeg最新版 文章目录 win系统环境搭建(十六)——windows下载安装ffmpeg最新版1.下载2.安装3.验证 1.下载 下载页面地址是https://ffmpeg.…

微信公众号怎么申请超过2个

一般可以申请多少个公众号?目前公众号申请数量的规定是从2018年底开始实施的,至今没有变化。规定如下:1、个人可以申请1个个人主体的公众号;2、企业(有限公司)可以申请2个公众号;3、个体户可以申…

爬取A站视频,涉及m3u8格式的处理

一、抓包分析 1.进入A站进行抓包分析 进入一个页面,右点击鼠标按钮,点击检查 接着点击network,点击Fetxh/XHR,然后刷新网页,得到下面的页面 发现其中有许多d595开头的文件,它们是ts文件,点击其中一个。在…

什么是游戏盾?哪家效果好。

游戏盾是什么呢,很多做游戏开发的客户估计都是听说过的,但是也不是所有的游戏开发者会运用到。因为,游戏盾是针对游戏行业APP业务所推出的高度可定制的网络安全管理解决方案,除了能针对大型DDoS攻击(T级别)进行有效防御外&#xf…

Redis分布式系统:哨兵机制

“普通到不普通的人,哭着笑着的人~” Redis在主从复制的机制下,一旦主节点出现了故障宕机,不能提供服务后。就需要人工进行主从切换,重新从各从节点中选取新的主节点。同时大量的应用方请求被通知切换到新的主节点上。 当然&…

c语言->学会offsetof宏计算结构体相对偏移量

前言 ✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:橘橙黄又青-CSDN博客 目的,学习offsetof宏计算结构体相对偏移量 1.offsetof宏 来我们看图…

力扣740. 删除并获得点数

动态规划 思路: 选择元素 x,获得其点数,删除 x 1 和 x - 1,则其他的 x 的点数也会被获得;可以将数组转换成一个有序 map,key 为 x, value 为对应所有 x 的和;则问题转换成了不能同…