当前位置: 首页 > news >正文

使用飞算JavaAI快速搭建酒店管理系统

飞算JavaAI炫技赛主题(毕设):使用飞算JavaAI快速搭建酒店管理系统。

目录

  • 需求分析与规划
  • 飞算JavaAI开发实录
    • 第一步:需求描述
    • 第二步:理解需求
  • 第三步:设计接口
    • 第四步:表结构设计
    • 第五步:处理逻辑(接口)
    • 第六步:生成源码
    • 第七步:打开并运行项目
  • 优化与调试心得
  • 成果展示与总结
    • 系统结构展示
    • API接口展示
      • 用户管理接口
      • 角色权限接口
      • 客房管理接口
      • 预订管理接口
      • 入住退房接口
      • 财务统计接口
    • 总结

需求分析与规划

酒店管理系统后端技术选型建议采用Spring Boot + MyBatis Plus + MySQL + Redis的经典组合:使用Spring Boot作为主框架提供快速开发和自动配置能力,集成Spring Security实现用户认证和权限控制;数据持久层采用MyBatis Plus简化CRUD操作和复杂查询;MySQL 8.0作为主数据库存储客房、订单、客户等核心业务数据;Redis用于缓存热点数据(如房间状态、用户会话)和实现分布式锁;同时整合Swagger生成API文档,使用Maven进行项目管理。

飞算JavaAI开发实录

接下来我会使用智能引导功能来一步一步的完成整个系统的搭建。

第一步:需求描述

采用Spring Boot + MyBatis Plus + MySQL + Redis技术架构,实现用户权限管理、客房状态监控、预订流程处理、入住退房管理和财务结算统计等核心功能模块,通过B/S架构设计支持多角色协同操作,具备实时数据缓存、接口文档自动生成、安全认证等特性,系统要求响应时间不超过3秒、支持100+并发用户访问

需求描述

第二步:理解需求

理解需求

第三步:设计接口

设计接口

第四步:表结构设计

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(50) COMMENT '创建人',create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',update_by VARCHAR(50) COMMENT '修改人',update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='用户信息表';CREATE TABLE role_info (role_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '角色唯一标识',role_name VARCHAR(50) NOT NULL UNIQUE COMMENT '角色名称',role_desc TEXT COMMENT '角色描述',status TINYINT DEFAULT 1 COMMENT '角色状态:1启用,0禁用',create_by VARCHAR(50) COMMENT '创建人',create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',update_by VARCHAR(50) COMMENT '修改人',update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='角色信息表';CREATE TABLE permission_info (permission_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '权限唯一标识',permission_name VARCHAR(100) NOT NULL UNIQUE COMMENT '权限名称',permission_code VARCHAR(100) NOT NULL UNIQUE COMMENT '权限编码',permission_type TINYINT COMMENT '权限类型:1菜单,2按钮,3接口',parent_id BIGINT DEFAULT 0 COMMENT '父级权限ID',url VARCHAR(200) COMMENT '权限对应的URL路径',method VARCHAR(10) COMMENT '请求方法:GET、POST等',status TINYINT DEFAULT 1 COMMENT '权限状态:1启用,0禁用',create_by VARCHAR(50) COMMENT '创建人',create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',update_by VARCHAR(50) COMMENT '修改人',update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='权限信息表';CREATE TABLE user_role_relation (relation_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '关联关系唯一标识',user_id BIGINT NOT NULL COMMENT '用户ID',role_id BIGINT NOT NULL COMMENT '角色ID',create_by VARCHAR(50) COMMENT '创建人',create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) COMMENT='用户角色关联表';CREATE TABLE role_permission_relation (relation_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '关联关系唯一标识',role_id BIGINT NOT NULL COMMENT '角色ID',permission_id BIGINT NOT NULL COMMENT '权限ID',create_by VARCHAR(50) COMMENT '创建人',create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) COMMENT='角色权限关联表';CREATE TABLE room_info (room_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '房间唯一标识',room_number VARCHAR(20) NOT NULL UNIQUE COMMENT '房间编号',room_type VARCHAR(50) COMMENT '房间类型',bed_type VARCHAR(50) COMMENT '床型',price DECIMAL(10,2) COMMENT '房间价格',status TINYINT DEFAULT 0 COMMENT '房间状态:0空闲,1已预订,2入住中,3维修中',description TEXT COMMENT '房间描述',create_by VARCHAR(50) COMMENT '创建人',create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',update_by VARCHAR(50) COMMENT '修改人',update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='客房信息表';CREATE TABLE booking_info (booking_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '预订记录唯一标识',user_id BIGINT NOT NULL COMMENT '下单用户ID',room_id BIGINT NOT NULL COMMENT '房间ID',check_in_date DATE COMMENT '入住日期',check_out_date DATE COMMENT '退房日期',guest_count INT DEFAULT 1 COMMENT '入住人数',total_amount DECIMAL(10,2) COMMENT '总金额',booking_status TINYINT DEFAULT 0 COMMENT '预订状态:0待确认,1已确认,2已取消',remark TEXT COMMENT '备注说明',create_by VARCHAR(50) COMMENT '创建人',create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',update_by VARCHAR(50) COMMENT '修改人',update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='预订信息表';CREATE TABLE checkin_info (checkin_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '入住记录唯一标识',booking_id BIGINT NOT NULL COMMENT '对应预订ID',user_id BIGINT NOT NULL COMMENT '入住用户ID',room_id BIGINT NOT NULL COMMENT '房间ID',check_in_time DATETIME COMMENT '实际入住时间',check_out_time DATETIME COMMENT '预计退房时间',actual_checkout_time DATETIME COMMENT '实际退房时间',total_days INT COMMENT '入住天数',final_amount DECIMAL(10,2) COMMENT '最终结算金额',status TINYINT DEFAULT 1 COMMENT '入住状态:1进行中,2已完成,3异常',create_by VARCHAR(50) COMMENT '创建人',create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',update_by VARCHAR(50) COMMENT '修改人',update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='入住登记信息表';CREATE TABLE bill_info (bill_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '账单唯一标识',user_id BIGINT NOT NULL COMMENT '用户ID',order_id BIGINT NOT NULL COMMENT '订单ID(如booking_id或checkin_id)',amount DECIMAL(10,2) COMMENT '账单金额',bill_type TINYINT COMMENT '账单类型:1预订费用,2住宿费用,3其他费用',payment_status TINYINT DEFAULT 0 COMMENT '支付状态:0未支付,1已支付',remark TEXT COMMENT '账单备注',create_by VARCHAR(50) COMMENT '创建人',create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',update_by VARCHAR(50) COMMENT '修改人',update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='账单信息表';

第五步:处理逻辑(接口)

处理逻辑(接口)

第六步:生成源码

生成源码
生成成功

第七步:打开并运行项目

这是一个典型的基于 ​​Spring Boot​​ 框架的 Java Web 项目结构,采用分层架构(如Controller-Service-Repository)和Maven进行依赖管理。
打开项目后配置JDK和Maven环境。
配置JDK
将SQL导入到数据库中
导入SQL
导入SQL
成功导入依赖
成功导入依赖
项目成功运行
项目成功运行

优化与调试心得

我这里使用智能会话功能对JWT进行优化,然后考虑到后续多用户同时使用的情况下,所以又添加了Druid连接池。飞算JavaAI给出了详细的优化过程以及优化技巧,代码程序拿来即用。体验非常的不错。下面来看看飞算JavaAI如何进行优化的。

增强JWT: 使用强加密算法优化JWT,避免使用HS256,使用HS512,密钥长度至少达到512-bit
增强JWT
增强JWT
在 application.yml 中增加 Druid 数据库连接池配置。
增加Druid

server:port: 9000servlet:context-path: /hmsspring:datasource:# Druid 连接池配置type: com.alibaba.druid.pool.DruidDataSourceurl: jdbc:mysql://localhost:3306/hms_db?useSSL=false&serverTimezone=UTC&characterEncoding=utf8username: nullpassword: nulldriver-class-name: com.mysql.cj.jdbc.Driver# Druid 基本配置druid:initial-size: 5min-idle: 5max-active: 20# 配置获取连接等待超时的时间max-wait: 60000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接time-between-eviction-runs-millis: 60000# 配置一个连接在池中最小生存的时间min-evictable-idle-time-millis: 300000# 验证连接有效性的查询语句validation-query: SELECT 1# 是否缓存preparedStatement,也就是PSCachepool-prepared-statements: true# 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为truemax-pool-prepared-statement-per-connection-size: 20# 配置监控统计拦截的filtersfilters: stat,wall,slf4j# 合并多个DruidDataSource的监控数据use-global-data-source-stat: true# 配置WebStatFilterweb-stat-filter:enabled: trueurl-pattern: /*exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"# 配置StatViewServletstat-view-servlet:enabled: trueurl-pattern: /druid/*login-username: adminlogin-password: adminreset-enable: falsejpa:hibernate:ddl-auto: updateshow-sql: trueproperties:hibernate:dialect: org.hibernate.dialect.MySQLDialectformat_sql: truejwt:secret: mySecretKeyForHMSApplicationWhichShouldBeVeryLongAndSecureexpiration: 86400

成果展示与总结

系统结构展示

飞算JavaAI生成了完整的系统架构,采用分层架构(如Controller-Service-Repository)和Maven进行依赖管理。控制层负责处理HTTP请求和参数验证,业务层负责核心业务逻辑处理,数据层负责数据访问和持久化操作。
项目结构

hms/
├── sql/
├── src/
│   └── main/
│       ├── java/
│       │   └── com/
│       │       └── feisuanyz/
│       │           ├── common/
│       │           ├── config/
│       │           ├── controller/
│       │           ├── dto/
│       │           ├── entity/
│       │           ├── repository/
│       │           ├── service/
│       │           └── utils/
│       └── resources/
│           └── application.yml
└── pom.xml

API接口展示

下面来看看所有的API接口

用户管理接口

# 用户认证
POST /api/auth/login          # 用户登录
POST /api/auth/logout         # 用户登出
POST /api/auth/refresh        # 刷新Token# 用户管理
GET    /api/users             # 获取用户列表
POST   /api/users             # 创建用户
GET    /api/users/{id}        # 获取用户详情
PUT    /api/users/{id}        # 更新用户信息
DELETE /api/users/{id}        # 删除用户

角色权限接口

# 角色管理
GET    /api/roles             # 获取角色列表
POST   /api/roles             # 创建角色
PUT    /api/roles/{id}        # 更新角色
DELETE /api/roles/{id}        # 删除角色# 权限管理
GET    /api/permissions       # 获取权限列表
POST   /api/roles/{roleId}/permissions  # 分配权限

客房管理接口

# 房间管理
GET    /api/rooms             # 获取房间列表
POST   /api/rooms             # 添加房间
GET    /api/rooms/{id}        # 获取房间详情
PUT    /api/rooms/{id}        # 更新房间信息
DELETE /api/rooms/{id}        # 删除房间# 房间状态
GET    /api/rooms/available   # 查询可用房间
PUT    /api/rooms/{id}/status # 更新房间状态

预订管理接口

# 预订管理
GET    /api/bookings          # 获取预订列表
POST   /api/bookings          # 创建预订
GET    /api/bookings/{id}     # 获取预订详情
PUT    /api/bookings/{id}     # 更新预订
DELETE /api/bookings/{id}     # 取消预订# 预订状态
PUT    /api/bookings/{id}/confirm  # 确认预订
PUT    /api/bookings/{id}/cancel   # 取消预订

入住退房接口

# 入住管理
POST   /api/checkins          # 办理入住
GET    /api/checkins          # 获取入住记录
GET    /api/checkins/{id}     # 获取入住详情
PUT    /api/checkins/{id}/checkout  # 办理退房

财务统计接口

# 账单管理
GET    /api/bills             # 获取账单列表
POST   /api/bills             # 创建账单
GET    /api/bills/{id}        # 获取账单详情
PUT    /api/bills/{id}/pay    # 支付账单# 统计报表
GET    /api/statistics/revenue     # 收入统计
GET    /api/statistics/occupancy   # 入住率统计
GET    /api/statistics/rooms       # 房间统计

总结

总体体验下来,一个字好,两个字很好,三个字非常好。
之前我写酒店管理系统,要么是从0到1写,要么是找别人开源的。从0到1写那个过程非常繁琐,依赖的版本和JDK以及Maven的版本要匹配,要不然不兼容报错,还要考虑用户权限问题,登录Token的问题以及表与表之间复杂的关联关系,整体下来要好几个星期。找开源项目又和学校的要求不一样,这改改那改改浪费不少时间。

使用了飞算JavaAI后,它能根据我们的需求描述来生成项目,这也就是说,我想生成啥生成啥。能帮我进行逻辑设计,还能帮我设计表结构。生成后的项目,调一下配置,导下数据库就能使用。后续如果想优化啥,使用智能会话直接就优化了,这种模式机制非常完美。

不足之处的话,我觉得应该需要优化一下智能会话,让它能够根据我的具体描述分析整个项目来写代码。

飞算JavaAI的这种需求驱动、智能生成、持续优化的开发模式,无疑是软件开发领域的一次重要革新,为开发者提供了一种全新的、高效的开发体验。

http://www.xdnf.cn/news/1445401.html

相关文章:

  • 部署MYSQL主从同步超详细过程
  • bootloader相关实现
  • 逻辑回归 vs 支持向量机 vs 随机森林:哪个更适合小数据集?
  • 中通笔试ShowMeBug编程题复盘
  • 免费的PDF工具箱软件,免费PDF转word,PDF合并,PDF24下载,24个功能
  • Corona 13 渲染器安装与使用教程(适用于3ds Max 2016–2026)
  • 408考研——单链表代码题常见套路总结
  • 有奖直播 | 如何高效测试ADC/DAC?德思特一站式方案,让测试效率倍速提升!
  • 【Linux操作系统】简学深悟启示录:进程控制
  • 1983:ARPANET向互联网的转变
  • test命令与参数
  • Kotlin编程学习记录2
  • Linux `epoll` 机制的入口——`epoll_create`函数
  • 自由学习记录(92)
  • 图像正向扭曲反向扭曲
  • 关于缓存的一些思考?
  • 从Java全栈到前端框架:一次真实的面试对话
  • 自动化运维-ansible中对于大项目的管理
  • HTML第八课:HTML4和HTML5的区别
  • 网络通信与协议栈 -- OSI,TCP/IP模型,协议族,UDP编程
  • Linux 网络编程中核心函数`recv`。
  • Qt6用Chart模块做数据可视化?别再用老套路,看看这套35张图背后的秘密
  • MySQL :索引原理
  • 【面试题】BPE和WordPiece的区别?
  • Anaconda3出现Fatal error in launcher: Unable to create process using.....问题
  • STM32CubeMX + HAL 库:基于 I²C 通信的 BMP280气压海拔测量
  • 【超详细】别再看零散的教程了!一篇搞定Gitee从注册、配置到代码上传与管理(内含避坑指南最佳实践)
  • PS大神级AI建模技巧!效率翻倍工作流,悄悄收藏!
  • Wan系列模型解析--详细架构图
  • 机器学习在Backtrader多因子模型中的应用