Administrator
Administrator
Published on 2025-01-06 / 1 Visits
0
0

阿达西(adc)拼车系统项目需求说明

声明

阿达西(adc)拼车微服务项目,是塔里木大学第十届蓝桥班,第十一届蓝桥班三期教学项目,未经允许不得转载。

一、背景意义

本项目是针对阿拉尔(塔里木大学所在地)缺乏火车站和飞机场等交通枢纽,出行不便,导致城市居民拼车困难等原因开发的一款在线拼车软件。阿拉尔、阿克苏之间缺少多种方便快捷交通枢纽,越来越多的两地居民与同学被迫选择拼黑车去火车站、飞机场,导致安全问题频发、价格混乱、不诚信等一系列问题。所以塔里木大学蓝桥班决定开发一款实时的在线拼车、监控、运营一体化的平台

阿拉尔去往各城市的官方公共汽车虽然也很多,但是最大的问题就是行程特别慢,而且不能夜间或者随意时间出发,而且到站后学生还是要乘坐出租前往安克苏机场或者团场等具体目的地。而当地的黑车不但价格便宜而且速度很快能够送到家,所以大量居民选择拼黑车出行,直接导致了2022年左右,阿拉尔市全民黑车现象,家家户户有黑车。2022年后,阿拉尔修建了火车站和飞机场解决了当地大学生可以直接从本地回家问题,拼车现象减少,但前往阿克苏地区的居民依然选择拼车。滴滴公司为解决此问题早已开发了相关的软件,但是受新疆政策原因,滴滴无法在新疆运行,本地拼车软件层出不穷,本项目基于这样的背景孕育而生。

二、产品原型

https://pixso.cn/app/product/I2d15dqK1Mf98WmYmJm1WQ?icon_type=2&file_type=11&page-id=0%3A1 邀请您加入 Pixso 原型文件「原型文件」, 密码:4uOB

三、系统架构设计

本系统是一个前后端分离的,基于微服务架构思想设计一的一款分布式项目。web客户端包含车辆端、乘客端、运营管理端。车辆端和乘客端采用app形式基于h5实现,运营管理端基于PC环境,采用网站形式实现,是一个后台管理系统。web服务端采用微服务架构,基于SpringCloud-alibaba框架实现,分为车辆微服务、乘客微服务、车辆行程微服务、乘客行程微服务、系统后台管理微服务。每个微服务基于docker容器独立运维部署,其中系统后台管理微服务聚集了拼车系统的所有的表结构和数据,从其他微服务数据库中同步数据。

架构示意图如下:

Description

技术栈概述:

● Vue+element+axios:前端界面和交互实现框架
● Springboot: 项目基础框架,实现自动装配功能,简化spring相关集成配置
● SpringMVC: MVC核心框架,实现控制层,编写web服务接口
● Swagger:接口文档生成框架
● Mybatis-plus: ORM映射框架,实现数据库的CRUD
● Nacos:微服务注册用心和配置中心
● Gateway: 微服务统一网关入口
● OpenFeign: 基于rest风格的微服务远程调用技术
● WebSocket :即时通信技术,实现服务端到客户端即时消息推送,如乘客拼车通知车辆端司机接单。
● RocketMQ:消息队列,乘客端和车辆端通过消息队列中转存储消息,实现消息排序且消锋
● Seata :分布式事务框架,保证远程调用过程中,事务的一致性。

工程搭建概述:

Description

四、 数据库设计

Description

五、表结构

create table `adc-coupon`
(
    id            bigint auto_increment comment '优惠券ID'
        primary key,
    passenger_id  bigint         not null comment '乘客ID',
    code          varchar(20)    not null comment '优惠券代码',
    value         decimal(10, 2) not null comment '优惠券面值',
    expiry_date   date           not null comment '有效期至',
    ` is_deleted` tinyint(1)     null comment '逻辑删除状态字段: 0 表示未删除, 1 表示已删除'
)
    comment '优惠券信息表';

create table `adc-department`
(
    id         bigint auto_increment comment '部门ID'
        primary key,
    name       varchar(255)                        not null comment '部门名称',
    created_at timestamp default CURRENT_TIMESTAMP not null comment '部门创建的时间',
    updated_at timestamp default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '部门信息最后更新的时间',
    head       varchar(255)                        null comment '部门的负责人或领导',
    phone      varchar(20)                         null comment '部门联系电话',
    email      varchar(255)                        null comment '部门的联系电子邮箱',
    location   varchar(255)                        null comment '部门的位置或地址',
    is_deleted tinyint(1)                          null comment '逻辑删除状态字段: 0 表示未删除, 1 表示已删除'
)
    comment '部门信息表';

create table `adc-manager`
(
    id            bigint auto_increment comment '管理员ID'
        primary key,
    department_id bigint                               null comment '部门ID',
    name          varchar(255)                         null comment '管理员的真实姓名',
    username      varchar(255)                         not null comment '用户名',
    password      varchar(255)                         not null comment '密码',
    register_time timestamp  default CURRENT_TIMESTAMP null comment '注册时间',
    email         varchar(255)                         null comment '管理员的电子邮件地址',
    phone         varchar(20)                          null comment '管理员联系电话',
    last_login    timestamp                            null comment '上次登录的时间',
    is_deleted    tinyint(1) default 0                 not null comment '逻辑删除状态字段: 0 表示未删除, 1 表示已删除'
)
    comment '系统管理员信息表';

create index fk_manager_department_id
    on `adc-manager` (department_id);

create table `adc-passenger`
(
    id            bigint auto_increment comment '乘客ID'
        primary key,
    username      varchar(255)                         not null comment '用户名',
    password      varchar(255)                         not null comment '密码',
    email         varchar(255)                         not null comment '邮箱',
    name          varchar(255)                         null comment '真实姓名',
    phone         varchar(20)                          null comment '电话',
    register_time timestamp  default CURRENT_TIMESTAMP null comment '注册时间',
    is_deleted    tinyint(1) default 0                 not null comment '逻辑删除状态字段: 0 表示未删除, 1 表示已删除'
)
    comment '乘客信息表';

create table `adc-passenger-trip`
(
    id                       bigint auto_increment comment '乘客的行程ID'
        primary key,
    passenger_id             bigint                                                            not null comment '乘客ID',
    name                     varchar(255)                                                      null comment '乘客真实姓名',
    username                 varchar(255)                                                      null comment '乘客用户名',
    phone                    varchar(20)                                                       null comment '乘客手机号码',
    passenger_route_id       bigint                                                            not null comment '乘客的行程路线ID',
    route                    enum ('火车站-学校', '学校-火车站', '飞机站-学校', '学校-飞机站') not null comment '线路',
    price                    decimal(10, 2)                                                    null comment '行程费用',
    start_time               timestamp                                                         not null comment '发车时间',
    start_date               date                                                              null comment '出发日期',
    num_passengers           int                                                               not null comment '乘坐人数',
    status                   enum ('待接受', '已接受', '待同意', '已同意', '行程中', '已完成') not null comment '行程状态',
    start_location_name      varchar(255)                                                      not null comment '起始地点名称',
    start_location_longitude decimal(9, 6)                                                     not null comment '起始地点经度',
    start_location_latitude  decimal(9, 6)                                                     not null comment '起始地点纬度',
    vehicle_trip_id          bigint                                                            null comment '车辆的行程ID',
    is_deleted               tinyint(1) default 0                                              not null comment '逻辑删除状态字段: 0 表示未删除, 1 表示已删除'
)
    comment '乘客行程表';

create index passenger_trip_ibfk_passenger
    on `adc-passenger-trip` (passenger_id);

create index passenger_trip_ibfk_passenger_route
    on `adc-passenger-trip` (passenger_route_id);

create table `adc-passenger-trip-location`
(
    id         bigint auto_increment comment '位置ID'
        primary key,
    trip_id    bigint                              not null comment '乘客的行程ID',
    latitude   double                              not null comment '纬度',
    longitude  double                              not null comment '经度',
    timestamp  timestamp default CURRENT_TIMESTAMP not null comment '记录时间',
    is_deleted tinyint(1)                          null comment '逻辑删除状态字段: 0 表示未删除, 1 表示已删除'
)
    comment '乘客行程实时位置信息表';

create index trip_location_ibfk_1
    on `adc-passenger-trip-location` (trip_id);

create table `adc-route-price`
(
    id         bigint auto_increment comment '路线ID'
        primary key,
    route      enum ('火车站-学校', '学校-火车站', '飞机站-学校', '学校-飞机站') not null comment '线路',
    price      decimal(10, 2)                                                    not null comment '路线价格',
    is_deleted tinyint(1)                                                        null comment '逻辑删除状态字段: 0 表示未删除, 1 表示已删除'
)
    comment '路线及其价格信息表';

create table `adc-trip-feedback`
(
    id                bigint auto_increment comment '反馈ID'
        primary key,
    passenger_id      bigint                              not null comment '乘客ID',
    passenger_trip_id bigint                              not null comment '乘客的行程ID',
    vehicle_trip_id   bigint                              null comment '车辆的行程ID',
    feedback          text                                not null comment '反馈内容',
    timestamp         timestamp default CURRENT_TIMESTAMP null comment '反馈时间',
    is_deleted        tinyint(1)                          null comment '逻辑删除状态字段: 0 表示未删除, 1 表示已删除'
)
    comment '行程反馈表';

create index trip_feedback_ibfk_1
    on `adc-trip-feedback` (passenger_id);

create index trip_feedback_ibfk_2
    on `adc-trip-feedback` (passenger_trip_id);

create index trip_feedback_ibfk_driver_trip
    on `adc-trip-feedback` (vehicle_trip_id);

create table `adc-vehicle`
(
    id              bigint auto_increment comment '车辆ID'
        primary key,
    vehicle_license varchar(50)                          not null comment '车牌号码',
    seat_capacity   int                                  not null comment '车辆载人数',
    name            varchar(255)                         null comment '司机的真实姓名',
    username        varchar(255)                         not null comment '司机用户名',
    password        varchar(255)                         not null comment '密码',
    email           varchar(255)                         not null comment '邮箱',
    phone           varchar(20)                          null comment '电话',
    register_time   timestamp  default CURRENT_TIMESTAMP null comment '注册时间',
    is_deleted      tinyint(1) default 0                 not null comment '逻辑删除状态字段: 0 表示未删除, 1 表示已删除'
)
    comment '司机及车辆信息表';

create table `adc-vehicle-trip`
(
    id                       bigint auto_increment comment '车辆的行程ID'
        primary key,
    vehicle_id               bigint                                                      not null comment '车辆ID',
    name                     varchar(255)                                                null comment '司机真实姓名',
    username                 varchar(255)                                                null comment '司机用户名字',
    phone                    varchar(20)                                                 null comment '司机手机号码',
    vehicle_license          varchar(50)                                                 null comment '车牌号',
    start_time               timestamp                                                   not null comment '发车时间',
    start_date               date                                                        null comment '发车日期',
    num_passengers           int        default 0                                        null comment '已有乘坐人数',
    max_seat_capacity        int                                                         null comment '最大载客量',
    status                   enum ('等待乘客', '等待出发', '已满员', '行程中', '已完成') not null comment '行程状态',
    vehicle_route_id         bigint                                                      not null comment '车辆的行程路线ID',
    start_location_name      varchar(255)                                                not null comment '起始地点名称',
    start_location_longitude decimal(9, 6)                                               not null comment '起始地点经度',
    start_location_latitude  decimal(9, 6)                                               not null comment '起始地点纬度',
    is_deleted               tinyint(1) default 0                                        not null comment '逻辑删除状态字段: 0 表示未删除, 1 表示已删除'
)
    comment '车辆行程表';

create index vehicle_trip_ibfk_vehicle
    on `adc-vehicle-trip` (vehicle_id);

create table `adc-vehicle-trip-location`
(
    id              bigint auto_increment comment '位置ID'
        primary key,
    vehicle_trip_id bigint                              not null comment '车辆的行程ID',
    latitude        double                              not null comment '纬度',
    longitude       double                              not null comment '经度',
    timestamp       timestamp default CURRENT_TIMESTAMP not null comment '记录时间',
    is_deleted      tinyint(1)                          null comment '逻辑删除状态字段: 0 表示未删除, 1 表示已删除'
)
    comment '司机行程的实时位置信息表';

create index driver_trip_location_ibfk_1
    on `adc-vehicle-trip-location` (vehicle_trip_id);



Comment