Junling Bu 7 年 前
コミット
09e1847bb3
7 ファイル変更250 行追加157 行削除
  1. 11 11
      README.md
  2. 94 73
      doc/1.md
  3. 47 24
      doc/2.md
  4. 33 35
      doc/3.md
  5. 48 5
      doc/4.md
  6. 16 8
      doc/7.md
  7. 1 1
      doc/README.md

+ 11 - 11
README.md

@@ -2,6 +2,8 @@
 
 又一个小商场系统。
 
+litemall = Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端
+
 ## 项目代码
 
 * [码云](https://gitee.com/linlinjava/litemall)
@@ -48,14 +50,13 @@
 
 * 会员管理
   * 会员管理
-  * 收货地址管理
+  * 收货地址
   * 会员收藏
   * 会员足迹
   * 搜索历史
-  * 购物车
 * 商城管理
   * 区域配置
-  * 品牌制造
+  * 品牌商
   * 订单管理
   * 商品类目
   * 通用问题
@@ -83,6 +84,7 @@
 2. 项目配置,启用“不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书”
 3. 点击“编译”,即可在微信开发工具预览效果;
 4. 也可以点击“预览”,然后手机扫描登录。
+   注意,手机需要打开调试功能。
 
 ![](doc/pic/5.gif)    
 
@@ -93,31 +95,28 @@
 
 ## 文档
 
-1. [系统架构](doc/1.md)
-2. [基础平台](doc/2.md)
-3. [小商场](doc/3.md)
-4. [管理后台](doc/4.md)
-5. [商场](doc/5.md)
-6. [下一步计划](doc/6.md)
-7. [FAQ](doc/7.md)
+[在线文档](https://linlinjava.gitbook.io/litemall/)。
 
-文档内容采用 [署名-禁止演绎 4.0 国际协议许可](https://creativecommons.org/licenses/by-nd/4.0/deed.zh)
+文档采用 [署名-禁止演绎 4.0 国际协议许可](https://creativecommons.org/licenses/by-nd/4.0/deed.zh)
 
 ## 开发计划
 
 目前项目开发中,存在诸多不足,以下是目前规划的开发计划。
 
 V 1.0.0 完成以下目标:
+
 1. 除了部分功能(如支付和优惠券等),小商城的优化和改进基本结束;
 2. 管理后台基本实现所有表的CRUD操作;
 3. 后台服务能够对参数进行检验。
 
 V 2.0.0 完成以下目标:
+
 1. 小商城能够完成基本的业务功能;
 2. 管理后台实现较好的业务操作和交互效果,而不是简单的CRUD;
 3. 管理后台实现统计功能、日志功能
 
 V 3.0.0 完成以下目标:
+
 1. 管理后台一些辅助功能
 2. 后台服务加强安全功能、配置功能
 3. 项目代码重构和清理
@@ -126,6 +125,7 @@ V 3.0.0 完成以下目标:
 项目结束,已经是一个真正可工作的项目,此时进入维护阶段。
 
 如果真的坚持到维护阶段,那么存在三种可能性:
+
 1. 或者开发 V 4.0.0,实现web商场子系统;
 2. 或者重新开发一个新的独立项目,引入企业级功能,如缓存、权限、对象存储云服务等;
 3. 或者结束,不再开发,仅仅维护。

+ 94 - 73
doc/1.md

@@ -9,27 +9,46 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
 
 项目的架构是三个系统和六个模块:
 
-* 基础系统(core),由数据库、litemall-cre模块、litemall-db模块、litemall-os-api模块和litemall-all模块组成;
-* 小商场系统(wxmall),由litemall-wx-api模块和litemall-wx模块组成;
-* 后台管理系统(admin),由litemall-admin-api模块和litemall-admin模块组成。
-* 简单商城系统(mall),这里仅列出,目前没有开发计划。
+* 基础系统子系统(core)
+
+  由数据库、litemall-cre模块、litemall-db模块、litemall-os-api模块和litemall-all模块组成;
+
+* 小商场子系统(wxmall)
+
+  由litemall-wx-api模块和litemall-wx模块组成;
+
+* 后台管理子系统(admin)
+
+  由litemall-admin-api模块和litemall-admin模块组成。
+
+* 简单商城系统(mall)
+
+  这里仅列出,目前没有开发计划。
 
 而六个模块的开发设计到三种技术栈:
 
-* Spring Boot技术栈,采用IDEA开发工具,开发litemall-core、litemall-db、litemall-all、
+* Spring Boot技术栈
+
+  采用IDEA开发工具,开发litemall-core、litemall-db、litemall-all、
   litemall-os-api、litemall-admin-api和litemall-wx-api共六个个模块;
-* miniprogram(微信小程序)技术栈,采用微信小程序开发工具,开发litemall-wx模块;
-* Vue技术栈,采用VSC开发工具,开发litemall-admin模块。
+  
+* miniprogram(微信小程序)技术栈
+
+  采用微信小程序开发工具,开发litemall-wx模块;
+  
+* Vue技术栈
+
+  采用VSC开发工具,开发litemall-admin模块。
 
 ## 1.2 系统功能
 
-从业务功能上,目前由五个业务模块(参考nideshop-mini-program和platform)组成:
+从业务功能上,目前由五个业务模块组成:
 
 * 会员业务模块
 * 商场业务模块
 * 商品业务模块
 * 推广业务模块
-* 系统业务模块(仅管理平台)
+* 系统业务模块
 
 ### 1.2.1 小程序端功能
 
@@ -171,7 +190,9 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
   
 最后,其实dep和prod不存在先后关系。例如,如果开发者已经存在域名和生产环境,可以直接
 跳过dep阶段,而直接部署在线上环境中。因此有些时候,这里部署和上线是一个阶段。
+
 当然,这里仍然建议先dep后prod,是因为对于第一次开发而言,先dep阶段可以避免对域名、https证书等非业务相关工作的干扰。
+
 此外,有些业务功能(例如微信支付)必须是域名访问,那么开发和部署阶段可以先采用模拟或跳过的形式,
 先不开发和测试这样业务功能,等其他功能开发完毕和部署测试成功以后,再来开发这些线上环境才能
 运行的功能,此时会有一个好的基础。
@@ -211,6 +232,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
 ### 1.4.0 数据库
 
 按照开发环境前,需要先在本地配置好数据库:
+
 1. 本项目目前采用MySQL,请上网下载安装MySQL 5.7.x
 
    注意:
@@ -339,11 +361,9 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
 >    原因是这里的appid是本人申请的,而开发者不是本人app的开发者或体验者,
 >    因此微信登录导致后台服务向微信服务器交互时会失败。
 > 2. 有的开发者可能认为把litemall-wx模块的appid设置成开发者自己的appid就可以,
->    但是实际上,由于小商场的云主机后台服务的appid仍然是本人appid,
->    因此微信登录时仍然会失败。
+>    但是由于小商场的云主机后台服务的appid仍然是本人appid,因此微信登录时仍然会失败。
 > 3. 开发者可以在litemall-wx和litemall-wx-api中设置自己的appid,以及部署自己的后台服务,
->    相关内容请阅读章节3。
->    或者,开发者可以采用账号登录的方式登录后台服务,然后体验商品购买下单的方式。
+>    相关内容请阅读章节3。或者,开发者可以采用账号登录方式登录,然后体验商品购买下单的方式。
 > 4. 由于没有设置商户支付信息,因此开发者在付款时会失败。相关内容阅读章节3。
 
 ### 1.4.3 Vue开发环境
@@ -356,6 +376,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
     ```
     cnpm install
     ```
+    
 5. 编译并运行
     
     ```
@@ -363,6 +384,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
     ```
     然后,打开浏览器,输入`http://localhost:9527`。
     如果出现管理后台登录页面,则表明管理后台的前端运行正常;
+    
 6. 请确定litemall-admin-api模块已经运行,然后点击`登录`,如果能够成功登录,则表明管理后台的前端和后端对接成功,运行正常。
 
 ## 1.5 部署方案
@@ -379,11 +401,6 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
   * litemall-wx模块部署在微信开发者工具中,此外数据API地址指向litemall-wx-api所在服务qi地址
   * litemall-admin编译出的静态文件放在web服务器或者tomcat服务器,此外服务器地址设置指向3中litemall-admin-api所在地址
   
-注意
-> * 这里litemall-os-api、litemall-admin-api和litemall-wx-api也可以选择编译成jar模式的可执行文件(因为内嵌tomcat服务器),然后直接运行。
-> * litemall-wx部署时可以放在微信开发者工具中测试,但是上线时必须设置https开头的合法域名,因此litemall-wx-api所在的服务器需要配置合适的域名和SSL证书,
->   具体参见官方文档和本项目的1.6节。
-
 最后,**如果项目部署,则根据开发者的部署环境在以下文件中或代码中修改相应的配置。**
 
 1. MySQL数据库设置合适的用户名和密码等信息,同时在litemall-os-api、litemall-wx-api和litemall-admin-api模块
@@ -414,8 +431,10 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
 
 以下简单列举几种方案。
 
-### 1.5.3 基于ubuntu腾讯云的单机云部署方案
-单机云部署方案,面向的是服务器数据和应用部署在云主机单机中用于演示的场景。
+### 1.5.3 单机云部署方案
+
+本节介绍基于腾讯云的单机云部署方案,面向的是服务器数据和应用部署在云主机单机中用于演示的场景。
+其他云应该也是可行的。
 
 主要流程是:创建云主机,安装ubuntu操作系统,按照JDK和MySQL应用运行环境,部署三个Spring Boot微服务后台应用,
 以及部署管理后台静态文件到tomcat。
@@ -449,6 +468,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
 #### 1.5.3.2 JDK8
 
 https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04
+
 http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html
 
 ```bash
@@ -464,7 +484,6 @@ sudo apt-get install oracle-java8-set-default
 #### 1.5.3.3 MySQL
 
 https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-16-04
-https://www.linuxidc.com/Linux/2017-01/139502.htm
 
 ```
 sudo apt-get update
@@ -504,31 +523,33 @@ sudo apt-get install mysql-client
 
 * 命令行导入
 
-1. 采用FileZilla把本项目的litemall.sql上传到云主机
-2. 使用PuTTY登录云主机
-3. 进入MySQL,输入上节所设置的MySQL的root密码
-4. 创建数据库、 创建用户并分配访问权限
-5. 导入数据
-6. 退出
+  1. 采用FileZilla把本项目的litemall.sql上传到云主机
+  2. 使用PuTTY登录云主机
+  3. 进入MySQL,输入上节所设置的MySQL的root密码
+  4. 创建数据库、 创建用户并分配访问权限
+  5. 导入数据
+  6. 退出
 
 * MySQL Workbench导入
 
-1. 先确认已经在1.4.3节中设置了root可以远程访问;
-2. 创建一个新的连接,设置`Hostname` 、`Username` 和`Password`,
-然后点击`Test Connection`测试是否能够连接到云主机;
-如果测试成功,则进入;
-![](pic1/1-5.png)
-3. 开发者自行学习文档,完成`创建数据库`、`创建用户`和`分配权限`三个操作;
-4. 利用Workbench的`Server`菜单下的`Data Import`完成数据导入。
+  1. 先确认已经在1.4.3节中设置了root可以远程访问;
+  2. 创建一个新的连接,设置`Hostname` 、`Username` 和`Password`,
+     然后点击`Test Connection`测试是否能够连接到云主机;
+     如果测试成功,则进入;
+     ![](pic1/1-5.png)
+  3. 开发者自行学习文档,完成`创建数据库`、`创建用户`和`分配权限`三个操作;
+  4. 利用Workbench的`Server`菜单下的`Data Import`完成数据导入。
 
 * 命令脚本
-```bash
-cd deploy
-mysql -h localhost -u root -p123456 
-source ./litemall-db/litemall_schema.sql 
-source ./litemall-db/litemall.sql 
-```
-其中123456是开发者所设置的MySQL的管理员密码。
+    
+    ```bash
+    cd deploy
+    mysql -h localhost -u root -p123456 
+    source ./litemall-db/litemall_schema.sql 
+    source ./litemall-db/litemall.sql 
+    ```
+
+    其中123456是开发者所设置的MySQL的管理员密码。
 
 #### 1.5.3.5 Tomcat/Nginx
 
@@ -537,15 +558,15 @@ source ./litemall-db/litemall.sql
 因此这里需要安装tomcat或者nginx(或者其他服务器)。
 
 这里可能有点绕:
+
 1. 开发方案,无需tomcat/nginx,直接用VSC即可;
-2. 部署方案,采用tomcat,这里是因为80端口可能需要云主机备案;
+2. 部署方案,采用tomcat,这里是因为80端口可能需要云主机备案因此采用tomcat使用8080端口
 3. 上线方案. 采用nginx,通过反向代理访问后台服务。
 
 因此目前这里采用tomcat部署静态文件,通过8080端口访问管理后台。
 当然,这里没有严格限制,开发者也可以直接配置好nginx,在部署方案就使用nginx来
-部署静态文件服务,通过80web端口访问管理后台。
+部署静态文件服务,通过web端口80访问管理后台。
 
-  
 * Tomcat部署静态文件
 
   1. 安装tomcat
@@ -581,10 +602,10 @@ source ./litemall-db/litemall.sql
   
   1. 安装nginx
   
-  ```bash
-  sudo apt-get update
-  sudo apt-get install nginx
-  ```
+    ```bash
+      sudo apt-get update
+      sudo apt-get install nginx
+    ```
   
   2. 配置nginx指向`delpoy/litemall-admin/dist`目录
   
@@ -597,36 +618,32 @@ source ./litemall-db/litemall.sql
     
 #### 1.5.3.6 项目打包
 
-1. Spring Boot打包
+这里项目打包括两种:
 
-通常项目打包方案存在两种:
+1. Spring Boot打包
 
-* 一是打包war格式,因此云主机需要专门安装tomcat
-* 二是打包可执行jar格式,此时内部包含嵌入式tomcat
+    采用如下命令进行项目打包
 
-这里仅采用第二种方案,简化tomcat的安装配置过程。
+    ```
+    cd litemall
+    mvn clean
+    mvn package
+    ```
 
-采用如下命令进行项目打包
-
-```
-cd litemall
-mvn clean
-mvn package
-```
-此时,在litemall-os-api项目的target文件夹中看到litemall-os-xxx.jar;
-在litemall-wx-api项目的target文件夹中看到litemall-wx-xxx.jar;
-在litemall-admin-api项目的target文件夹中看到litemall-admin-xxx.jar。
+    此时,在litemall-os-api项目的target文件夹中看到litemall-os-xxx.jar;
+    在litemall-wx-api项目的target文件夹中看到litemall-wx-xxx.jar;
+    在litemall-admin-api项目的target文件夹中看到litemall-admin-xxx.jar。
 
 2. Vue项目打包
 
-采用如下命令进行项目打包
+    采用如下命令进行项目打包
 
-````bash
-cd litemall/litemall-admin
-cnpm run build:dep
-````
+    ````bash
+    cd litemall/litemall-admin
+    cnpm run build:dep
+    ````
 
-此时,litemall-admin模块的dist文件夹中就是最终部署时的代码,可以先压缩,上传到云主机,再解压缩。
+    此时,litemall-admin模块的dist文件夹中就是最终部署时的代码,可以先压缩,上传到云主机,再解压缩。
 
 #### 1.5.3.7 项目部署运行
 
@@ -705,6 +722,7 @@ cd litemall
 ### 1.5.4 集群式云部署方案
 
 由于本项目是面向微小型企业的小商城系统,因此预期的分布式部署方案是
+
 1. 专门的云数据库部署数据
 2. 专门的云存储方案
 3. 专门的CDN分发管理后台的静态文件
@@ -718,19 +736,21 @@ cd litemall
 至少每个功能模块应该是独立服务系统。此外,需要引入单点登录系统、集群、缓存
 和消息队列等多种技术。因此如果开发者需要这种形式的分布式方案,请参考其他项目。
 
-### 1.5.5 单主机单服务war部署方案
+### 1.5.5 war部署方案
 
-这里介绍另外一种单主机单服务的方案,即四个服务打包成一个war格式的项目部署包。
+这里介绍另外一种单主机单服务的war部署方案,即四个服务打包成一个war格式的项目部署包。
 
 ![](pic1/1-11.png)
 
 和1.5.3节相比,采用这样方案的原因是:
+
 1. 安装方便,是传统的web项目安装方式,在tomcat里面部署一个war项目包,即可完成安装;
 2. 内存消耗少。在1.5.3节中四个独立的java环境消耗的内存大概1.2G多,而这里部署以后
 只需要一个java环境,因此消耗内存只有1.5.3节方案的四分之一,适合1G云主机部署。
 3. 只存在一个域名和端口,没有多个服务之间依赖关系。
 
 具体的打包部署方案是;
+
 1. litemall-admin首先需要先编译得到静态文件;
 2. 采用`mvn package`命令,litemall-all模块自动生成war格式的安装包,里面
    包含了三个后台服务和静态文件;
@@ -746,6 +766,7 @@ cd litemall
 ## 1.6 上线方案
 
 在1.5节部署方案中,我们介绍了多种部署的方案,但是实际上这些方案都不能立即用于正式环境:
+
 1. 正式环境需要域名和HTTPS证书
 2. 小商场的小程序端对服务器域名存在接入要求。
 
@@ -917,7 +938,7 @@ http://www.example.com
 > 本人对nginx也不了解,仅仅依靠网络知识配置了简单的效果。
 > 更多配置方法和功能,请开发者自行学习。
 
-### 1.6.3 小商场的小程序端上线
+### 1.6.3 小程序端上线
 
 这里参考小程序官方文档,上线自己的小商城。
 
@@ -965,7 +986,7 @@ http://www.example.com
 
 ### 1.6.5 上线脚本
 
-本项目的deploy文件夹是用于
+本项目目前没有上线脚本,不过可以参考1.5.3节中的部署脚本。
 
 ### 1.6.6 优化
 

+ 47 - 24
doc/2.md

@@ -1,13 +1,20 @@
-# 2 litemall基础平台
+# 2 litemall基础系统
 
-目前litemall基础系统主要由litemall数据库、litemall-core模块、litemall-db模块、
-litemall-os-api模块和litemall-all模块组成。
+目前litemall基础系统由以下部分组成:
+
+* litemall数据库
+* litemall-core模块
+* litemall-db模块、
+* litemall-os-api模块
+* litemall-all模块组成
+
+实际上,litemall**真正的基础系统**是litemall-core模块和litemall-db模块。
 
-实际上,属于litemall**真正的基础系统**是litemall-core模块和litemall-db模块。
 litemall-os-api模块只是为了减少开发中对第三方图片存储服务依赖而实现的简单图像存储服务,
-建议开发者最终部署时切换到第三方图片存储服务。litemall-all模块只是一个包裹模块,
-没有任何代码,其作用是融合三个spring boot模块和litemall-adminm模块静态文件到
-一个单独spring boot应用中,并最终打包成war格式的项目安装包。
+建议开发者最终部署时切换到第三方图片存储服务。
+
+litemall-all模块则只是一个包裹模块,几乎没有任何代码。该模块的作用是融合三个spring boot模块
+和litemall-adminm模块静态文件到一个单独spring boot应用中,并最终打包成war格式的项目安装包。
 
 目前存在的问题:
 
@@ -102,8 +109,7 @@ litemall.sql数据库基于nideshop中的[nideshop.sql](https://github.com/tumob
 * 商品规格可以存在规格图片,效果是规格名称前放置规格图片
 * 货品也可以存在货品图片,效果是所有规格选定以后对应的货品有货,则在货品价格前放置货品图片
 * 如果商品是两种规格,分别是M个和N个规格值,那么通常应该是`M*N`个货品,但是有些货品可能天然不存在。
-  那么,此时数据库如何来设计,是允许少于`M*N`个项,还是必须等于`M*N`个,而不存在货品的数量设置为0?
-  * 
+  目前这里要求所有货品信息都应该存在,如果实际中货品不存在,也要设置商品数量为0.
 
 注意:
 
@@ -112,7 +118,9 @@ litemall.sql数据库基于nideshop中的[nideshop.sql](https://github.com/tumob
 
 ### 2.1.2 用户和微信用户设计
 
-目前准备支持用户普通账号登录和微信登录两种方式,两种登录方式仅仅采用一个litemall-user表可能不是很合适。此外,如果进一步支持其他多种第三方登录,那么这里需要重新设计。
+目前准备支持用户普通账号登录和微信登录两种方式,两种登录方式仅仅采用一个litemall-user表可能不是很合适。
+
+外,如果进一步支持其他多种第三方登录,那么这里需要重新设计。
 
 ### 2.1.3 行政区域设计
  
@@ -199,16 +207,16 @@ litemall.sql数据库基于nideshop中的[nideshop.sql](https://github.com/tumob
 注意:
 > 1. 目前退款相关功能未完成。
 > 2. 在上图中可以看到`101`到`101`的状态变化,这里只是小商场用户的操作,不会影响订单状态码。
->    * 用户点击付款时,后台服务会生成预支付会话id,但是不会影响订单状态。
->    * 而用户支付过程中,放弃支付,例如没有
+>    如果用户点击付款时,后台服务会生成预支付会话id,但是不会影响订单状态。
+>    如果而用户支付过程中,放弃支付,则也不会影响订单状态。
 
 #### 2.1.4.2 状态变化所对应的流程
 
-*    -> 101
+* 初始 -> 101
 
 小商场用户在小商场点击`下单`按钮,此时小商城后台服务会生产商户订单。
 
-所对应的后台服务方法是litemall-wx-api模块的`WxOrderController.submit`
+所对应的后台服务方法是litemall-wx-api模块的`WxOrderController.submit`方法。
  
 * 101 -> 101
 
@@ -332,6 +340,7 @@ litemall.sql数据库基于nideshop中的[nideshop.sql](https://github.com/tumob
   用户可以`确认收货`
 
 * 401
+
   用户可以`退货`、`删除`、`去评价`、`再次购买`
 
 * 402
@@ -562,12 +571,16 @@ https://blog.csdn.net/isea533/article/details/42102297
 
 开发者可以自行修改代码进行真正的物理删除。
 
-### 2.2.8 乐观锁
+### 2.2.8 并发访问
 
 由于服务是多线程并发的,因此这带来了多线程同时操作数据库中同一数据的问题。
 由于数据极少删除或者是逻辑删除,因此操作数据,可以简化成更新数据。
 也就是说,需要解决多线程更新数据库同一数据的并发问题。
 
+* https://blog.csdn.net/qq315737546/article/details/76850173
+* http://baijiahao.baidu.com/s?id=1571172971189129
+* https://blog.csdn.net/speedme/article/details/48525119
+
 例如,下单操作中,用户A购买商品G的数量是1个,而用户B同一时间也购买商品G的
 数量也是1个,那么如果没有很好地并发控制,有可能商品G的数量仅仅是减1,而不是
 设想的2。
@@ -583,14 +596,6 @@ https://blog.csdn.net/isea533/article/details/42102297
    * 如果相同,说明数据没有改变则可以更新,数据更新同时version调整一个新值;
    * 如果不相同,则说明数据改变了则更新失败,不能修改数据。   
    
-当然,这里好像也存在一个漏洞,3中所比较的数据库当前version字段的值有可能修改过
-但是恰巧没有变。例如version加1再减1,那么查询时该值并没有变化。当然,如果version
-是单调自增,则应该不存在这个问题。
-
-具体技术细节如下:
-
-1. 
-
 当然,由于采用乐观锁,这里也会带来另外一个问题:
 数据库有可能更新失败,那么如何处理更新失败的情况?
 
@@ -605,7 +610,25 @@ https://blog.csdn.net/isea533/article/details/42102297
 
 开发者需要注意这个问题,可能需要采用其他技术来解决或避免。
 
-### 2.2.9 mybatis增强框架
+### 2.2.9 事务管理
+
+litemall-db模块中不涉及到事务管理,而是在其他后台服务模块中涉及。
+但是其他后台服务模块因为依赖litemall-db模块,因此这里列出。
+
+事务管理的问题出现在多个表的修改操作中。
+
+例如用户A修改表1,再修改表2,而如果修改表2的时候出现错误推出,
+此时如果没有引入事务管理,那么这里会存在表1数据已跟新,表2数据
+未更新的问题。
+
+解决的方案是采用spring自带的事务管理机制。
+当事务管理中的任何SQL操作出现错误而抛出异常时,则回滚之前的操作。
+
+注意:
+> 并发访问是多个用户同时操作单个表时可能出现的问题;
+> 而事务管理是单个用户操作多个表时可能出现的问题。
+
+### 2.2.10 mybatis增强框架
 
 通过mybatis-generator已经自动生成了很多代码,而且具有一定的功能,
 但是开发者仍然需要基于生成的代码写一些固定的CRUD代码。

+ 33 - 35
doc/3.md

@@ -94,6 +94,8 @@ wx.app-secret=开发者申请的app-secret
    
 ## 3.1 litemall-wx-api
 
+本节介绍小商场的后台服务模块。
+
 ### 3.1.1 授权服务
 
 #### 3.1.1.1 账号登录
@@ -266,7 +268,7 @@ wx.app-secret=开发者申请的app-secret
 
 ### 3.1.16 安全
 
-#### 3.1.161 Token
+#### 3.1.16.1 Token
 
 用户登录成功以后,后端会返回`token`,之后用户的请求都会携带token。
 
@@ -389,30 +391,36 @@ var WxApiRoot = 'http://localhost:8082/wx/';
 
 ### 3.2.2 页面
 
-#### 3.2.2.1 首页
-
-#### 3.2.2.
-
-#### 3.2.2.
-
-#### 3.2.2.
-
-#### 3.2.2.
-
-#### 3.2.2.
-
-#### 3.2.2.
-
-#### 3.2.2.
-#### 3.2.2.
-
-#### 3.2.2.
-#### 3.2.2.
-#### 3.2.2.
-#### 3.2.2.
-#### 3.2.2.
-#### 3.2.2.
-
+* 首页
+* 专题页
+* 专题详情页
+* 专题评论页
+* 专题评论添加页
+* 品牌页
+* 品牌详情页
+* 人气推荐页
+* 新品首发页
+* 分类页
+* 分类详情页
+* 查找页
+* 商品详情页
+* 商品评论页
+* 购物车页
+* 下单页
+* 下单地址页
+* 下单地址添加页
+* 支付结果页
+* 个人页
+* 订单列表页
+* 订单详情页
+* 优惠券页
+* 收藏页
+* 足迹页
+* 收货地址页
+* 收货地址添加页
+* 登录页
+* 注册页
+* 找回密码页
 
 ### 3.2.3 登录设计
 
@@ -489,16 +497,6 @@ var WxApiRoot = 'http://localhost:8082/wx/';
     });
 ```
 
-#### 3.2.2.4 登录拒绝授权
-
-还存在一个问题,当用户登录时,会出现"微信授权"的对话框。
-如果用户选择”拒绝“,那么之后用户的登录操作总是失败的。
-
-目前的做法是,用户拒绝授权后,如果再次登录,则:
-1. 弹出对话框,请求用户授权
-2. 如果用户仍然拒绝,则返回
-3. 如果用户接受授权,则弹出系统权限配置页面,等待用户给与授权。
-
 ### 3.2.4 立即购买和放入购物车
 
 ### 3.2.5 storage使用

+ 48 - 5
doc/4.md

@@ -1,7 +1,5 @@
 # 4 litemall管理后台
 
-这里的后台管理业务参考了[platform](https://gitee.com/fuyang_lipengjun/platform).
-
 项目技术架构:
 
 * 后台管理前端,即litemall-admin模块
@@ -46,16 +44,61 @@
 
 ## 4.1 litemall-admin-api
 
-### 4.1.1 
+本节介绍管理后台的后台服务模块。
+
+### 4.1.1 授权服务
+
+
+
+
+### 4.1.16 安全
+
+#### 4.1.16.1 Token
+
+用户登录成功以后,后端会返回`token`,之后用户的请求都会携带token。
+
+目前token的失效和跟新机制没有涉及。
+
+#### 4.1.16.2 CROS
+
+如果litemall-admin-api不配置CROS,则Spring Boot会失败。
+
+#### 4.1.16.3 账号密码加盐
 
+如果是微信登录,那么无需账号和密码。
 
+而如果用户采用了账号和密码的形式登录,那么后端需要把用户密码加盐。
 
-### 4.1.2 安全配置
+#### 4.1.16.4 限制登录
+
+如果采用账号密码登录,那么登录失败一定次数,应该限制登录。
+
+进一步地,如果项目启用了短信功能,应该短信提醒用户,防止他人登录。
+
+目前这里没有实现,仅列出。
+
+### 4.1.17 定时任务
+
+### 4.1.18 并发控制
+
+参考`2.2.8 乐观锁`
+
+当乐观锁更新失败时采用多次尝试方案。
+
+### 4.1.19 事务管理
+
+### 4.1.20 开发技巧
+
+当小商城后台服务开发中因为测试或者debug可能需要经常性重启应用,此时
+一旦重启,将导致小商场的小程序段的token失效,因此要求用户再次登录。
+这里,介绍一个小技巧:
+开发时,
 
-### 4.1.3 CROS配置
 
 ## 4.2 litemall-admin
 
+本节介绍管理后台的前端模块。
+
 litemall-admin模块的代码基于[vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)
 
 ### 4.2.1

+ 16 - 8
doc/7.md

@@ -2,7 +2,7 @@
 
 ## 7.1 小商城
 
-### 7.1.1 为什么小程序微信登录失败
+### 7.1.1 小程序微信登录失败
 
 原因:
 
@@ -13,11 +13,11 @@
 1. 如果只是体验商品购买流程,开发者可以采用账号注册登录方式。
 2. 开发者在litemall-wx和litemall-wx-api模块的appid等信息设置成自己申请的信息。
 
-### 7.1.2 为什么开发者工具运行正常,但是手机真机测试不正常
+### 7.1.2 手机真机测试不正常
 
 现象:
 
-手机真机扫描加载小商场以后,只有页面结构,没有数据和图片。
+开发者工具打开正常,但是手机真机扫描加载小商场以后,只有页面结构,没有数据和图片。
 
 原因:
 
@@ -31,7 +31,11 @@
    * 小商场的后台服务未启动
 2. 手机小商场的**调试功能**开启
 
-### 7.1.3 为什么本人手机测试正常,而第三者手机测试不正常?
+### 7.1.3 第三方手机测试不正常
+
+现象:
+
+本人手机测试正常,而第三者手机测试不正常。
 
 解决方案:
 
@@ -39,7 +43,11 @@
 2. 第三者手机小商场的**调试功能**开启
 3. 在微信小程序平台设置第三者的微信账号是**体验者**
 
-### 7.1.4 小商场为什么不能支付,或者为什么点击支付总是报错?
+### 7.1.4 微信支付失败
+
+现象:
+
+小商场不能支付,或者点击支付总是报错
 
 原因:
 
@@ -54,9 +62,9 @@ wx.notify-url=
 
 解决方案:
 
-参考`3.0 小商场环境`,设置相应支付配置信息
+参考`3.0 小商场环境`,设置相应支付配置信息
 
-### 7.1.5 为什么小商城支付成功,但是返回以后商品订单?
+### 7.1.5 支付成功,但商品仍未付款
 
 现象:
 
@@ -79,4 +87,4 @@ wx.notify-url=
 
 ## 7.2 管理后台
 
-## 7.3 基础平台
+## 7.3 基础系统

+ 1 - 1
doc/README.md

@@ -4,7 +4,7 @@
 * [更新日志](../CHANGELOG.md)
 * [贡献指南](../CONTRIBUTE.md)
 * [1. 系统架构](./1.md)
-* [2. 基础平台](./2.md)
+* [2. 基础系统](./2.md)
 * [3. 小商场](./3.md)
 * [4. 管理后台](./4.md)
 * [5. 商场](./5.md)