Junling Bu 7 年 前
コミット
2a05ed9e5d
8 ファイル変更137 行追加26 行削除
  1. 15 4
      README.md
  2. 1 1
      deploy/README.md
  3. 39 17
      doc/1.md
  4. 49 3
      doc/2.md
  5. 33 1
      doc/3.md
  6. BIN
      doc/pic/1.png
  7. BIN
      doc/pic/2.png
  8. BIN
      doc/pic1/1-1.png

+ 15 - 4
README.md

@@ -124,7 +124,7 @@ V 2.0.0 完成以下目标:
 
 V 3.0.0 完成以下目标:
 1. 管理后台一些辅助功能
-2. 后台服务加强安全功能、事务功能
+2. 后台服务加强安全功能、配置功能
 3. 项目代码重构和清理
 4. 其他配套服务,如代码文档、war部署支持
 
@@ -158,9 +158,20 @@ V 3.0.0 完成以下目标:
   * `管理后台`商品详细信息支持tinymce富文本编辑
   * `管理后台`的后台服务加密管理员密码
   * `管理后台`完善登录退出逻辑
-  * `数据库`除regions几个表,其他所有表都添加`add_time`和`deleted`字段
-  * `业务访问模块`不支持数据物理删除,删除则设置`deleted`,而查询则过滤`deleted`
-  
+  * `基础系统`数据库中除regions几个表,其他所有表都添加`add_time`和`deleted`字段
+  * `基础系统`litemall-db模块不支持数据物理删除,删除则设置`deleted`,而查询则过滤`deleted`
+* V 0.4.0, 项目结构调整,增加了两个模块
+  * `小商场`的后台服务代码添加注释,校验输入参数
+  * `小商场`商品无货时显示“商品已售空”
+  * `管理后台`支持管理员同一账户多终端登录,方便演示
+  * `管理后台`专题内容支持富文本编辑
+  * `基础系统`litemall-os-api的链接从`storage/index/index`调整至`os/index/index`
+  * `基础系统`litemall-os-api支持浏览器显示。
+  * `基础系统`新增litemall-core模块,综合了litemall-os-api、litemall-wx-api
+     和litemall-admin-api的共性代码,目前主要是配置和util代码
+  * `基础系统`新增litemall-all模块作为包裹模块,支持三个后台服务和静态文件
+     打包成一个war项目包
+    
 警告
 ==
 

+ 1 - 1
deploy/README.md

@@ -33,7 +33,7 @@
     然后测试是否部署成功(xxx.xxx.xxx.xxx是云主机IP):
 
     ```
-    http://xxx.xxx.xxx.xxx:8081/storage/index/index
+    http://xxx.xxx.xxx.xxx:8081/os/index/index
     http://xxx.xxx.xxx.xxx:8082/wx/index/index
     http://xxx.xxx.xxx.xxx:8083/admin/index/index
     http://xxx.xxx.xxx.xxx:8080/#/login

+ 39 - 17
doc/1.md

@@ -165,7 +165,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
 7. 编译本项目
 8. 运行litemall-os-api, 打开浏览器,输入
     ```
-    http://localhost:8081/storage/index/index
+    http://localhost:8081/os/index/index
     ```
     如果出现JSON数据,则Spring Boot开发环境部署成功,litemall-os-api模块运行正常。
 9. 同上,运行litemall-wx-api, 打开浏览器,输入 
@@ -272,13 +272,13 @@ mvn package
 最后,本机测试性部署三个Spring Boot应用
 ```
 cd litemall
-java -jar ./litemall-os-api/target/litemall-os-api-0.1.0.jar &
-java -jar ./litemall-wx-api/target/litemall-wx-api-0.1.0.jar &
-java -jar ./litemall-admin-api/target/litemall-admin-api-0.1.0.jar &
+java -jar ./litemall-os-api/target/litemall-os-api-0.1.0-exec.jar &
+java -jar ./litemall-wx-api/target/litemall-wx-api-0.1.0-exec.jar &
+java -jar ./litemall-admin-api/target/litemall-admin-api-0.1.0-exec.jar &
 ```
 如果,能够访问以下链接的数据,则表明本地测试部署成功:
 ```
-http://localhost:8081/storage/index/index
+http://localhost:8081/os/index/index
 http://localhost:8082/wx/index/index
 http://localhost:8083/admin/index/index
 ```
@@ -474,9 +474,9 @@ cnpm run build:prod
 https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#deployment-service
 
 1. 项目进一步打包到deploy文件夹中:
-   * litemall-os-api模块编译得到的litemall-os-api-xxx.jar 保存到deploy的litemall-os-api文件夹中,同时重命名成litemall-os-api.jar
-   * litemall-wx-api模块编译得到的litemall-wx-api-xxx.jar 保存到deploy的litemall-wx-api文件夹中,同时重命名成litemall-wx-api.jar
-   * litemall-admin-api模块编译得到的litemall-admin-api-xxx.jar 保存到deploy的litemall-admin-api文件夹中,同时重命名成litemall-admin-api.jar
+   * litemall-os-api模块编译得到的litemall-os-api-xxx-exec.jar 保存到deploy的litemall-os-api文件夹中,同时重命名成litemall-os-api.jar
+   * litemall-wx-api模块编译得到的litemall-wx-api-xxx-exec.jar 保存到deploy的litemall-wx-api文件夹中,同时重命名成litemall-wx-api.jar
+   * litemall-admin-api模块编译得到的litemall-admin-api-xxx-exec.jar 保存到deploy的litemall-admin-api文件夹中,同时重命名成litemall-admin-api.jar
    * litemall-admin模块编译以后,把dist文件夹压缩,然后放到deploy的litemall-admin文件夹中。
    
 2. 使用FileZilla把deploy整个文件夹上传到云主机的/home/ubuntu文件夹中
@@ -509,7 +509,7 @@ https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#dep
     然后测试是否部署成功(xxx.xxx.xxx.xxx是云主机IP):
 
     ```
-    http://xxx.xxx.xxx.xxx:8081/storage/index/index
+    http://xxx.xxx.xxx.xxx:8081/os/index/index
     http://xxx.xxx.xxx.xxx:8082/wx/index/index
     http://xxx.xxx.xxx.xxx:8083/admin/index/index
     http://xxx.xxx.xxx.xxx:8080/#/login
@@ -537,16 +537,38 @@ https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#dep
 
 ### 1.5.4 分布式云部署方案
 
-目前没有测试过,但是简单的分布式应该是可行的。
-
 由于本项目是面向微小型企业的小商城系统,因此预期的分布式部署方案是
 1. 专门的云数据库部署数据
-2. 一台云主机部署管理后台的后台服务
-3. 一台云主机部署管理后台静态文件服务
-4. 一台云主机部署小商场的后台服务
-5. 专门的云存储方案
+2. 专门的云存储方案
+3. 专门的CDN分发管理后台的静态文件
+4. 一台云主机部署管理后台的后台服务
+5. 一台云主机部署小商场的后台服务
+
+虽然由于环境原因没有正式测试过,但是这种简单的分布式场景应该是可行的。
+在1.5.3节中所演示的四个服务是独立的,因此延伸到这里分布式是非常容易的。
 
-因此,如果需要实现互联网式分布式云部署,目前的项目架构和方案会存在很多问题。
+但是,如果需要实现互联网式分布式云部署,目前的项目架构和方案会存在很多问题。
 至少每个功能模块应该是独立服务系统。此外,需要引入单点登录系统、集群、缓存
-和消息队列等多种技术。
+和消息队列等多种技术。因此如果开发者需要这种形式的分布式方案,请参考其他项目。
+
+### 1.5.5 单主机单服务war部署方案
+
+这里介绍另外一种单主机单服务的方案,即四个服务打包成一个war格式的项目部署包。
 
+和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格式的安装包,里面
+   包含了三个后台服务和静态文件;
+3. 把这个安装包手动或采用其他方式部署云主机的tomcat服务器。
+
+更多细节阅读2.5节litemall-all模块。
+
+注意:
+> 虽然这里介绍了这种方案,但是本项目的开发、测试和部署是基于1.5.3方案,
+> 因此开发者可能需要做一些配置方面的调整,例如三个后台服务地址调整。

+ 49 - 3
doc/2.md

@@ -376,15 +376,21 @@ litemall.sql数据库基于nideshop中的[nideshop.sql](https://github.com/tumob
        }
     }
     ```
+
+## 2.3 litemall-core
         
-## 2.3 litemall-os-api
+## 2.4 litemall-os-api
 
 对象存储服务目前的目标是支持图片的上传下载。
 
 作为后台模块之一,litemall-os-api并没有对应的前端模块,而只是在litemall-admin模块
 的对象存储页面中允许管理员修改。
 
-### 2.3.1 业务
+注意:
+> 这个模块是可选的,或者说不建议最终部署时所使用。
+> 最终部署时建议采用第三方云存储方案。
+
+### 2.4.1 业务
 
 支持服务:
 
@@ -396,7 +402,7 @@ litemall.sql数据库基于nideshop中的[nideshop.sql](https://github.com/tumob
 * 下载,即下载对象数据文件
 * 访问,即直接访问对象数据
 
-### 2.3.2 安全
+### 2.4.2 安全
 
 警告
 > 目前这里没有任何安全机制,这意味着任何人如果知道对象存储服务的地址,都可以直接存储访问对象数据。
@@ -404,3 +410,43 @@ litemall.sql数据库基于nideshop中的[nideshop.sql](https://github.com/tumob
 这样简化的目的是对象存储服务建议最终采用云服务,因此这里仅仅实现一个简单的服务面向测试开发。
 
 如果用户需要局域网部署,那么这里需要加入一定的安全机制。
+
+### 2.4.3 文件Key
+
+每一个上传的文件都会采用一个随机值key,作为当前文件的网络访问链接的一部分。
+
+以后可能需要进一步支持用户自定义Key,例如采用原文件名字作为key。
+
+
+## 2.5 litemall-all
+
+在章节1.5中讨论的部署方案中设计了一种单主机单服务方案,
+也就是说三个后台服务和静态文件都部署在一个Spring Boot应用中。
+
+注意:
+> 这个模块也是可选的,或者说不是非常建议的,应该仅用在主机内存资源紧张的情况下。
+> 最终部署,仍然建议部署多个服务更为安全和稳定。
+
+查看litemall-all模块,代码仅仅只有一个Application类。
+
+实际的原理是litemall-all模块内的pom.xml文件:
+
+1. 声明打包方式是`war`,因此最后会打包war格式
+
+2. 设置`spring-boot-starter-tomcat`包是`provided`,因此最终不会打包
+
+3. 申明依赖`litemall-os-api`、`litemall-wx-api`和`litemall-admin-api`,
+   因此最终会打包;
+   
+   在Application类里面通过`scanBasePackages`即可把三个后台服务模块
+   的服务启动。此外在tomcat中启动,需要采用继承`SpringBootServletInitializer`类
+   的Application。
+   
+4. 利用maven-resources-plugin插件,将litemall-admin模块下编译得到dist文件下的
+   静态文件打包到static目录中。
+   
+   注意,这里只是简单的复制。因此开发者需要保证litemall-all打包前,litemall-admin
+   模块内dist目录下静态文件已经生成。
+   
+最终打包以后则是一个war格式的项目包,包含了三个后台服务和静态文件。
+

+ 33 - 1
doc/3.md

@@ -145,13 +145,41 @@
 或者采用更加符合实际情况的运费计算方式。
 
 #### 3.1.9.2 取消订单
+
+* 用户手动取消
+
+  用户下单以后但是未付款,
+
+* 用户超时取消
+
+  这里,订单超时未付款则系统会自动取消订单。
+  
+  在实现上,则是采用Spring定时功能查询数据库内订单的时间和状态,
+  如果发现超时了,则自动取消订单,而取消订单的具体操作可以简单
+  采用“用户手动取消”相同的操作。
+  
+  目前这里取消状态码是一样的,因此最终可能并不能分别订单取消是因为
+  何种原因而取消的。
+  
 #### 3.1.9.3 取消订单并退款
+
+用户付款以后再申请取消订单比较复杂,涉及微信退款操作,因此这里并没有
+简单作为“取消订单”,而是一种独立的功能。
+
 #### 3.1.9.4 删除订单
 #### 3.1.9.5 订单确认发货
+#### 3.1.9.6 订单超时确认收货
+
+用户收到货物以后可能并不会积极地进行“确认收货”操作,因此有必要实现
+一定时间以后订单自动确认收货。
+
+“订单超时确认”的起始时间如何来设计
+
 #### 3.1.9.6 可评价订单商品信息
 #### 3.1.9.7 订单列表
 #### 3.1.9.8 订单详情
 
+
 ### 3.1.10 评价服务
 
 #### 3.1.10.1 评论列表
@@ -379,10 +407,14 @@ var WxApiRoot = 'http://localhost:8082/wx/';
 
 #### 3.2.5.3 addressId
 
-## 3.3 开发
+## 3.3 开发新功能
+
+本章节介绍如何开发新的微信小程序功能。
 
 ### 3.3.1 小商场页面开发
 
 ### 3.3.2 交互服务API设计
 
 ### 3.3.3 后台服务开发
+
+### 3.3.4 数据库

BIN
doc/pic/1.png


BIN
doc/pic/2.png


BIN
doc/pic1/1-1.png