SpringBoot微信点餐系统 - 项目设计、数据库设计

微信点餐系统 - 项目设计

文章目录

  • 微信点餐系统 - 项目设计
  • 1、项目设计
    • 角色划分
    • 功能模块划分
    • 关系图
    • 部署架构
  • 2、架构和基础框架
  • 3、数据库设计
    • 商品表
    • 类目表
    • 订单表
    • 订单详情表
    • 样例图片链接
  • 4、参考资料

记录一下二月疫情学的 廖师兄的基于Spring Boot实现的企业微信点餐系统

微信点餐系统

包括需求分析,项目设计,项目架构,数据库设计等等。

  • 项目设计
  • 架构和基础框架
  • 数据库设计

开发流程

  • 项目设计
  • 环境搭建
  • 功能开发
  • 项目优化
  • 部署上线 (应用部署Nginx、Tomcat、Redis、MySQL)
  • (一直单元测试)

1、项目设计

项目设计

  • 角色划分

  • 功能模块划分

  • 部署架构

  • 数据库设计

角色划分

角色划分

买家(手机端) 微信点餐

卖家(PC端)管理

微信点餐系统就买家和卖家

一个浏览定吃的(浏览、下单、取消、支付、查询)、一个接单做吃的(商品上下架、接单、查询、取消、类目删除)

买家(手机端)

  • 下单
  • 查询订单
  • 取消订单
  • 支付订单

卖家(PC端)

  • 类目删除
  • 商品上下架
  • 接单
  • 查询订单
  • 取消订单

功能模块划分

SpringBoot微信点餐系统 - 项目设计、数据库设计_第1张图片

功能模块划分 - 功能分析

商品的、订单的、类目的。。。

商品

  • 商品列表

订单

  • 订单创建
  • 订单查询
  • 订单取消

类目

  • 订单管理
  • 商品管理
  • 类目管理

关系图

SpringBoot微信点餐系统 - 项目设计、数据库设计_第2张图片

微信点餐系统的关系图

买家

  • 查询 商品

  • 创建/查询 订单

消息

卖家

  • 查询/接单 订单

  • 管理商品

消息

消息互相联系哦

部署架构

部署架构

SpringBoot微信点餐系统 - 项目设计、数据库设计_第3张图片

分布式部署

Tomcat 多台服务器 多个应用

多端 手机微信端 Web端

Nginx

Tomcat

Redist、MySQL

2、架构和基础框架

微服务 -》Spring Cloud -》Spring Boot

SpringBoot微信点餐系统 - 项目设计、数据库设计_第4张图片

微服务

单一 垂直 分布式 流动式


架构的演进

微服务 实现

两大“门派”

  • 阿里系

  • SpringCloud栈

Spring社区

阿里系

  • Dubbo

  • Zookeeper

  • Spring MVC or SpringBoot

Apache Dubbo 服务化治理?
Apache Dubbo™ 是一款高性能Java RPC框架。

Zookeeper https://zookeeper.apache.org/ 注册中心?

SpringBoot微信点餐系统 - 项目设计、数据库设计_第5张图片

Spring Cloud 栈

  • Spring Cloud
  • Netflix Eureka
  • SpringBoot

https://spring.io/projects/spring-cloud-netflix

微服务 面对 服务化的

演进过程

本身 不受技术框架的束缚 微服务

3、数据库设计

数据库设计

  • 表和表之间的关系

  • 建表SQL

  • 注意事项

SpringBoot微信点餐系统 - 项目设计、数据库设计_第6张图片

数据库 设计 五张

商品表 商品的属性

类目表

订单详情表

卖家信息表

订单主表

设计我们的数据库

设计数据库

自增有上限,设置下字符类型 。

微信点餐的数据库设计 表设计

商品表

商品表

名称 product_name 商品名称

单价 product_price 商品单价

库存 库存 product_stock

描述 product_description 商品的描述

图片 product_icon 商品小图

类目编号 category_type

商品状态,0正常1下架 product_status

创建时间 create_time

修改时间 update_time

-- 商品
create table `product_info` (
    `product_id` varchar(32) not null,
    `product_name` varchar(64) not null comment '商品名称',
    `product_price` decimal(8,2) not null comment '单价',
    `product_stock` int not null comment '库存',
    `product_description` varchar(64) comment '描述',
    `product_icon` varchar(512) comment '小图',
    `product_status` tinyint(3) DEFAULT '0' COMMENT '商品状态,0正常1下架',
    `category_type` int not null comment '类目编号',
    `create_time` timestamp not null default current_timestamp comment '创建时间',
    `update_time` timestamp not null default current_timestamp on update current_timestamp comment '修改时间',
    primary key (`product_id`)
);

简单说明

主键product_id商品的id , primary key (product_id)

create_time timestamp not null default current_timestamp comment ‘创建时间’,
update_time timestamp not null default current_timestamp on update current_timestamp comment ‘修改时间’,

timestamp时间戳

decimal 8 2

这是上线的项目,自增上线是不行的,自增不够用商品id有上限。

更新的时候自动写进去

mysql5.7 可以这么设置

价格8位 加二个小数点

类目表

类目表

名称 category_name

编号 category

-- 类目
create table `product_category` (
    `category_id` int not null auto_increment,
    `category_name` varchar(64) not null comment '类目名字',
    `category_type` int not null comment '类目编号',
    `create_time` timestamp not null default current_timestamp comment '创建时间',
    `update_time` timestamp not null default current_timestamp on update current_timestamp comment '修改时间',
    primary key (`category_id`),
    UNIQUE KEY `uqe_category_type` (`category_type`)
);

类目没那多么多 int 类目名称 类目编号少的

类目编号 自定义的

查询性能的优化 约束索引 unique key `` 与商品也有关

订单表

订单表

买家名字 buyer_name

买家电话 buyer_phone

买家地址 buyer_address

买家微信id buyer_openid

总金额 order_amount

订单状态 order_status

支付状态 pay_status

常见时间

修改时间

-- 订单
create table `order_master` (
    `order_id` varchar(32) not null,
    `buyer_name` varchar(32) not null comment '买家名字',
    `buyer_phone` varchar(32) not null comment '买家电话',
    `buyer_address` varchar(128) not null comment '买家地址',
    `buyer_openid` varchar(64) not null comment '买家微信openid',
    `order_amount` decimal(8,2) not null comment '订单总金额',
    `order_status` tinyint(3) not null default '0' comment '订单状态, 默认为新下单',
    `pay_status` tinyint(3) not null default '0' comment '支付状态, 默认未支付',
    `create_time` timestamp not null default current_timestamp comment '创建时间',
    `update_time` timestamp not null default current_timestamp on update current_timestamp comment '修改时间',
    primary key (`order_id`),
    key `idx_buyer_openid` (`buyer_openid`)
);

加一个索引

keyidx_buyer_openid(buyer_openid)

订单详情表

订单详情表

订单id order_id

商品id product_id

商品名字 product_name

商品价格 product_price

商品数量 product_quantity

商品图片 product_icon

-- 订单商品
create table `order_detail` (
    `detail_id` varchar(32) not null,
    `order_id` varchar(32) not null,
    `product_id` varchar(32) not null,
    `product_name` varchar(64) not null comment '商品名称',
    `product_price` decimal(8,2) not null comment '当前价格,单位分',
    `product_quantity` int not null comment '数量',
    `product_icon` varchar(512) comment '小图',
    `create_time` timestamp not null default current_timestamp comment '创建时间',
    `update_time` timestamp not null default current_timestamp on update current_timestamp comment '修改时间',
    primary key (`detail_id`),
    key `idx_order_id` (`order_id`)
);

查询的时候用到订单id 来查

order_id varchar(32) not null,

加个索引

key idx_order_id (order_id)

总的 创建个sell数据库再执行sell.sql吧

sell.sql

-- 类目
create table `product_category` (
    `category_id` int not null auto_increment,
    `category_name` varchar(64) not null comment '类目名字',
    `category_type` int not null comment '类目编号',
    `create_time` timestamp not null default current_timestamp comment '创建时间',
    `update_time` timestamp not null default current_timestamp on update current_timestamp comment '修改时间',
    primary key (`category_id`),
    UNIQUE KEY `uqe_category_type` (`category_type`)
);

-- 商品
create table `product_info` (
    `product_id` varchar(32) not null,
    `product_name` varchar(64) not null comment '商品名称',
    `product_price` decimal(8,2) not null comment '单价',
    `product_stock` int not null comment '库存',
    `product_description` varchar(64) comment '描述',
    `product_icon` varchar(512) comment '小图',
    `product_status` tinyint(3) DEFAULT '0' COMMENT '商品状态,0正常1下架',
    `category_type` int not null comment '类目编号',
    `create_time` timestamp not null default current_timestamp comment '创建时间',
    `update_time` timestamp not null default current_timestamp on update current_timestamp comment '修改时间',
    primary key (`product_id`)
);

-- 订单
create table `order_master` (
    `order_id` varchar(32) not null,
    `buyer_name` varchar(32) not null comment '买家名字',
    `buyer_phone` varchar(32) not null comment '买家电话',
    `buyer_address` varchar(128) not null comment '买家地址',
    `buyer_openid` varchar(64) not null comment '买家微信openid',
    `order_amount` decimal(8,2) not null comment '订单总金额',
    `order_status` tinyint(3) not null default '0' comment '订单状态, 默认为新下单',
    `pay_status` tinyint(3) not null default '0' comment '支付状态, 默认未支付',
    `create_time` timestamp not null default current_timestamp comment '创建时间',
    `update_time` timestamp not null default current_timestamp on update current_timestamp comment '修改时间',
    primary key (`order_id`),
    key `idx_buyer_openid` (`buyer_openid`)
);

-- 订单商品
create table `order_detail` (
    `detail_id` varchar(32) not null,
    `order_id` varchar(32) not null,
    `product_id` varchar(32) not null,
    `product_name` varchar(64) not null comment '商品名称',
    `product_price` decimal(8,2) not null comment '当前价格,单位分',
    `product_quantity` int not null comment '数量',
    `product_icon` varchar(512) comment '小图',
    `create_time` timestamp not null default current_timestamp comment '创建时间',
    `update_time` timestamp not null default current_timestamp on update current_timestamp comment '修改时间',
    primary key (`detail_id`),
    key `idx_order_id` (`order_id`)
);

-- 卖家(登录后台使用, 卖家登录之后可能直接采用微信扫码登录,不使用账号密码)
create table `seller_info` (
    `seller_id` varchar(32) not null,
    `username` varchar(32) not null,
    `password` varchar(32) not null,
    `openid` varchar(64) not null comment '微信openid',
    `create_time` timestamp not null default current_timestamp comment '创建时间',
    `update_time` timestamp not null default current_timestamp on update current_timestamp comment '修改时间',
    primary key (`seller_id`)
) comment '卖家信息表';

SpringBoot微信点餐系统 - 项目设计、数据库设计_第7张图片

执行成功 数据库搞定

样例图片链接

阿里云OSS 存储图片

烤肉

https://sell-liuawen.oss-cn-beijing.aliyuncs.com/kaorou.jpg

皮蛋粥

https://sell-liuawen.oss-cn-beijing.aliyuncs.com/pidanzhou.jpg

白米饭

https://sell-liuawen.oss-cn-beijing.aliyuncs.com/baimifan.jpg

4、参考资料

1、Spring Boot 打造企业级微信点餐系统

你可能感兴趣的:(项目,实战,SpringBoot,微信点餐系统,项目设计,数据库设计,开发流程)