温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!
1. 项目背景与意义
随着汽车保有量的持续增长和出行需求的多样化,传统汽车租赁行业在车辆调度、订单管理、客户信息维护等方面面临效率低、易出错、数据分散等痛点。人工登记、电话预约、纸质合同等线下流程不仅耗时,还难以支撑规模化运营。
基于 Spring Boot 的汽车租赁管理系统,旨在通过信息化手段将车辆信息、客户档案、租赁订单、费用结算等核心业务统一管理,实现从车辆入库、预约下单、租车审核、归还结算到统计分析的全流程线上化。该系统能够显著降低运营成本、减少人工差错、提升客户体验,并为管理者提供实时经营数据支撑,是汽车租赁企业数字化转型的重要基础工具。
2. 系统技术栈
本系统采用前后端分离架构,后端基于 Spring Boot 构建,前端使用 Vue 生态,整体技术选型如下:
| 层次 | 技术选型 | 说明 |
|---|---|---|
| 后端框架 | Spring Boot 2.x | 快速搭建独立运行的 RESTful 服务,简化配置与部署 |
| 持久层框架 | MyBatis-Plus | 简化数据库操作,提供通用 CRUD、分页与条件构造器 |
| 数据库 | MySQL 8.0 | 存储车辆、客户、订单、结算等业务数据 |
| 安全认证 | Spring Security + JWT | 实现登录鉴权与接口访问控制 |
| 前端框架 | Vue 3 + Element Plus | 构建管理后台界面,提供表格、表单、弹窗等组件 |
| 构建工具 | Maven | 管理项目依赖与构建打包 |
| 接口文档 | Swagger / Knife4j | 自动生成在线接口文档,便于前后端联调 |
3. 系统核心功能模块
系统主要包含以下核心功能模块:
- 车辆管理:维护车辆品牌、型号、车牌号、日租金、状态(可用/已租/维修)等信息。
- 客户管理:登记客户姓名、身份证号、驾驶证号、联系方式等档案信息。
- 租赁订单管理:创建租车订单,记录租车时间、预计还车时间、实际还车时间、租金计算与订单状态流转。
- 还车结算:根据租赁时长和车辆日租金自动计算费用,支持押金管理与超时费用核算。
- 统计分析:按日、按月统计订单量、营收、车辆利用率等经营指标。
4. 数据库设计核心表
系统核心数据表包括车辆表、客户表、订单表,其关键字段设计如下:
-- 车辆表 CREATE TABLE car ( id BIGINT PRIMARY KEY AUTO_INCREMENT, brand VARCHAR(50) NOT NULL COMMENT '品牌', model VARCHAR(50) NOT NULL COMMENT '型号', plate_no VARCHAR(20) NOT NULL UNIQUE COMMENT '车牌号', daily_rent DECIMAL(10,2) NOT NULL COMMENT '日租金', status TINYINT DEFAULT 0 COMMENT '0可用 1已租 2维修', create_time DATETIME DEFAULT CURRENT_TIMESTAMP ); -- 客户表 CREATE TABLE customer ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL COMMENT '姓名', id_card VARCHAR(18) NOT NULL COMMENT '身份证号', license_no VARCHAR(20) NOT NULL COMMENT '驾驶证号', phone VARCHAR(20) NOT NULL COMMENT '联系电话', create_time DATETIME DEFAULT CURRENT_TIMESTAMP ); -- 租赁订单表 CREATE TABLE rent_order ( id BIGINT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(32) NOT NULL UNIQUE COMMENT '订单编号', car_id BIGINT NOT NULL COMMENT '车辆ID', customer_id BIGINT NOT NULL COMMENT '客户ID', rent_time DATETIME NOT NULL COMMENT '租车时间', expect_return_time DATETIME NOT NULL COMMENT '预计还车时间', actual_return_time DATETIME COMMENT '实际还车时间', total_amount DECIMAL(10,2) COMMENT '总费用', status TINYINT DEFAULT 0 COMMENT '0待取车 1租赁中 2已还车 3已取消', create_time DATETIME DEFAULT CURRENT_TIMESTAMP );5. 核心代码实现
5.1 实体类与 Mapper
以订单实体为例,使用 MyBatis-Plus 注解简化映射:
@Data @TableName("rent_order") public class RentOrder { @TableId(type = IdType.AUTO) private Long id; private String orderNo; private Long carId; private Long customerId; private LocalDateTime rentTime; private LocalDateTime expectReturnTime; private LocalDateTime actualReturnTime; private BigDecimal totalAmount; private Integer status; }@Mapper public interface RentOrderMapper extends BaseMapper<RentOrder> { }5.2 业务层:创建租赁订单
创建订单时需校验车辆状态并更新车辆为已租状态,核心代码如下:
@Service @RequiredArgsConstructor public class RentOrderServiceImpl implements RentOrderService { private final RentOrderMapper rentOrderMapper; private final CarMapper carMapper; @Override @Transactional(rollbackFor = Exception.class) public RentOrder createOrder(RentOrderCreateDTO dto) { // 1. 校验车辆是否存在且可用 Car car = carMapper.selectById(dto.getCarId()); if (car == null) { throw new BusinessException("车辆不存在"); } if (car.getStatus() != 0) { throw new BusinessException("车辆当前不可租用"); } // 2. 生成订单并保存 RentOrder order = new RentOrder(); order.setOrderNo("RO" + System.currentTimeMillis()); order.setCarId(dto.getCarId()); order.setCustomerId(dto.getCustomerId()); order.setRentTime(LocalDateTime.now()); order.setExpectReturnTime(dto.getExpectReturnTime()); order.setStatus(0); rentOrderMapper.insert(order); // 3. 更新车辆状态为已租 car.setStatus(1); carMapper.updateById(car); return order; } }5.3 控制层:RESTful 接口
@RestController @RequestMapping("/api/order") @RequiredArgsConstructor public class RentOrderController { private final RentOrderService rentOrderService; @PostMapping("/create") public Result<RentOrder> create(@RequestBody RentOrderCreateDTO dto) { return Result.success(rentOrderService.createOrder(dto)); } @GetMapping("/page") public Result<Page<RentOrder>> page(@RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize) { Page<RentOrder> page = new Page<>(pageNum, pageSize); return Result.success(rentOrderMapper.selectPage(page, null)); } }6. 总结
基于 Spring Boot 的汽车租赁管理系统,通过清晰的分层架构和成熟的技术选型,有效解决了传统租赁业务中信息孤岛、流程繁琐、数据统计困难等问题。系统具备良好的可维护性和可扩展性,后续可在此基础上进一步集成支付网关、消息通知、GPS 车辆定位等能力,持续提升租赁业务的数字化运营水平。