Commit d1061b12 authored by Menethil's avatar Menethil
Browse files

Merge remote-tracking branch 'origin/master'

parents c02e5fec c4c61da0
stages:
- deploy
deploy:
stage: deploy
script:
- mvn install
- mvn clean package
- rm -rf /root/spring_boot/*.jar
- rm -rf /etc/init.d/litemall-*
- cp -rf litemall-admin-api/target/litemall-admin-api-*-exec.jar /root/spring_boot/litemall-admin-api.jar
- cp -rf litemall-wx-api/target/litemall-wx-api-*-exec.jar /root/spring_boot/litemall-wx-api.jar
- sudo chmod 777 /root/spring_boot/*.jar
- sudo ln -f -s /root/spring_boot/litemall-admin-api.jar /etc/init.d/litemall-admin-api
- sudo ln -f -s /root/spring_boot/litemall-wx-api.jar /etc/init.d/litemall-wx-api
- sudo /etc/init.d/litemall-wx-api restart
- sudo /etc/init.d/litemall-admin-api restart
- systemctl stop nginx
- rm -rf /root/nginx_web/
- cd litemall-admin
- cnpm install
- cnpm run build:dep
- mkdir /root/nginx_web
- cp -rf dist/* /root/nginx_web
- sudo chmod 777 /root/nginx_web
- systemctl restart nginx
tags:
- litemall_dev
\ No newline at end of file
......@@ -4,10 +4,13 @@
litemall = Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端
上架实例
* [文档](https://linlinjava.gitbook.io/litemall)
* [贡献](https://linlinjava.gitbook.io/litemall/contribute)
* [FAQ](https://linlinjava.gitbook.io/litemall/7)
![](./doc/pic/demo.png)
## 上架实例
![](./doc/pic/demo.png)
## 项目代码
......@@ -25,11 +28,9 @@ litemall = Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端
![](doc/pic/2.png)
## 效果
### 小商城效果
## 功能
![](doc/pic/3.png)
### 小商城功能
* 首页
* 专题列表、专题详情
......@@ -46,9 +47,7 @@ litemall = Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端
* 地址列表、地址添加、地址删除
* 收藏、足迹
### 管理平台效果
![](doc/pic/4.png)
### 管理平台功能
* 会员管理
* 商城管理
......@@ -68,18 +67,15 @@ litemall = Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端
4. 也可以点击“预览”,然后手机扫描登录。
注意,手机需要打开调试功能。
![](doc/pic/5.gif)
![](./doc/pic/3.png)
### 管理平台演示访问
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)
![](doc/pic/4.png)
## 开发计划
......@@ -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的后台集成方案
本项目所依赖的其他开源项目见相关章节
## 问题
![](doc/pic/qq.png)
开发者有问题或者好的建议可以用Issues反馈交流,请给出详细信息,本人会尽可能解决。
* 如果问题是共性问题(如代码bug或文档不全),本人会及时解决。
* 如果问题是个人问题(如开发者了解不深入或者没有相关技术),请见谅(本人也是百度和谷歌)。
......@@ -149,18 +130,13 @@ V 3.0.0 完成以下目标:
* 请百度或谷歌相关技术;
* 请查看相关技术的官方文档,例如微信小程序的官方文档;
* 请提问前尽可能做一些DEBUG或者思考分析,然后提问时给出详细的错误相关信息以及个人对问题的理解。
## 贡献
任何形式的贡献都欢迎,查看[贡献指南](CONTRIBUTE.md)
* 在开发交流群中应讨论开发、业务和合作问题。
![](doc/pic/qq.png)
## 相关项目
注意:
> * 如果开发者开发使用中有问题,建议采用Issue来报告问题和解决问题。
> * 在开发交流群中应讨论开发、业务和合作问题。
> * 交流结果如果是共识性的则在文档中记录,如果是开放性的则会在Issue中记录。
HubertYoung正在开发Android端[Litemall-Android](https://github.com/HubertYoung/Litemall-Android)
## 相关项目
## License
HubertYoung正在开发Android端[Litemall-Android](https://github.com/HubertYoung/Litemall-Android)
\ No newline at end of file
[MIT](https://github.com/linlinjava/litemall/blob/master/LICENSE)
Copyright (c) 2018-present linlinjava
\ No newline at end of file
1. 项目进一步打包到deploy文件夹中:
* litemall-os-api模块编译得到的litemall-os-api-0.1.0-exec.jar 保存到deploy的litemall-api文件夹中,同时重命名成litemall-os-api.jar
* litemall-wx-api模块编译得到的litemall-wx-api-0.1.0-exec.jar 保存到deploy的litemall-api文件夹中,同时重命名成litemall-wx-api.jar
* litemall-admin-api模块编译得到的litemall-admin-api-0.1.0-exec.jar 保存到deploy的litemall-api文件夹中,同时重命名成litemall-admin-api.jar
* litemall-admin模块编译以后,把dist文件夹压缩,然后放到deploy的litemall-admin文件夹中。
......@@ -16,6 +15,7 @@
cd deploy
mysql -h localhost -u root -p123456
source ./litemall-db/litemall_schema.sql
use litemall;
source ./litemall-db/litemall_table.sql
source ./litemall-db/litemall_data.sql
```
......@@ -35,7 +35,6 @@
然后测试是否部署成功(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
......@@ -46,21 +45,14 @@
为了简化步骤1和步骤2,完成了deploy/util/package.sh上传脚本和deploy/util/lazy.sh部署脚本,
注意:
> * 开发者需要在deploy/util/package.sh和deploy/util/lazy.sh中设置相应的云主机登录账号和密钥文件路径。
> * 开发者需要在deploy/util/reset.sh设置云主机的MySQL的root登录账户。
> * 请先执行上述1-6步骤,确保部署环境成功。
> 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脚本。
注意,运行命令必须在项目主目录中,类似如下命令:
```bash
cd litemall
./deploy/util/lazy.sh
```
该脚本会调用package.sh打包项目,然后上传deploy文件夹到云主机,最后ssh登录远程主机执行bin下面的deploy.sh脚本。
\ No newline at end of file
......@@ -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
......
开发者需要注意的是
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值。
\ No newline at end of file
litemall:
notify:
mail:
# 邮件通知配置,邮箱一般用于接收业务通知例如收到新的订单,sendto 定义邮件接收者,通常为商城运营人员
enable: true
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: true
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: true
template:
- name: paySucceed
templateId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- name: captcha
templateId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- name: ship
templateId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- name: refund
templateId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 快鸟物流查询配置
express:
enable: true
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联邦(国际件)"
\ No newline at end of file
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
# 开发者应该设置成自己的wx相关信息
litemall:
wx:
app-id: wxa5b486c6b918ecfb
app-secret: e04004829d4c383b4db7769d88dfbca1
mch-id: 111111
mch-key: xxxxxx
notify-url: http://www.example.com/wx/order/pay-notify
\ No newline at end of file
This diff is collapsed.
......@@ -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.4.1 业务
支持服务:
#### 2.3.4.1 本地存储服务
* 列表
* 创建
* 修改
* 读取
* 删除
* 下载,即下载对象数据文件
* 访问,即直接访问对象数据
#### 2.3.4.2 腾讯云存储服务
### 2.4.2 安全
#### 2.3.4.3 阿里云存储服务
警告
> 目前这里没有任何安全机制,这意味着任何人如果知道对象存储服务的地址,都可以直接存储访问对象数据。
### 2.3.5 消息通知
这样简化的目的是对象存储服务建议最终采用云服务,因此这里仅仅实现一个简单的服务面向测试开发。
#### 2.3.5.1 邮件通知
如果开发者需要局域网部署,那么这里需要加入一定的安全机制。
#### 2.3.5.2 短信通知
### 2.4.3 文件Key
#### 2.3.5.3 微信模板通知
每一个上传的文件都会采用一个随机值key,作为当前文件的网络访问链接的一部分。
### 2.3.6 物流跟踪
以后可能需要进一步支持自定义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格式的项目包,包含了三个后台服务和静态文件。
\ No newline at end of file
......@@ -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"})
......
doc/pic/1.png

138 KB | W: | H:

doc/pic/1.png

121 KB | W: | H:

doc/pic/1.png
doc/pic/1.png
doc/pic/1.png
doc/pic/1.png
  • 2-up
  • Swipe
  • Onion skin
doc/pic/2.png

73.8 KB | W: | H:

doc/pic/2.png

68.1 KB | W: | H:

doc/pic/2.png
doc/pic/2.png
doc/pic/2.png
doc/pic/2.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -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;
......
doc/pic1/1-1.png

77.9 KB | W: | H:

doc/pic1/1-1.png

72.2 KB | W: | H:

doc/pic1/1-1.png
doc/pic1/1-1.png
doc/pic1/1-1.png
doc/pic1/1-1.png
  • 2-up
  • Swipe
  • Onion skin
doc/pic1/1-11.png

131 KB | W: | H:

doc/pic1/1-11.png

122 KB | W: | H:

doc/pic1/1-11.png
doc/pic1/1-11.png
doc/pic1/1-11.png
doc/pic1/1-11.png
  • 2-up
  • Swipe
  • Onion skin
doc/pic1/1-2.png

115 KB | W: | H:

doc/pic1/1-2.png

96.6 KB | W: | H:

doc/pic1/1-2.png
doc/pic1/1-2.png
doc/pic1/1-2.png
doc/pic1/1-2.png
  • 2-up
  • Swipe
  • Onion skin
doc/pic1/1-3.png

126 KB | W: | H:

doc/pic1/1-3.png

114 KB | W: | H:

doc/pic1/1-3.png
doc/pic1/1-3.png
doc/pic1/1-3.png
doc/pic1/1-3.png
  • 2-up
  • Swipe
  • Onion skin
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment