diff --git a/README-DEV.md b/README-DEV.md new file mode 100644 index 0000000..9457c82 --- /dev/null +++ b/README-DEV.md @@ -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 +- 添加阶梯价格: 参数传入List +- 设置满减价格: 参数传入List +- 选择商品属性类别:获取所有商品属性分类,根据商品属性分类的id获取规格和参数(type=0->规格;type=1->参数) +- 选择规格并生成库存信息:前端实现 +- 添加sku库存信息:参数传入List +- 设置属性图片:设置到pic和album_pics字段中去 +- 添加商品参数:参数传入List +- 添加自定义商品规格:参数传入List +- 关联专题:参数传入List关系 +- 关联优选:参数传入List关系 + +> **修改商品** + +- 根据商品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登录 +- 注册功能:用户名、密码、手机号、手机验证码 +- 获取验证码:后台生成验证码,验证码绑定手机号 +- 忘记密码:手机号、短信验证码、新密码 +- 登出功能 diff --git a/README-PROD.md b/README-PROD.md deleted file mode 100644 index c87a703..0000000 --- a/README-PROD.md +++ /dev/null @@ -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)进行部署。 \ No newline at end of file diff --git a/README.md b/README.md index 9457c82..c87a703 100644 --- a/README.md +++ b/README.md @@ -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 -- 添加阶梯价格: 参数传入List -- 设置满减价格: 参数传入List -- 选择商品属性类别:获取所有商品属性分类,根据商品属性分类的id获取规格和参数(type=0->规格;type=1->参数) -- 选择规格并生成库存信息:前端实现 -- 添加sku库存信息:参数传入List -- 设置属性图片:设置到pic和album_pics字段中去 -- 添加商品参数:参数传入List -- 添加自定义商品规格:参数传入List -- 关联专题:参数传入List关系 -- 关联优选:参数传入List关系 - -> **修改商品** - -- 根据商品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)进行部署。 \ No newline at end of file