Initial commit: Car Maintenance Management System

Author: Yang Lu

School: Liaoning Institute of Science and Technology

Major: Computer Science and Technology

Class: BZ246

Tech Stack:

- Backend: Spring Boot 2.7.18 + JPA + MySQL

- Frontend: HTML5 + CSS3 + JavaScript

Features:

- User Management (Admin/Staff/Customer roles)

- Vehicle Archive Management

- Service Order Management

- Parts Inventory Management

- Online Appointment Service

- Data Statistics and Analysis

Generated with Claude Code

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
wangziqi
2026-01-07 14:28:50 +08:00
commit cfae122685
45 changed files with 5447 additions and 0 deletions

187
database/schema.sql Normal file
View File

@@ -0,0 +1,187 @@
-- 车管家4S店车辆维保管理系统数据库设计
-- Database: car_maintenance_db
CREATE DATABASE IF NOT EXISTS car_maintenance_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE car_maintenance_db;
-- 1. 用户表 (users)
CREATE TABLE IF NOT EXISTS users (
user_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
password VARCHAR(255) NOT NULL COMMENT '密码(加密)',
real_name VARCHAR(50) NOT NULL COMMENT '真实姓名',
phone VARCHAR(20) NOT NULL COMMENT '联系电话',
email VARCHAR(100) COMMENT '电子邮箱',
role ENUM('admin', 'staff', 'customer') NOT NULL COMMENT '角色:管理员/工作人员/客户',
status TINYINT DEFAULT 1 COMMENT '状态:1-启用,0-禁用',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_username (username),
INDEX idx_role (role),
INDEX idx_phone (phone)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
-- 2. 客户信息表 (customers)
CREATE TABLE IF NOT EXISTS customers (
customer_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '客户ID',
user_id INT NOT NULL COMMENT '关联用户ID',
customer_no VARCHAR(50) UNIQUE COMMENT '客户编号',
id_card VARCHAR(18) COMMENT '身份证号',
address VARCHAR(200) COMMENT '联系地址',
gender ENUM('male', 'female', 'other') COMMENT '性别',
birth_date DATE COMMENT '出生日期',
membership_level ENUM('normal', 'silver', 'gold', 'platinum') DEFAULT 'normal' COMMENT '会员等级',
points INT DEFAULT 0 COMMENT '积分',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE,
INDEX idx_customer_no (customer_no),
INDEX idx_membership (membership_level)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户信息表';
-- 3. 车辆档案表 (vehicles)
CREATE TABLE IF NOT EXISTS vehicles (
vehicle_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '车辆ID',
customer_id INT NOT NULL COMMENT '车主客户ID',
license_plate VARCHAR(20) NOT NULL UNIQUE COMMENT '车牌号',
brand VARCHAR(50) NOT NULL COMMENT '品牌',
model VARCHAR(50) NOT NULL COMMENT '型号',
color VARCHAR(20) COMMENT '颜色',
vin VARCHAR(17) UNIQUE COMMENT '车架号',
engine_no VARCHAR(50) COMMENT '发动机号',
purchase_date DATE COMMENT '购买日期',
mileage DECIMAL(10,2) DEFAULT 0 COMMENT '当前里程(公里)',
last_maintenance_date DATE COMMENT '上次保养日期',
next_maintenance_date DATE COMMENT '下次保养日期',
status ENUM('normal', 'in_service', 'completed') DEFAULT 'normal' COMMENT '状态',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE,
INDEX idx_license_plate (license_plate),
INDEX idx_customer (customer_id),
INDEX idx_vin (vin)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆档案表';
-- 4. 维保工单表 (service_orders)
CREATE TABLE IF NOT EXISTS service_orders (
order_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '工单ID',
order_no VARCHAR(50) NOT NULL UNIQUE COMMENT '工单编号',
vehicle_id INT NOT NULL COMMENT '车辆ID',
customer_id INT NOT NULL COMMENT '客户ID',
service_type ENUM('maintenance', 'repair', 'beauty', 'insurance') NOT NULL COMMENT '服务类型',
appointment_time DATETIME COMMENT '预约时间',
arrival_time DATETIME COMMENT '到店时间',
start_time DATETIME COMMENT '开始时间',
complete_time DATETIME COMMENT '完成时间',
staff_id INT COMMENT '负责员工ID',
current_mileage DECIMAL(10,2) COMMENT '当前里程',
fault_description TEXT COMMENT '故障描述',
diagnosis_result TEXT COMMENT '诊断结果',
service_items TEXT COMMENT '服务项目(JSON格式)',
parts_cost DECIMAL(10,2) DEFAULT 0 COMMENT '配件费用',
labor_cost DECIMAL(10,2) DEFAULT 0 COMMENT '工时费用',
total_cost DECIMAL(10,2) DEFAULT 0 COMMENT '总费用',
status ENUM('pending', 'appointed', 'in_progress', 'completed', 'cancelled') DEFAULT 'pending' COMMENT '工单状态',
payment_status ENUM('unpaid', 'paid', 'refunded') DEFAULT 'unpaid' COMMENT '支付状态',
remark TEXT COMMENT '备注',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
FOREIGN KEY (vehicle_id) REFERENCES vehicles(vehicle_id) ON DELETE CASCADE,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE,
FOREIGN KEY (staff_id) REFERENCES users(user_id) ON DELETE SET NULL,
INDEX idx_order_no (order_no),
INDEX idx_vehicle (vehicle_id),
INDEX idx_customer (customer_id),
INDEX idx_status (status),
INDEX idx_appointment (appointment_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='维保工单表';
-- 5. 配件库存表 (parts_inventory)
CREATE TABLE IF NOT EXISTS parts_inventory (
part_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '配件ID',
part_no VARCHAR(50) NOT NULL UNIQUE COMMENT '配件编号',
part_name VARCHAR(100) NOT NULL COMMENT '配件名称',
category VARCHAR(50) COMMENT '配件类别',
brand VARCHAR(50) COMMENT '品牌',
model VARCHAR(100) COMMENT '适用车型',
unit VARCHAR(20) DEFAULT '' COMMENT '单位',
unit_price DECIMAL(10,2) NOT NULL COMMENT '单价',
stock_quantity INT DEFAULT 0 COMMENT '库存数量',
min_stock INT DEFAULT 10 COMMENT '最小库存预警',
supplier VARCHAR(100) COMMENT '供应商',
warehouse_location VARCHAR(50) COMMENT '仓库位置',
status TINYINT DEFAULT 1 COMMENT '状态:1-正常,0-停用',
remark TEXT COMMENT '备注',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_part_no (part_no),
INDEX idx_category (category),
INDEX idx_stock (stock_quantity)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配件库存表';
-- 6. 配件使用记录表 (parts_usage)
CREATE TABLE IF NOT EXISTS parts_usage (
usage_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '使用记录ID',
order_id INT NOT NULL COMMENT '工单ID',
part_id INT NOT NULL COMMENT '配件ID',
quantity INT NOT NULL COMMENT '使用数量',
unit_price DECIMAL(10,2) NOT NULL COMMENT '单价',
total_price DECIMAL(10,2) NOT NULL COMMENT '总价',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
FOREIGN KEY (order_id) REFERENCES service_orders(order_id) ON DELETE CASCADE,
FOREIGN KEY (part_id) REFERENCES parts_inventory(part_id) ON DELETE CASCADE,
INDEX idx_order (order_id),
INDEX idx_part (part_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配件使用记录表';
-- 7. 预约记录表 (appointments)
CREATE TABLE IF NOT EXISTS appointments (
appointment_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '预约ID',
customer_id INT NOT NULL COMMENT '客户ID',
vehicle_id INT NOT NULL COMMENT '车辆ID',
service_type ENUM('maintenance', 'repair', 'beauty', 'insurance') NOT NULL COMMENT '服务类型',
appointment_time DATETIME NOT NULL COMMENT '预约时间',
contact_phone VARCHAR(20) NOT NULL COMMENT '联系电话',
description TEXT COMMENT '预约说明',
status ENUM('pending', 'confirmed', 'completed', 'cancelled') DEFAULT 'pending' COMMENT '预约状态',
order_id INT COMMENT '关联工单ID',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE,
FOREIGN KEY (vehicle_id) REFERENCES vehicles(vehicle_id) ON DELETE CASCADE,
FOREIGN KEY (order_id) REFERENCES service_orders(order_id) ON DELETE SET NULL,
INDEX idx_customer (customer_id),
INDEX idx_appointment_time (appointment_time),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预约记录表';
-- 8. 服务项目表 (service_items)
CREATE TABLE IF NOT EXISTS service_items (
item_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '服务项目ID',
item_code VARCHAR(50) NOT NULL UNIQUE COMMENT '项目编码',
item_name VARCHAR(100) NOT NULL COMMENT '项目名称',
category VARCHAR(50) COMMENT '项目类别',
standard_price DECIMAL(10,2) NOT NULL COMMENT '标准价格',
duration INT COMMENT '标准工时(分钟)',
description TEXT COMMENT '项目描述',
status TINYINT DEFAULT 1 COMMENT '状态:1-启用,0-停用',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_item_code (item_code),
INDEX idx_category (category)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务项目表';
-- 9. 系统日志表 (system_logs)
CREATE TABLE IF NOT EXISTS system_logs (
log_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '日志ID',
user_id INT COMMENT '用户ID',
operation VARCHAR(100) NOT NULL COMMENT '操作类型',
module VARCHAR(50) COMMENT '模块名称',
method VARCHAR(200) COMMENT '方法名',
params TEXT COMMENT '请求参数',
ip_address VARCHAR(50) COMMENT 'IP地址',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_user (user_id),
INDEX idx_create_time (create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统日志表';