update project
80
README.md
@@ -4,11 +4,14 @@
|
||||
|
||||
litemall = Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端
|
||||
|
||||
上架实例
|
||||
* [文档](https://linlinjava.gitbook.io/litemall)
|
||||
* [贡献](https://linlinjava.gitbook.io/litemall/contribute)
|
||||
* [FAQ](https://linlinjava.gitbook.io/litemall/7)
|
||||
|
||||
## 上架实例
|
||||
|
||||

|
||||
|
||||
|
||||
## 项目代码
|
||||
|
||||
* [码云](https://gitee.com/linlinjava/litemall)
|
||||
@@ -25,11 +28,9 @@ litemall = Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端
|
||||
|
||||

|
||||
|
||||
## 效果
|
||||
## 功能
|
||||
|
||||
### 小商城效果
|
||||
|
||||

|
||||
### 小商城功能
|
||||
|
||||
* 首页
|
||||
* 专题列表、专题详情
|
||||
@@ -46,9 +47,7 @@ litemall = Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端
|
||||
* 地址列表、地址添加、地址删除
|
||||
* 收藏、足迹
|
||||
|
||||
### 管理平台效果
|
||||
|
||||

|
||||
### 管理平台功能
|
||||
|
||||
* 会员管理
|
||||
* 商城管理
|
||||
@@ -68,18 +67,15 @@ litemall = Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端
|
||||
4. 也可以点击“预览”,然后手机扫描登录。
|
||||
注意,手机需要打开调试功能。
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
### 管理平台演示访问
|
||||
|
||||
1. 浏览器打开,输入以下网址[http://122.152.206.172:8080/#/login](http://122.152.206.172:8080/#/login)
|
||||
2. 管理员名称`admin123`,管理员密码`admin123`
|
||||
|
||||
## 文档
|
||||
|
||||
[在线文档](https://linlinjava.gitbook.io/litemall/)
|
||||
|
||||
文档采用 [署名-禁止演绎 4.0 国际协议许可](https://creativecommons.org/licenses/by-nd/4.0/deed.zh)
|
||||

|
||||
|
||||
## 开发计划
|
||||
|
||||
@@ -93,53 +89,38 @@ V 1.0.0 完成以下目标:
|
||||
|
||||
V 2.0.0 完成以下目标:
|
||||
|
||||
1. 小商城能够完成基本的业务功能;
|
||||
2. 管理后台实现较好的业务操作和交互效果,而不是简单的CRUD;
|
||||
1. 小商城和管理后台完成所有基本业务;
|
||||
2. 第二套小商城前端;
|
||||
3. 管理后台实现统计功能、日志功能、权限功能
|
||||
|
||||
V 3.0.0 完成以下目标:
|
||||
|
||||
1. 管理后台一些辅助功能
|
||||
2. 后台服务加强安全功能、配置功能
|
||||
3. 项目代码重构和清理
|
||||
4. 其他配套服务,如代码文档
|
||||
|
||||
项目结束,已经是一个真正可工作的项目,此时进入维护阶段。
|
||||
|
||||
如果真的坚持到维护阶段,那么存在三种可能性:
|
||||
|
||||
1. 或者开发 V 4.0.0,实现web商场子系统;
|
||||
2. 或者重新开发一个新的独立项目,引入企业级功能,如缓存、权限、对象存储云服务等;
|
||||
3. 或者结束,不再开发,仅仅维护。
|
||||
3. 缓存功能以及优化一些性能
|
||||
|
||||
警告:
|
||||
> ** 以上仅仅是个人规划的开发计划,实际可能出现任何情况,例如能力有限而放弃开发。**
|
||||
|
||||
## 开发进度
|
||||
|
||||
查看[更新日志](CHANGELOG.md)
|
||||
|
||||
目前V0.7.0
|
||||
> **以上仅仅是个人规划的开发计划,实际可能出现任何情况,例如能力有限而放弃开发。**
|
||||
|
||||
## 警告
|
||||
|
||||
> 1. 本项目仅用于学习练习
|
||||
> 2. 数据库数据来自nideshop
|
||||
> 3. 项目代码目前还不完善,仍处在开发中
|
||||
> 4. 项目开源(MIT),但不承担任何使用后果
|
||||
> 2. 项目目前还不完善,仍处在开发中,不承担任何使用后果
|
||||
> 3. 项目代码开源[MIT](./LICENSE),项目文档采用 [署名-禁止演绎 4.0 国际协议许可](https://creativecommons.org/licenses/by-nd/4.0/deed.zh)
|
||||
|
||||
## 致谢
|
||||
|
||||
本项目基于或参考以下项目:
|
||||
> 1. [nideshop-mini-program](https://github.com/tumobi/nideshop-mini-program)
|
||||
> 如果后端希望采用nodejs,开发者可以访问nideshop项目
|
||||
> 如果后端希望采用nodejs,开发者可以访问nideshop项目;
|
||||
> 此外,数据库原始数据也是来自nideshop项目。
|
||||
> 2. [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)
|
||||
> 一个基于Vue和Element的后台集成方案
|
||||
|
||||
本项目所依赖的其他开源项目见相关章节
|
||||
|
||||
## 问题
|
||||
|
||||

|
||||
|
||||
开发者有问题或者好的建议可以用Issues反馈交流,请给出详细信息,本人会尽可能解决。
|
||||
* 如果问题是共性问题(如代码bug或文档不全),本人会及时解决。
|
||||
* 如果问题是个人问题(如开发者了解不深入或者没有相关技术),请见谅(本人也是百度和谷歌)。
|
||||
@@ -149,18 +130,13 @@ V 3.0.0 完成以下目标:
|
||||
* 请百度或谷歌相关技术;
|
||||
* 请查看相关技术的官方文档,例如微信小程序的官方文档;
|
||||
* 请提问前尽可能做一些DEBUG或者思考分析,然后提问时给出详细的错误相关信息以及个人对问题的理解。
|
||||
|
||||
## 贡献
|
||||
|
||||
任何形式的贡献都欢迎,查看[贡献指南](CONTRIBUTE.md)
|
||||
|
||||

|
||||
|
||||
注意:
|
||||
> * 如果开发者开发使用中有问题,建议采用Issue来报告问题和解决问题。
|
||||
> * 在开发交流群中应讨论开发、业务和合作问题。
|
||||
> * 交流结果如果是共识性的则在文档中记录,如果是开放性的则会在Issue中记录。
|
||||
* 在开发交流群中应讨论开发、业务和合作问题。
|
||||
|
||||
## 相关项目
|
||||
|
||||
HubertYoung正在开发Android端[Litemall-Android](https://github.com/HubertYoung/Litemall-Android)
|
||||
HubertYoung正在开发Android端[Litemall-Android](https://github.com/HubertYoung/Litemall-Android)
|
||||
|
||||
## License
|
||||
|
||||
[MIT](https://github.com/linlinjava/litemall/blob/master/LICENSE)
|
||||
Copyright (c) 2018-present linlinjava
|
||||
@@ -13,7 +13,6 @@ tar -zxvf dist.tar -C dist
|
||||
|
||||
#部署三个Spring Boot应用
|
||||
#如果服务已经启动,则尝试停止
|
||||
sudo service litemall-os-api stop
|
||||
sudo service litemall-wx-api stop
|
||||
sudo service litemall-admin-api stop
|
||||
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
开发者需要注意的是
|
||||
|
||||
litemall-wx-api.jar和litemall-admin-api.jar两个模块内部
|
||||
已经有默认的开发配置文件,但是这些配置文件可能仅仅适用于开发阶段。
|
||||
|
||||
为了应用部署阶段时期的配置文件,开发者可以在config文件夹里面的同名配置文件中
|
||||
采用新的配置信息。
|
||||
|
||||
例如litemall.notify.mail.enable在开发litemall-core模块内部resources/application-core.yml
|
||||
中设置的是false,而这里config/application-core.yml中设置的是true,项目部署启动时则会先
|
||||
读取config/application-core.yml中的true值。
|
||||
@@ -1,105 +0,0 @@
|
||||
litemall:
|
||||
# 开发者应该设置成自己的wx相关信息
|
||||
wx:
|
||||
app-id: wxa5b486c6b918ecfb
|
||||
app-secret: e04004829d4c383b4db7769d88dfbca1
|
||||
mch-id: 111111
|
||||
mch-key: xxxxxx
|
||||
notify-url: http://www.example.com/wx/order/pay-notify
|
||||
|
||||
#通知相关配置
|
||||
notify:
|
||||
mail:
|
||||
# 邮件通知配置,邮箱一般用于接收业务通知例如收到新的订单,sendto 定义邮件接收者,通常为商城运营人员
|
||||
enable: false
|
||||
host: smtp.exmail.qq.com
|
||||
username: ex@ex.com.cn
|
||||
password: XXXXXXXXXXXXX
|
||||
sendfrom: ex@ex.com.cn
|
||||
sendto: ex@qq.com
|
||||
|
||||
# 短消息模版通知配置
|
||||
# 短信息用于通知客户,例如发货短信通知,注意配置格式;template-name,template-templateId 请参考 NotifyType 枚举值
|
||||
sms:
|
||||
enable: false
|
||||
appid: 111111111
|
||||
appkey: xxxxxxxxxxxxxx
|
||||
template:
|
||||
- name: paySucceed
|
||||
templateId: 156349
|
||||
- name: captcha
|
||||
templateId: 156433
|
||||
- name: ship
|
||||
templateId: 158002
|
||||
- name: refund
|
||||
templateId: 159447
|
||||
|
||||
# 微信模版通知配置
|
||||
# 微信模版用于通知客户或者运营者,注意配置格式;template-name,template-templateId 请参考 NotifyType 枚举值
|
||||
wx:
|
||||
enable: false
|
||||
template:
|
||||
- name: paySucceed
|
||||
templateId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
- name: captcha
|
||||
templateId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
- name: ship
|
||||
templateId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
- name: refund
|
||||
templateId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
|
||||
# 快鸟物流查询配置
|
||||
express:
|
||||
enable: false
|
||||
appId: "XXXXXXXXX"
|
||||
appKey: "XXXXXXXXXXXXXXXXXXXXXXXXX"
|
||||
vendors:
|
||||
- code: "ZTO"
|
||||
name: "中通快递"
|
||||
- code: "YTO"
|
||||
name: "圆通速递"
|
||||
- code: "YD"
|
||||
name: "韵达速递"
|
||||
- code: "YZPY"
|
||||
name: "邮政快递包裹"
|
||||
- code: "EMS"
|
||||
name: "EMS"
|
||||
- code: "DBL"
|
||||
name: "德邦快递"
|
||||
- code: "FAST"
|
||||
name: "快捷快递"
|
||||
- code: "ZJS"
|
||||
name: "宅急送"
|
||||
- code: "TNT"
|
||||
name: "TNT快递"
|
||||
- code: "UPS"
|
||||
name: "UPS"
|
||||
- code: "DHL"
|
||||
name: "DHL"
|
||||
- code: "FEDEX"
|
||||
name: "FEDEX联邦(国内件)"
|
||||
- code: "FEDEX_GJ"
|
||||
name: "FEDEX联邦(国际件)"
|
||||
|
||||
# 对象存储配置
|
||||
storage:
|
||||
# 当前工作的对象存储模式,分别是local、aliyun、tencent
|
||||
active: local
|
||||
# 本地对象存储配置信息
|
||||
local:
|
||||
storagePath: storage
|
||||
address: http://localhost:8082/wx/storage/fetch/
|
||||
port: 8081
|
||||
# 阿里云对象存储配置信息
|
||||
aliyun:
|
||||
endpoint: oss-cn-shenzhen.aliyuncs.com
|
||||
accessKeyId: 111111
|
||||
accessKeySecret: xxxxxx
|
||||
bucketName: xxxxxx
|
||||
# 腾讯对象存储配置信息
|
||||
# 请参考 https://cloud.tencent.com/document/product/436/6249
|
||||
tencent:
|
||||
secretId: 111111
|
||||
secretKey: xxxxxx
|
||||
region: xxxxxx
|
||||
bucketName: xxxxxx
|
||||
@@ -1,26 +0,0 @@
|
||||
pagehelper:
|
||||
helperDialect: mysql
|
||||
reasonable: true
|
||||
supportMethodsArguments: true
|
||||
params: count=countSql
|
||||
|
||||
spring:
|
||||
datasource:
|
||||
druid:
|
||||
url: jdbc:mysql://localhost:3306/litemall?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&verifyServerCertificate=false&useSSL=false
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
username: litemall
|
||||
password: litemall123456
|
||||
initial-size: 10
|
||||
max-active: 50
|
||||
min-idle: 10
|
||||
max-wait: 60000
|
||||
pool-prepared-statements: true
|
||||
max-pool-prepared-statement-per-connection-size: 20
|
||||
validation-query: SELECT 1 FROM DUAL
|
||||
test-on-borrow: false
|
||||
test-on-return: false
|
||||
test-while-idle: true
|
||||
time-between-eviction-runs-millis: 60000
|
||||
filters: stat,wall,log4j
|
||||
|
||||
373
doc/1.md
@@ -11,7 +11,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
|
||||
* 基础系统子系统(core)
|
||||
|
||||
由数据库、litemall-cre模块、litemall-db模块、litemall-os-api模块和litemall-all模块组成;
|
||||
由数据库、litemall-cre模块、litemall-db模块和litemall-all模块组成;
|
||||
|
||||
* 小商场子系统(wxmall)
|
||||
|
||||
@@ -30,7 +30,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
* Spring Boot技术栈
|
||||
|
||||
采用IDEA开发工具,开发litemall-core、litemall-db、litemall-all、
|
||||
litemall-os-api、litemall-admin-api和litemall-wx-api共六个个模块;
|
||||
litemall-admin-api和litemall-wx-api共六个个模块;
|
||||
|
||||
* miniprogram(微信小程序)技术栈
|
||||
|
||||
@@ -53,28 +53,19 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
### 1.2.1 小程序端功能
|
||||
|
||||
* 首页
|
||||
* 专题列表
|
||||
* 专题详情
|
||||
* 分类列表
|
||||
* 分类详情
|
||||
* 品牌列表
|
||||
* 品牌详情
|
||||
* 新品首发
|
||||
* 人气推荐
|
||||
* 商品搜索
|
||||
* 专题列表、专题详情
|
||||
* 分类列表、分类详情
|
||||
* 品牌列表、品牌详情
|
||||
* 新品首发、人气推荐
|
||||
* 搜索
|
||||
* 商品详情
|
||||
* 商品评价列表
|
||||
* 商品评价
|
||||
* 商品评价列表、商品评价
|
||||
* 购物车
|
||||
* 下单
|
||||
* 我的主页
|
||||
* 订单列表
|
||||
* 订单详情
|
||||
* 地址列表
|
||||
* 地址添加
|
||||
* 我的收藏
|
||||
* 我的足迹
|
||||
* 支付页面
|
||||
* 个人
|
||||
* 订单列表、订单详情
|
||||
* 地址列表、地址添加、地址删除
|
||||
* 收藏、足迹
|
||||
|
||||
### 1.2.2 管理平台功能
|
||||
|
||||
@@ -85,7 +76,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
* 会员足迹
|
||||
* 搜索历史
|
||||
* 商城管理
|
||||
* 区域配置
|
||||
* 行政区域
|
||||
* 品牌制造商
|
||||
* 订单管理
|
||||
* 商品类目
|
||||
@@ -107,6 +98,10 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
* 定时任务(待定)
|
||||
* 参数管理(待定)
|
||||
* 系统日志(待定)
|
||||
* 统计管理
|
||||
* 用户统计
|
||||
* 订单统计
|
||||
* 商品统计
|
||||
|
||||
## 1.3 项目特点
|
||||
|
||||
@@ -115,12 +110,13 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
* 数据库方面,只是简单的表,表和表之间的依赖关系没有采用外键设计,而是依赖Java代码在service层面或者业务层面保证。这样做的好处是数据库频繁改动很方便,不会因为外键而导致数据库难以修改;
|
||||
* 涉及三种技术栈,但是每种技术栈仅涉及最基础的技术;
|
||||
* 后端技术栈,仅涉及 Spring,Spring Boot, Spring MVC和Mybatis技术,其他后端技术暂时不采用;
|
||||
* 小程序技术栈,仅涉及miniprogram官方文档和nideshop-mini-program项目;
|
||||
* 前端技术栈,仅涉及vue, vuex, vue-route,element-ui技术和vue-element-admin项目;
|
||||
* 小程序技术栈,仅涉及miniprogram官方文档;
|
||||
* 前端技术栈,仅涉及vue, vuex, vue-route和element技术;
|
||||
* 安全方面,仅采用最基本的代码,提供简单基本的安全服务;
|
||||
* 性能方面,没有涉及内存数据库缓存功能,而是完全依赖MySQL;
|
||||
* 对象存储服务(图片上传和下载)方面,没有采用云存储方案,而是实现自有的简单文件上传下载功能。对象只是简单存储在后台主机的一个文件夹中,从而解耦当前项目对对象存储云平台的依赖,同时加强对对象存储概念的理解。
|
||||
* 部署方便,支持多服务部署和一键部署脚本,也支持war项目安装包部署。
|
||||
* 对象存储服务方面,支持本地存储和第三方云存储方案。
|
||||
* 消息提醒方面,支持邮件提醒、第三方云短信提醒和微信模板提醒;
|
||||
* 部署方便,支持多服务部署和一键部署脚本;
|
||||
* 文档全面,虽然还在开发中,但是规划中文档和代码注释一定会完成,帮助开发者理解项目。
|
||||
|
||||
总之,目前的系统只是为了学习技术和业务而开发的一个简单商场原型系统。虽然缺失很多企业级功能,但是是完整和合理的原型系统。
|
||||
@@ -158,27 +154,6 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
其次,需要明确的是,这里划分三种阶段不是简单的文档说明,还直接影响项目本身的行为
|
||||
和代码编译结果,因此开发者需要清晰的了解:
|
||||
|
||||
* dev
|
||||
项目的各个模块采用dev来编译配置代码行为。
|
||||
* vue技术栈的模块采用dev配置文件编译,见litemall-admin/config/dev.env.js
|
||||
* 小程序技术栈的模块采用dev配置,见litemall-wx/config/api.js
|
||||
* spring boot技术栈的模块采用dev配置,例如见litemall-wx-api/src/main/resources/application-dev.properties,
|
||||
此外,在代码中也可以采用`Profile(dev)`来直接定义代码在dev阶段的行为。
|
||||
|
||||
* dep
|
||||
项目的各个模块采用dep来编译配置代码行为。
|
||||
* vue技术栈的模块采用dep配置文件编译,见litemall-admin/config/dep.env.js
|
||||
* 小程序技术栈的模块采用dep配置,见litemall-wx/config/api.js
|
||||
* spring boot技术栈的模块采用dep配置,例如见litemall-wx-api/src/main/resources/application-dep.properties,
|
||||
此外,在代码中也可以采用`Profile(dep)`来直接定义代码在dev阶段的行为。
|
||||
|
||||
* prod
|
||||
项目的各个模块采用prod来编译配置代码行为。
|
||||
* vue技术栈的模块采用prod配置文件编译,见litemall-admin/config/prod.env.js
|
||||
* 小程序技术栈的模块采用prod配置,见litemall-wx/config/api.js
|
||||
* spring boot技术栈的模块采用prod配置,例如见litemall-wx-api/src/main/resources/application-prod.properties,
|
||||
此外,在代码中也可以采用`Profile(prod)`来直接定义代码在dev阶段的行为。
|
||||
|
||||
最后,其实dep和prod不存在先后关系。例如,如果开发者已经存在域名和生产环境,可以直接
|
||||
跳过dep阶段,而直接部署在线上环境中。因此有些时候,这里部署和上线是一个阶段。
|
||||
|
||||
@@ -189,11 +164,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
运行的功能,此时会有一个好的基础。
|
||||
|
||||
注意:
|
||||
> 以上三种阶段是基于个人理解,有可能有误或不当的地方。
|
||||
> 此外,可能有人会认为需要存在测试阶段置于dev和dep之间。
|
||||
> 但是,本人认为测试过程存在于三个不同阶段内部可能更为适宜,
|
||||
> 即项目测试过程这里不会作为独立的一个阶段。
|
||||
> 当然,这里也可以把dep阶段理解成是一种测试阶段。
|
||||
> 以上三种阶段基于个人理解,有可能有误或不当的地方。
|
||||
|
||||
讨论:
|
||||
> 对于内网IP,例如"192.168.0.1",是应该认为属于开发阶段的配置,还是应该认为属于部署阶段的配置?
|
||||
@@ -213,25 +184,26 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
如图所示,当前开发阶段的方案:
|
||||
|
||||
* MySQL数据访问地址`jdbc:mysql://localhost:3306/litemall`
|
||||
* litemall-os-api对象存储服务地址`http://localhost:8081`
|
||||
* litemall-wx-api后台服务地址`http://localhost:8082`,数据则来自MySQL
|
||||
* litemall-admin-api后台服务地址`http://localhost:8083`,数据则来自MySQL
|
||||
* litemall-admin前端访问地址`http://localhost:9527`, 数据来自litemall-admin-api
|
||||
* litemall-wx没有前端访问地址,而是直接在微信小程序工具上编译测试开发,最终会部署到微信官方平台(即不需要自己部署web服务器),而数据则来自litemall-wx-api
|
||||
|
||||
|
||||
### 1.4.0 数据库
|
||||
### 1.4.1 数据库
|
||||
|
||||
按照开发环境前,需要先在本地配置好数据库:
|
||||
|
||||
1. 本项目目前采用MySQL
|
||||
1. 安装MySQL
|
||||
|
||||
2. 创建数据库、用户权限、数据库表和测试数据
|
||||
|
||||
数据库文件存放在litemall-db/sql文件夹中,其中litemall_schema.sql创建数据库和用户权限,
|
||||
litemall_table.sql则创建表,litemall_data.sql则是测试数据。
|
||||
|
||||
注意:建议采用命令行或者MySQL Workbench。如果采用navicat可能导入失败。
|
||||
|
||||
2. 数据库文件存放在litemall-db/sql文件夹中,其中litemall_schema.sql创建数据库和用户权限,
|
||||
litemall_table.sql则创建表,litemall_data.sql则是测试数据。
|
||||
|
||||
### 1.4.1 Spring Boot开发环境
|
||||
### 1.4.2 Spring Boot开发环境
|
||||
|
||||
1. 安装JDK8
|
||||
2. 安装Maven
|
||||
@@ -248,7 +220,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
|
||||
或者采用IDEA的Maven插件安装本项目依赖库,点击`install`
|
||||
|
||||

|
||||

|
||||
|
||||
7. 采用Maven命令编译本项目
|
||||
|
||||
@@ -258,33 +230,13 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
mvn compile
|
||||
```
|
||||
|
||||
此时可以看到,litemall-os-api等模块多了target文件夹,里面是编译出的文件。
|
||||
此时可以看到,litemall-wx-api等模块多了target文件夹,里面是编译出的文件。
|
||||
|
||||
或者采用IDEA的Maven插件编译本项目,点击`compile`
|
||||
|
||||
如果采用IDEA也可以跳过当前步骤,直接步骤8(因为运行时会自动编译再运行)。
|
||||
|
||||
8. 采用Maven命令运行本项目的litemall-os-api模块。
|
||||
|
||||
例如:
|
||||
```
|
||||
cd litemall/litemall-os-api
|
||||
mvn spring-boot:run
|
||||
```
|
||||
|
||||
|
||||
或者采用IDEA,打开litemall-os-api模块的Application类
|
||||
右键` Run Application.main()`方式运行该模块
|
||||
|
||||

|
||||
|
||||
打开浏览器,输入
|
||||
```
|
||||
http://localhost:8081/os/index/index
|
||||
```
|
||||
如果出现JSON数据,则Spring Boot开发环境部署成功,litemall-os-api模块运行正常。
|
||||
|
||||
9. 采用Maven命令运行本项目的litemall-wx-api模块。
|
||||
8. 采用Maven命令运行本项目的litemall-wx-api模块。
|
||||
|
||||
例如:
|
||||
```
|
||||
@@ -295,13 +247,15 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
如果采用IDEA,则litemall-wx-api模块的Application类
|
||||
右键` Run Application.main()`方式运行该模块,
|
||||
|
||||

|
||||
|
||||
打开浏览器,输入
|
||||
```
|
||||
http://localhost:8082/wx/index/index
|
||||
```
|
||||
如果出现JSON数据,则litemall-wx-api模块运行正常。
|
||||
|
||||
8. 采用Maven命令运行本项目的litemall-admin-api模块。
|
||||
9. 采用Maven命令运行本项目的litemall-admin-api模块。
|
||||
|
||||
例如:
|
||||
```
|
||||
@@ -319,21 +273,20 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
如果出现JSON数据,则litemall-admin-api模块运行正常。
|
||||
|
||||
注意:
|
||||
> 1. 由于设置了三个不同的端口,因此开发时,IDEA可以同时运行
|
||||
> litemall-os-api、litemall-wx-api和litemall-admin-api三个Spring Boot程序。
|
||||
> 2. 有些熟悉IDE配置tomcat运行项目的开发者可能会运行litemall-all模块来运行整个项目,
|
||||
> 这里是不建议的,甚至可能会出现错误的:
|
||||
> * 实际上litemall-all模块的作用仅仅是打包war项目包,然后用于部署阶段。
|
||||
> 此外,目前本人也没有尝试过在IDEA中配置tomcat运行项目。
|
||||
> * Spring Boot开发通常也是采用直接运行Application的main方法,
|
||||
> 因此熟悉IDE配置tomcat的开发者也应该切换思路。
|
||||
> * 当前文档的开发和测试都是基于三个服务同时运行存在三个端口的情况,
|
||||
> 因此如果开发时采用IDE配置tomcat的方式,实践过程中可能会和文档不一致。
|
||||
> 1. 由于设置不同的端口,因此开发时,IDEA可以同时运行litemall-wx-api和litemall-admin-api两个Spring Boot程序。
|
||||
> 2. 有些开发者可能会运行litemall-all模块来运行整个项目,这里并不反对,但是开发者需要
|
||||
> 清楚地明白当前小程序前端依赖后台服务litemall-wx-api的默认端口是8082,管理后台前端
|
||||
> 依赖后台服务litemall-admin-api的默认端口是8083;而包裹两个后台服务的litemall-all模块
|
||||
> 的端口则是8080,因此这里开发者需要对前端进行调整才能对接成功。
|
||||
> 3. 在上述开发步骤中,既介绍了Maven命令方式,也介绍了IDEA方式,但是仍然建议
|
||||
> 开发时采用IDEA即可。
|
||||
> 4. 以上是本人开发过程中采用的一些步骤,开发者可不拘泥于这些步骤。
|
||||
|
||||
### 1.4.2 微信小程序开发环境
|
||||
有的时候,开发者使用IDEA导入项目或者运行项目的时候会出现软件卡顿的现象,这通常是litemall-admin的
|
||||
node_modules文件夹内自动下载了大量的litemall-admin的依赖库,当IDEA尝试索引该文件夹内的大量文件时
|
||||
则出现IDEA卡顿的现象,具体解决方式可以参见[FAQ](./7.md)
|
||||
|
||||
### 1.4.3 微信小程序开发环境
|
||||
|
||||
1. 安装微信小程序开发工具
|
||||
2. 导入本项目的litemall-wx模块文件夹
|
||||
@@ -350,14 +303,15 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
> 相关内容请阅读章节3。或者,开发者可以采用账号登录方式登录,然后体验商品购买下单的方式。
|
||||
> 4. 由于没有设置商户支付信息,因此开发者在付款时会失败。相关内容阅读章节3。
|
||||
|
||||
### 1.4.3 Vue开发环境
|
||||
### 1.4.4 Vue开发环境
|
||||
|
||||
1. 安装npm(或者cnpm)
|
||||
1. 安装[nodejs](https://nodejs.org/en/)
|
||||
2. 安装VSC(Visual Studio Code)
|
||||
3. 导入本项目的litemall-admin模块文件夹
|
||||
4. 安装依赖库
|
||||
|
||||
```
|
||||
npm install -g cnpm --registry=https://registry.npm.taobao.org
|
||||
cnpm install
|
||||
```
|
||||
|
||||
@@ -379,35 +333,26 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
|
||||
其次,需要明确的是各模块之间的关系:
|
||||
|
||||
* litemall-os-api模块会包含litemall-core模块和litemall-db模块,部署在服务器中
|
||||
* litemall-wx-api模块会包含litemall-core模块和litemall-db模块,部署在服务器中
|
||||
* litemall-admin-api模块会包含litemall-core模块和litemall-db模块,部署在服务器中
|
||||
* litemall-wx模块部署在微信开发者工具中,此外数据API地址指向litemall-wx-api所在服务qi地址
|
||||
* litemall-admin编译出的静态文件放在web服务器或者tomcat服务器,此外服务器地址设置指向3中litemall-admin-api所在地址
|
||||
|
||||
最后,**如果项目部署,则根据开发者的部署环境在以下文件中或代码中修改相应的配置。**
|
||||
最后,**如果项目部署云主机,则根据开发者的部署环境在以下文件中或代码中修改相应的配置。**
|
||||
|
||||
1. MySQL数据库设置合适的用户名和密码等信息,同时在litemall-os-api、litemall-wx-api和litemall-admin-api模块
|
||||
的`resources/application-dep.properties` 中设置正确的数据库配置信息。
|
||||
2. litemall-wx模块`config/api.js`设置正确的`WxApiRoot`和`StorageApi`。
|
||||
如果采用第三方对象存储服务,`StorageApi`指向第三方即可。
|
||||
3. litemall-wx-api模块的`resources/application-dep.properties` 中设置所申请的微信小程序APPID和微信支付等信息。
|
||||
4. litemall-os-api模块`resources/application-dep.properties` 中设置litemall-os-api服务所在的IP和端口地址
|
||||
```
|
||||
org.linlinjava.litemall.os.address=http://xxx.xxx.xxx.xxx
|
||||
org.linlinjava.litemall.os.port=8081
|
||||
```
|
||||
如果采用第三方对象存储服务,那么litemall-os-api可以不部署,这里的配置开忽略。
|
||||
5. litemall-admin模块`config/dep.env.js`中设置正确的`BASE_API`和`OS_API`。
|
||||
如果采用第三方对象存储服务,`OS_API`指向第三方即可。
|
||||
1. MySQL数据库设置合适的用户名和密码信息;
|
||||
2. 后台服务模块设置合适的配置信息,建议开发者参考deploy/litemall-api/config方式,即在后台服务模块外部设置部署配置文件,
|
||||
这样可以避免开发者对模块内部的开发配置文件造成修改;
|
||||
3. 小商场前端litemall-wx模块`config/api.js`的`WxApiRoot`设置小商场后台服务的服务地址;
|
||||
4. 管理后台前端litemall-admin模块`config/dep.env.js`中的`BASE_API`设置管理后台后台服务的服务地址。
|
||||
|
||||
实际上,最终的部署方案是灵活的:
|
||||
|
||||
* 可以单一云主机中仅安装一个tomcat服务器并配置一个端口,然后同时部署四个项目的模块,从而提供四种服务
|
||||
(即litemall-admin静态页面,litemall-os-api存储服务、litemall-amdin-api后台服务和litemall-wx-api后台服务)。
|
||||
* 也可以是同一云主机中安装四个服务器分别配置四个端口,分别提供四种服务
|
||||
* 也可以是四个云主机各自安装服务器配置端口,分别提供四种服务
|
||||
* 当然,甚至多个服务器,并发提供服务。
|
||||
* 可以单一云主机中仅安装一个tomcat/nginx服务器部署litemall-admin静态页面分发服务,
|
||||
然后部署两个Spring Boot的后台服务;
|
||||
* 也可以是同一云主机中安装一个Spring Boot服务,同时提供litemall-admin、litemall-admin-api和litemall-wx-api三种服务
|
||||
* 也可以把litemall-admin静态页面托管第三方cdn,然后开发者部署两个后台服务
|
||||
* 当然,甚至多个服务器,采用集群式并发提供服务。
|
||||
|
||||
注意
|
||||
> 1. `本机`指的是是当前的开发机
|
||||
@@ -415,17 +360,17 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
|
||||
以下简单列举几种方案。
|
||||
|
||||
### 1.5.3 单机云部署方案
|
||||
### 1.5.1 单机云部署方案
|
||||
|
||||
本节介绍基于腾讯云的单机云部署方案,面向的是服务器数据和应用部署在云主机单机中用于演示的场景。
|
||||
其他云应该也是可行的。
|
||||
|
||||
主要流程是:创建云主机,安装ubuntu操作系统,按照JDK和MySQL应用运行环境,部署三个Spring Boot微服务后台应用,
|
||||
主要流程是:创建云主机,安装ubuntu操作系统,按照JDK和MySQL应用运行环境,部署两个Spring Boot微服务后台应用,
|
||||
以及部署管理后台静态文件到tomcat。
|
||||
|
||||

|
||||
|
||||
#### 1.5.3.1 主机
|
||||
#### 1.5.1.1 主机
|
||||
|
||||
请参考腾讯云官方文档进行相关操作。
|
||||
|
||||
@@ -449,7 +394,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
||||
|
||||
如果开发者设置SSH密钥,可以采用免密码登录;否则采用账号和密码登录。
|
||||
|
||||
#### 1.5.3.2 JDK8
|
||||
#### 1.5.1.2 JDK8
|
||||
|
||||
https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04
|
||||
|
||||
@@ -465,7 +410,7 @@ sudo apt-get install oracle-java8-set-default
|
||||
警告
|
||||
> "ppa:webupd8team/java" 不是Oracle官方PPA,可能存在安全隐患。
|
||||
|
||||
#### 1.5.3.3 MySQL
|
||||
#### 1.5.1.3 MySQL
|
||||
|
||||
https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-16-04
|
||||
|
||||
@@ -501,7 +446,7 @@ sudo apt-get install mysql-client
|
||||
> 2. MySQL应该部署在专门的服务器中,
|
||||
> 这里仅仅用于演示远程部署MySQL。
|
||||
|
||||
#### 1.5.3.4 litemall数据
|
||||
#### 1.5.1.4 litemall数据
|
||||
|
||||
这里可以采用命令行式,也可以采用MySQL自带的Workbench导入。
|
||||
|
||||
@@ -529,14 +474,15 @@ sudo apt-get install mysql-client
|
||||
```bash
|
||||
cd deploy
|
||||
mysql -h localhost -u root -p123456
|
||||
source ./litemall-db/litemall_schema.sql
|
||||
source ./litemall-db/litemall_table.sql
|
||||
source ./litemall-db/litemall_data.sql
|
||||
source ./litemall-db/litemall_schema.sql
|
||||
use litemall;
|
||||
source ./litemall-db/litemall_table.sql
|
||||
source ./litemall-db/litemall_data.sql
|
||||
```
|
||||
|
||||
其中123456是开发者所设置的MySQL的管理员密码。
|
||||
|
||||
#### 1.5.3.5 Tomcat/Nginx
|
||||
#### 1.5.1.5 Tomcat/Nginx
|
||||
|
||||
本项目中采用二进制jar包方式来部署Spring Boot后端应用,因此可以不需要部署在tomcat中。
|
||||
但是,litemall-admin前端项目最终会编译出静态文件,需要部署在服务器中,
|
||||
@@ -573,6 +519,8 @@ sudo apt-get install mysql-client
|
||||
</Host>
|
||||
```
|
||||
|
||||
注意:这里假定litemall-admin静态文件是上传在`/home/ubuntu/deploy/litemall-admin/dist`文件夹中,开发者可以自行调整。
|
||||
|
||||
3. 运行/重启tomcat
|
||||
|
||||
```
|
||||
@@ -593,7 +541,8 @@ sudo apt-get install mysql-client
|
||||
```
|
||||
|
||||
2. 配置nginx指向`delpoy/litemall-admin/dist`目录
|
||||
|
||||
注意:这里假定litemall-admin静态文件是上传在`/home/ubuntu/deploy/litemall-admin/dist`文件夹中,开发者可以自行调整。
|
||||
|
||||
3. 运行/重启nginx
|
||||
```
|
||||
sudo service nginx stop
|
||||
@@ -601,9 +550,9 @@ sudo apt-get install mysql-client
|
||||
sudo service nginx restart
|
||||
```
|
||||
|
||||
#### 1.5.3.6 项目打包
|
||||
#### 1.5.1.6 项目打包
|
||||
|
||||
这里项目打包括两种:
|
||||
这里项目打两个Spring Boot模块的打包和Vue项目的编译打包两种:
|
||||
|
||||
1. Spring Boot打包
|
||||
|
||||
@@ -615,9 +564,8 @@ sudo apt-get install mysql-client
|
||||
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-wx-api项目的target文件夹中看到litemall-wx-xxx-exec.jar;
|
||||
在litemall-admin-api项目的target文件夹中看到litemall-admin-xxx-exec.jar。
|
||||
|
||||
2. Vue项目打包
|
||||
|
||||
@@ -630,16 +578,16 @@ sudo apt-get install mysql-client
|
||||
|
||||
此时,litemall-admin模块的dist文件夹中就是最终部署时的代码,可以先压缩,上传到云主机,再解压缩。
|
||||
|
||||
#### 1.5.3.7 项目部署运行
|
||||
#### 1.5.1.7 项目部署运行
|
||||
|
||||
https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#deployment-service
|
||||
|
||||
1. 项目进一步打包到deploy文件夹中:
|
||||
* 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文件夹中。
|
||||
|
||||
* litemall-db模块的sql文件拷贝到deploy的litemall-db文件夹中。
|
||||
|
||||
2. 使用FileZilla把deploy整个文件夹上传到云主机的/home/ubuntu文件夹中
|
||||
|
||||
3. 使用PuTTY登录云主机
|
||||
@@ -649,13 +597,14 @@ https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#dep
|
||||
```bash
|
||||
cd deploy
|
||||
mysql -h localhost -u root -p123456
|
||||
source ./litemall-db/litemall_schema.sql
|
||||
source ./litemall-db/litemall_schema.sql
|
||||
use litemall;
|
||||
source ./litemall-db/litemall_table.sql
|
||||
source ./litemall-db/litemall_data.sql
|
||||
```
|
||||
注意,123456是开发者所设置的MySQL管理员密码
|
||||
警告:
|
||||
> litemall_schema.sql会尝试删除litemall数据库然后重建一个新的数据。
|
||||
> litemall_schema.sql会尝试删除litemall数据库然后重建新的数据库。
|
||||
|
||||
5. 运行脚本部署运行
|
||||
|
||||
@@ -671,41 +620,33 @@ 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/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
|
||||
```
|
||||
|
||||
#### 1.5.3.8 部署脚本
|
||||
#### 1.5.1.8 部署脚本
|
||||
|
||||
为了简化步骤1和步骤2,完成了deploy/util/upload.sh上传脚本和deploy/util/lazy.sh部署脚本,
|
||||
为了简化步骤1和步骤2,完成了deploy/util/lazy.sh上传脚本和deploy/util/package.sh部署脚本,
|
||||
|
||||
注意:
|
||||
> 1. 开发者需要在deploy/util/upload.sh和deploy/util/lazy.sh中设置相应的云主机登录账号和密钥文件路径。
|
||||
> 2. 开发者需要在deploy/util/reset.sh设置云主机的MySQL的root登录账户。
|
||||
> 3. 请先执行1.5.3中上述步骤,确保部署环境成功。
|
||||
> 1. 开发者需要在deploy/util/package.sh和deploy/util/lazy.sh中设置相应的云主机登录账号和密钥文件路径。
|
||||
> 2. 开发者需要在deploy/bin/reset.sh设置云主机的MySQL的root登录账户。
|
||||
> 3. 请先执行1.5.1中上述步骤,确保部署环境成功。
|
||||
|
||||
* 上传脚本
|
||||
* package.sh
|
||||
|
||||
该脚本会自动把当前项目不同模块下的最终部署文件复制到deploy文件夹中,然后上传到云主机。
|
||||
该上传脚本没有自动做Spring Boot项目打包和Vue项目打包工作
|
||||
该脚本会自动把当前项目Spring Boot项目打包和Vue项目打包工作,然后复制到deploy文件夹中。
|
||||
|
||||
* 部署脚本
|
||||
* lazy.sh
|
||||
|
||||
该脚本会编译项目,再上传deploy文件,最后ssh登录远程主机执行bin下面的deploy.sh脚本。
|
||||
该脚本会调用package.sh打包项目,然后上传deploy文件夹到云主机,最后ssh登录远程主机执行bin下面的deploy.sh脚本。
|
||||
|
||||
注意,运行命令必须在项目主目录中,类似如下命令:
|
||||
```bash
|
||||
cd litemall
|
||||
./deploy/util/lazy.sh
|
||||
```
|
||||
|
||||
注意:
|
||||
> 本项目的deploy文件夹以及其中的部署相关脚本只能适用于本节部署方式。
|
||||
> 目前灵活性较差,开发者可以参考实现自己的相关脚本,简化开发工作。
|
||||
|
||||
### 1.5.4 集群式云部署方案
|
||||
### 1.5.2 集群式云部署方案
|
||||
|
||||
由于本项目是面向微小型企业的小商城系统,因此预期的分布式部署方案是
|
||||
|
||||
@@ -716,23 +657,23 @@ cd litemall
|
||||
5. 一台或多台云主机部署小商场的后台服务
|
||||
|
||||
虽然由于环境原因没有正式测试过,但是这种简单的集群式场景应该是可行的。
|
||||
在1.5.3节中所演示的四个服务是独立的,因此延伸到这里分布式是非常容易的。
|
||||
在1.5.1节中所演示的三个服务是独立的,因此延伸到这里分布式是非常容易的。
|
||||
|
||||
但是,如果需要实现互联网式分布式云部署,目前的项目架构和方案不支持。
|
||||
至少每个功能模块应该是独立服务系统。此外,需要引入单点登录系统、集群、缓存
|
||||
和消息队列等多种技术。因此如果开发者需要这种形式的分布式方案,请参考其他项目。
|
||||
|
||||
### 1.5.5 war部署方案
|
||||
### 1.5.3 war部署方案
|
||||
|
||||
这里介绍另外一种单主机单服务的war部署方案,即四个服务打包成一个war格式的项目部署包。
|
||||
这里介绍另外一种单主机单服务的war部署方案,即三个服务打包成一个war格式的项目部署包。
|
||||
|
||||

|
||||
|
||||
和1.5.3节相比,采用这样方案的原因是:
|
||||
和1.5.1节相比,采用这样方案的原因是:
|
||||
|
||||
1. 安装方便,是传统的web项目安装方式,在tomcat里面部署一个war项目包,即可完成安装;
|
||||
2. 内存消耗少。在1.5.3节中四个独立的java环境消耗的内存大概1.2G多,而这里部署以后
|
||||
只需要一个java环境,因此消耗内存只有1.5.3节方案的四分之一,适合1G云主机部署。
|
||||
2. 内存消耗少。在1.5.1节中三个独立的java环境消耗的内存大概900M多,而这里部署以后
|
||||
只需要一个java环境,因此消耗内存只有1.5.3节方案的三分之一,适合1G云主机部署。
|
||||
3. 只存在一个域名和端口,没有多个服务之间依赖关系。
|
||||
|
||||
具体的打包部署方案是;
|
||||
@@ -745,9 +686,8 @@ cd litemall
|
||||
更多细节阅读2.5节litemall-all模块。
|
||||
|
||||
注意:
|
||||
> 虽然这里介绍了这种方案,但是本项目的开发、测试和部署是基于1.5.3方案,
|
||||
> 因此开发者可能需要做一些配置方面的调整,例如三个后台服务地址调整。
|
||||
|
||||
> 虽然这里介绍了这种方案,但是本项目的开发、测试和部署是基于1.5.1方案,
|
||||
> 因此开发者可能需要做一些配置方面的调整,例如后台服务地址调整。
|
||||
|
||||
## 1.6 上线方案
|
||||
|
||||
@@ -860,18 +800,11 @@ https://www.example.com
|
||||
|
||||
此时,可以看到管理后台的页面。
|
||||
|
||||
#### 1.6.2.3 反向代理三个后台服务
|
||||
#### 1.6.2.3 反向代理两个个后台服务
|
||||
|
||||
继续修改`/etc/nginx/nginx.conf`文件,配置nginx静态web文件目录
|
||||
```
|
||||
server {
|
||||
location ^~ /os {
|
||||
proxy_pass http://localhost:8081;
|
||||
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 ^~ /wx {
|
||||
proxy_pass http://localhost:8082;
|
||||
proxy_set_header Host $host;
|
||||
@@ -890,7 +823,6 @@ server {
|
||||
|
||||
打开浏览器,输入以下地址:
|
||||
```
|
||||
https://www.example.com/os/index/index
|
||||
https://www.example.com/wx/index/index
|
||||
https://www.example.com/admin/index/index
|
||||
```
|
||||
@@ -935,46 +867,39 @@ http://www.example.com
|
||||
> 换成什么地址都可以,但是这里不应该暴露出来。也就是说这个地址是微信支付平台
|
||||
> 和这里的小商场后台服务之间的交互API,对外公开会存在安全隐患。
|
||||
|
||||
2. litemall-wx-api模块需要配置prod.properties
|
||||
2. litemall-core模块需要配置application-core.yml
|
||||
|
||||
```
|
||||
wx.app-id=
|
||||
wx.app-secret=
|
||||
wx.mch-id=
|
||||
wx.mch-key=
|
||||
wx.notify-url=
|
||||
litemall:
|
||||
wx:
|
||||
app-id: wxa5b486c6b918ecfb
|
||||
app-secret: e04004829d4c383b4db7769d88dfbca1
|
||||
mch-id: 111111
|
||||
mch-key: xxxxxx
|
||||
notify-url: http://www.example.com/wx/order/pay-notify
|
||||
```
|
||||
|
||||
这里的`wx.notify-url`就是前面开发者自定义的地址。
|
||||
这里的`litemall.wx.notify-url`就是前面开发者自定义的地址。
|
||||
|
||||
3. litemall-wx模块的`project.config.json`文件调整相应的值,
|
||||
特别是`appid`要设置成开发者申请的appid。
|
||||
|
||||
### 1.6.4 管理后台服务上线
|
||||
|
||||
### 1.6.4 后台服务上线
|
||||
管理后台服务上线,则开发者需要自己的线上环境在以下文件中或代码中修改相应的配置。
|
||||
|
||||
后台服务上线,则开发者需要自己的线上环境在以下文件中或代码中修改相应的配置。
|
||||
|
||||
1. MySQL数据库设置合适的用户名和密码等信息,同时在litemall-os-api、litemall-wx-api和litemall-admin-api模块
|
||||
的`resources/application-prod.properties` 中设置正确的数据库配置信息。
|
||||
2. litemall-wx模块`config/api.js`设置正确的`WxApiRoot`和`StorageApi`。
|
||||
如果采用第三方对象存储服务,`StorageApi`指向第三方即可。
|
||||
3. litemall-wx-api模块的`resources/application-prod.properties` 中设置所申请的微信小程序APPID和微信支付等信息。
|
||||
4. litemall-os-api模块`resources/application-prod.properties` 中设置litemall-os-api服务所在的IP和端口地址
|
||||
```
|
||||
org.linlinjava.litemall.os.address=https://www.example.com
|
||||
org.linlinjava.litemall.os.port=80
|
||||
```
|
||||
如果采用第三方对象存储服务,那么litemall-os-api可以不部署,这里的配置开忽略。
|
||||
5. litemall-admin模块`config/prod.env.js`中设置正确的`BASE_API`和`OS_API`。
|
||||
如果采用第三方对象存储服务,`OS_API`指向第三方即可。
|
||||
1. MySQL数据库设置合适的用户名和密码信息;
|
||||
2. 后台服务模块设置合适的配置信息,建议开发者参考deploy/litemall-api/config方式,即在后台服务模块外部设置部署配置文件,
|
||||
这样可以避免开发者对模块内部的开发配置文件造成修改;
|
||||
3. 小商场前端litemall-wx模块`config/api.js`的`WxApiRoot`设置小商场后台服务的服务地址;
|
||||
4. 管理后台前端litemall-admin模块`config/prod.env.js`中的`BASE_API`设置管理后台后台服务的服务地址。
|
||||
|
||||
|
||||
### 1.6.5 上线脚本
|
||||
|
||||
本项目目前没有上线脚本,不过可以参考1.5.3节中的部署脚本。
|
||||
本项目目前没有上线脚本,不过可以参考1.5.1节中的部署脚本。
|
||||
|
||||
### 1.6.6 优化
|
||||
### 1.6.6 项目优化
|
||||
|
||||
以下是部署方案中出现而在上线方案中可以优化的一些步骤。
|
||||
|
||||
@@ -1010,4 +935,54 @@ litemall-admin编译得到的前端文件在第一次加载时相当耗时,这
|
||||
#### 1.6.6.4 nginx优化
|
||||
|
||||
本人对nginx不是很熟悉,而nginx还存在很多可以调整优化的部分,这里建议开发者
|
||||
根据自己业务或架构情况优化。
|
||||
根据自己业务或架构情况优化。
|
||||
|
||||
## 1.7 项目管理
|
||||
|
||||
这里简述一些当前项目开发的要点。
|
||||
|
||||
### 1.7.1 项目.gitignore
|
||||
|
||||
当前项目的.gitignore不是单一文件,而是多个模块都存在:
|
||||
* deploy/.gitignore
|
||||
* litemall-admin/.gitignore
|
||||
* litemall-admin-api/.gitignore
|
||||
* litemall-core/.gitignore
|
||||
* litemall-db/.gitignore
|
||||
* litemall-wx-api/.gitignore
|
||||
* litemall-all/.gitignore
|
||||
* .gitignore
|
||||
|
||||
### 1.7.2 项目自动部署
|
||||
|
||||
#### 1.7.2.1 deploy部署
|
||||
|
||||
当前项目存在deploy部署文件夹,这个是上述1.5.1节部署腾讯云主机所采取的一些脚本。
|
||||
|
||||
流程如下:
|
||||
1. util脚本是当前开发主机运行,用来打包项目和上传腾讯云主机;
|
||||
2. 打包项目时,会编译打包项目相关模块到litemall-admin、litemall-api和litemall-db文件夹中;
|
||||
3. bin脚本是云主机运行,用来安装数据库、导入数据、启动静态文件服务和Spring Boot后台服务。
|
||||
|
||||
这里deploy部署方式比较简单不灵活,开发者可以参考开发自己的项目脚本。
|
||||
|
||||
#### 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 项目配置
|
||||
|
||||
这里列出一些项目相关的基本配置信息:
|
||||
77
doc/2.md
@@ -4,24 +4,14 @@
|
||||
|
||||
* litemall数据库
|
||||
* litemall-core模块
|
||||
* litemall-db模块、
|
||||
* litemall-os-api模块
|
||||
* litemall-all模块组成
|
||||
* litemall-db模块
|
||||
* litemall-all模块
|
||||
|
||||
实际上,litemall**真正的基础系统**是litemall-core模块和litemall-db模块。
|
||||
|
||||
litemall-os-api模块只是为了减少开发中对第三方图片存储服务依赖而实现的简单图像存储服务,
|
||||
建议开发者最终部署时切换到第三方图片存储服务。
|
||||
|
||||
litemall-all模块则只是一个包裹模块,几乎没有任何代码。该模块的作用是融合三个spring boot模块
|
||||
litemall-all模块则只是一个包裹模块,几乎没有任何代码。该模块的作用是融合两个spring boot模块
|
||||
和litemall-admin模块静态文件到一个单独spring boot应用中,并最终打包成war格式的项目安装包。
|
||||
|
||||
目前存在的问题:
|
||||
|
||||
* `严重`数据库采用git,每次跟新都是5MB数据,影响项目下载速度
|
||||
* `改善` litemall-db的一些CRUD操作可以基于开源库重构
|
||||
* `功能`可以参考一些云存储服务的API加强一些功能
|
||||
|
||||
## 2.1 litemall数据库
|
||||
|
||||
litemall数据库基于nideshop中的[nideshop.sql](https://github.com/tumobi/nideshop/blob/master/nideshop.sql)数据库,然后在实际开发过程中进行了调整和修改:
|
||||
@@ -53,9 +43,7 @@ litemall数据库由三个sql文件组成,在litemall-db文件夹下面的sql
|
||||
3. litemall_data.sql
|
||||
|
||||
作用是创建测试数据。
|
||||
|
||||
这里的测试数据来自开源项目[nideshop-mini-program](https://github.com/tumobi/nideshop-mini-program)
|
||||
|
||||
|
||||
开发者开发测试阶段可以使用,但是部署开发阶段应该使用自己的数据。
|
||||
|
||||
综上,这里litemall真正必须运行的sql文件是litemall_table.sql,其他两个sql文件开发者自行决定如何是否使用。
|
||||
@@ -777,49 +765,33 @@ Jackson做一些设置。
|
||||
|
||||
bcypt代码本质上是spring里面的代码。
|
||||
|
||||
## 2.4 litemall-os-api
|
||||
### 2.3.4 对象存储
|
||||
|
||||
对象存储服务目前的目标是支持图片的上传下载。
|
||||
|
||||
作为后台模块之一,litemall-os-api并没有对应的前端模块,而只是在litemall-admin模块
|
||||
的对象存储页面中允许管理员修改。
|
||||
#### 2.3.4.1 本地存储服务
|
||||
|
||||
注意:
|
||||
> 这个模块是可选的,或者说不建议最终部署时所使用。
|
||||
> 最终部署时建议采用第三方云存储方案。
|
||||
#### 2.3.4.2 腾讯云存储服务
|
||||
|
||||
### 2.4.1 业务
|
||||
#### 2.3.4.3 阿里云存储服务
|
||||
|
||||
支持服务:
|
||||
### 2.3.5 消息通知
|
||||
|
||||
* 列表
|
||||
* 创建
|
||||
* 修改
|
||||
* 读取
|
||||
* 删除
|
||||
* 下载,即下载对象数据文件
|
||||
* 访问,即直接访问对象数据
|
||||
#### 2.3.5.1 邮件通知
|
||||
|
||||
### 2.4.2 安全
|
||||
#### 2.3.5.2 短信通知
|
||||
|
||||
警告
|
||||
> 目前这里没有任何安全机制,这意味着任何人如果知道对象存储服务的地址,都可以直接存储访问对象数据。
|
||||
#### 2.3.5.3 微信模板通知
|
||||
|
||||
这样简化的目的是对象存储服务建议最终采用云服务,因此这里仅仅实现一个简单的服务面向测试开发。
|
||||
### 2.3.6 物流跟踪
|
||||
|
||||
如果开发者需要局域网部署,那么这里需要加入一定的安全机制。
|
||||
|
||||
### 2.4.3 文件Key
|
||||
|
||||
每一个上传的文件都会采用一个随机值key,作为当前文件的网络访问链接的一部分。
|
||||
|
||||
以后可能需要进一步支持自定义Key,例如采用原文件名字作为key。
|
||||
### 2.3.7 系统设置
|
||||
|
||||
|
||||
## 2.5 litemall-all
|
||||
## 2.4 litemall-all
|
||||
|
||||
在章节1.5中讨论的部署方案中设计了一种单主机单服务方案,
|
||||
也就是说三个后台服务和静态文件都部署在一个Spring Boot应用中。
|
||||
也就是说两个后台服务和静态文件都部署在一个Spring Boot应用中。
|
||||
|
||||
注意:
|
||||
> 这个模块也是可选的,或者说不是非常建议的,应该仅用在主机内存资源紧张的情况下。
|
||||
@@ -830,20 +802,3 @@ bcypt代码本质上是spring里面的代码。
|
||||
实际的原理是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格式的项目包,包含了三个后台服务和静态文件。
|
||||
2
doc/6.md
@@ -9,7 +9,7 @@
|
||||
下一步应该设计不同的业务enum类型,然后mybatis自定义BaseTypeHandler来处理不同的枚举类型。
|
||||
|
||||
### 6.1.2 litemall-db AutoConig
|
||||
目前,litemall-os-api、litemall-admin-api和litemall-wx-api引入litemall-db的时候,需要在Application类中显式注解查找包和MapperScan来对litemall-db中的mapper查找,此外需要在application.properties配置文件中完成对数据库、数据池等配置。
|
||||
目前,litemall-admin-api和litemall-wx-api引入litemall-db的时候,需要在Application类中显式注解查找包和MapperScan来对litemall-db中的mapper查找,此外需要在application.properties配置文件中完成对数据库、数据池等配置。
|
||||
例如
|
||||
```
|
||||
@SpringBootApplication(scanBasePackages={"org.linlinjava.litemall.admin","org.linlinjava.litemall.db"})
|
||||
|
||||
BIN
doc/pic/1.png
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 121 KiB |
BIN
doc/pic/2.png
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 68 KiB |
BIN
doc/pic/5.gif
|
Before Width: | Height: | Size: 9.0 MiB |
@@ -69,13 +69,6 @@ http {
|
||||
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
|
||||
ssl_prefer_server_ciphers on;
|
||||
|
||||
location ^~ /os {
|
||||
proxy_pass http://localhost:8081;
|
||||
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 ^~ /wx {
|
||||
proxy_pass http://localhost:8082;
|
||||
proxy_set_header Host $host;
|
||||
|
||||
BIN
doc/pic1/1-1.png
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 122 KiB |
BIN
doc/pic1/1-2.png
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 97 KiB |
BIN
doc/pic1/1-3.png
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 114 KiB |
@@ -36,6 +36,27 @@
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-resources</id>
|
||||
<phase>validate</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${basedir}/target/classes/static</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>../litemall-admin/dist</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
spring:
|
||||
profiles:
|
||||
active: db, core, admin, wx, os
|
||||
active: db, core, admin, wx
|
||||
message:
|
||||
encoding: UTF-8
|
||||
|
||||
@@ -13,6 +13,5 @@ logging:
|
||||
org.springframework: ERROR
|
||||
org.mybatis: ERROR
|
||||
org.linlinjava.litemall.admin: DEBUG
|
||||
org.linlinjava.litemall.os: DEBUG
|
||||
org.linlinjava.litemall.wx: DEBUG
|
||||
org.linlinjava.litemall: DEBUG
|
||||
@@ -4,9 +4,9 @@
|
||||
// 局域网测试使用
|
||||
// var WxApiRoot = 'http://192.168.0.101:8082/wx/';
|
||||
// 云平台部署时使用
|
||||
// var WxApiRoot = 'http://122.152.206.172:8082/wx/';
|
||||
var WxApiRoot = 'http://122.152.206.172:8082/wx/';
|
||||
// 云平台上线时使用
|
||||
var WxApiRoot = 'https://www.menethil.com.cn/wx/';
|
||||
// var WxApiRoot = 'https://www.menethil.com.cn/wx/';
|
||||
|
||||
module.exports = {
|
||||
IndexUrl: WxApiRoot + 'home/index', //首页数据接口
|
||||
|
||||