mini商城第1章 业务背景及需求分析
一、课题
业务背景及需求分析
二、安排
-
前置 环境搭建汇总
-
第1天 业务背景及需求分析
-
第2天 架构设计及模块拆分
-
第3天 表结构设计
-
第4天 微服务框架主体搭建
-
第5天 权限登录功能实现
-
第6天 分布式文件存储
-
第7天 高性能门户首页构建
-
第8天 海量数据搜索实现
-
第9天 详情页功能实现
-
第10天 购物车、订单功能实现
-
第11天 分布式事务解决方案
-
第12天 微信支付
-
第13天 商品秒杀功能实现
-
第14天 热门数据实时收集
-
第15天 秒杀商品隔离解决方案
-
第16天 服务安全控制
-
第17天 站点构建
-
第18天 分布式日志系统
-
第19天 服务链路追踪
-
第20天 自动化运维
三、目标
1、电商知识学习
-
了解电商前景
-
掌握电商模式
2、掌握商城业务场景
-
商城业务介绍
-
商城业务功能学习
四、内容
第1节 前言
在正式开始我们的商场项目的实战之前,我们先要明确几个问题:
1、这个项目适合哪个阶段的程序员?
2、作为Java程序员的我们为什么要学习这个项目,从中能获得什么?
3、要怎么去学习该实战项目?
先来回答一下第1个问题,这个项目不管是初中高级Java开发工程师也好,还是初级架构也好,其实都是适用的,只不过不同层级的技术人员学习的侧重点不同。作者本身是一名高级偏初级架构的技术人员,所以后面着重介绍作者的亲身学习思路。这里先讲一下初中级Java开发工程师应该通过该项目获得什么能力吧。
初中级Java开发工程师通过本项目,侧重学习的点就在于各个技术组件的使用,包括:
1、熟练SpringBoot、Mybatis、Mysql的集成使用,实现各种业务逻辑的CRUD。会使用反向工程生成代码简化开发,会写复杂的SQL并对SQL进行优化。会使用SpringBoot集成Mybatis和Mysql。
2、熟练掌握微服务组件的使用,能够完成SpringBoot、SpringCloud集成各种组件包括Nacos、OpenFeign、Gateway、Sentinel等。
3、了解中间件Redis、MongoDB、MQ等集成SpringBoot的核心API的使用,了解该组件的作用。
初中级Java开发工程师的使用熟练度有所不同,根据个人的实际情况来学习。本套实战课程会将所有的代码给出,但是我们的视频课程毕竟是针对p6的同学,所以很多业务的CRUD,在文章中和视频中不会做过多的体现。
接下来,我们在来看高级开发和初级架构人员学习本套课程应该掌握什么:
1、首先,要站在整体的角度分析我们的商场项目的背景、业务需求,只有掌握了背景,明确了需求才能去考虑我们项目系统该如何设计,该如何选择。这是必须进行的过程。
2、根据我们分析的需求,明确好我们的用户角色,大体分为:后台管理人员、商品管理人员、用户端(C端),然后根据用户角色确定我们要做的系统有哪些?然后后台微服务为了支撑这些系统要提供哪些接口服务等。
3、根据需求分析进行架构搭建(包括测试环境、生产环境、各种不同组件的运用搭建)
4、系统搭建好,我们选择一条主流程进行功能开发(商城项目的一条主流程不就是商品数据生产、然后客户在前端搜索商品并进行添加购物车、下单付款操作吗)
5、考虑高可用安全性问题(缓存、MQ、搜索引擎、分布式文件存储、网关限流等)
6、高性能部署
7、自动化运维
OK,通过这个项目的学习,高开就真的存在了架构的经验了,这是你升级成架构的第一步,要明白,架构的考核不是说你能搭框架就完事了,搭框架只是基本功,真正的架构师必须是有解决各种问题难点的能力。
废话不多说,我们接下来正式开启我们的实战旅程。
第2节 电商知识学习
这一节主要讲解电子商务行业前景,并且带大家了解一下天猫双十一的交易,然后带大家学习一下电商主流模式。学完后会对电商前景有个清晰的认识,能快速定位电商平台的模式。
1.1 主流电商模式
当前主流电商模式有B2B,C2C,O2O,B2B2C,我们对这些电商模式进行一个简单了解,方便以后大家做项目对项目的定位的一个清晰认知。
1、B2B:Business to Business,交易双方的身份都是商家,也就是商家将商品卖给商家,类似采购、批发类购物,国内代表性网站阿里巴巴批发网(1688)。
2、C2C:Customer to Customer,交易双方都可以是个人,比如淘宝网。
3、O2O:Online To Offline,线上线下模式,典型的代表饿了么,在线上支付了,在线下获取商品。
4、B2B2C:大型的电商平台,允许商家入驻,允许会员在平台买卖商品,京东和天猫都属于这类型网站。
1.2 商城业务场景
这节内容主要从宏观层面学习商城的业务场景,有助于大家理解商城的业务结构。
1.2.1 业务学习
商城是基于SpringCloud Alibaba技术栈研发的B2C电商平台,平台拥有核心的电商业务功能。下面是核心的用户角色:
-
运营商在后台管理商品
-
前台能通过搜索引擎实时搜索到最新商品,用户注册后可以直接在平台购买商品,并通过微信支付实现线上支付。用户还能参与平台秒杀抢购,并实现线上支付秒杀商品。
根据用户角色分析,实际上我们的系统应该分为一个后台管理系统的前端页面、前端门户界面、后台微服务系统。
1.2.2 后台系统前端
1.2.2.1 登录页面
目前实现了VUE前端的登录拦截,没有token的不允许访问其他页面;同时VUE前端会根据用户名和密码访问后台的登录接口请求token,如果后台接口返回成功,则跳到主页,如果返回失败,给出相应的提示。
关于忘记密码和注册,后台接口已经实现好了,但是前端页面并没有完成,如果感兴趣的同学,可以自己去实现。对于没有前端基础的同学,这块可以放弃。
1.2.2.2 后台首页
主要提供一些统计数据的展示
1.2.2.3 商品管理
1、商品列表
提供后台商品的增删改查功能
2、添加商品
提供商品信息的修改和新增功能
3、商品分类
提供商品类别的增删改查功能,分类属于一级类别
4、商品类型
提供商品类型的增删改查,类型数据分类的下级类别
5、品牌管理
品牌方,这个没啥好说的,来个商家注册到你们平台,你就给他插入一条数据
1.2.2.4 订单管理
1、订单列表
订单的处理,订单数据来源是从商城门户,然后由C端插入进数据库的,在管理后台也能进行操作。这块,作者只做了后台管理人员对订单的操作,理论上应该是需要不同的商户对自己的订单的一些操作,这块逻辑后续也需要优化。
2、订单设置
3、退货申请处理
4、退货原因设置
1.2.2.5 营销管理
1、秒杀活动列表
这块内容就是挣钱的东东了,由后台管理开启不同的秒杀活动,然后哪个商家给我们钱给的多,我就把它的商品设置进当前的秒杀活动,这是我们平台的理念,至于其他的电商平台是不是这么做的,我不关心了。
2、优惠券列表
优惠券的增删改查
3、品牌推荐
这块内容也是挣钱的,我在后台设置的这些品牌数据,然后在门户首页会展示这些品牌的,就是一个广告的效果,实现逻辑也比较简单,就相当于我从品牌表里面拿出数据插到新的推荐表,然后商城门户首页会从这个推荐表拿数据并且展示。
4、新品推荐
跟上面的逻辑差不多
5、人气推荐
还是跟上面逻辑差不多
6、专题推荐
依然上面的逻辑差不多
7、广告列表
还是跟上面的逻辑差不多,只不过这控制的是门户首页的轮播的内容以及一些其他的广告位。
1.2.2.6 权限管理
1、用户列表
用户的增删改查,可以加后台管理人员,也可以加商户管理人员,区别就在于后面的角色不同。
2、角色列表
角色的增删改查,同时还会设置不同的角色的权限
3、菜单列表
后台管理系统前端的这些菜单
4、资源列表
后台Java代码的哪些接口的权限管理
1.2.3 商城首页
商城首页一般来说分为PC端、移动端(Android和IOS);这里对这两种情况稍作解释,因为很多同学可能对这块内容意识不是特别清晰。其实不管是什么端,都是给普通客户去用的,客户要怎么用呢?无非就是通过能看的到的页面去用,而这些页面要不然就是通过JSP去做的,要不然就是通过VUE,或者IOS、Android等去做的。
而PC端的页面,只能部署在我服务端自己的服务器上面,然后所有的客户端通过浏览器来访问,这个时候一旦浏览器的并发请求量过大,那针对每个请求的数据量我就得进行优化了,尽量减少静态资源的传输,同时保证后台数据也要有一些缓存等,我们现在的商城现阶段也只是完成了PC端的内容,所以要如何优化,后续会讲。
那移动端的话就简单方便多了,所有的静态资源,页面等都是部署在各自的手机啊、平板等移动端上的,不存在静态资源的请求了,那我就只需要考虑后台微服务给我们提供数据的时候的性能就好了。
这就是这两个端的问题,然后根据不同的端,去进行不同的问题解决。
好了,我们接下来看看我们PC端的页面:
1、首页
2、搜索页
3、商品详情页
4、购物车页
5、支付页
第3节 业务需求
需求文档是一个项目开始的起点,要想项目能完整的、顺利的落地,前期的需求文档要尽可能的做的详细和完善,针对我们商城的核心功能,同时也参考了很多的前人的资料,作者整理了一份需求设计文档,仅供大家参考,详情见资料/需求设计文档,资料下载地址见下一章末尾。