开课吧之旅-旅游酒店真项目实战总结

旅游酒店真项目实战总结


一 项目需求

1.1 项目内容了解

将项目参考的页面进行长屏截图

1.2 项目需求了解

了解每一个页面具体实现什么样的功能

与其他页面的关联关系

以模块的方式进行统计不同需求的业务和功能

image-20220505190931582

1.3 业务开发边界明确

区分哪些模块又相互交集的地方
相互交集的任务需要明确具体有由谁来开发
召开团队会议,由产品经理进行协调

1.4 数据库/接口设计约定

每一个模块子模块的数据表使用表名+info的方式进行命名
接口实现

二 业务逻辑分析

2.1 项目整体逻辑

数据库关系表

2.3 模块业务功能实现逻辑

image-20220505191252509

三 数据库设计

3.1 数据库设计工具

3.1.1 设计工具PDManger

65158304223

3.1.2 设置

  1. 默认字段

6515833340665158334782

  1. 新建表默认属性

65158341050

  1. 数据域
类型代码显示名称MYSQL(默认)Java程序代码
long长整型BIGINTLong
tinyint短型TINYINTInteger
int整数INTInteger
date日期TIMESTAMPDate
string字串VARCHARString
largeText大文本TEXTString
CHAR字节CHARchar
  1. 数据域
数据域代码显示名称数据类型长度
DefaultString默认字串字串32
CertificateString证件号字串64
NameString名称字串128
NoteString备注字串256
UrlStringURL-字串字串512
ContentString内容文本字串1024
int整数整数
Money金额长整型10
DateTime日期时间日期
enum枚举短型1
primaryKey主键长整型20
score积分长整型10
OpenId微信OpenId字节28

3.2 数据库架构设计

模块命名
用户USER
订单ORDER
酒店HOTEL
客房ROOM
搜索SEARCH

3.3 数据库模块和功能设计

project-hotel-user_info_relation[用户信息关系]-202255191418

四 接口设计

4.1 使用Api post团队协作工具

4.1.1 设计工具ApiPost

65158306543

4.2.2 团队协作

65158235142

4.2 代码测试

4.2.1 开发环境
http://localhost:9999

65158230804

4.2.2 请求方式
(1)GET

​ 使用Query传递参数,请求参数直接追加在url路径上

65158243328

(2)POST

​ 使用body传递参数,使用application/json格式传递,表达完整

65158240599

4.2.3 请求路径
	// 可以不使用restful风格,但表达要清晰完整
	@RequestMapping(value = "/update-real-name-certification")
	// @RequestBody  post请求
	// @RequestParam("id") @NotNull get请求
	public CommonResult updateRealNameCertification(@RequestBody UserInfo userInfo) {}
4.2.4 使用内置Mock变量设置变量参数方便测试
(1)基本变量
@integer(1,100)        		随机1~100整数,参数自行调整
@string( pool, 1, 10 )		随机1~10字符串
(2)日期变量
@date('yyyy-MM-dd')
@datetime('yyyy-MM-dd HH:mm:ss')
@now('yyyy-MM-dd HH:mm:ss')
(3)主键变量
@guid()				随机guid
@increment(1)		随机主键,自增
(4)WEB变量
@url('http')		随机url
@email()			随机邮箱
@ip()				随机IP地址
(5)地区变量
@region()			随机中国大区
@province()			随机省份/直辖市
@city()			    随机城市
@county()			随机县级市
@county(true)		随机一个省市地区,含县,例如:湖北省/武汉市
(6)邮编变量
@zip()
(7)人名变量
@name()				随机常用英文姓名
@cname()			随机中文姓名
(8)颜色变量
@color()			随机颜色
(9)文本变量
@paragraph()		随机一段文本
@cparagraph()		随即一段中文文本

五 架构结构

模块名称功能知识点
project-admin后台管理系统服务
project-auth基于Spring Security Oauth2的统一的认证中心1. Authorization code 授权码
2. oken 令牌
3. 授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器的通信都在后端完成。这样的前后端分离,可以避免令牌泄漏
project-common工具类及通用代码块1. 异常处理工具
ApiException:自定义API异常 , 效验失败抛出改异常
Asserts:断言处理类,用于抛出各种API异常
GlobalExceptionHandler:全局异常处理 ,并返回封装好的CommonResult对象
2. API文档工具
CommonPage:分页数据封装类
CommonResult:通用返回对象
ResultCode:枚举了一些常用API操作码
IErrorCode:封装API的错误码
project-gateway基于Spring Cloud Gateway的微服务API网关服务1. 配置中心
Apollo:携程
nacos:阿里巴巴
eureka:spring
2. 网关
spring cloud gateway
3. 过滤器
全局过滤器 解析token
当白名单内的url请求携带了过期的token或签名不正确的token时 访问该路径会报错 所以移除白名单的token
project-job分布式调度系统定时工具:XxlJob
project-mbgMyBatisGenerator 生成的数据库操作代码模块
project-monitor基于spring Boot Admin 的微服务监控中心监控中心:spring Boot Admin
project-order订单模块
project-portal前台门户系统服务,存放前台工具
project-search基于Elasticsearch的商品搜索系统服务搜索和分析的工具:Elasticsearch
project-user-center用户模块

六 代码编写

6.1 严格遵守规范

类别规范
domain 实体类实体类:表名
视图展示 vo:名称+VO
数据处理类 dto:名称+DTO
常量类:名称+Constants
枚举类:enums
dao 持久层类名:表名+DAO
禁止使用xml文档,推荐使用注解的方式进行数据操作
service 服务层1. 接口:I(表示接口)+表名
2. 实现类:表名+Impl
3. 继承IService
使用LambdaQueryWrapper进行容器化数据查询存储
使用LambdaUpdateWrapper进行容器化数据操作存储
使用this关键字调用Service方法
4. 使用lambda表达式简化代码
List.forEach(Object->{})
List.forEach(Object::getMethod)
5. 多表联查
Service层同层调用获取相关数据
使用流操作进行合并:List.stream().forEach(Object->{})
6. 异常处理
直接抛出异常:@Transaction(rollbackFor=Exception.class)
使用工具类捕捉全局异常:GlobalExceptionHandler
7. 工具辅助快速编程
hutool工具包
CollUtil:集合类处理工具
ObjectUtil:对象处理工具包
common工具包
Asserts:断言处理工具包
controller 控制层使用Common Result 对象进行返回对象

6.2 代码优雅便于阅读

  1. 判断断言放在代码的前面,便于直观了解异常
  2. 逻辑判断代码在Service层进行实现
  3. 结果判断另起一行,使用对象进行接收后再判断
  4. if只判断错误逻辑并进行处理,减少else判断
  5. 按照流程将代码执行到底

6.3 完整注释便于维护

    /**
     * 获取登陆表id
     *
     * @param id 用户信息表id
     * @return 登陆表id
     */
    @NotNull(message = "用户未注册")
    Long getUserLoginIdById(@NotNull(message = "用户id不能为空") Long id);

6.5 使用Git协作

  1. Git仓库获取下载路径;image-20220505193404197

  2. 创建存放文件夹

    image-20220505193523857

  3. 使用Git命名进行下载

image-20220505193540985

image-20220505193556875

image-20220505193721984

image-20220505193735186

image-20220505193914510

  1. 使用IDEA打开后进行数据加载/操作

    image-20220505193939618

    image-20220505194001467

  2. 代码编写完成后一定要先拉取最新的代码到本地

    image-20220505194218827

  3. 进行提交操作

    image-20220505194423153

![age-20220505194306648-165175100077810.png)

image-20220505194325305

  1. 更新完成

image-20220505194457561

  1. 进行推送到Gitee仓库

image-20220505194528410

  1. 检查是否成功

    image-20220505194605880

    image-20220505194637127

七 团队协作重点

  1. 项目需求讨论/定稿
  2. 业务逻辑讨论/定稿
  3. 数据库设计讨论/定稿
  4. 接口设计讨论/定稿
  5. 代码编写讨论/定稿

八 学习知识点总结

  1. 团队管理
  2. 项目业务流程
  3. 数据库设计
  4. API接口设计
  5. 代码编写
  6. Git合作开发联调

九 后续学习规划

1. 整体架构消化

img

2. 新知识点学习

2.1 后端技术
技术说明官网
SpringBoot容器+MVC框架https://spring.io/projects/spring-boot
SpringSecurity认证和授权框架https://spring.io/projects/spring-security
MyBatisORM框架http://www.mybatis.org/mybatis-3/zh/index.html
Elasticsearch搜索引擎https://github.com/elastic/elasticsearch
RabbitMQ消息队列https://www.rabbitmq.com/
Redis分布式缓存https://redis.io/
MongoDBNoSql数据库https://www.mongodb.com
LogStash日志收集工具https://github.com/elastic/logstash
Kibina日志可视化查看工具https://github.com/elastic/kibana
Nginx静态资源服务器https://www.nginx.com/
Docker应用容器引擎https://www.docker.com
Jenkins自动化部署工具https://github.com/jenkinsci/jenkins
Druid数据库连接池https://github.com/alibaba/druid
OSS对象存储https://github.com/aliyun/aliyun-oss-java-sdk
MinIO对象存储https://github.com/minio/minio
JWTJWT登录支持https://github.com/jwtk/jjwt
Lombok简化对象封装工具https://github.com/rzwitserloot/lombok
HutoolJava工具类库https://github.com/looly/hutool
PageHelperMyBatis物理分页插件http://git.oschina.net/free/Mybatis_PageHelper
knife4j文档生成工具
Hibernator-Validator验证框架http://hibernate.org/validator
2.2 前端技术
技术说明官网
Vue前端框架https://vuejs.org/
Vue-router路由框架https://router.vuejs.org/
Vuex全局状态管理框架https://vuex.vuejs.org/
Element前端UI框架https://element.eleme.io
Axios前端HTTP框架https://github.com/axios/axios
v-charts基于Echarts的图表框架https://v-charts.js.org/
Js-cookiecookie管理工具https://github.com/js-cookie/js-cookie
nprogress进度条控件https://github.com/rstacruz/nprogress
3.3 新知识点
技术说明官网
RuoYi-Cloud前后端分离的分布式微服务架构https://gitee.com/y_project/RuoYi-Cloud.git
macro / mallmall项目致力于打造一个完整的电商系统,采用现阶段流行技术实现https://gitee.com/macrozheng/mall.git
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值