|
|
@@ -426,10 +426,10 @@ litemall:
|
|
|
notify-url: https://www.example.com/wx/order/pay-notify
|
|
|
```
|
|
|
|
|
|
-这里的`mch-id`和`mch-key`需要开发者在[微信支付平台](https://pay.weixin.qq.com/)注册获取。
|
|
|
+这里的`mch-id`和`mch-key`需要开发者在[微信商户平台](https://pay.weixin.qq.com/)注册获取。
|
|
|
|
|
|
而这里的`notify-url`则应该是项目上线以后微信支付回调地址,当微信支付成功或者失败,
|
|
|
-微信支付平台将向回调地址发生成功或者失败的数据,因此需要确保该地址是
|
|
|
+微信商户平台将向回调地址发生成功或者失败的数据,因此需要确保该地址是
|
|
|
litemall-wx-api模块的WxOrderController类的payNotify方法所服务的API地址。
|
|
|
|
|
|
开发阶段可以采用一些技术实现临时外网地址映射本地,开发者可以百度关键字“微信 内网穿透”自行学习。
|
|
|
@@ -773,7 +773,7 @@ sudo apt-get install mysql-server
|
|
|
sudo apt-get install mysql-client
|
|
|
```
|
|
|
|
|
|
-### 1.5.1.4 项目打包
|
|
|
+#### 1.5.1.4 项目打包
|
|
|
|
|
|
1. 在主机或者开发机打包项目到deploy;
|
|
|
```
|
|
|
@@ -815,7 +815,7 @@ sudo apt-get install mysql-client
|
|
|
存放开发主机运行的脚本,包括package.sh脚本和lazy.sh脚本。
|
|
|
由于是本地开发主机运行,因此开发者可以不用上传到远程主机。
|
|
|
|
|
|
-### 1.5.1.5 项目部署
|
|
|
+#### 1.5.1.5 项目部署
|
|
|
|
|
|
1. 远程主机环境(MySQL和JDK1.8)已经安装好,请确保云主机的安全组已经允许相应的端口。
|
|
|
2. 导入db/litemall.sql
|
|
|
@@ -836,7 +836,7 @@ sudo apt-get install mysql-client
|
|
|
http://xxx.xxx.xxx.xxx:8080/#/login
|
|
|
```
|
|
|
|
|
|
-### 1.5.1.6 项目辅助脚本
|
|
|
+#### 1.5.1.6 项目辅助脚本
|
|
|
|
|
|
在前面的项目打包和项目部署中都是采用手动命令来部署。
|
|
|
这里可以写一些脚本简化:
|
|
|
@@ -876,7 +876,7 @@ cd litemall
|
|
|
### 1.5.2 单机多服务部署方案
|
|
|
|
|
|
|
|
|
-### 1.5.2 集群式云部署方案
|
|
|
+### 1.5.3 集群式云部署方案
|
|
|
|
|
|
由于本项目是面向微小型企业的小商城系统,因此预期的分布式部署方案是
|
|
|
|
|
|
@@ -1049,7 +1049,7 @@ http://www.example.com
|
|
|
1. litemall-wx-api模块的WxOrderController类的payNotify方法的链接换成合适的地址。
|
|
|
|
|
|
注意:
|
|
|
- > 换成什么地址都可以,但是这里不应该暴露出来。也就是说这个地址是微信支付平台
|
|
|
+ > 换成什么地址都可以,但是这里不应该暴露出来。也就是说这个地址是微信商户平台
|
|
|
> 和这里的小商场后端服务之间的交互API,对外公开会存在安全隐患。
|
|
|
|
|
|
2. litemall-core模块需要配置application-core.yml
|
|
|
@@ -1080,9 +1080,12 @@ http://www.example.com
|
|
|
这样可以避免开发者对模块内部的开发配置文件造成修改;
|
|
|
3. 管理后台前端litemall-admin模块`config/prod.env.js`中的`BASE_API`设置管理后台后端服务的服务地址。
|
|
|
|
|
|
-### 1.6.5 上线脚本
|
|
|
+### 1.6.5 项目评估和调整
|
|
|
|
|
|
-本项目目前没有上线脚本,不过可以参考1.5.1节中的部署脚本。
|
|
|
+本项目只是参考项目,项目代码质量和功能不可能符合开发者的最终需求,
|
|
|
+因此开发者**请务必仔细评估项目代码**。
|
|
|
+
|
|
|
+此外,请阅读1.7.7节,了解项目当前所有的TODO事项,特别是“演示平台TODO”。
|
|
|
|
|
|
### 1.6.6 项目优化
|
|
|
|
|
|
@@ -1245,7 +1248,86 @@ application配置文件中,但是问题就是数据库信息一旦改变则其
|
|
|
|
|
|
注意
|
|
|
> 目前项目校验思路是这样,但是实际代码的校验还不完善,
|
|
|
-> 例如前端校验很好
|
|
|
+> 例如前端校验代码不完善,导致用户体验较差。
|
|
|
+
|
|
|
+### 1.7.6 后端响应错误码
|
|
|
+
|
|
|
+后端服务的响应结果是:
|
|
|
+```
|
|
|
+{
|
|
|
+ errno: 错误码,
|
|
|
+ errmsg:错误消息,
|
|
|
+ data: 响应数据
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+当errno是0时,则data保存业务数据;
|
|
|
+当error是非0时,则业务失败,errmsg保存具体错误信息。
|
|
|
+
|
|
|
+目前,errno存在四种形式:
|
|
|
+* 4xx,前端错误,说明前端开发者需要重新了解后端接口使用规范:
|
|
|
+ * 401,参数错误,即前端没有传递后端需要的参数;
|
|
|
+ * 402,参数值错误,即前端传递的参数值不符合后端接收范围。
|
|
|
+* 5xx,后端系统错误,除501外,说明后端开发者应该继续优化代码,尽量避免返回后端系统错误码:
|
|
|
+ * 501,验证失败,即后端要求用户登录;
|
|
|
+ * 502,系统内部错误,即没有合适命名的后端内部错误;
|
|
|
+ * 503,业务不支持,即后端虽然定义了接口,但是还没有实现功能;
|
|
|
+ * 504,更新数据失效,即后端采用了乐观锁更新,而并发更新时存在数据更新失效;
|
|
|
+ * 505,更新数据失败,即后端数据库更新失败(正常情况应该更新成功)。
|
|
|
+* 6xx,小商城后端业务错误码,具体见litemall-admin-api模块的`AdminResponseCode`类。
|
|
|
+* 7xx,管理后台后端业务错误码,具体见litemall-wx-api模块的`WxResponseCode`类。
|
|
|
+
|
|
|
+需要指出的是,小商场后端可能返回4xx、5xx和6xx错误码;管理后台后端则可能返回4xx、5xx和7xx错误码。
|
|
|
+这样设计原因是方便小商场前端和管理后台前端区别对待。
|
|
|
+
|
|
|
+小商城前端处理后端响应错误码,存在三种处理方式:
|
|
|
+* 如果是4xx,说明前端开发者请求后端API时使用方式存在问题。
|
|
|
+例如,后端需要参数“name”,但是前端却没有传值,这个时候后端返回”用户名不对“
|
|
|
+没有任何意义,因为这里前端使用错误。相反,简单地返回“参数不对”反而会及早提醒
|
|
|
+前端开发者使用出现了问题。
|
|
|
+* 如果是5xx,(除501外)说明后端系统出现错误,后端开发者应该修复或者优化,此外
|
|
|
+前端可以在请求响应处统一处理5xx错误,而不是把错误信息返回到具体页面。
|
|
|
+例如,后端返回“更新数据失败”,说明数据库更新时出现异常,因此前端请求响应处
|
|
|
+统一简单报错“系统出错,联系管理员”,这样管理员可以及时联系后端开发者。而后端开发者
|
|
|
+则需要评估具体错误码和错误信息,例如这里的“更新数据失败”很可能是数据表调整字段
|
|
|
+导致Java代码的模型对象和数据库表不一致,此时后端开发者就可以及时修复。
|
|
|
+此外,对于501验证失败,则前端请求响应处可以统一处理跳转登录页面。
|
|
|
+* 如果是6xx,则说明是具体业务错误,此时前端需要在业务具体页面显示错误信息即可,同时
|
|
|
+这里也要求后端开发者书写良好友好的业务错误信息,因为会向最终用户显示。
|
|
|
+
|
|
|
+和小商场前端类似,管理后台前端处理后端响应错误码也存在三种类似的处理方式。
|
|
|
+
|
|
|
+### 1.7.7 TODO
|
|
|
+
|
|
|
+本项目存在一些TODO,**强烈建议**开发者上线前仔细审阅是否存在问题和做相应调整。
|
|
|
+开发者可以使用IDE找到这些TODO。
|
|
|
+
|
|
|
+下面列出一些重要的TODO:
|
|
|
+
|
|
|
+#### 1.7.7.1 演示平台TODO
|
|
|
+
|
|
|
+管理后台部署以后,有开发者在演示平台修改密码,导致其他开发者不能登录演示平台。
|
|
|
+因此在修改密码后端服务代码中加了限制代码,不允许用户修改userId=1的超级管理员密码。
|
|
|
+
|
|
|
+因此如果开发者上线管理后台,请**务必删除**这些代码。
|
|
|
+
|
|
|
+见`AdminProfileController`类和`AdminAdminController`类。
|
|
|
+
|
|
|
+#### 1.7.7.2 微信退款TODO
|
|
|
+
|
|
|
+管理后台管理员点击退款按钮时,管理后台会通过微信退款API请求微信商户平台退款。
|
|
|
+但是从安全角度考虑,**强烈建议**开发者删除微信退款代码,而登录微信商户平台手动退款。
|
|
|
+或者开发者添加安全相关代码,例如实现短信验证码。
|
|
|
+
|
|
|
+见`AdminOrderController`类
|
|
|
+
|
|
|
+再次提醒,本项目不承担任何使用后果。
|
|
|
+
|
|
|
+#### 1.7.7.3 未完善TODO
|
|
|
+
|
|
|
+有些业务只是实现基本功能,因此这里TODO提醒开发者自行思考。
|
|
|
|
|
|
-### 1.7.6 后端校验返回码
|
|
|
+#### 1.7.7.4 重构TODO
|
|
|
|
|
|
+有些业务需求不是很清晰,导致实现时可能存在不合理地方,这里TODO提醒
|
|
|
+开发者审阅代码逻辑。
|