Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Litemall
Commits
02679509
Commit
02679509
authored
Jul 12, 2018
by
Junling Bu
Browse files
update[doc]
parent
3499fe15
Changes
3
Hide whitespace changes
Inline
Side-by-side
doc/1.md
View file @
02679509
...
...
@@ -74,21 +74,16 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
*
地址添加
*
我的收藏
*
我的足迹
*
支付页面(待定)
*
优惠券选择(待定)
*
我的优惠券(待定)
*
支付页面
### 1.2.2 管理平台功能
*
会员管理
*
会员管理
*
收货地址
管理
*
收货地址
*
会员收藏
*
会员足迹
*
搜索历史
*
购物车
*
会员等级(待定)
*
会员优惠劵(待定)
*
商城管理
*
区域配置
*
品牌制造商
...
...
@@ -98,17 +93,13 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
*
关键词
*
渠道管理(待定)
*
商品管理
*
商品管理
*
商品参数
*
商品规格
*
货品管理
*
商品列表
*
商品上架
*
商品编辑
*
用户评论
*
团购设置(待定)
*
商品满减搭配(待定)
*
推广管理
*
广告
列表
*
广告
管理
*
专题管理
*
优惠劵管理(待定)
*
系统管理
*
管理员
*
对象存储
...
...
@@ -233,19 +224,12 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
按照开发环境前,需要先在本地配置好数据库:
1.
本项目目前采用MySQL
,请上网下载安装MySQL 5.7.x
1.
本项目目前采用MySQL
注意:
> 1. MySQL必须安装5.7.x, 如果是5.6或者最新的8.0都会存在错误。
> 目前原因还没有找到(可能是采用JSON引起),希望开发者注意或者有好的解决方案。
> 2. 如果采用IDE工具导入数据,建议采用MySQL Workbench。如果采用navicat可能有时导入失败。
> 这里失败的原因应该是sql文件是MySQL Workbench导出的,因此可能存在不兼容的格式。
注意:建议采用命令行或者MySQL Workbench。如果采用navicat可能导入失败。
2.
数据库文件存放在litemall-db/sql文件夹中,其中litemall_schema.sql创建数据库和用户权限,
而litemall.sql则是具体的表和数据。开发者可以采用命令或者软件导入数据。
注意:
> 不要运行nideshop.sql文件,这只是所参考nideshop项目的原始数据库,仅用于对比。
litemall_table.sql则创建表,litemall_data.sql则是测试数据。
### 1.4.1 Spring Boot开发环境
...
...
@@ -523,7 +507,7 @@ sudo apt-get install mysql-client
* 命令行导入
1. 采用FileZilla把本项目的
litemall.sql
上传到云主机
1. 采用FileZilla把本项目的
数据库文件
上传到云主机
2. 使用PuTTY登录云主机
3. 进入MySQL,输入上节所设置的MySQL的root密码
4. 创建数据库、 创建用户并分配访问权限
...
...
@@ -546,7 +530,8 @@ sudo apt-get install mysql-client
cd deploy
mysql -h localhost -u root -p123456
source ./litemall-db/litemall_schema.sql
source ./litemall-db/litemall.sql
source ./litemall-db/litemall_table.sql
source ./litemall-db/litemall_data.sql
```
其中123456是开发者所设置的MySQL的管理员密码。
...
...
@@ -665,7 +650,8 @@ https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#dep
cd deploy
mysql -h localhost -u root -p123456
source ./litemall-db/litemall_schema.sql
source ./litemall-db/litemall.sql
source ./litemall-db/litemall_table.sql
source ./litemall-db/litemall_data.sql
```
注意,123456是开发者所设置的MySQL管理员密码
警告:
...
...
@@ -997,10 +983,18 @@ http://www.example.com
如果部署方案中采用tomcat而8080端口访问后台,而这里配置nginx后,
可以直接采用80端口访问,因此tomcat可以卸载。
#### 1.6.6.2 静态文件托管CDN
#### 1.6.6.2 管理后台前端文件启动优化
litemall-admin编译得到的前端文件在第一次加载时相当耗时,这里需要一些措施来优化启动速度
* 静态文件托管CDN
在上节中,建议采用卸载tomcat,采用nginx托管管理后台的静态文件。
这里可以进一步地,把静态文件托管到CDN,当然这里是需要收费。
* gzip压缩
在上节中,建议采用卸载tomcat,采用nginx托管管理后台的静态文件。
这里可以进一步地,把静态文件托管到CDN,当然这里是需要收费。
* 动态加载
#### 1.6.6.3 后台服务内部访问
...
...
doc/2.md
View file @
02679509
...
...
@@ -14,7 +14,7 @@ litemall-os-api模块只是为了减少开发中对第三方图片存储服务
建议开发者最终部署时切换到第三方图片存储服务。
litemall-all模块则只是一个包裹模块,几乎没有任何代码。该模块的作用是融合三个spring boot模块
和litemall-admin
m
模块静态文件到一个单独spring boot应用中,并最终打包成war格式的项目安装包。
和litemall-admin模块静态文件到一个单独spring boot应用中,并最终打包成war格式的项目安装包。
目前存在的问题:
...
...
@@ -22,19 +22,43 @@ litemall-all模块则只是一个包裹模块,几乎没有任何代码。该
*
`改善`
litemall-db的一些CRUD操作可以基于开源库重构
*
`功能`
可以参考一些云存储服务的API加强一些功能
## 2.1 litemall
.sql
## 2.1 litemall
数据库
litemall
.sql
数据库基于nideshop中的
[
nideshop.sql
](
https://github.com/tumobi/nideshop/blob/master/nideshop.sql
)
数据库,然后在实际开发过程中进行了调整和修改:
litemall数据库基于nideshop中的
[
nideshop.sql
](
https://github.com/tumobi/nideshop/blob/master/nideshop.sql
)
数据库,然后在实际开发过程中进行了调整和修改:
*
删除了一些目前不必要的表;
*
删除了表中一些目前不必要的字段;
*
行政区域数据litemall_region没有采用原nideshop中的数据,而是采用了
[
Administrative-divisions-of-China
](
https://github.com/modood/Administrative-divisions-of-China
)
;
*
表中的某些字段采用JSON;
*
表中的某些字段采用JSON
存储
;
*
表中的日期或时间字段采用DATE、DATETIME;
*
字段的数据类型粗粒度化,例如避免MEDIUMINT,而是INT;
*
表的数据做了清理、调整和补充(假数据)。
具体不同可以比较litemall-db模块下sql文件夹中nideshop.sql和litemall.sql。
litemall数据库由三个sql文件组成,在litemall-db文件夹下面的sql文件夹中:
1.
litemall_schema.sql
作用是创建空数据库、创建用户、设置访问权限。
开发者开发测试阶段可以使用,但是部署生产阶段一定要注意修改这里的默认用户名和密码。
注意,这里的sql文件不一定需要运行,开发者可以自己手动或命令行或IDE进行对应的操作即可。
2.
litemall_table.sql
作用是创建数据库表,但是没有创建任何数据。
因此,开发者可以在部署生产阶段直接使用。
3.
litemall_data.sql
作用是创建测试数据。
这里的测试数据来自开源项目
[
nideshop-mini-program
](
https://github.com/tumobi/nideshop-mini-program
)
开发者开发测试阶段可以使用,但是部署开发阶段应该使用自己的数据。
综上,这里litemall真正必须运行的sql文件是litemall_table.sql,其他两个sql文件开发者自行决定如何是否使用。
以下讨论一些关键性设计
...
...
@@ -43,7 +67,7 @@ litemall.sql数据库基于nideshop中的[nideshop.sql](https://github.com/tumob
### 2.1.1 商品和货品设计
这里商品存在商品
,商品属性,商品规格,货品
四种表
这里商品存在商品
表(litemall_goods),商品属性表(litemall_goods_attribute),商品规格表(litemall_goods_specification),商品货品表(litemall_product)
四种表
商品表是一种商品的基本信息,主要包括商品介绍,商品图片,商品所属类目,商品品牌商等;
...
...
@@ -60,9 +84,10 @@ litemall.sql数据库基于nideshop中的[nideshop.sql](https://github.com/tumob
*
多个规格和单一规格值,可以简化成第一种情况,或者采用第四种情况,通常实际情况下不常见;
*
多个规格和多个规格值,通常是两种规格或者三种规格较为常见,而且对应的价格不完全相同。
货品则是最终面向开发者购买的商品标识,存在多个规格值、数量和价格。
商品货品则是最终实现商品库存管理、购买业务的实体对象,存在多个规格值、数量和价格。
例如,同样的衣服品牌,可能因为不能尺寸和颜色而存在最终的货品,这里每个货品的价格可以一样,也可以不一样。
因此这里
一个商品表项,存在(至少0个)多个商品属性表项目,存在(至少一个)多个商品规格表项,
总结一下,一个普通商品,实际上在数据库中,存在
一个商品表项,存在(至少0个)多个商品属性表项目,存在(至少一个)多个商品规格表项,
存在(至少一个)多个货品表项。
举例如下:
...
...
@@ -71,7 +96,7 @@ litemall.sql数据库基于nideshop中的[nideshop.sql](https://github.com/tumob
*
存在两个商品参数,
*
属性名称“面向人群”,属性值“男士”
*
属性名称“面料”,属性值“100%棉”
*
存在两种规格共八个商品规格项,
*
存在两种规格
(分别五个规格值和三个规格值)
共八个商品规格项,
*
规格名称“尺寸”,规则值“S”
*
规格名称“尺寸”,规则值“M”
*
规格名称“尺寸”,规则值“L”
...
...
@@ -382,8 +407,7 @@ litemall.sql数据库基于nideshop中的[nideshop.sql](https://github.com/tumob
## 2.2 litemall-db
litemall-db模块是一个普通的Spring Boot应用,基于mybatis技术提供开发者
访问数据库的功能。
litemall-db模块是一个普通的Spring Boot应用,基于mybatis框架实现数据库访问操作,对外提供业务数据访问服务。
此外,litemall-db最终是作为一个类库被其他模块所依赖使用,因此并不对外
直接服务,没有使用Spring MVC技术。
...
...
@@ -401,13 +425,26 @@ litemall-db模块是一个普通的Spring Boot应用,基于mybatis技术提供
这里litemall-db模块可以分成以下几种代码:
*
mybatis generator自动化代码
*
mybatis数据库访问代码
*
generator生成代码
*
非generator手动代码
*
业务代码
*
安全代码
*
JSON支持代码
*
配置代码
### 2.2.1 自动化代码
### 2.2.1 mybatis数据库访问代码
mybatis数据库访问代码是指dao接口代码、dao数据库XML文件和domain代码:
*
dao接口代码,声明了数据库访问接口
*
dao数据库XML文件,实现了数据库访问操作
*
domain代码,则是保存数据库返回数据。
此外,这里的数据库访问代码又进一步分成
*
generator生成代码,即基于mybatis generator相关插件自动生成上述三种代码或文件;
*
非generator手动代码,则是需要开发者自己编写上述三种代码。
#### 2.2.1.1 generator生成代码

...
...
@@ -416,7 +453,7 @@ litemall-db模块是一个普通的Spring Boot应用,基于mybatis技术提供
1.
读取
`mybatis-generator`
文件夹下的
`generatorConfig.xml`
文件
2.
根据
`jdbcConnection`
访问数据库
3.
根据
`table`
, 自动生成三种代码:
*
src文件夹
`org.linlinjava.litemall.db.do
main
`
包内的Java代码
*
src文件夹
`org.linlinjava.litemall.db.d
a
o`
包内的Java代码
*
src文件夹
`org.linlinjava.litemall.db.domain`
包内的Java代码
*
resources文件夹
`org.linlinjava.litemall.db.domain.dao`
内的XML文件
...
...
@@ -469,9 +506,38 @@ litemall-db模块是一个普通的Spring Boot应用,基于mybatis技术提供
关于mybatis generator的用法,可以参考:
https://blog.csdn.net/isea533/article/details/42102297
#### 2.2.1.2 非generator手动代码
虽然generator可以自动生产代码,帮助开发者简化开发工作,但是在涉及到多表操作或特殊数据库操作时,
仍然需要开发者自己手动编写mybatis框架代码。
具体如何基于mybatis框架编写代码,请开发者自己查找资料。
这里,以统计功能举例说明:
1.
dao代码
在src文件夹
`org.linlinjava.litemall.db.domain`
包内的StatMapper.java代码定义了数据库访问的接口
2.
domain代码
如果希望数据库操作返回数据模型,可以在src文件夹
`org.linlinjava.litemall.db.domain`
包内创建相应代码。
而这里统计功能是采用简化的
`List<Map>`
保存数据,没有定义domain代码。
3.
XML文件
在resources文件夹
`org.linlinjava.litemall.db.domain.dao`
内的StatMapper.xml文件则是实现真正的数据库访问操作。
### 2.2.2 业务代码
基于2.2.1的代码,业务代码处理一些具体业务相关的操作,对其他模块提供具体的服务。
虽然2.2.1节所述代码已经能够提供数据库访问操作,但是这里仍然会抽象出业务访问层代码,即基于2.2.1所述代码和实际业务需求
实现一些具体业务相关的操作,对其他模块提供便捷业务数据服务。
需要指出的是,这里的业务代码往往是单表相关的业务代码,而涉及到多表操作的java代码通常是在其他高层模块中实现。
这里的业务分层并不是绝对的。例如,开发者可以取消这里的业务代码,而在其他模块中直接调用2.2.1所述代码。
通常业务层代码在src文件夹
`org.linlinjava.litemall.db.service`
包中。
### 2.2.3 安全代码
...
...
@@ -780,5 +846,4 @@ bcypt代码本质上是spring里面的代码。
注意,这里只是简单的复制。因此开发者需要保证litemall-all打包前,litemall-admin
模块内dist目录下静态文件已经生成。
最终打包以后则是一个war格式的项目包,包含了三个后台服务和静态文件。
最终打包以后则是一个war格式的项目包,包含了三个后台服务和静态文件。
\ No newline at end of file
doc/7.md
View file @
02679509
...
...
@@ -13,11 +13,25 @@
1.
如果只是体验商品购买流程,开发者可以采用账号注册登录方式。
2.
开发者在litemall-wx和litemall-wx-api模块的appid等信息设置成自己申请的信息。
#### 7.1.1.1 appid已经修改,微信登陆仍然失败
现象:
微信开发者工具修改了开发者自己申请的appid,后台也更新了相应信息,但是微信登录仍然报错。
原因:
这里可能是缓存问题,虽然修改了appid,但是微信开发者工具未及时跟新。
解决方案:
微信开发者工具中修改appid以后,请关闭litemall-wx项目或者微信开发者工具,重新启动导入litemall-wx。
### 7.1.2 手机真机测试不正常
现象:
开发者工具打开正常,但是手机真机扫描加载小商场以后,只有页面结构,没有数据和图片。
微信
开发者工具打开正常,但是手机真机扫描加载小商场以后,只有页面结构,没有数据和图片。
原因:
...
...
@@ -87,4 +101,26 @@ wx.notify-url=
## 7.2 管理后台
### 7.2.1 Invalid bound statement
现象:
有时(特别是采用mybatis generator重新生成代码)后台服务报错
```
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): org.linlinjava.litemall.db.dao.XXXX
```
原因:
应该是自动生成的新的XML文件没有及时跟新到编译文件夹target中,造成了target中mybatis的Java代码和XML文件不对应。
解决方案:
采用maven命令或者插件先清理项目再重新编译打包,例如
```
bash
mvn clean
mvn package
```
## 7.3 基础系统
\ No newline at end of file
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment