公寓项目
- 课程介绍
- 项目概述
- 项目开发流程
- 项目原型
- 数据库设计理论
- 数据库设计实操
- 接口定义
- 开发准备
- 概述
- 开发环境
- 安装方式说明
- Linux-概述
- Linux-安装vmware
- Linux-安装虚拟机
- Linux-安装系统
- Linux-vmware使用技巧
- Linux-目录结构
- Linux-交互界面
- Linux-常用命令-文件目录相关(上)
- Linux-常用命令-文件目录相关(中)
- Linux-常用命令-文件目录相关(下)
- Linux-常用命令-文本编辑-vim概述
- Linux-常用命令-权限相关-权限系统
- Linux-常用命令-权限相关-常用命令
- Linux-常用命令-进程相关
- Linux-常用命令-压缩归档相关
- Linux-常用命令-安装应用相关
- Linux-远程访问
- Linux-虚拟机网络配置
- Linux-虚拟机网络配置-主机网络配置
- Linux-虚拟机网络配置-虚拟网络模式
- Linux-虚拟机网络配置-NAT配置
- Linux-虚拟机网络配置-静态IPmit
- 准备虚拟机
- 安装Mysql
- 安装Redis
- 安装MinIO
- 技术储备
- MyBatisPlus-概述
- MyBatisPlus-数据准备
- MyBatisPlus-springboot集成
- MyBatisPlus-创建实体类
- MyBatisPlus-通用mapper
- MyBatisPlus-通用service
- MyBatisPlus-条件构造器-QueryWrapper
- MyBatisPlus-条件构造器-UpdateWrapper
- MyBatisPlus-条件构造器-Lambda版本
- MyBatisPlus-条件构造器-分页插件
- MyBatisPlus-条件构造器-MyBatisX插件
- MinlO-MinIO概述
- MinlO-管理页面操作mlt
- MinlO-java客户端
- Redis-概述
- Redis-客户端
- Redis-常用数据类型-通用命令
- Redis-常用数据类型-string
- Redis-常用数据类型-list
- Redis-常用数据类型-set
- Redis-常用数据类型-hash
- Redis-常用数据类型-hash
- Redis-常用数据类型-SpringDataRedis-概述
- Redis-常用数据类型-SpringDataRedis- RedisTemplate
- Redis-常用数据类型-SpringDataRedis- 序列化问题说明
- Redis-常用数据类型-SpringDataRedis- StringRedisTemplate
- Knife4j-概述
- Knife4j-springboot集成
- Knife4j-常用注解
- 回顾
- 项目开发
- 项目初始化
- 后台管理
- 初始配置-springboot
- 初始配置-MybatisPlus
- 初始配置-knife4j
- 初始配置-导入模版密码
- 初始配置-导入接口定义代码
- 公寓管理-支付方式-查询列表
- 公寓管理-支付方式-保存或者更新
- 公寓管理-支付方式-删除
- 公寓管理-房间租期
- 公寓管理-标签-查询列表-类型转换问题分析
- 公寓管理-标签-查询列表-自定义Converter
- 公寓管理-标签-查询列表-自定义ConverterFactory
- 公寓管理-标签-查询列表-自定义enumValue和jsonValue
- 公寓管理-标签-保存或更新&删除
- 公寓管理-配套管理
- 公寓管理-基本属性-概述
- 公寓管理-基本属性-保存或更新属性名称&属性值
- 公寓管理-基本属性-查询列表
- 公寓管理-基本属性-删除
- 公寓管理-杂费
- 公寓管理-地区信息
- 公寓管理-上传图片-概述
- 公寓管理-上传图片-配置minioclient
- 公寓管理-上传图片-接口实现
- 公寓管理-上传图片-异常处理
- 公寓管理-上传图片-全局异常处理
- 公寓管理-公寓信息-概述
- 公寓管理-公寓信息-保存或者更新-定义
- 公寓管理-公寓信息-保存或者更新-实现
- 公寓管理-公寓信息-分页查询-概述
- 公寓管理-公寓信息-分页查询-实现
- 公寓管理-公寓信息-详情查询-实现
- 公寓管理-公寓信息-删除-实现
- 公寓管理-公寓信息-删除-完善
- 公寓管理-公寓信息-剩余接口
- 公寓管理-房间信息-概述
- 公寓管理-房间信息-测试
- 租赁管理-看房预约-修改状态
- 租赁管理-看房预约-分页查询
- 租赁管理-看房预约-时间格式&时区
- 租赁管理-租约-概述
- 租赁管理-租约-保存或更新
- 租赁管理-租约-分页查询
- 租赁管理-租约-定时任务
- 用户管理
- 系统管理-岗位管理
- 系统管理-用户信息-概述
- 系统管理-用户信息-分页查询
- 系统管理-用户信息-根据id查询
- 系统管理-用户信息-保存或更新
- 系统管理-用户信息-剩余接口
- 租赁管理-租约-剩余接口
- 系统管理-登入管理-认证方案
- 系统管理-登入管理-Jwt概述
- 系统管理-登录管理-登录流程
- 系统管理-登录管理-获取验证码-准备工作
- 系统管理-登录管理-获取验证码-实现
- 系统管理-登录管理-登入接口-上
- 系统管理-登录管理-登入接口-下
- 系统管理-登录管理-登入接口-拦截器
- 登录管理-查询登入用户信息
- 前后端联调
- 移动端
- 项目优化-缓存优化
- 项目部署
课程介绍
项目概述
移动端业务功能
谷歌浏览器,点击F12打开控制台
找房相关
房源检索
个人中心
浏览历史
我的预约
我的租约
后台管理系统业务功能-公寓管理
下面是属性管理
其实就是增删改查
下面是公寓管理
针对公寓的增删改查
上面这些信息就是属性管理中的
房间管理,针对房间的增删改查
后台管理系统业务功能-租赁功能
新增租约
后台管理系统业务功能-系统管理&用户管理
系统管理
系统管理的用户是登入到后台管理系统的用户
添加用户
用户管理
用户管理的用户是登入到移动端的用户
核心业务功能
技术概述
使用NGINX的好处
负载均衡:通过利用NGINX的负载均衡模块,可以将请求分发到不同的后端服务器,实现请求的平衡分配,提高系统的可用性和性能。(万一有很多的后端服务器,可以用NGINX来分配)
反向代理:NGINX可以作为反向代理服务器,将客户端的请求转发到内部服务器,隐藏实际服务器的IP地址,提高安全性和性能。(别人不知道你后端服务器的ip地址,也就没法攻击)
静态和动态内容缓存:NGINX具备强大的HTTP缓存功能,可以缓存静态和动态内容,提高响应速度,减轻后端服务器的压力。
快速响应静态文件:NGINX对于静态文件的处理非常高效,可以快速响应静态文件的请求,提高Web服务器的性能。
项目开发流程
项目原型
移动端
后台管理系统
数据库设计理论
ER模型
数据库设计流程
数据库设计实操
概念模型
逻辑模型
公寓信息
公寓的图片一般不止一张
上面这种方法对图片进行操作非常麻烦,如果要删除的话,特别麻烦
上面这种太冗余
一般在数据库中只保存图片的地址就可以了
这个地址就是对象存储服务minio中的地址
图片所属对象类型分为 公寓和房间
如果是公寓,下面所属id类型就是公寓id
如果是房间,下面所属id类型就是房间id
下面是公寓-杂费关系
有一个问题
杂费的名称是可以修改的
如果要改网费名称
就是找到这个表中所有杂费名称等于网费的数据
然后对其进行调整,改起来很麻烦
上面两种方案都可以
房间信息
用户信息
看房预约信息
租约信息
浏览历史&后台用户
物理模型
接口定义
后台管理系统
属性管理
公寓管理&房间管理
看房预约&租约管理
剩余内容
移动端
登入&找房
个人中心
开发准备
概述
开发环境
安装方式说明
Linux-概述
Linux-安装vmware
Linux-安装虚拟机
Linux-安装系统
重启后
联网
防止自动锁屏
Linux-vmware使用技巧
如果要删除这个快照
克隆前要关机
Linux-目录结构
Linux-交互界面
在图形界面,点击ctrl+alt+f2就可以进入命令行界面
再点击ctrl+alt+f1就可以进入图形化界面
在计算机科学中,Shell俗称壳(用来区别于核),
是指“为使用者提供操作界面”的软件(命令解析器)
它类似于DOS下的command.com和后来的cmd.exe,
它接收用户命令,然后调用相应的应用程序
Linux-常用命令-文件目录相关(上)
Linux-常用命令-文件目录相关(中)
Linux-常用命令-文件目录相关(下)
Linux-常用命令-文本编辑-vim概述
Linux-常用命令-权限相关-权限系统
Linux-常用命令-权限相关-常用命令
Linux-常用命令-进程相关
Linux-常用命令-压缩归档相关
Linux-常用命令-安装应用相关
Linux-远程访问
Linux-虚拟机网络配置
Linux-虚拟机网络配置-主机网络配置
Linux-虚拟机网络配置-虚拟网络模式
Linux-虚拟机网络配置-NAT配置
确定子网ip的范围
主机和虚拟机都加入到网络中
理论上,两者的网络是互通的
ping命令访问一个IP地址
如果有回应,就表示两个地址之前是互通的
有时候没有回应,是因为防火墙的原因
Linux-虚拟机网络配置-静态IPmit
如何在图形化界面操作
准备虚拟机
这样第一台虚拟机就有了
下面克隆第二台
克隆完要改ip地址
安装Mysql
安装Redis
安装MinIO
技术储备
MyBatisPlus-概述
MyBatisPlus-数据准备
MyBatisPlus-springboot集成
MyBatisPlus-创建实体类
MyBatisPlus-通用mapper
下面配置一个打印出SQL语句的设置
MyBatisPlus-通用service
service的增删改查方法是基于mapper的crud进一步封装的
下面是一个测试类
下面测试批量插入
MyBatisPlus-条件构造器-QueryWrapper
MyBatisPlus-条件构造器-UpdateWrapper
MyBatisPlus-条件构造器-Lambda版本
MyBatisPlus-条件构造器-分页插件
MyBatisPlus-条件构造器-MyBatisX插件
MinlO-MinIO概述
上面都是一些商业版的对象存储服务
MinlO-管理页面操作mlt
如何上传一个文件,首先要先创建一个桶
往桶上传文件
没有访问到,权限不够
我们要修改一下权限
现在就可以访问图片了
MinlO-java客户端
下面就是上传文件
Redis-概述
Redis-客户端
Redis-常用数据类型-通用命令
Redis-常用数据类型-string
Redis-常用数据类型-list
Redis-常用数据类型-set
Redis-常用数据类型-hash
Redis-常用数据类型-hash
Redis-常用数据类型-SpringDataRedis-概述
Redis-常用数据类型-SpringDataRedis- RedisTemplate
Redis-常用数据类型-SpringDataRedis- 序列化问题说明
Redis-常用数据类型-SpringDataRedis- StringRedisTemplate
Knife4j-概述
Knife4j-springboot集成
Knife4j-常用注解
回顾
项目开发
项目初始化
下面要在web中引入common和module模块
后台管理
初始配置-springboot
dependencymanagment只会申明依赖的版本,而不会去下载那个依赖
初始配置-MybatisPlus
这里我们没有申明版本,因为在lease中的pom中申明了
初始配置-knife4j
初始配置-导入模版密码
这里就是使用Redis进行缓存,要缓存到Redis当中,必须对这个对象进行序列化操作
初始配置-导入接口定义代码
我们发现所有接口的返回类型都是result,只是泛型参数不同
Vo就是在我们提前定义好的实体类上又加了一些信息
公寓管理-支付方式-查询列表
这里就是支付方式的增删改查
可以将不需要返回的字段加上jsonignore注解
公寓管理-支付方式-保存或者更新
下面是修改,修改要带着id
公寓管理-支付方式-删除
公寓管理-房间租期
公寓管理-标签-查询列表-类型转换问题分析
公寓管理-标签-查询列表-自定义Converter
问题就在这个步骤
公寓管理-标签-查询列表-自定义ConverterFactory
上面这样为每个枚举类型都编写converter很麻烦
我们可以为所有枚举类型统一实现转换逻辑
公寓管理-标签-查询列表-自定义enumValue和jsonValue
公寓管理-标签-保存或更新&删除
公寓管理-配套管理
公寓管理-基本属性-概述
公寓管理-基本属性-保存或更新属性名称&属性值
公寓管理-基本属性-查询列表
公寓管理-基本属性-删除
公寓管理-杂费
公寓管理-地区信息
公寓管理-上传图片-概述
公寓管理-上传图片-配置minioclient
这个接口就是接收前端上传的图片文件,再将其保存到minio中,在返回这个图片在minio中的URL。
公寓管理-上传图片-接口实现
上面的代码就是向minio中上传图片并返回图片的URL
公寓管理-上传图片-异常处理
公寓管理-上传图片-全局异常处理
公寓管理-公寓信息-概述
公寓管理-公寓信息-保存或者更新-定义
公寓管理-公寓信息-保存或者更新-实现
公寓管理-公寓信息-分页查询-概述
公寓管理-公寓信息-分页查询-实现
公寓管理-公寓信息-详情查询-实现
公寓管理-公寓信息-删除-实现
公寓管理-公寓信息-删除-完善
公寓管理-公寓信息-剩余接口
公寓管理-房间信息-概述
公寓管理-房间信息-测试
租赁管理-看房预约-修改状态
租赁管理-看房预约-分页查询
租赁管理-看房预约-时间格式&时区
租赁管理-租约-概述
租赁管理-租约-保存或更新
租赁管理-租约-分页查询
租赁管理-租约-定时任务
用户管理
这里的用户是移动端的用户管理
手机号需要模糊查询,用like
账号状态需要精确查询eq
系统管理-岗位管理
系统管理-用户信息-概述
一般后台管理系统没有用户注册的功能,都是由管理员添加进来的
系统管理-用户信息-分页查询
系统管理-用户信息-根据id查询
系统管理-用户信息-保存或更新
系统管理-用户信息-剩余接口
租赁管理-租约-剩余接口
系统管理-登入管理-认证方案
系统管理-登入管理-Jwt概述
系统管理-登录管理-登录流程
在每一次请求都要验证jwt十分麻烦
我们可以使用拦截器,拦截器可以拦截所有的请求,我们可以在拦截器中统一实现验证jwt的功能
系统管理-登录管理-获取验证码-准备工作
我们这边返回的验证码的图片是string类型的
这个使用base64(可以将一个二进制的内容编码成字符串)
这里我们就将二进制的字符串编码成
系统管理-登录管理-获取验证码-实现
系统管理-登录管理-登入接口-上
系统管理-登录管理-登入接口-下
最后就要创建jwt
我们要使用一个开源工具JavaJWT
系统管理-登录管理-登入接口-拦截器
登录管理-查询登入用户信息
在用户登入成功后,会得到一个token,这个token中就包含了用户的信息
前后端联调
先启动后端项目
项目启动前端项目
移动端
项目初始化
登入管理-交互流程
登入管理-获取验证码(上)
下面编写发送短信的逻辑
下面做一个测试,输入手机号和验证码,可以收到短信
登入管理-获取验证码(下)
下面这个方法就是随机生成一个验证码
下面是对发送短信方法的具体实现
登入管理-注册和登入
拦截器
1.为所有受保护的接口添加校验jwt的逻辑
2.将jwt提取的用户信息提取到threadlocal中
登入管理-获得个人信息
找房-地区&支付方式
找房-分页查询房间列表
找房-剩余接口
个人中心-查询浏览历史
个人中心-看房预约
个人中心-租赁管理
前后端联调
项目优化-缓存优化
1.在修改数据库的同时修改缓存
2.在修改数据库的时候,删除这个缓存
项目部署
部署方案
NGINX可以作为静态资源的服务器,或者进行反向代理
nginx快速入门-概述
nginx快速入门-案例实操
配置域名映射
部署后端项目
上传之后可以直接启动看看
访问成功
部署前端项目
对dist文件进行打包