从本篇起,我们将开始学习spring boot 微信支付项目。

本节我们来讲解项目设计。主要从以下几个方面来讲解:

1:角色划分;

2:功能模块划分;

3:部署架构;

4:数据库设计;

角色划分:

买家端和卖家端

springboot支付项目之项目设计_修改时间

买家是在手机端操作的,买家端是在PC端管理商品的

功能模块划分如下:

买家浏览商品列表、下单、查询、取消订单等操作

卖家可以商品类目管理、商品管理、订单管理等操作。

具体如下图:

springboot支付项目之项目设计_修改时间_02

买家和卖家关系:

买家:创建/查询订单、查询商品

卖家:查询/接单、管理商品

卖家与买家之间通过消息进行连接

具体如下图:

springboot支付项目之项目设计_类目_03

再来看看项目部署:

买家通过手机端访问nginx上面页面,请求tomcat数据,然后从redis缓存或者mysql数据库中查询数据;

卖家通过PC端浏览器操作。

具体如下图:


springboot支付项目之项目设计_类目_04

数据库设计:

主要从:表之间关系、创建表sql脚本及注意事项三个方面来讲。

说明:我们主要讲解spring boot及支付相关的。其他业务都忽略,精简之后就剩下下面五张表,比较简单的。表与表之间的关系如下图:

springboot支付项目之项目设计_类目_05

商品表字段:

名称、价格、库存、描述、图片、类目编号等。

sql脚本:


springboot支付项目之项目设计_修改时间_06

类目表脚本:

springboot支付项目之项目设计_修改时间_07

订单表sql脚本:

springboot支付项目之项目设计_sql脚本_08


商品详情


springboot支付项目之项目设计_sql脚本_09

具体五张表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`)

);


-- 商品

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 '卖家信息表';


下一节我们开始买家端开发