diff --git a/README.md b/README.md index 142e8cc1..8327c81c 100644 --- a/README.md +++ b/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项目包 + 警告 == diff --git a/deploy/README.md b/deploy/README.md index 8f5b16a1..6e897996 100644 --- a/deploy/README.md +++ b/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 diff --git a/doc/1.md b/doc/1.md index ed77ebcb..074a73e2 100644 --- a/doc/1.md +++ b/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方案, +> 因此开发者可能需要做一些配置方面的调整,例如三个后台服务地址调整。 \ No newline at end of file diff --git a/doc/2.md b/doc/2.md index f737d0e6..8a09175f 100644 --- a/doc/2.md +++ b/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格式的项目包,包含了三个后台服务和静态文件。 + diff --git a/doc/3.md b/doc/3.md index 4f9a7dac..c28bab59 100644 --- a/doc/3.md +++ b/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 数据库 \ No newline at end of file diff --git a/doc/pic/1.png b/doc/pic/1.png index 8ba19ba4..e27a1bd9 100644 Binary files a/doc/pic/1.png and b/doc/pic/1.png differ diff --git a/doc/pic/2.png b/doc/pic/2.png index 9a2ce943..e1d5f5f2 100644 Binary files a/doc/pic/2.png and b/doc/pic/2.png differ diff --git a/doc/pic1/1-1.png b/doc/pic1/1-1.png index 070b8b54..0e5a46f3 100644 Binary files a/doc/pic1/1-1.png and b/doc/pic1/1-1.png differ