需求分析与规划
酒店管理系统后端技术选型建议采用 Spring Boot + MyBatis Plus + MySQL + Redis 的经典组合:使用 Spring Boot 作为主框架提供快速开发和自动配置能力,集成 Spring Security 实现用户认证和权限控制;数据持久层采用 MyBatis Plus 简化 CRUD 操作和复杂查询;MySQL 8.0 作为主数据库存储客房、订单、客户等核心业务数据;Redis 用于缓存热点数据(如房间状态、用户会话)和实现分布式锁;同时整合 Swagger 生成 API 文档,使用 Maven 进行项目管理。
开发实录
第一步:需求描述
采用 Spring Boot + MyBatis Plus + MySQL + Redis 技术架构,实现用户权限管理、客房状态监控、预订流程处理、入住退房管理和财务结算统计等核心功能模块,通过 B/S 架构设计支持多角色协同操作,具备实时数据缓存、接口文档自动生成、安全认证等特性,系统要求响应时间不超过 3 秒、支持 100+ 并发用户访问。
第二步:理解需求
根据需求分析确定系统边界与功能范围。
第三步:设计接口
定义 RESTful API 规范,明确请求方法与返回结构。
第四步:表结构设计
主要包含以下数据表:
user_info用户信息表role_info角色信息表permission_info权限信息表user_role_relation用户角色关联表role_permission_relation角色权限关联表room_info客房信息表booking_info预定信息表checkin_info入住登记信息表bill_info账单信息表
CREATE TABLE user_info (
user_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户唯一标识',
username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
password VARCHAR(100) NOT NULL COMMENT '用户密码(加密存储)',
email VARCHAR(100) COMMENT '用户邮箱',
phone VARCHAR(20) COMMENT '用户手机号',
status TINYINT DEFAULT 1 COMMENT '用户状态:1 正常,0 禁用',
create_by VARCHAR() COMMENT ,
create_time DATETIME COMMENT ,
update_by () COMMENT ,
update_time DATETIME COMMENT
) COMMENT;
role_info (
role_id AUTO_INCREMENT COMMENT ,
role_name () COMMENT ,
role_desc TEXT COMMENT ,
status TINYINT COMMENT ,
create_by () COMMENT ,
create_time DATETIME COMMENT ,
update_by () COMMENT ,
update_time DATETIME COMMENT
) COMMENT;
permission_info (
permission_id AUTO_INCREMENT COMMENT ,
permission_name () COMMENT ,
permission_code () COMMENT ,
permission_type TINYINT COMMENT ,
parent_id COMMENT ,
url () COMMENT ,
() COMMENT ,
status TINYINT COMMENT ,
create_by () COMMENT ,
create_time DATETIME COMMENT ,
update_by () COMMENT ,
update_time DATETIME COMMENT
) COMMENT;
user_role_relation (
relation_id AUTO_INCREMENT COMMENT ,
user_id COMMENT ,
role_id COMMENT ,
create_by () COMMENT ,
create_time DATETIME COMMENT
) COMMENT;
role_permission_relation (
relation_id AUTO_INCREMENT COMMENT ,
role_id COMMENT ,
permission_id COMMENT ,
create_by () COMMENT ,
create_time DATETIME COMMENT
) COMMENT;
room_info (
room_id AUTO_INCREMENT COMMENT ,
room_number () COMMENT ,
room_type () COMMENT ,
bed_type () COMMENT ,
price (,) COMMENT ,
status TINYINT COMMENT ,
description TEXT COMMENT ,
create_by () COMMENT ,
create_time DATETIME COMMENT ,
update_by () COMMENT ,
update_time DATETIME COMMENT
) COMMENT;
booking_info (
booking_id AUTO_INCREMENT COMMENT ,
user_id COMMENT ,
room_id COMMENT ,
check_in_date COMMENT ,
check_out_date COMMENT ,
guest_count COMMENT ,
total_amount (,) COMMENT ,
booking_status TINYINT COMMENT ,
remark TEXT COMMENT ,
create_by () COMMENT ,
create_time DATETIME COMMENT ,
update_by () COMMENT ,
update_time DATETIME COMMENT
) COMMENT;
checkin_info (
checkin_id AUTO_INCREMENT COMMENT ,
booking_id COMMENT ,
user_id COMMENT ,
room_id COMMENT ,
check_in_time DATETIME COMMENT ,
check_out_time DATETIME COMMENT ,
actual_checkout_time DATETIME COMMENT ,
total_days COMMENT ,
final_amount (,) COMMENT ,
status TINYINT COMMENT ,
create_by () COMMENT ,
create_time DATETIME COMMENT ,
update_by () COMMENT ,
update_time DATETIME COMMENT
) COMMENT;
bill_info (
bill_id AUTO_INCREMENT COMMENT ,
user_id COMMENT ,
order_id COMMENT ,
amount (,) COMMENT ,
bill_type TINYINT COMMENT ,
payment_status TINYINT COMMENT ,
remark TEXT COMMENT ,
create_by () COMMENT ,
create_time DATETIME COMMENT ,
update_by () COMMENT ,
update_time DATETIME COMMENT
) COMMENT;


