diff --git a/CHANGELOG.md b/CHANGELOG.md index c8d717b2..63b46002 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -91,7 +91,7 @@ *2018-04-21*,项目结构调整,增加了两个模块 - * `小商场`的后台服务代码添加注释,校验输入参数 + * `小商场`的后端服务代码添加注释,校验输入参数 * `小商场`商品无货时显示“商品已售空” * `管理后台`支持管理员同一账户多终端登录,方便演示 * `管理后台`专题内容支持富文本编辑 @@ -99,18 +99,18 @@ * `基础系统`litemall-os-api支持浏览器显示。 * `基础系统`新增litemall-core模块,综合了litemall-os-api、litemall-wx-api 和litemall-admin-api的共性代码 - * `基础系统`新增litemall-all模块作为包裹模块,支持三个后台服务和静态文件 + * `基础系统`新增litemall-all模块作为包裹模块,支持三个后端服务和静态文件 打包成一个war项目包 ## V 0.3.0 *2018-04-07*,业务模块从物理删除调整成逻辑删除 -* `小商场`的后台服务加密用户账号密码 +* `小商场`的后端服务加密用户账号密码 * `小商场`如果用户选择货品,则显示货品对应的价格;否则显示商品价格 * `小商场`只有规格都选择,则商品页面才显示所对应货品的规格文本 * `管理后台`商品详细信息支持tinymce富文本编辑 -* `管理后台`的后台服务加密管理员密码 +* `管理后台`的后端服务加密管理员密码 * `管理后台`完善登录退出逻辑 * `基础系统`数据库中除regions几个表,其他所有表都添加`add_time`和`deleted`字段 * `基础系统`litemall-db模块不支持数据物理删除,删除则设置`deleted`,而查询则过滤`deleted` diff --git a/CONTRIBUTE.md b/CONTRIBUTE.md index ba3ee769..ef14a64a 100644 --- a/CONTRIBUTE.md +++ b/CONTRIBUTE.md @@ -44,7 +44,7 @@ litemall的设计受众是小微型企业,而不是互联网企业,因此lit 这里是谨慎的。例如,如果要引入缓存技术,则需要去学习缓存相关的类库,以及可能会遇到一些使用中存在的问题。 而v2.0.0之前其实没有必要提前考虑性能问题。同样地,单点登录技术是分布式架构中必须存在的基本功能,但是 - 目前两个后台服务分别采用各自登录方案即可。 + 目前两个后端服务分别采用各自登录方案即可。 注意: > 这里并不是拒绝新技术,而是希望采取一个渐进式的谨慎的态度。 diff --git a/README.md b/README.md index 7bea964c..bf10833b 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,7 @@ litemall = Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端 * litemall_table.sql * litemall_data.sql -3. 启动小商场和管理后台的后台服务 +3. 启动小商场和管理后台的后端服务 打开命令行,输入以下命令 ```bash @@ -131,7 +131,7 @@ V 1.0.0 完成以下目标: 1. 除了部分功能(如优惠券等),小商城的优化和改进基本结束; 2. 管理后台基本实现所有表的CRUD操作; -3. 后台服务能够对参数进行检验。 +3. 后端服务能够对参数进行检验。 V 2.0.0 完成以下目标: @@ -141,7 +141,7 @@ V 2.0.0 完成以下目标: V 3.0.0 完成以下目标: 1. 管理后台一些辅助功能 -2. 后台服务加强安全功能、配置功能 +2. 后端服务加强安全功能、配置功能 3. 缓存功能以及优化一些性能 ## 警告 diff --git a/doc/FAQ.md b/doc/FAQ.md index 1b6dcb34..17f5cb38 100644 --- a/doc/FAQ.md +++ b/doc/FAQ.md @@ -19,7 +19,7 @@ 现象: -微信开发者工具修改了开发者自己申请的appid,后台也更新了相应信息,但是微信登录仍然报错。 +微信开发者工具修改了开发者自己申请的appid,后端也更新了相应信息,但是微信登录仍然报错。 原因: @@ -41,10 +41,10 @@ 解决方案: -1. 确保小商场后台服务可以访问,可以通过手机浏览器访问后台服务地址测试 - * 小商场的后台服务地址是localhost,则手机不可访问; - * 小商场的后台服务地址是局域网地址,而手机不在局域网中(例如不是相同wifi,或者手机是移动网络) - * 小商场的后台服务未启动 +1. 确保小商场后端服务可以访问,可以通过手机浏览器访问后端服务地址测试 + * 小商场的后端服务地址是localhost,则手机不可访问; + * 小商场的后端服务地址是局域网地址,而手机不在局域网中(例如不是相同wifi,或者手机是移动网络) + * 小商场的后端服务未启动 2. 手机小商场的**调试功能**开启 ### 1.4 第三方手机测试不正常 @@ -55,7 +55,7 @@ 解决方案: -1. 确保小商场后台服务可以访问,可以通过第三者手机浏览器访问后台服务地址测试 +1. 确保小商场后端服务可以访问,可以通过第三者手机浏览器访问后端服务地址测试 2. 第三者手机小商场的**调试功能**开启 3. 在微信小程序平台设置第三者的微信账号是**体验者** @@ -109,7 +109,7 @@ litemall.wx.notify-url= 现象: -有时(特别是采用mybatis generator重新生成代码)后台服务报错 +有时(特别是采用mybatis generator重新生成代码)后端服务报错 ``` org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): org.linlinjava.litemall.db.dao.XXXX diff --git a/doc/pic/nginx.conf b/doc/pic/nginx.conf index 1c117166..df8fc8a0 100644 --- a/doc/pic/nginx.conf +++ b/doc/pic/nginx.conf @@ -69,24 +69,12 @@ http { ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; - location ^~ /wx { - proxy_pass http://localhost:8082; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - - location ^~ /admin { - proxy_pass http://localhost:8083; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - location / { - root /home/ubuntu/deploy/litemall-admin/dist; - index index.html index.htm; - } + proxy_pass http://localhost:8080; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } } server { diff --git a/doc/platform.md b/doc/platform.md index 0f7eaa5c..fcf53236 100644 --- a/doc/platform.md +++ b/doc/platform.md @@ -53,7 +53,7 @@ litemall数据库由三个sql文件组成,在litemall-db文件夹下面的sql ### 2.1.1 商品和货品设计 -这里商品存在商品表(litemall_goods),商品属性表(litemall_goods_attribute),商品规格表(litemall_goods_specification),商品货品表(litemall_product)四种表 +这里商品存在商品表(litemall_goods),商品属性表(litemall_goods_attribute),商品规格表(litemall_goods_specification),商品货品表(litemall_goods_product)四种表 商品表是一种商品的基本信息,主要包括商品介绍,商品图片,商品所属类目,商品品牌商等; @@ -70,7 +70,7 @@ litemall数据库由三个sql文件组成,在litemall-db文件夹下面的sql * 多个规格和单一规格值,可以简化成第一种情况,或者采用第四种情况,通常实际情况下不常见; * 多个规格和多个规格值,通常是两种规格或者三种规格较为常见,而且对应的价格不完全相同。 -商品货品则是最终实现商品库存管理、购买业务的实体对象,存在多个规格值、数量和价格。 +商品货品表则是最终实现商品库存管理、购买业务的实体对象,存在多个规格值、数量和价格。 例如,同样的衣服品牌,可能因为不能尺寸和颜色而存在最终的货品,这里每个货品的价格可以一样,也可以不一样。 总结一下,一个普通商品,实际上在数据库中,存在一个商品表项,存在(至少0个)多个商品属性表项目,存在(至少一个)多个商品规格表项, @@ -135,33 +135,45 @@ litemall数据库由三个sql文件组成,在litemall-db文件夹下面的sql ### 2.1.3 行政区域设计 +litemall_region表保存了行政区域信息,包括省级、市级、县级三个等级, + 原nideship.sql中存在region数据,但是litemall.sql的region数据则来自 [Administrative-divisions-of-China](https://github.com/modood/Administrative-divisions-of-China)项目。 -从该项目中导入数据到litemall.sql的litemall-province、litemall-city、litemall-area和litemall-street四个临时表; -然后按照项目的要求采用一定的代码重新生成一个新的litemall-region表; -最后删除四个临时表。 - ### 2.1.4 订单设计 -订单信息主要由基本信息、商品信息、地址信息、费用信息、快递信息、支付信息和其他信息组成。 +订单信息主要由基本信息、商品信息、地址信息、费用信息、快递信息、支付信息和其他信息组成, +由litemall_order表和litemall_order_goods表保存。 * 基本信息 -订单创建时的一些基本信息。 + +订单创建时的一些基本信息,例如用户、订单状态和订单留言等。 +其中订单状态是最重要的信息。 * 商品信息 + 由于订单可以存在多个商品,因此订单的商品信息是由独立的订单商品表记录(可能更应该称为货品)。 * 费用信息 -* 快递信息 -目前快递信息仅仅记录快递公司、快递单号、快递发出时间、快递接收时间。 -而如果快递过程中如果存在一些异常,例如物品丢失,则目前系统难以处理。 +订单一些费用情况,例如商品总价、优惠减免和实际付费等。 -关于快递费的计算,目前采取简单方式,即满88元则免费,否则10元。 +* 收货信息 + +用户下单时选择的收货地址以及联系人信息。 + +* 快递信息 + +目前快递信息仅仅记录快递公司、快递单号、快递发出时间。 +而如果快递过程中如果存在一些异常,例如物品丢失,则目前系统难以处理。 * 支付信息 +支付时间和支付订单ID。 + +* 评论信息 + +订单商品的评论情况。 * 其他信息 @@ -216,16 +228,15 @@ litemall数据库由三个sql文件组成,在litemall-db文件夹下面的sql 目前的设计是不执行物理删除,而是逻辑删除,因此用户查看自己订单时将看不到这些“已删除”的订单。 注意: -> 1. 目前退款相关功能未完成。 -> 2. 在上图中可以看到`101`到`101`的状态变化,这里只是小商场用户的操作,不会影响订单状态码。 -> 如果用户点击付款时,后台服务会生成预支付会话id,但是不会影响订单状态。 -> 如果而用户支付过程中,放弃支付,则也不会影响订单状态。 +> 在上图中可以看到`101`到`101`的状态变化,这里只是小商场用户的操作,不会影响订单状态码。 +> 如果用户点击付款时,后端服务会生成预支付会话id,但是不会影响订单状态。 +> 如果而用户支付过程中,放弃支付,则也不会影响订单状态。 -#### 2.1.4.2 状态变化所对应的流程 +#### 2.1.4.2 状态变化 * 初始 -> 101 -小商场用户在小商场点击`下单`按钮,此时小商城后台服务会生产商户订单。 +小商场用户在小商场点击`下单`按钮,此时小商城后端服务会生产商户订单。 所对应的后台服务方法是litemall-wx-api模块的`WxOrderController.submit`方法。 @@ -306,9 +317,9 @@ litemall数据库由三个sql文件组成,在litemall-db文件夹下面的sql 注意: > 上述订单状态变化中具体的逻辑处理可以参考相应模块文档和模块代码。 -#### 2.1.4.2 状态码所支持的用户操作 +#### 2.1.4.2 用户操作 -状态码标识了订单的状态,但是对于用户而言,真正关心的只是他们能够进行的操作, +订单状态码标识了订单的状态,但是对于用户而言,真正关心的只是他们能够进行的操作, 也就是在小商场的小程序端用户可以进行点击的按钮操作,目前支持: * `支付`,如果下单后未立即支付,则订单详情页面会出现`支付`按钮; @@ -318,9 +329,7 @@ litemall数据库由三个sql文件组成,在litemall-db文件夹下面的sql * `申请退货`,如果用户已经确认收货同时未超过一段时间,则订单详情页面会出现`申请退货`按钮; 注意,这里如果是系统超时自动确认收货,则不会出现; * `去评价`,如果用户确认收货以后,则订单详情页面会出现`去评价`按钮; - 注意,这里如果是系统超时自动确认收货,则也会出现; * `再次购买`,如果用户确认收货以后,则订单详情页面会出现`再次购买`按钮; - 注意,这里如果是系统超时自动确认收货,则也会出现; * `删除`,如果当前订单状态码是102、103、203、401和402时,则订单详情页面会出现`删除订单`按钮; 注意,这里的删除操作是逻辑删除,即设置订单的删除状态`deleted`。 @@ -352,42 +361,89 @@ litemall数据库由三个sql文件组成,在litemall-db文件夹下面的sql * 401 - 用户可以`退货`、`删除`、`去评价`、`再次购买` + 用户可以`删除`、`去评价`、`再次购买` * 402 用户可以`删除`、`去评价`、`再次购买` -开发者可以参考litemall-db模块的OrderUtil类。 - #### 2.1.4.3 售后处理 虽然这里用户有`退款`操作,但是目前不支持退货相关业务。 -#### 2.1.4.4 黑名单 +#### 2.1.4.4 商品评价 -从一些资料看,如果用户订单多次取消,应该加入黑名单。 -目前不支持。 +在litemall_order表中存在`comments`字段,表示有几个订单商品没有评价; +而在litemall_order_goods表中存在`comment`字段,表示当前订单商品的评论ID。 -### 2.1.5 通用设计 +* 当用户确认收货以后,`comments`设置当前订单中未评价的商品数量。而`comment`设置0; +* 当用户评价一个订单商品,`comments`会减一,而`comment`指向新创建的评论; +* 如果用户不评论超期,`comments`会设置0,而`comment`设置-1; + +### 2.1.5 评论设计 + +评论表litemall_comment保存评论相关的信息,其中最关键的是`type`字段和`value_id`字段。 + +这里`type`字段表示当前评论类型,目前存在三种类型: + +* 如果type=0,则当前评论是订单商品评论,value_id是订单商品ID; +* 如果type=1,则当前评论是专题评论,value_id是专题ID; +* 如果type=2,则当前评论是订单商品评论的回复,value_id是订单商品的评论ID。 + +### 2.1.6 团购设计 + +团购是由团购规则表litemall_groupon_rules和团购活动表litemall_groupon组成。 + +管理员在管理后台对一些商品配置团购规则,保存在litemall_groupon_rules表中。 + +用户在小商场中则看到团购规则给出的优惠信息。 +接下来用户存在两种操作: +第一种是,用户开团,保存在litemall_groupon中,用户主动分享商品团购页面给朋友; +第二张是,用户参团,也保存在litemall_groupon中。 + +只有开团人数符合团购规则条件,创建的订单才会有效,否则管理员需要退款取消当前团购。 + +### 2.1.7 优惠券设计 + +### 2.1.8 系统配置设计 + +系统配置表litemall_system保存系统的配置信息。 + +这里需要注意的是,在Java代码层系统配置表只能执行更新操作, +不能执行创建和删除操作。 + +这里的系统配置数据都应该是开发者基于系统的配置情况在数据库中手动创建。 + +### 2.1.9 存储对象设计 + +存储对象表litemall_storage保存上传文件信息。 + +当用户或者管理员上传图像时,图像文件会保存到本地或者第三方云存储服务器中, +同时在存储对象表中记录一下。 + +### 2.1.10 通用设计 + +除了以上表,数据库还存在其他一些业务表,例如专题表litemall_topic, +但是都很直观,不需要多讨论。 以下是一些表设计中无具体业务意义可通用的字段。 -#### 2.1.5.1 deleted +#### 2.1.10.1 deleted 除极少数表,其他所有表都存在`deleted`字段,支持逻辑删除。 因此目前删除数据时,不会直接删除数据,而是修改`deleted`字段。 当然,数据库管理员可以连接到数据库直接删除数据,或者开发者 可以修改这里的逻辑采用物理删除。 -#### 2.1.5.2 add_time +#### 2.1.10.2 add_time 除极少数表,其他所有表都存在`add_time`字段,记录数据创建时间。 -#### 2.1.5.3 version +#### 2.1.10.3 update_time -如果开发者需要在访问表时采用乐观锁机制,则需要在表中设置`version`字段, -这个字段开发者不需要管理,而是由程序自动使用,来提高乐观锁机制。 +除极少数表,其他所有表都存在`add_time`字段,记录数据修改时间。 + +此外,此外开发者可以利用update_time来实现乐观锁更新机制。 具体使用方法可以参考`2.2.8 乐观锁` diff --git a/doc/project.md b/doc/project.md index 0de40067..cb71f946 100644 --- a/doc/project.md +++ b/doc/project.md @@ -17,7 +17,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实 由litemall-wx-api模块、litemall-wx模块和renard-wx模块组成; -* 后台管理子系统(admin) +* 管理后台子系统(admin) 由litemall-admin-api模块和litemall-admin模块组成。 @@ -174,8 +174,8 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实 如图所示,当前开发阶段的方案: * MySQL数据访问地址`jdbc:mysql://localhost:3306/litemall` -* litemall-wx-api后台服务地址`http://localhost:8080/wx`,数据则来自MySQL -* litemall-admin-api后台服务地址`http://localhost:8080/admin`,数据则来自MySQL +* litemall-wx-api后端服务地址`http://localhost:8080/wx`,数据则来自MySQL +* litemall-admin-api后端服务地址`http://localhost:8080/admin`,数据则来自MySQL * litemall-admin前端访问地址`http://localhost:9527`, 数据来自litemall-admin-api * litemall-wx没有前端访问地址,而是直接在微信小程序工具上编译测试开发,最终会部署到微信官方平台(即不需要自己部署web服务器),而数据则来自litemall-wx-api @@ -262,7 +262,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实 1. 安装微信小程序开发工具; 2. 导入本项目的litemall-wx模块(或者renard-wx模块)文件夹; -3. 编译前,请确定litemall-all模块已经运行,而litemall-wx模块的config文件夹中的api.js已经设置正确的后台数据服务地址; +3. 编译前,请确定litemall-all模块已经运行,而litemall-wx模块的config文件夹中的api.js已经设置正确的后端数据服务地址; 4. 点击`编译`,如果出现数据和图片,则运行正常 注意: @@ -693,16 +693,16 @@ litemall: 最后,**如果项目部署云主机,则根据开发者的部署环境在以下文件中或代码中修改相应的配置。** 1. MySQL数据库设置合适的用户名和密码信息; -2. 后台服务模块设置合适的配置信息; -3. 小商场前端litemall-wx模块`config/api.js`的`WxApiRoot`设置小商场后台服务的服务地址; -4. 管理后台前端litemall-admin模块`config/dep.env.js`中的`BASE_API`设置管理后台后台服务的服务地址。 +2. 后端服务模块设置合适的配置信息; +3. 小商场前端litemall-wx模块`config/api.js`的`WxApiRoot`设置小商场后端服务的服务地址; +4. 管理后台前端litemall-admin模块`config/dep.env.js`中的`BASE_API`设置管理后台后端服务的服务地址。 实际上,最终的部署方案是灵活的: * 可以是同一云主机中安装一个Spring Boot服务,同时提供litemall-admin、litemall-admin-api和litemall-wx-api三种服务 * 可以单一云主机中仅安装一个tomcat/nginx服务器部署litemall-admin静态页面分发服务, - 然后部署两个Spring Boot的后台服务; -* 也可以把litemall-admin静态页面托管第三方cdn,然后开发者部署两个后台服务 + 然后部署两个Spring Boot的后端服务; +* 也可以把litemall-admin静态页面托管第三方cdn,然后开发者部署两个后端服务 * 当然,甚至多个服务器,采用集群式并发提供服务。 注意 @@ -883,8 +883,8 @@ cd litemall 1. 专门的云数据库部署数据 2. 专门的云存储方案 3. 专门的CDN分发管理后台的静态文件 -4. 一台云主机部署管理后台的后台服务 -5. 一台或多台云主机部署小商场的后台服务 +4. 一台云主机部署管理后台的后端服务 +5. 一台或多台云主机部署小商场的后端服务 虽然由于环境原因没有正式测试过,但是这种简单的集群式场景应该是可行的。 在1.5.2节中所演示的三个服务是独立的,因此延伸到这里分布式是非常容易的。 @@ -905,10 +905,10 @@ cd litemall 注意 > `www.example.com`仅作为实例,不是真实环境下的域名。 -这里列举一种基于1.5.2的单机多服务上线方案,即: -* 一个litemall-admin-api服务,独立提供管理后台前端的后台数据; -* 一个litemall-wx-api服务,独立提供小商城前端的后台数据; -* 一个nginx,对外出来litemall-admin的静态文件。 +这里列举一种基于1.5.1的单机单服务上线方案,即一个all后端服务,同时提供三种数据: +* 提供管理后台的前端文件; +* 提供管理后台前端所需要的数据; +* 提供小商城前端所需要的数据。 ![](pic1/1-12.png) @@ -925,9 +925,6 @@ cd litemall https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04 -在部署方案中建议安装了tomcat来访问管理后台,而这里上线方案中则建议使用nginx, -此时我们可以卸载tomcat(当然不卸载也可以,即同时支持8080端口访问)。 - #### 1.6.2.1 nginx安装 采用命令 @@ -993,39 +990,13 @@ https://www.example.com 此时,可以看到https协议的nginx欢迎页面。 -#### 1.6.2.3 litemall-admin静态文件 +#### 1.6.2.3 反向代理Spring Boot后端 修改`/etc/nginx/nginx.conf`文件,配置nginx静态web文件目录 ``` server { location / { - root /home/ubuntu/deploy/litemall-admin/dist; - index index.html index.htm; - } -} -``` - -打开浏览器,输入以下地址: -``` -https://www.example.com -``` - -此时,可以看到管理后台的页面。 - -#### 1.6.2.3 反向代理两个个后台服务 - -继续修改`/etc/nginx/nginx.conf`文件,配置nginx静态web文件目录 -``` -server { - location ^~ /wx { - proxy_pass http://localhost:8082; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - - location ^~ /admin { - proxy_pass http://localhost:8083; + proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -1037,9 +1008,10 @@ server { ``` https://www.example.com/wx/index/index https://www.example.com/admin/index/index +https://www.example.com/admin/index/index ``` -此时,看到后台数据说明反向代理配置成功。 +此时,看到后端数据说明反向代理配置成功。 #### 1.6.2.4 全站加密 @@ -1068,16 +1040,17 @@ http://www.example.com > 本人对nginx也不了解,仅仅依靠网络知识配置了简单的效果。 > 更多配置方法和功能,请开发者自行学习。 -### 1.6.3 小程序端上线 +### 1.6.3 小商场上线 -这里参考小程序官方文档,上线自己的小商城。 +在1.6.2.3节"反向代理Spring Boot后端"成功以后,其实小商场的后端已经上线成功。 +这里介绍小商场的前端上线过程: 上线之前需要修改代码或者配置文件: 1. litemall-wx-api模块的WxOrderController类的payNotify方法的链接换成合适的地址。 注意: > 换成什么地址都可以,但是这里不应该暴露出来。也就是说这个地址是微信支付平台 - > 和这里的小商场后台服务之间的交互API,对外公开会存在安全隐患。 + > 和这里的小商场后端服务之间的交互API,对外公开会存在安全隐患。 2. litemall-core模块需要配置application-core.yml @@ -1096,16 +1069,16 @@ http://www.example.com 3. litemall-wx模块的`project.config.json`文件调整相应的值, 特别是`appid`要设置成开发者申请的appid。 -### 1.6.4 管理后台服务上线 +### 1.6.4 管理后台上线 -管理后台服务上线,则开发者需要自己的线上环境在以下文件中或代码中修改相应的配置。 +在1.6.2.3节"反向代理Spring Boot后端"成功以后,其实管理后台已经上线成功, +包括管理后台的前端和后端,会同时对外提供管理后台的前端文件和后端数据。 +当然,这里开发者需要自己的线上环境在以下文件中或代码中修改相应的配置。 1. MySQL数据库设置合适的用户名和密码信息; -2. 后台服务模块设置合适的配置信息,建议开发者参考deploy/litemall的外部配置文件, +2. 管理后台后端服务模块设置合适的配置信息,建议开发者参考deploy/litemall的外部配置文件, 这样可以避免开发者对模块内部的开发配置文件造成修改; -3. 小商场前端litemall-wx模块`config/api.js`的`WxApiRoot`设置小商场后台服务的服务地址; -4. 管理后台前端litemall-admin模块`config/prod.env.js`中的`BASE_API`设置管理后台后台服务的服务地址。 - +3. 管理后台前端litemall-admin模块`config/prod.env.js`中的`BASE_API`设置管理后台后端服务的服务地址。 ### 1.6.5 上线脚本 @@ -1115,33 +1088,28 @@ http://www.example.com 以下是部署方案中出现而在上线方案中可以优化的一些步骤。 -#### 1.6.6.1 卸载tomcat - -如果部署方案中采用tomcat而8080端口访问后台,而这里配置nginx后, -可以直接采用80端口访问,因此tomcat可以卸载。 - -#### 1.6.6.2 管理后台前端文件启动优化 +#### 1.6.6.1 管理后台前端文件启动优化 litemall-admin编译得到的前端文件在第一次加载时相当耗时,这里需要一些措施来优化启动速度 * 静态文件托管CDN - 在上节中,建议采用卸载tomcat,采用nginx托管管理后台的静态文件。 + 在上节中,采用Spring Boot来分发管理后台的静态文件。 这里可以进一步地,把静态文件托管到CDN,当然这里是需要收费。 * gzip压缩 * 动态加载 -#### 1.6.6.3 后台服务内部访问 +#### 1.6.6.2 后端服务内部访问 -原来后台服务可以通过域名或者IP直接对外服务,而这里采用nginx反向代理后可以 -通过80端口访问后台服务。因此,会存在这样一种结果: -* 用户可以https协议的80端口访问后台服务(nginx反向代理) -* 用户也可以通过http协议的8081、8082、8083访问后台服务(spring boot) +原来后端服务(包括小商城的后端服务和管理后台的后端服务)可以通过域名或者IP直接对外服务,而这里采用nginx反向代理后可以 +通过80端口访问后端服务。因此,会存在这样一种结果: +* 用户可以https协议的80端口访问后端服务(nginx反向代理) +* 用户也可以通过http协议的8080访问后端服务(spring boot) 由于http不是安全的,这里可能存在安全隐患 -而如果取消后台服务的对外访问,这样可以保证用户只能采用安全的https协议访问后台服务。 +而如果取消后端服务的对外访问,这样可以保证用户只能采用安全的https协议访问后端服务。 同时,对外也能屏蔽内部具体技术架构细节。 #### 1.6.6.4 nginx优化 @@ -1180,21 +1148,10 @@ litemall-admin编译得到的前端文件在第一次加载时相当耗时,这 #### 1.7.2.2 .gitlab-ci.yml部署 -如果项目源代码托管在gitlab中,可以采用这个配置文件自动部署。 +目前不支持 #### 1.7.2.3 docker部署 -目前未支持 +目前不支持 ### 1.7.3 Spring Boot配置方案 - -当前两个后台服务是采用Spring Boot开发,但是在参数配置方面可能需要这里说明一下, -帮助开发者更好地理解这里作为多模块Spring Boot的配置方式。 - -#### 1.7.3.1 profile - -#### 1.7.3.2 stage - -### 1.7.4 项目配置 - -这里列出一些项目相关的基本配置信息: \ No newline at end of file diff --git a/doc/wxmall.md b/doc/wxmall.md index 03e70463..46ccd066 100644 --- a/doc/wxmall.md +++ b/doc/wxmall.md @@ -5,7 +5,7 @@ * 小商城前端,即litemall-wx模块 * 微信小程序 * 小商城后端,即litemall-wx-api模块 - * Spring Boot 1.5.10 + * Spring Boot 2.x * Spring MVC * [weixin-java-tools](https://gitee.com/binary/weixin-java-tools) @@ -84,7 +84,7 @@ litemall 3. 部署后台服务到云主机 -4. litemall-wx的api.js设置云主机的公网IP。 +4. litemall-wx的api.js设置云主机的域名。 编译运行,尝试微信支付。 ## 3.1 litemall-wx-api @@ -95,9 +95,9 @@ litemall #### 3.1.1.1 账号登录 -#### 3.1.1.4 微信登录 +#### 3.1.1.2 微信登录 -#### 3.1.1.5 账号注册 +#### 3.1.1.3 账号注册 目前账号注册只是简单的根据用户名和密码新建一个账号。