酒旅项目总结

本文主要介绍了基于微信小程序的酒旅项目,包括项目需求分析、系统架构和作者所负责的用户登录模块。项目采用Nginx作为反向代理和负载均衡,使用Gateway作为API网关,Nacos作为微服务注册与配置中心,Ribbon和OpenFeign进行微服务调用。作者在登录模块中负责技术选型、数据库设计和接口设计,强调了数据库设计规范及代码编写注意事项。
摘要由CSDN通过智能技术生成

酒旅项目总结

一. 项目介绍

​ 近年来,随着社会的快速发展,各地的旅客量迅速增加,宾馆数量也随之急剧增加,这就使得当用户面对如此多的酒店时不知道该如何选取,哪个酒店更适合自己,这样就需要有一种方便快捷的方式,可以让用户随时随地可以获取到符合自身需求的酒店信息,这就是我们今天所做的酒旅项目。

​ 这个项目是基于微信的小程序,在当今时代,手机几乎就是人们的生活必需品,而微信又基本成为了手机的一个基本功能,所以基于微信的小程序对于用户来说十分友好,当用户外出旅行或工作,都可以随时获取到自己所处位置的所有酒店信息,可以让用户进行各种纬度的比较,选择出适合自己的酒店。

二. 项目需求分析

一个预定酒店的程序,那就肯定涉及到用户,酒店(商家),平台三个部分,所有以我们需要有:

  • 前台系统

    ​ 用户前台服务系统(用于用户订购)

  • 后台系统

    ​ 酒店(商家)后台服务系统(用于酒店管理自身基本信息,房间数量,评价等)

    ​ 平台后台服务系统(用户管理用户,酒店,一些平台公告等)

    组织结构

    hotel-parent
    ├── config -- 配置中心存储配置
    ├── docunment -- 项目文件
    ├── project-admin -- 后台管理系统服务
    ├── project-auth -- 基于Spring Security Oauth2的统一的认证中心
    ├── project-common -- 工具类及通用代码块
    ├── project-gateway -- 基于Spring Cloud Gateway的微服务API网关服务
    ├── project-job -- 分布式调度系统
    ├── project-mbg -- MyBatisGenerator 生成的数据库操作代码模块
    ├── project-monitor -- 基于spring Boot Admin 的微服务监控中心
    ├──	project-portal -- 前台门户系统服务
    └── project-search -- 基于Elasticsearch的商品搜索系统服务
    

三. 系统架构图

img

架构图的简析

1.Nginx 作用:反向代理 负载均衡 前端程序一般部署在Nginx中

​ Nginx是一款轻量级的HTTP服务器,采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的IO性能,时常用于服务端的反向代理和负载均衡 。

好处

  • 轻松支持 https
  • 解决前后端跨域问题
  • 前后端解耦,方便维护以及负载均衡
  • Nginx静态资源处理性能要比后端常用的容器高数倍
  • Nginx接收外部访问,类似于后端服务的防火墙,更安全
2.Gateway API 网关

​ 微服务系统中,所有前端请求首先要通过网关,才能访问后端的业务功能。API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理授权、访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的调用者透明。因此,隐藏在 API 网关后面的业务系统就可以专注于创建和管理服务,而不用去处理这些策略性的基础设施。

3.Nacos 微服务注册与配置中心 相当于cloud的config Eureka Bus

​ 微服务系统中,所有的微服务都要注册到Nacos中,方便我们管理,同时只有注册了以后,微服务之间才可以调用。我们也可以将微服务的配置文件按照一定的格式放置与配置中心,当我们修改配置文件时,不需要在程序中修改,只要在配置中心修改即可,微服务会自动获取,不用重新启动。

4.Ribbon OpenFeign 用于微服务之间的调用,负载均衡

​ 某个服务服务未注册时,通过Ribbon的方式可以调用该微服务中的接口,而openFeign必须是注册的微服务才行

5.Sentinel 熔断降级

​ 在调用微服务时,微服务可能发生某些意外,造成微服务不可用,这时候就需要熔断降级

四.我所负责模块

在整个项目中,我负责微信小程序用户登录的模块

1.技术选型(后端技术)
技术 说明
SpringBoot 容器+MVC框架
MyBatis-Plus ORM框架
SpringSecurity 认证和授权框架
OAuth2 OAuth2授权支持
JWT JWT登录支持
Lombok 简化对象封装根据
Hutool Java工具类库
knife4j 文档生成工具
Hibernator-Validator 验证框架
2.登录流程图

请添加图片描述

3.数据库设计

user_info 用户信息表
请添加图片描述
user_login_info 用户登录表

请添加图片描述

数据库设计注意事项:
  1. 金钱使用bigint
  2. 一般情况下数据库必须有createTime updateTime deleted 字段
  3. 数据类型一般设置长度
  4. 字段尽量不为空
  5. 一个表索引不要太多,也不能没有
  6. 数据库设计的三大范式(不一定全部遵循,可以适当冗余)
  7. 时间设置使用timestamp
4.接口设计

微信小程序登录接口
请添加图片描述

响应示例

请添加图片描述

5.代码的编写

controller层代码

/**
 * 用户登录 前端控制器
 * @author 宋宏章
 * @since 2022-04-17
 */
@RestController
@RequestMapping("/login")
public class UserLoginController {
   
    @Resource
    private PasswordEncoder passwordEncoder;

    @Autowired
    private IUserLoginService loginService;
    /**
     * 用户登录
     * @param loginRequestDTO 登录请求DTO
     * @return map 令牌+用户信息Id
     * @author 宋宏章
     */
    @PostMapping
    public CommonResult<Map> login(@NotNull LoginRequestDTO loginRequestDTO){
   
        return loginService.login(loginRequestDTO);
    }

    /**
     * 通过用户名查询用户登录信息
     * @param username
     * @return 用户对象
     * @author 宋宏章
     */
    @GetMapping("/username")
    public CommonResult<UserLogin> getUserByUsername(@RequestParam("username") @NotNull String username){
   
        UserLogin user = loginService.getUserByUsername(username);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值