从本篇起,我们将开始学习spring boot 微信支付项目。
本节我们来讲解项目设计。主要从以下几个方面来讲解:
1:角色划分;
2:功能模块划分;
3:部署架构;
4:数据库设计;
角色划分:
买家端和卖家端
买家是在手机端操作的,买家端是在PC端管理商品的
功能模块划分如下:
买家浏览商品列表、下单、查询、取消订单等操作
卖家可以商品类目管理、商品管理、订单管理等操作。
具体如下图:
买家和卖家关系:
买家:创建/查询订单、查询商品
卖家:查询/接单、管理商品
卖家与买家之间通过消息进行连接
具体如下图:
再来看看项目部署:
买家通过手机端访问nginx上面页面,请求tomcat数据,然后从redis缓存或者mysql数据库中查询数据;
卖家通过PC端浏览器操作。
具体如下图:
数据库设计:
主要从:表之间关系、创建表sql脚本及注意事项三个方面来讲。
说明:我们主要讲解spring boot及支付相关的。其他业务都忽略,精简之后就剩下下面五张表,比较简单的。表与表之间的关系如下图:
商品表字段:
名称、价格、库存、描述、图片、类目编号等。
sql脚本:
类目表脚本:
订单表sql脚本:
商品详情
具体五张表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 '卖家信息表';
下一节我们开始买家端开发