说明文件替换

This commit is contained in:
zhh 2018-11-23 14:52:30 +08:00
parent b74ae2b50f
commit b4ec1256d7
3 changed files with 508 additions and 508 deletions

375
README-DEV.md Normal file
View File

@ -0,0 +1,375 @@
# mall
## 技术选型
### 后端技术
技术 | 名称
----|----
Spring Boot | 容器+MVC框架
Spring Security | 认证和授权框架
MyBatis | ORM框架
MyBatisGenerator | 数据层代码生成
PageHelper | MyBatis物理分页插件
Swagger-UI | 文档生产工具
Hibernator-Validator | 验证框架
Elasticsearch | 搜索引擎
RabbitMq | 消息队列
Redis | 分布式缓存
MongoDb | NoSql数据库
Docker | 应用容器引擎
Druid | 数据库连接池
### 前端技术
技术 | 名称
----|----
Vue | 前端框架
Vue-router | 路由框架
Vuex | 全局状态管理框架
Element | 前端UI框架
Axios | 前端HTTP框架
Js-cookie | cookie管理工具
### 框架搭建
功能 | 完成
----|----
集成MyBatis | ✔
集成MyBatisGenerator | ✔
集成SpringSecurity | ✔
集成Swagger-UI | ✔
集成Hibernator-Validator | ✔
集成日志功能 | ✔
集成监控功能 | ✔
crud操作demo | ✔
合理规划包结构 | ✔
SpringAOP通用日志处理 | ✔
SpringAOP通用验证失败结果返回 | ✔
CommonResult对通用返回结果进行封装 | ✔
SpringSecurity登录改为Restful形式 | ✔
JWT登录、注册、获取token | ✔
JTA事务处理 | ✔
集成单元测试 | ✔
OSS上传功能 | ✔
Elasticsearch搜索功能 | ✔
HTTPS支持 | ✔
Redis数字型ID生成 | ✔
SpringTask定时任务支持 | ✔
docker容器化部署 | ✔
配置区分生产和测试环境 | ✔
ELK日志收集功能 | ✔
RabbitMq异步通信 | ✔
RestTemplate服务间调用 | ✔
SpringSecurity权限管理功能 | ✔
集成SpringCloud |
### 使用工具
工具 | 下载地址
----|----
开发工具idea | https://www.jetbrains.com/idea/download
redis客户端连接工具 | https://redisdesktop.com/download
mongo客户端连接工具 | https://robomongo.org/download
本地host管理 | https://oldj.github.io/SwitchHosts/
Linux远程连接工具 | http://www.netsarang.com/download/software.html
数据库连接工具 | http://www.formysql.com/xiazai.html
数据库设计工具 | http://powerdesigner.de/
原型设计工具 | https://www.axure.com/
思维导图设计工具 | http://www.edrawsoft.cn/mindmaster
gif录制工具 | https://www.screentogif.com/
### 后台功能
#### 后台登录功能 ✔
- 后台用户注册功能
- 后台用户登录后获取token
- 刷新token功能
#### 商品管理 ✔
> **商品分类管理**
- 按父分类编号分页查看分类列表
- 添加、编辑、删除分类
- 转移分类商品
> **商品品牌管理**
- 按品牌名称搜索分页查看品牌列表
- 添加、编辑、删除品牌
- 查看当前品牌的所有产品
> **商品属性分类管理**
- 添加商品属性分类(名称)
- 分页查询全部商品属性分类
- 删除单个商品属性分类
- 修改单个属性分类名称
- 查询单个属性分类信息
> **商品属性管理**
- 根据分类查询属性列表或参数列表(分页,支持类型)
- 添加商品属性
- 查询单个商品属性
- 编辑商品属性
- 批量删除商品属性
- 分页查询全部商品属性
> **添加商品**
- 选择商品分类根据商品分类id查找分类
- 选择品牌:查询全部品牌
- 选择运费模版:查询全部运费模版
- 设置会员价格查询所有会员等级传入List<PmsMemberPrice>
- 添加阶梯价格: 参数传入List<PmsProductLadder>
- 设置满减价格: 参数传入List<PmsProductFullReduction>
- 选择商品属性类别:获取所有商品属性分类根据商品属性分类的id获取规格和参数(type=0->规格type=1->参数)
- 选择规格并生成库存信息:前端实现
- 添加sku库存信息参数传入List<PmsSkuStock>
- 设置属性图片设置到pic和album_pics字段中去
- 添加商品参数参数传入List<PmsProductAttributeValue>
- 添加自定义商品规格参数传入List<PmsProductAttributeValue>
- 关联专题:参数传入List<CmsSubjectProductRelation>关系
- 关联优选:参数传入List<CmsPrefrenceAreaProductRelation>关系
> **修改商品**
- 根据商品id查询商品信息
- 查询商品基本信息:商品分类名称、品牌名称、运费模版名称
- 查询商品促销信息:商品的会员价格、阶梯价格、满减价格
- 查询商品属性信息商品属性类别名称、sku库存信息、属性分类对应规格和参数值
- 查询商品关联信息:商品关联专题和关联优选
- 修改商品信息商品属性分类及规格不可修改只支持单个sku的修改、删除、新增商品属性分类及规格可以修改修改后同时显示原sku库存及属性分类
> **商品分页查询**
- 商品的状态:全部商品、已上架、未上架、待审核、未通过 (publishStatus verifyStatus)
- 商品名称(%name%)
- 商品货号(productSn)
- 商品分类id(productCategoryId)
- 商品品牌id(brandId)
- 批量操作:上下架、推荐、新品、转移分类、放入回收站、审核
- 查看记录:审核记录,操作日志
- sku:根据产品及sku编号获取sku信息批量修改sku信息
> **商品回收管理**
- 分页展示回收商品列表
- 回收商品还原功能
#### 促销管理
> **秒杀活动管理**
- 活动列表展示
- 活动上下线
- 设置活动商品
- 添加、编辑、删除活动
> **优惠券管理**
- 优惠券列表展示
- 添加、编辑、删除优惠券
- 查看优惠券领取记录
> **活动管理**
- 活动列表展示
- 添加、编辑、删除活动
- 活动上下线
- 发布到广告
> **首页推荐**
- 品牌推荐:列表展示、是否推荐、排序、删除、多选加入品牌
- 新鲜好物:商品列表展示、是否推荐、排序、删除、多选加入商品
- 人气推荐:商品列表展示、是否推荐、排序、删除、多选加入商品
- 专题精选:专题列表展示、是否推荐、排序、删除、多选加入专题
- 广告管理:广告列表展示、是否上线、排序、删除、添加编辑广告
#### 内容管理
> **专题管理**
- 专题列表:查看、删除、推荐专题
- 添加、编辑专题:选择专题分类、添加、删除关联商品
- 专题分类管理:控制显示、排序、编辑删除分类
> **优选主题**
- 优选列表:控制显示、排序、删除
- 添加、编辑优选:关联和删除商品
> **话题管理**
- 专题列表:查看、删除、热门话题
- 话题分类管理:控制显示、排序、编辑删除分类
> **帮助管理**
- 帮助列表:查看、删除、控制显示
- 添加、编辑帮助:选择帮助分类
- 帮助分类管理:控制显示、排序、编辑删除分类
#### 用户管理
> **用户管理**
- 用户列表:帐号启用、删除、群发短信
- 批量操作:群发短信、站内信、推送、设置标签、赠送优惠券
- 查看、编辑用户信息:用户详情(统计信息、收货地址、订单记录)、编辑资料、登录日志
- 购买力筛选:最近消费、消费次数、消费金额、订单均价、商品分类、会员等级、用户标签
- 用户标签管理:标签列表、添加、编辑、删除
- 会员等级设置:列表、添加、编辑、设置默认会员等级
> **成才值及积分**
- 成长值及积分查询:列表展示、积分明细、成长值明细、修改数值
- 任务奖励设置:新手任务、日常任务
- 更多规则设置:成长值规则、积分规则、积分消费设置
#### 订单管理
> **订单列表**
- 订单搜索:订单编号、收货人姓名/号码、订单状态、订单分类、订单来源、提交时间
- 订单操作:查看订单、关闭订单、订单发货、订单跟踪、删除订单
- 批量操作:批量发货、关闭订单、删除订单
> **查看订单**
- 订单状态:提交订单、支付订单、平台发货、确认收货、完成评价
- 订单详情操作:修改发票信息、修改收货人信息、修改商品信息、修改费用信息、发送站内信、关闭订单、备注订单、取消订单、订单跟踪、删除订单
- 订单基本信息:订单信息、优惠信息、用户信息
- 发票信息:类型、抬头、内容、收票人信息
- 收货人信息:收货人、手机号、邮政编码、收货地址
- 商品信息:包含商品基本信息
- 费用信息:合计及优惠信息
- 操作信息:订单状态改变记录
> **订单设置**
- 秒杀订单超时时间
- 正常订单超时时间
- 订单自动完成时间
- 自动结束交易时间
- 自动好评时间
> **退货申请处理**
- 退货申请搜索:服务单号、收货人姓名/号码、处理状态、申请时间、操作人员、处理时间
- 批量操作:删除
- 查看详情:退货商品、服务单信息、确认退货、拒绝退货、确认收货
> **退货原因设置**
- 原因列表:类型、排序、是否启用、添加时间
- 添加、编辑原因:同上
- 批量操作:删除
#### 权限管理 ✔
> **权限管理**
- 权限管理:添加权限、删除权限、修改权限、以树形结构返回权限
- 角色管理:添加角色、删除角色、更新角色、角色列表、获取相应角色权限、修改相应角色权限
- 成员管理:添加、编辑、删除成员、成员列表、为成员分配角色、获取成员角色、分配+-权限、获取权限列表
角色 | 菜单
----|----
管理员 | 所有菜单权限
运营 | 首页、用户、促销、运营、内容
财务 | 首页、统计、财务
美工 | 首页、商品
客服 | 首页、商品、订单
### 前台功能
#### 商品搜索 ✔
> **综合搜索功能**
- 搜索:根据商品标题、副标题、关键字进行搜索;
- 筛选:未选择分类时聚合搜索结果,选择出现次数最多的分类,选择分类以后可以根据选择分类的筛选字段进行筛选;
- 排序:按新品、销量、价格进行排序
- 搜索返回结果商品ID、商品图片、名称、副标题、价格、商品销量、新品、商品的参数、品牌名称、分类名称
- 接口从数据库中查询相关数据并导入es,插入(修改)数据接口,删除数据接口
- 品牌分类筛选:根据搜索结果聚合返回品牌、分类及属性
> **商品推荐功能**
- 推荐某商品的相关商品、根据该商品的品牌10、分类6、名称8、关键字2、副标题2
- 根据用户一周浏览记录推荐商品,根据用户搜索记录推荐商品
> **商品热搜功能**
- 根据用户搜索记录聚合生成热搜词
> **商品搜索联想功能**
- 根据用户搜索记录聚合生成热搜词
#### 购物流程 ✔
> **购物车**
- 添加商品到购物车
- 购物车商品列表(商品主图、商品名称、商品数量、商品规格)
- 修改购物车中商品数量
- 购物车中商品重选规格
- 购物车中商品删除功能
> **生成确认单**
- 生成确认单信息:收货信息、商品信息、价格信息、发票信息、支付方式
- 选择收货地址:默认收货地址
- 选择优惠券及积分抵扣:展示可用优惠券和不可以优惠券
- 计算商品价格:商品合计、运费、优惠券抵扣、积分抵扣、活动优惠
- 选择支付方式:在线支付及货到付款
- 计算应付金额:合计+运费-优惠券抵扣-积分抵扣-活动优惠
> **提交订单**
- 将确认单信息转化为订单
- 删除购物车中相关商品
- 添加订单到数据库并锁定库存
- 在线支付选择支付方式支付宝、微信、银联、ApplePay
> **支付订单**
- 支付完成后修改订单状态为已支付、扣除库存
> **取消订单(未支付情况下)**
- 订单超时后自动取消订单,解除商品库存锁定,返还优惠券,积分
#### 会员模块(我的)✔
> **我的关注**
- 关注品牌列表品牌logo、名称、地址、关注数量
- 取消关注功能
- 关注列表展示
> **我的收藏**
- 收藏的商品:商品主图、名称、卖点、价格、找相似
- 收藏的专题:专题主图、标题、副标题、收藏数、浏览数、评论数
- 收藏的话题:话题主图、标题、副标题、收藏数、浏览数、评论数
> **我的足迹**
- 浏览过的商品:商品主图、名称、卖点、价格、找相似
- 删除记录功能
- 浏览列表展示
> **会员登录注册**
- 登录功能https登录
- 注册功能:用户名、密码、手机号、手机验证码
- 获取验证码:后台生成验证码,验证码绑定手机号
- 忘记密码:手机号、短信验证码、新密码
- 登出功能

View File

@ -1,135 +0,0 @@
# mall
## 前言
`mall`项目致力于打造一个完整的电商系统,采用现阶段流行技术实现。
## 项目介绍
`mall`项目是一套电商系统包括前台商城系统及后台管理系统基于SpringBoot+MyBatis实现。
前台商城系统包含用户中心、会员成长、优惠券、积分、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务等模块。
后台管理系统包含商品、订单、用户、促销、运营、内容、统计、财务、设置、权限等管理系统模块。
### 项目演示
> 后台管理系统
- 前端项目`mall-admin-web`地址https://github.com/macrozheng/mall-admin-web
- [后台管理系统功能演示.gif](document/resource/mall-admin.gif)
### 组织结构
``` lua
mall
├── mall-mbg -- MyBatisGenerator生成的数据库操作代码
├── mall-admin -- 后台商城管理系统
├── mall-search -- 基于Elasticsearch的商品搜索系统
├── mall-portal -- 前台商城系统
└── mall-demo -- 框架搭建时的测试代码
```
### 技术选型
#### 后端技术
技术 | 说明 | 官网
----|----|----
Spring Boot | 容器+MVC框架 | [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot)
Spring Security | 认证和授权框架 | [https://spring.io/projects/spring-security](https://spring.io/projects/spring-security)
MyBatis | ORM框架 | [http://www.mybatis.org/mybatis-3/zh/index.html](http://www.mybatis.org/mybatis-3/zh/index.html)
MyBatisGenerator | 数据层代码生成 | [http://www.mybatis.org/generator/index.html](http://www.mybatis.org/generator/index.html)
PageHelper | MyBatis物理分页插件 | [http://git.oschina.net/free/Mybatis_PageHelper](http://git.oschina.net/free/Mybatis_PageHelper)
Swagger-UI | 文档生产工具 | [https://github.com/swagger-api/swagger-ui](https://github.com/swagger-api/swagger-ui)
Hibernator-Validator | 验证框架 | [http://hibernate.org/validator/](http://hibernate.org/validator/)
Elasticsearch | 搜索引擎 | [https://github.com/elastic/elasticsearch](https://github.com/elastic/elasticsearch)
RabbitMq | 消息队列 | [https://www.rabbitmq.com/](https://www.rabbitmq.com/)
Redis | 分布式缓存 | [https://redis.io/](https://redis.io/)
MongoDb | NoSql数据库 | [https://www.mongodb.com/](https://www.mongodb.com/)
Docker | 应用容器引擎 | [https://www.docker.com/](https://www.docker.com/)
Druid | 数据库连接池 | [https://github.com/alibaba/druid](https://github.com/alibaba/druid)
OSS | 对象存储 | [https://github.com/aliyun/aliyun-oss-java-sdk](https://github.com/aliyun/aliyun-oss-java-sdk)
JWT | JTW登录支持 | [https://github.com/jwtk/jjwt](https://github.com/jwtk/jjwt)
LogStash | 日志收集 | [https://github.com/logstash/logstash-logback-encoder](https://github.com/logstash/logstash-logback-encoder)
Lombok | 简化对象封装工具 | [https://github.com/rzwitserloot/lombok](https://github.com/rzwitserloot/lombok)
#### 前端技术
技术 | 说明 | 官网
----|----|----
Vue | 前端框架 | [https://vuejs.org/](https://vuejs.org/)
Vue-router | 路由框架 | [https://router.vuejs.org/](https://router.vuejs.org/)
Vuex | 全局状态管理框架 | [https://vuex.vuejs.org/](https://vuex.vuejs.org/)
Element | 前端UI框架 | [https://element.eleme.io/](https://element.eleme.io/)
Axios | 前端HTTP框架 | [https://github.com/axios/axios](https://github.com/axios/axios)
v-charts | 基于Echarts的图表框架 | [https://v-charts.js.org/](https://v-charts.js.org/)
Js-cookie | cookie管理工具 | [https://github.com/js-cookie/js-cookie](https://github.com/js-cookie/js-cookie)
nprogress | 进度条控件 | [https://github.com/rstacruz/nprogress](https://github.com/rstacruz/nprogress)
#### 架构图
#### 模块介绍
##### 后台管理系统 `mall-admin`
- 商品管理:[功能结构图-商品.jpg](document/resource/mind_product.jpg)
- 订单管理:[功能结构图-订单.jpg](document/resource/mind_order.jpg)
- 促销管理:[功能结构图-促销.jpg](document/resource/mind_sale.jpg)
- 内容管理:[功能结构图-内容.jpg](document/resource/mind_content.jpg)
- 用户管理:[功能结构图-用户.jpg](document/resource/mind_member.jpg)
##### 前台商城系统 `mall-portal`
[功能结构图-前台.jpg](document/resource/mind_portal.jpg)
## 环境搭建
### 开发工具
工具 | 说明 | 官网
----|----|----
IDEA | 开发IDE | https://www.jetbrains.com/idea/download
RedisDesktop | redis客户端连接工具 | https://redisdesktop.com/download
Robomongo | mongo客户端连接工具 | https://robomongo.org/download
SwitchHosts| 本地host管理 | https://oldj.github.io/SwitchHosts/
X-shell | Linux远程连接工具 | http://www.netsarang.com/download/software.html
Navicat | 数据库连接工具 | http://www.formysql.com/xiazai.html
PowerDesigner | 数据库设计工具 | http://powerdesigner.de/
Axure | 原型设计工具 | https://www.axure.com/
MindMaster | 思维导图设计工具 | http://www.edrawsoft.cn/mindmaster
ScreenToGif | gif录制工具 | https://www.screentogif.com/
### 开发环境
工具 | 版本号 | 下载
----|----|----
JDK | 1.8 | https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Mysql | 5.7 | https://www.mysql.com/
Redis | 3.2 | https://redis.io/download
Elasticsearch | 2.4 | https://www.elastic.co/downloads
MongoDb | 3.2 | https://www.mongodb.com/download-center
RabbitMq | 5.25 | http://www.rabbitmq.com/download.html
nginx | 1.10 | http://nginx.org/en/download.html
### 搭建步骤
> 本地环境搭建
- 本地安装开发环境中的所有工具并启动,采用默认配置即可;
- 克隆源代码到本地使用IDEA打开并完成编译;
- 在mysql中新建mall数据库导入document/sql下的mall.sql文件
- 启动mall-admin项目直接运行com.macro.mall.MallAdminApplication即可
接口文档地址http://localhost:8080/swagger-ui.html;
- 启动mall-search项目直接运行com.macro.mall.search.MallSearchApplication即可
接口文档地址http://localhost:8081/swagger-ui.html;
- 启动mall-portal项目直接运行com.macro.mall.portal.MallPortalApplication即可
接口文档地址http://localhost:8085/swagger-ui.html;
- 克隆`mall-admin-web`项目并导入到IDEA中并完成编译[mall-admin-web](https://github.com/macrozheng/mall-admin-web);
- 运行命令npm run dev,访问地址:[http://localhost:8090](http://localhost:8090) 即可打开后台管理系统页面;
- ELK日志收集系统的搭建参考[elk.md](document/elk/elk.md)。
> docker环境部署
- 安装CenterOs7.2在VirtualBox虚拟机中
- 配置本地host:参考[host.txt](document/docker/host.txt),将ip地址改为虚拟机的ip地址;
- 使用maven构建`mall-admin``mall-search``mall-portal`的docker镜像参考[docker.md](document/docker/docker.md)中的使用maven构建Docker镜像
- 参考[docker-deploy.md](document/docker/docker-deploy.md)进行部署。

506
README.md
View File

@ -1,375 +1,135 @@
# mall
## 技术选型
### 后端技术
技术 | 名称
----|----
Spring Boot | 容器+MVC框架
Spring Security | 认证和授权框架
MyBatis | ORM框架
MyBatisGenerator | 数据层代码生成
PageHelper | MyBatis物理分页插件
Swagger-UI | 文档生产工具
Hibernator-Validator | 验证框架
Elasticsearch | 搜索引擎
RabbitMq | 消息队列
Redis | 分布式缓存
MongoDb | NoSql数据库
Docker | 应用容器引擎
Druid | 数据库连接池
### 前端技术
技术 | 名称
----|----
Vue | 前端框架
Vue-router | 路由框架
Vuex | 全局状态管理框架
Element | 前端UI框架
Axios | 前端HTTP框架
Js-cookie | cookie管理工具
### 框架搭建
功能 | 完成
----|----
集成MyBatis | ✔
集成MyBatisGenerator | ✔
集成SpringSecurity | ✔
集成Swagger-UI | ✔
集成Hibernator-Validator | ✔
集成日志功能 | ✔
集成监控功能 | ✔
crud操作demo | ✔
合理规划包结构 | ✔
SpringAOP通用日志处理 | ✔
SpringAOP通用验证失败结果返回 | ✔
CommonResult对通用返回结果进行封装 | ✔
SpringSecurity登录改为Restful形式 | ✔
JWT登录、注册、获取token | ✔
JTA事务处理 | ✔
集成单元测试 | ✔
OSS上传功能 | ✔
Elasticsearch搜索功能 | ✔
HTTPS支持 | ✔
Redis数字型ID生成 | ✔
SpringTask定时任务支持 | ✔
docker容器化部署 | ✔
配置区分生产和测试环境 | ✔
ELK日志收集功能 | ✔
RabbitMq异步通信 | ✔
RestTemplate服务间调用 | ✔
SpringSecurity权限管理功能 | ✔
集成SpringCloud |
### 使用工具
工具 | 下载地址
----|----
开发工具idea | https://www.jetbrains.com/idea/download
redis客户端连接工具 | https://redisdesktop.com/download
mongo客户端连接工具 | https://robomongo.org/download
本地host管理 | https://oldj.github.io/SwitchHosts/
Linux远程连接工具 | http://www.netsarang.com/download/software.html
数据库连接工具 | http://www.formysql.com/xiazai.html
数据库设计工具 | http://powerdesigner.de/
原型设计工具 | https://www.axure.com/
思维导图设计工具 | http://www.edrawsoft.cn/mindmaster
gif录制工具 | https://www.screentogif.com/
### 后台功能
#### 后台登录功能 ✔
- 后台用户注册功能
- 后台用户登录后获取token
- 刷新token功能
#### 商品管理 ✔
> **商品分类管理**
- 按父分类编号分页查看分类列表
- 添加、编辑、删除分类
- 转移分类商品
> **商品品牌管理**
- 按品牌名称搜索分页查看品牌列表
- 添加、编辑、删除品牌
- 查看当前品牌的所有产品
> **商品属性分类管理**
- 添加商品属性分类(名称)
- 分页查询全部商品属性分类
- 删除单个商品属性分类
- 修改单个属性分类名称
- 查询单个属性分类信息
> **商品属性管理**
- 根据分类查询属性列表或参数列表(分页,支持类型)
- 添加商品属性
- 查询单个商品属性
- 编辑商品属性
- 批量删除商品属性
- 分页查询全部商品属性
> **添加商品**
- 选择商品分类根据商品分类id查找分类
- 选择品牌:查询全部品牌
- 选择运费模版:查询全部运费模版
- 设置会员价格查询所有会员等级传入List<PmsMemberPrice>
- 添加阶梯价格: 参数传入List<PmsProductLadder>
- 设置满减价格: 参数传入List<PmsProductFullReduction>
- 选择商品属性类别:获取所有商品属性分类根据商品属性分类的id获取规格和参数(type=0->规格type=1->参数)
- 选择规格并生成库存信息:前端实现
- 添加sku库存信息参数传入List<PmsSkuStock>
- 设置属性图片设置到pic和album_pics字段中去
- 添加商品参数参数传入List<PmsProductAttributeValue>
- 添加自定义商品规格参数传入List<PmsProductAttributeValue>
- 关联专题:参数传入List<CmsSubjectProductRelation>关系
- 关联优选:参数传入List<CmsPrefrenceAreaProductRelation>关系
> **修改商品**
- 根据商品id查询商品信息
- 查询商品基本信息:商品分类名称、品牌名称、运费模版名称
- 查询商品促销信息:商品的会员价格、阶梯价格、满减价格
- 查询商品属性信息商品属性类别名称、sku库存信息、属性分类对应规格和参数值
- 查询商品关联信息:商品关联专题和关联优选
- 修改商品信息商品属性分类及规格不可修改只支持单个sku的修改、删除、新增商品属性分类及规格可以修改修改后同时显示原sku库存及属性分类
> **商品分页查询**
- 商品的状态:全部商品、已上架、未上架、待审核、未通过 (publishStatus verifyStatus)
- 商品名称(%name%)
- 商品货号(productSn)
- 商品分类id(productCategoryId)
- 商品品牌id(brandId)
- 批量操作:上下架、推荐、新品、转移分类、放入回收站、审核
- 查看记录:审核记录,操作日志
- sku:根据产品及sku编号获取sku信息批量修改sku信息
> **商品回收管理**
- 分页展示回收商品列表
- 回收商品还原功能
#### 促销管理
> **秒杀活动管理**
- 活动列表展示
- 活动上下线
- 设置活动商品
- 添加、编辑、删除活动
> **优惠券管理**
- 优惠券列表展示
- 添加、编辑、删除优惠券
- 查看优惠券领取记录
> **活动管理**
- 活动列表展示
- 添加、编辑、删除活动
- 活动上下线
- 发布到广告
> **首页推荐**
- 品牌推荐:列表展示、是否推荐、排序、删除、多选加入品牌
- 新鲜好物:商品列表展示、是否推荐、排序、删除、多选加入商品
- 人气推荐:商品列表展示、是否推荐、排序、删除、多选加入商品
- 专题精选:专题列表展示、是否推荐、排序、删除、多选加入专题
- 广告管理:广告列表展示、是否上线、排序、删除、添加编辑广告
#### 内容管理
> **专题管理**
- 专题列表:查看、删除、推荐专题
- 添加、编辑专题:选择专题分类、添加、删除关联商品
- 专题分类管理:控制显示、排序、编辑删除分类
> **优选主题**
- 优选列表:控制显示、排序、删除
- 添加、编辑优选:关联和删除商品
> **话题管理**
- 专题列表:查看、删除、热门话题
- 话题分类管理:控制显示、排序、编辑删除分类
> **帮助管理**
- 帮助列表:查看、删除、控制显示
- 添加、编辑帮助:选择帮助分类
- 帮助分类管理:控制显示、排序、编辑删除分类
#### 用户管理
> **用户管理**
- 用户列表:帐号启用、删除、群发短信
- 批量操作:群发短信、站内信、推送、设置标签、赠送优惠券
- 查看、编辑用户信息:用户详情(统计信息、收货地址、订单记录)、编辑资料、登录日志
- 购买力筛选:最近消费、消费次数、消费金额、订单均价、商品分类、会员等级、用户标签
- 用户标签管理:标签列表、添加、编辑、删除
- 会员等级设置:列表、添加、编辑、设置默认会员等级
> **成才值及积分**
- 成长值及积分查询:列表展示、积分明细、成长值明细、修改数值
- 任务奖励设置:新手任务、日常任务
- 更多规则设置:成长值规则、积分规则、积分消费设置
#### 订单管理
> **订单列表**
- 订单搜索:订单编号、收货人姓名/号码、订单状态、订单分类、订单来源、提交时间
- 订单操作:查看订单、关闭订单、订单发货、订单跟踪、删除订单
- 批量操作:批量发货、关闭订单、删除订单
> **查看订单**
- 订单状态:提交订单、支付订单、平台发货、确认收货、完成评价
- 订单详情操作:修改发票信息、修改收货人信息、修改商品信息、修改费用信息、发送站内信、关闭订单、备注订单、取消订单、订单跟踪、删除订单
- 订单基本信息:订单信息、优惠信息、用户信息
- 发票信息:类型、抬头、内容、收票人信息
- 收货人信息:收货人、手机号、邮政编码、收货地址
- 商品信息:包含商品基本信息
- 费用信息:合计及优惠信息
- 操作信息:订单状态改变记录
> **订单设置**
- 秒杀订单超时时间
- 正常订单超时时间
- 订单自动完成时间
- 自动结束交易时间
- 自动好评时间
> **退货申请处理**
- 退货申请搜索:服务单号、收货人姓名/号码、处理状态、申请时间、操作人员、处理时间
- 批量操作:删除
- 查看详情:退货商品、服务单信息、确认退货、拒绝退货、确认收货
> **退货原因设置**
- 原因列表:类型、排序、是否启用、添加时间
- 添加、编辑原因:同上
- 批量操作:删除
#### 权限管理 ✔
> **权限管理**
- 权限管理:添加权限、删除权限、修改权限、以树形结构返回权限
- 角色管理:添加角色、删除角色、更新角色、角色列表、获取相应角色权限、修改相应角色权限
- 成员管理:添加、编辑、删除成员、成员列表、为成员分配角色、获取成员角色、分配+-权限、获取权限列表
角色 | 菜单
----|----
管理员 | 所有菜单权限
运营 | 首页、用户、促销、运营、内容
财务 | 首页、统计、财务
美工 | 首页、商品
客服 | 首页、商品、订单
### 前台功能
#### 商品搜索 ✔
> **综合搜索功能**
- 搜索:根据商品标题、副标题、关键字进行搜索;
- 筛选:未选择分类时聚合搜索结果,选择出现次数最多的分类,选择分类以后可以根据选择分类的筛选字段进行筛选;
- 排序:按新品、销量、价格进行排序
- 搜索返回结果商品ID、商品图片、名称、副标题、价格、商品销量、新品、商品的参数、品牌名称、分类名称
- 接口从数据库中查询相关数据并导入es,插入(修改)数据接口,删除数据接口
- 品牌分类筛选:根据搜索结果聚合返回品牌、分类及属性
> **商品推荐功能**
- 推荐某商品的相关商品、根据该商品的品牌10、分类6、名称8、关键字2、副标题2
- 根据用户一周浏览记录推荐商品,根据用户搜索记录推荐商品
> **商品热搜功能**
- 根据用户搜索记录聚合生成热搜词
> **商品搜索联想功能**
- 根据用户搜索记录聚合生成热搜词
#### 购物流程 ✔
> **购物车**
- 添加商品到购物车
- 购物车商品列表(商品主图、商品名称、商品数量、商品规格)
- 修改购物车中商品数量
- 购物车中商品重选规格
- 购物车中商品删除功能
> **生成确认单**
- 生成确认单信息:收货信息、商品信息、价格信息、发票信息、支付方式
- 选择收货地址:默认收货地址
- 选择优惠券及积分抵扣:展示可用优惠券和不可以优惠券
- 计算商品价格:商品合计、运费、优惠券抵扣、积分抵扣、活动优惠
- 选择支付方式:在线支付及货到付款
- 计算应付金额:合计+运费-优惠券抵扣-积分抵扣-活动优惠
> **提交订单**
- 将确认单信息转化为订单
- 删除购物车中相关商品
- 添加订单到数据库并锁定库存
- 在线支付选择支付方式支付宝、微信、银联、ApplePay
> **支付订单**
- 支付完成后修改订单状态为已支付、扣除库存
> **取消订单(未支付情况下)**
- 订单超时后自动取消订单,解除商品库存锁定,返还优惠券,积分
#### 会员模块(我的)✔
> **我的关注**
- 关注品牌列表品牌logo、名称、地址、关注数量
- 取消关注功能
- 关注列表展示
> **我的收藏**
- 收藏的商品:商品主图、名称、卖点、价格、找相似
- 收藏的专题:专题主图、标题、副标题、收藏数、浏览数、评论数
- 收藏的话题:话题主图、标题、副标题、收藏数、浏览数、评论数
> **我的足迹**
- 浏览过的商品:商品主图、名称、卖点、价格、找相似
- 删除记录功能
- 浏览列表展示
> **会员登录注册**
- 登录功能https登录
- 注册功能:用户名、密码、手机号、手机验证码
- 获取验证码:后台生成验证码,验证码绑定手机号
- 忘记密码:手机号、短信验证码、新密码
- 登出功能
## 前言
`mall`项目致力于打造一个完整的电商系统,采用现阶段流行技术实现。
## 项目介绍
`mall`项目是一套电商系统包括前台商城系统及后台管理系统基于SpringBoot+MyBatis实现。
前台商城系统包含用户中心、会员成长、优惠券、积分、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务等模块。
后台管理系统包含商品、订单、用户、促销、运营、内容、统计、财务、设置、权限等管理系统模块。
### 项目演示
> 后台管理系统
- 前端项目`mall-admin-web`地址https://github.com/macrozheng/mall-admin-web
- [后台管理系统功能演示.gif](document/resource/mall-admin.gif)
### 组织结构
``` lua
mall
├── mall-mbg -- MyBatisGenerator生成的数据库操作代码
├── mall-admin -- 后台商城管理系统
├── mall-search -- 基于Elasticsearch的商品搜索系统
├── mall-portal -- 前台商城系统
└── mall-demo -- 框架搭建时的测试代码
```
### 技术选型
#### 后端技术
技术 | 说明 | 官网
----|----|----
Spring Boot | 容器+MVC框架 | [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot)
Spring Security | 认证和授权框架 | [https://spring.io/projects/spring-security](https://spring.io/projects/spring-security)
MyBatis | ORM框架 | [http://www.mybatis.org/mybatis-3/zh/index.html](http://www.mybatis.org/mybatis-3/zh/index.html)
MyBatisGenerator | 数据层代码生成 | [http://www.mybatis.org/generator/index.html](http://www.mybatis.org/generator/index.html)
PageHelper | MyBatis物理分页插件 | [http://git.oschina.net/free/Mybatis_PageHelper](http://git.oschina.net/free/Mybatis_PageHelper)
Swagger-UI | 文档生产工具 | [https://github.com/swagger-api/swagger-ui](https://github.com/swagger-api/swagger-ui)
Hibernator-Validator | 验证框架 | [http://hibernate.org/validator/](http://hibernate.org/validator/)
Elasticsearch | 搜索引擎 | [https://github.com/elastic/elasticsearch](https://github.com/elastic/elasticsearch)
RabbitMq | 消息队列 | [https://www.rabbitmq.com/](https://www.rabbitmq.com/)
Redis | 分布式缓存 | [https://redis.io/](https://redis.io/)
MongoDb | NoSql数据库 | [https://www.mongodb.com/](https://www.mongodb.com/)
Docker | 应用容器引擎 | [https://www.docker.com/](https://www.docker.com/)
Druid | 数据库连接池 | [https://github.com/alibaba/druid](https://github.com/alibaba/druid)
OSS | 对象存储 | [https://github.com/aliyun/aliyun-oss-java-sdk](https://github.com/aliyun/aliyun-oss-java-sdk)
JWT | JTW登录支持 | [https://github.com/jwtk/jjwt](https://github.com/jwtk/jjwt)
LogStash | 日志收集 | [https://github.com/logstash/logstash-logback-encoder](https://github.com/logstash/logstash-logback-encoder)
Lombok | 简化对象封装工具 | [https://github.com/rzwitserloot/lombok](https://github.com/rzwitserloot/lombok)
#### 前端技术
技术 | 说明 | 官网
----|----|----
Vue | 前端框架 | [https://vuejs.org/](https://vuejs.org/)
Vue-router | 路由框架 | [https://router.vuejs.org/](https://router.vuejs.org/)
Vuex | 全局状态管理框架 | [https://vuex.vuejs.org/](https://vuex.vuejs.org/)
Element | 前端UI框架 | [https://element.eleme.io/](https://element.eleme.io/)
Axios | 前端HTTP框架 | [https://github.com/axios/axios](https://github.com/axios/axios)
v-charts | 基于Echarts的图表框架 | [https://v-charts.js.org/](https://v-charts.js.org/)
Js-cookie | cookie管理工具 | [https://github.com/js-cookie/js-cookie](https://github.com/js-cookie/js-cookie)
nprogress | 进度条控件 | [https://github.com/rstacruz/nprogress](https://github.com/rstacruz/nprogress)
#### 架构图
#### 模块介绍
##### 后台管理系统 `mall-admin`
- 商品管理:[功能结构图-商品.jpg](document/resource/mind_product.jpg)
- 订单管理:[功能结构图-订单.jpg](document/resource/mind_order.jpg)
- 促销管理:[功能结构图-促销.jpg](document/resource/mind_sale.jpg)
- 内容管理:[功能结构图-内容.jpg](document/resource/mind_content.jpg)
- 用户管理:[功能结构图-用户.jpg](document/resource/mind_member.jpg)
##### 前台商城系统 `mall-portal`
[功能结构图-前台.jpg](document/resource/mind_portal.jpg)
## 环境搭建
### 开发工具
工具 | 说明 | 官网
----|----|----
IDEA | 开发IDE | https://www.jetbrains.com/idea/download
RedisDesktop | redis客户端连接工具 | https://redisdesktop.com/download
Robomongo | mongo客户端连接工具 | https://robomongo.org/download
SwitchHosts| 本地host管理 | https://oldj.github.io/SwitchHosts/
X-shell | Linux远程连接工具 | http://www.netsarang.com/download/software.html
Navicat | 数据库连接工具 | http://www.formysql.com/xiazai.html
PowerDesigner | 数据库设计工具 | http://powerdesigner.de/
Axure | 原型设计工具 | https://www.axure.com/
MindMaster | 思维导图设计工具 | http://www.edrawsoft.cn/mindmaster
ScreenToGif | gif录制工具 | https://www.screentogif.com/
### 开发环境
工具 | 版本号 | 下载
----|----|----
JDK | 1.8 | https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Mysql | 5.7 | https://www.mysql.com/
Redis | 3.2 | https://redis.io/download
Elasticsearch | 2.4 | https://www.elastic.co/downloads
MongoDb | 3.2 | https://www.mongodb.com/download-center
RabbitMq | 5.25 | http://www.rabbitmq.com/download.html
nginx | 1.10 | http://nginx.org/en/download.html
### 搭建步骤
> 本地环境搭建
- 本地安装开发环境中的所有工具并启动,采用默认配置即可;
- 克隆源代码到本地使用IDEA打开并完成编译;
- 在mysql中新建mall数据库导入document/sql下的mall.sql文件
- 启动mall-admin项目直接运行com.macro.mall.MallAdminApplication即可
接口文档地址http://localhost:8080/swagger-ui.html;
- 启动mall-search项目直接运行com.macro.mall.search.MallSearchApplication即可
接口文档地址http://localhost:8081/swagger-ui.html;
- 启动mall-portal项目直接运行com.macro.mall.portal.MallPortalApplication即可
接口文档地址http://localhost:8085/swagger-ui.html;
- 克隆`mall-admin-web`项目并导入到IDEA中并完成编译[mall-admin-web](https://github.com/macrozheng/mall-admin-web);
- 运行命令npm run dev,访问地址:[http://localhost:8090](http://localhost:8090) 即可打开后台管理系统页面;
- ELK日志收集系统的搭建参考[elk.md](document/elk/elk.md)。
> docker环境部署
- 安装CenterOs7.2在VirtualBox虚拟机中
- 配置本地host:参考[host.txt](document/docker/host.txt),将ip地址改为虚拟机的ip地址;
- 使用maven构建`mall-admin``mall-search``mall-portal`的docker镜像参考[docker.md](document/docker/docker.md)中的使用maven构建Docker镜像
- 参考[docker-deploy.md](document/docker/docker-deploy.md)进行部署。