一、软件开发整体介绍
二、 瑞吉外卖项目整体介绍
三、开发环境搭建
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框架
spring:
application:
name: ReggieTakeOut #应用名称
datasource: #数据源
druid: #druid数据源
driver-class-name: com.mysql.cj.jdbc.Driver #驱动程序
url: jdbc:mysql://localhost:3306/reggie