一、软件开发整体介绍
二、 瑞吉外卖项目整体介绍
三、开发环境搭建
1、数据库环境的搭建
(一)启动Navicat
- 启动Navicat ,创建mysql连接
(二)数据库设计
- 数据库设计:概念设计(E-R图)、逻辑设计、物理设计
1、概念设计
- 概念设计是数据库设计的核心环节。通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。
(1)明确建模目标(模型覆盖范围)
(2)定义实体集(自底向上标识和定义实体集)
(3) 定义联系(实体间关联关系)
(4) 建立信息模型(构造ER模型)
(5)确定实体集属性(属性描述一个实体集的特征或性质)
(6)对信息模型进行集成与优化(检查和消除命名不一致、结构不一致等)
- 概念设计目前采用最广泛的是ER建模方法。将现实世界抽象为具有属性的实体及联系。1976年,Peter.Chen提出E-R模型(Entity- Relationship Model),即实体联系模型,用E-R图来描述数据库的概念模型。
- 观点:世界是由一组称作实体的基本对象和这些对象之间的联系构成的。
- 实体间的联系有三类:一对一联系(1:1)、一对多联系(1:n )、多对多联系(m:n)
- E-R图实例
- 思维导图只管呈现
2、逻辑设计
- 将概念模型(如ER图)转化为DBMS支持的数据模型(如关系模型),并对其进行优化
(1)用户信息表(user)
字段名 |
类型 |
宽度 |
小数位数 |
是否主键 |
备注 |
id |
bigint |
20 |
0 |
是 |
主键 |
name |
varchar |
50 |
0 |
否 |
姓名 |
phone |
varchar |
100 |
0 |
否 |
主键 |
sex |
varchar |
2 |
0 |
否 |
主键 |
id_number |
varchar |
18 |
0 |
否 |
主键 |
avatar |
varchar |
500 |
0 |
否 |
主键 |
status |
int |
11 |
0 |
否 |
状态 0:停用 1:启用 |
(2)购物车(shopping_cart)
字段名 |
类型 |
宽度 |
小数位数 |
是否主键 |
备注 |
id |
bigint |
0 |
0 |
是 |
主键 |
name |
varchar |
50 |
0 |
否 |
名称 |
image |
varchar |
100 |
0 |
否 |
图片 |
user_id |
bigint |
0 |
0 |
否 |
主键 |
dish_id |
bigint |
0 |
0 |
否 |
菜品id |
setmeal_id |
bigint |
0 |
0 |
否 |
套餐id |
dish_flavor |
varchar |
50 |
0 |
否 |
口味 |
number |
int |
0 |
0 |
否 |
数量 |
amount |
decimal |
10 |
2 |
否 |
金额 |
create_time |
datetime |
0 |
0 |
否 |
创建时间 |
(3)套餐菜品关系(setmeal_dish)
字段名 |
类型 |
宽度 |
小数位数 |
是否主键 |
备注 |
id |
bigint |
0 |
0 |
是 |
主键 |
setmeal_id |
varchar |
32 |
0 |
否 |
套餐id |
dish_id |
varchar |
32 |
0 |
否 |
菜品id |
name |
varchar |
32 |
0 |
否 |
菜品名称 |
price |
decimal |
10 |
2 |
否 |
菜品原价 |
copies |
int |
0 |
0 |
否 |
份数 |
sort |
int |
0 |
0 |
否 |
排序 |
create_time |
datetime |
0 |
0 |
否 |
创建时间 |
update_time |
datetime |
0 |
0 |
否 |
更新时间 |
create_user |
bigint |
0 |
0 |
否 |
创建人 |
update_user |
bigint |
0 |
0 |
否 |
修改人 |
is_deleted |
int |
0 |
0 |
否 |
是否删除 |
(4)套餐(setmeal)
字段名 |
类型 |
宽度 |
小数位数 |
是否主键 |
备注 |
id |
bigint |
0 |
0 |
是 |
主键 |
category_id |
bigint |
0 |
0 |
否 |
菜品分类 |
name |
varchar |
64 |
0 |
否 |
套餐名称 |
price |
decimal |
10 |
2 |
否 |
套餐价格 |
status |
int |
18 |
0 |
否 |
状态 0:停用 1:启用 |
code |
varchar |
32 |
0 |
否 |
编码 |
description |
varchar |
512 |
0 |
否 |
描述信息 |
image |
varchar |
255 |
0 |
是 |
图片 |
create_time |
datetime |
0 |
0 |
否 |
创建时间 |
update_time |
datetime |
0 |
0 |
否 |
更新时间 |
create_user |
bigint |
0 |
0 |
否 |
创建人 |
update_user |
bigint |
0 |
0 |
否 |
修改人 |
is_deleted |
int |
0 |
0 |
否 |
是否删除 |
(5)订单明细表(orders_detail)
字段名 |
类型 |
宽度 |
小数位数 |
是否主键 |
备注 |
id |
bigint |
0 |
0 |
是 |
主键 |
name |
varchar |
50 |
0 |
否 |
名字 |
image |
varchar |
100 |
0 |
否 |
图片 |
order_id |
bigint |
0 |
0 |
否 |
订单id |
dish_id |
bigint |
0 |
0 |
否 |
菜品id |
setmeal_id |
bigint |
0 |
0 |
否 |
套餐id |
dish_flavor |
varchar |
50 |
0 |
否 |
口味 |
number |
int |
0 |
0 |
否 |
数量 |
amount |
decimal |
10 |
2 |
否 |
金额 |
(6)订单表(orders)
字段名 |
类型 |
宽度 |
小数位数 |
是否主键 |
备注 |
id |
bigint |
0 |
0 |
是 |
主键 |
name |
varchar |
50 |
0 |
是否 |
订单号 |
status |
int |
0 |
0 |
否 |
订单状态 1待付款,2待派送,3已派送,4已完成,5已取消 |
user_id |
bigint |
0 |
0 |
否 |
下单用户 |
address_book_id |
bigint |
0 |
0 |
否 |
地址id |
order_time |
datetime |
0 |
0 |
否 |
下单时间 |
checkout_time |
datetime |
0 |
0 |
否 |
结账时间 |
pay_method |
int |
0 |
0 |
否 |
支付方式 1微信,2支付宝 |
amount |
decimal |
10 |
2 |
否 |
实收金额 |
remark |
varchar |
100 |
0 |
否 |
备注 |
phone |
varchar |
255 |
0 |
否 |
手机号 |
address |
varchar |
255 |
0 |
否 |
地址 |
user_name |
varchar |
255 |
0 |
否 |
用户名 |
consignee |
varchar |
255 |
0 |
否 |
接收人 |
(7)员工信息(employee)
字段名 |
类型 |
宽度 |
小数位数 |
是否主键 |
备注 |
id |
bigint |
0 |
0 |
是 |
主键 |
name |
varchar |
32 |
0 |
否 |
姓名 |
username |
varchar |
32 |
0 |
否 |
用户名 |
password |
varchar |
64 |
0 |
否 |
密码 |
phone |
varchar |
11 |
0 |
否 |
手机号 |
sex |
varchar |
2 |
0 |
否 |
性别 |
id_number |
varchar |
18 |
0 |
否 |
身份证号 |
status |
int |
0 |
0 |
否 |
状态 0:禁用,1:正常 |
create_time |
datetime |
0 |
0 |
否 |
创建时间 |
update_time |
datetime |
0 |
0 |
否 |
更新时间 |
create_user |
bigint |
0 |
0 |
否 |
创建人 |
update_user |
bigint |
0 |
0 |
否 |
修改人 |
(8)菜品口味关系表(dish_flavor)
字段名 |
类型 |
宽度 |
小数位数 |
是否主键 |
备注 |
id |
bigint |
0 |
0 |
是 |
主键 |
dish_id |
varchar |
0 |
0 |
否 |
菜品 |
name |
varchar |
64 |
0 |
否 |
口味名称 |
value |
varchar |
500 |
0 |
否 |
口味数据 |
create_time |
datetime |
0 |
0 |
否 |
创建时间 |
update_time |
datetime |
0 |
0 |
否 |
更新时间 |
create_user |
bigint |
0 |
0 |
否 |
创建人 |
update_user |
bigint |
0 |
0 |
否 |
修改人 |
is_deleted |
int |
0 |
0 |
否 |
是否删除 |
(9)菜品管理(dish)
字段名 |
类型 |
宽度 |
小数位数 |
是否主键 |
备注 |
id |
bigint |
0 |
0 |
是 |
主键 |
name |
varchar |
64 |
0 |
否 |
菜品名称 |
category_id |
bigint |
0 |
0 |
否 |
菜品分类id |
price |
decimal |
10 |
2 |
否 |
菜品价格 |
code |
varchar |
64 |
0 |
否 |
商品码 |
image |
varchar |
200 |
0 |
否 |
图片 |
description |
varchar |
400 |
0 |
否 |
描述信息 |
status |
int |
0 |
0 |
否 |
0 停售 1 起售 |
sort |
int |
0 |
0 |
否 |
顺序 |
create_time |
datetime |
0 |
0 |
否 |
创建时间 |
update_time |
datetime |
0 |
0 |
否 |
更新时间 |
create_user |
bigint |
0 |
0 |
否 |
创建人 |
update_user |
bigint |
0 |
0 |
否 |
修改人 |
is_deleted |
int |
0 |
0 |
否 |
是否删除 |
(10)菜品及套餐分类(category)
字段名 |
类型 |
宽度 |
小数位数 |
是否主键 |
备注 |
id |
bigint |
0 |
0 |
是 |
主键 |
type |
varchar |
0 |
0 |
否 |
类型 1 菜品分类 2 套餐分类 |
name |
varchar |
|
0 |
否 |
分类名称 |
sort |
int |
0 |
0 |
否 |
顺序 |
create_time |
datetime |
0 |
0 |
否 |
创建时间 |
update_time |
datetime |
0 |
0 |
否 |
更新时间 |
create_user |
bigint |
0 |
0 |
否 |
创建人 |
update_user |
bigint |
0 |
0 |
否 |
修改人 |
(11)address_book(地址管理)
字段名 |
类型 |
宽度 |
小数位数 |
是否主键 |
备注 |
id |
bigint |
0 |
0 |
是 |
主键 |
user_id |
bigint |
0 |
0 |
是否 |
用户id |
consignee |
varchar |
50 |
0 |
否 |
收货人 |
sex |
tinyint |
0 |
0 |
否 |
性别 0 女 1 男 |
phone |
varchar |
11 |
0 |
否 |
手机号 |
province_code |
varchar |
12 |
0 |
否 |
省级区划编号 |
province_name |
varchar |
32 |
0 |
否 |
省级名称 |
city_code |
varchar |
12 |
0 |
否 |
市级区划编号 |
city_name |
varchar |
32 |
0 |
否 |
市级名称 |
district_code |
varchar |
12 |
0 |
否 |
区级区划编号 |
district_name |
varchar |
32 |
0 |
否 |
区级名称 |
detail |
varchar |
200 |
0 |
否 |
详细地址 |
label |
varchar |
100 |
0 |
否 |
标签 |
label |
tinyint |
1 |
0 |
否 |
默认 0 否 1是 |
create_time |
datetime |
0 |
0 |
否 |
创建时间 |
update_time |
datetime |
0 |
0 |
否 |
更新时间 |
create_user |
bigint |
0 |
0 |
否 |
创建人 |
update_user |
bigint |
0 |
0 |
否 |
修改人 |
is_deleted |
int |
0 |
0 |
否 |
是否删除 |
(三)创建数据库
- 创建项目需要的数据库 - reggie,字符集采用utf8mb4
- 单击[确定]按钮
- 打开reggie数据库
(四)导入数据库脚本
- 导入数据库脚本:db_reggie.sql
- 单击开始按钮
(五)查看数据库中的表
- 数据库reggie包含11张表
2、Maven项目搭建
- 两种常用项目构建工具
(一)创建Maven项目
- 创建Maven项目,配置信息
- 单击【Finish】按钮
(二)检查项目编码、maven仓库配置以及jdk配置
- 对项目编码、maven仓库配置以及jdk配置进行更改
- 安装maven软件
- 配置maven的环境变量
-
- 检查maven环境是否配置成功
- 在maven配置文件添加阿里镜像源
- 检查IntelliJ IDEA 2021.3里maven仓库的配置
- 检查jdk配置情况
- 查看java版本
(三)在pom.xml文件添加项目依赖
- 在pom.xml文件里添加相关依赖和构建插件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.cch</groupId>
<artifactId>ReggieTakeOut</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- <properties>-->
<!-- <maven.compiler.source>11</maven.compiler.source>-->
<!-- <maven.compiler.target>11</maven.compiler.target>-->
<!-- </properties>-->
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.14</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.12</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.4</version>
</plugin>
</plugins>
</build>
</project>
(四)创建应用属性文件
- 在resources目录下创建应用属性文件 - application.yml
- 配置application.yml
server:
port: 8080
spring:
application:
name: ReggieTakeOut
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/reggie?serverTimezone=Asia/Shanghai