|
1 | 1 | ## 基于SpringBoot的微信点餐系统 |
2 | | ->这里只是对项目做一个整体的介绍,项目中设计的知识细节及难点以博客的形式整理在Wiki里。[Wiki](https://github.com/sqmax/springboot-project/wiki) |
3 | 2 |
|
4 | | -### 目录 |
5 | | -* [项目介绍](#项目介绍) |
6 | | -* [项目设计](#项目设计) |
7 | | - * [角色划分](#角色划分) |
8 | | - * [功能模块划分](#功能模块划分) |
9 | | - * [部署架构](#部署架构) |
10 | | - * [数据库设计](#数据库设计) |
11 | | -* [项目使用的技术栈](#项目使用的技术栈) |
12 | | -* [开发环境及工具](#开发环境及工具) |
13 | | -* [项目演示](#项目演示) |
14 | | - * [卖家端(PC端)](#卖家端(PC端)) |
15 | | - * [买家端(手机微信端)](#买家端(手机微信端)) |
16 | | - * [买家端和卖家端的通信](#买家端和卖家端的通信) |
17 | | - |
18 | | ------------- |
| 3 | +### 项目整体介绍。[http://www.sqmax.top/springboot-project/](http://www.sqmax.top/springboot-project/) |
| 4 | +### 项目中设计的知识细节及难点以博客的形式整理在Wiki里。[Wiki](https://github.com/sqmax/springboot-project/wiki) |
19 | 5 |
|
20 | | -## 项目介绍 |
21 | | -* 前端是由Vue.js构建的WebApp,后端由Spring Boot打造,后端的前台页面使用Bootstap+Freemarker+JQuery构建,后端和前端通过RESTful风格的接口相连。 |
22 | | - |
23 | | -* 数据库方面使用Spring Boot+JPA,兼顾Spring Boot+Mybatis;缓存方面使用Spring Boot+Redis;基于Redis,应对分布式Session和分布式锁;消息推送方面,使用WebSocket。 |
24 | | - |
25 | | -* 这是一个基于微信的点餐系统,所以还涉及许多微信相关的特性,如微信扫码登陆,微信模板消息推送和微信支付和退款。 |
26 | 6 |
|
27 | | -## 项目设计 |
28 | | - |
29 | | -### 角色划分 |
30 | | -* 卖家(手机端):由微信公众号提供的一个服务。 |
31 | | -* 卖家(PC端):一个简单的商家管理系统 |
32 | | - |
33 | | -### 功能模块划分 |
34 | | -* 功能分析 |
35 | | -  |
36 | | -* 关系图 |
37 | | -  |
38 | | - |
39 | | -### 部署架构 |
40 | | -* 买家端在手机端,卖家端在PC端,两端都会发出数据请求,请求首先到达nginx服务器,如果请求的是后端接口,nginx服务器会进行一个转发,转发到后面的Tomcat服务器,即我们的Java项目所在,如果这个接口作了缓存,那么就会访问redis服务器,如果没有缓存,就会访问我们的MySQL数据库。值得注意的是我们的应用是支持分布式部署的,也就是说图上的Tomcat表示的是多台服务器,多个应用。 |
41 | | -  |
42 | | -### 数据库设计 |
43 | | -* 共5个表,表之间的关系如下,其中商品表存放的就是商品的名称,价格库存,图片链接等信息;类目表含有类目id,类目名字等信息,一个类目下有多种商品,类目表和商品表之间是一对多的关系;订单详情表含有购买的商品名称,数量,所属订单的订单号等信息;订单主表包含包含该订单的订单号,买家的信息,订单的支付状态等信息,订单主表和订单详情表之间是一对多的关系;最后是卖家信息表,存放的卖家的账号和密码等信息,作为卖家后台管理的权限认证。 |
44 | | -  |
45 | | - |
46 | | - |
47 | | -## 项目使用的主要技术栈 |
48 | | -* SpringBoot的相关特性 |
49 | | - * SpringBoot+JPA |
50 | | - * SpringBoot+Redis |
51 | | - * SpringBoot+WebSocket |
52 | | - |
53 | | -* 微信相关特征 |
54 | | - * 微信支付、退款 |
55 | | - * 微信授权登陆 |
56 | | - * 微信模板消息推送 |
57 | | - * 使用微信相关的开源SDK |
58 | | -* 分布式Session和分布式锁 |
59 | | - * 对于用户的登录信息,使用Redis对Session进行集中管理 |
60 | | - * 针对一个抢红包的案例,利用Redis分布式Session来应对高并发请求 |
61 | | - |
62 | | - |
63 | | -## 开发环境及工具 |
64 | | -* IDEA |
65 | | -* Maven |
66 | | -* Git |
67 | | -* MySQL |
68 | | -* Nginx |
69 | | -* Redis |
70 | | -* Centos虚拟机部署买家端的前端代码 |
71 | | -* Postman模拟微信订单创建订单 |
72 | | -* Fiddler对手机请求抓包 |
73 | | -* Natapp内网穿透 |
74 | | -* Apache ab模拟高并发请求 |
75 | | - |
76 | | -## 项目演示 |
77 | | -### 卖家端(PC端) |
78 | | -浏览器输入授权路径,进入微信扫码登陆系统页面 |
79 | | - |
80 | | - |
81 | | - |
82 | | -登陆后,从左侧导航栏可以看到有四项【订单】,【商品】,【类目】,【登出】,右侧是卖家管理系统的首页,也即【订单】界面。 |
83 | | - |
84 | | - |
85 | | - |
86 | | - 对每项订单有【取消】和查看订单【详情】操作。 |
87 | | - |
88 | | -  |
89 | | - |
90 | | - 我们可以选择完结订单或取消该订单。 |
91 | | - |
92 | | -【商品】和【商品类目】下均有两项操作:【列表】【新增】。 |
93 | | -下面以【商品】栏为例演示。 |
94 | | -点击商品->列表可以查看商品的详情,可以看到对每件商品又有【修改】和【上架】/【下架】操作 。 |
95 | | - |
96 | | - |
97 | | - |
98 | | -点击商品->新增来新增商品 |
99 | | -  |
100 | | - |
101 | | -### 买家端(手机微信端) |
102 | | -买家端是基于微信公众号的点餐app。 |
103 | | - |
104 | | - |
105 | | - |
106 | | -选购好商品后就可以去结算。 |
107 | | - |
108 | | - |
109 | | - |
110 | | -结算完成,可以看到一条微信支付凭证消息。 |
111 | | - |
112 | | - |
113 | | - |
114 | | -可以选择查看账单。 |
115 | | - |
116 | | - |
117 | | - |
118 | | -### 买家端和卖家端的通信 |
119 | | -因为我是借用的微信公众账号,买家端和卖家端不能连调,我这里用Postman这个工具,发送一条post请求,来模拟微信下单。这时卖家端首页,即【订单】页面就会弹出一个窗口,并播放音乐。 |
120 | | - |
121 | | - |
122 | | - |
123 | | -点击关闭按钮,在订单页面找到找到新下的订单,点击【详情】来到订单详情界面,点击【完结订单】按钮。 |
124 | | - |
125 | | - |
126 | | - |
127 | | -这时微信那边就会收到如下的模板消息。 |
128 | | - |
129 | | - |
0 commit comments