BG大游集团|Home

135-2716-3909
网站建设资讯详细

综合性B2C电商平台□□设计与实□□现

发表日期:2026-07-23 09:18:58   作者来源:蓝明基   浏览:4049   标签:电商平台设计    B2C电商平台    
【摘要】
近些年,随着当今□□□世界的互□□联网发展,为生活的▼方方面面□□提供了极□□□大的便利。其中最为□□□典型的电□□□□商借着这□□□股东风已□□经成为了□□□社会不可□□□□或缺的一□□环。相关行业□□□□也在不断□□□拓展和完□□善,对经济社□□会生活产◎生了极大◥的促进,同时也成□□□□为我国经□□□济发展的□□重要一环。
电商平台★的使用,通过网上□□□购物为人•们在生活▽上提供极□□大的便利,使人们不□□□受时间和□□□□空间的限•制,在家里就□□□□能实现购□□□物。同时对于□□□商家来说,商家可以□□□□入驻平台□□实现商品※发布和出□□售,在线上实□□□现订单的□□□□过程,而只需要□□□通过线下◈发货和物□□流信息的□□□□发布完成□□订单,能极大增△加商家的◆销售渠道□□□和在时间❖上的便利。 
此平台的□□的研究工□□□作中,结合实际□□□情况对比,在使用分□□布式服务□□架构(RPC)的前提下,结合服务✦治理框架dubbo,zookeeper作为注册□□□□中心,并结合使□□□用了Spring、SpringMvc、Mybatis的SSM框架。借助Linux虚拟机,搭载各类□□□第三方技◈术,比如vsftpd文件上传□□□□服务器;nginx反向代理,负载均衡;redis集群配置✦主从复用,读写分离,搭建主备□□□切换;solr搜索引擎□□和sso单点登录□□等。 
利用相关□□□□技术开发□□平台,先后实现□□□完成了后✦台管理系□□□统和前台□□□门户系统。后台完成□□□简单的商·品管理功•能,权限属于□□□□管理员。前台则实□□□□现完成了□□基本的用□□□□户注册登▼录;首页商品□□的浏览和◢搜索;经典的电□□商平台购□□□物车功能;订单核对□□提交订单;支付宝在·线支付功□□能;前后台的□□□单点登录□□□□功能。前后台共□□□同构成了□□□一个完整丨的B2C电商平台。
就本平台□□□的功能和□□□测试结果□□□□来看,综合性B2C电商平台□□□□满足了预□□期的用户●和管理功□□□能需求,实现了平□□台的架构□□的解耦分□□□层,良好的高□□□并发和高□□□可用性能。测试结果●证明了分◢布式架构□□□在电商平□□台中的高◎效性和可□□□□行性,获得了应□□□□有的使用❖价值。
 
【关键词】分布式架构;SSM;Linux;电商平台
[锚点]  1 前言
[锚点] [锚点] 1.1 课题的背□□□□景近些年,随着当今✦世界的互□□联网发展,为生活的□□□方方面面□□□□提供了极□□大的便利。其中最为□□□□典型的电□□□商借着这●股东风已□□□经成为了□□□社会不可□□或缺的一□□□□环。相关行业□□也在不断□□拓展和完□□□善,对经济社□□会生活产□□生了极大□□的促进,同时也成□□□为我国经□□□济发展的□□□□重要一环。1.2 目的和意□□□□义电商平□□台的使用,通过网上□□□购物为人丨们在生活□□上提供极□□□□大的便利,使人们不□□□□受时间和□□空间的限◆制,在家里就□□□能实现购□□□物。同时对于▲商家来说,商家可以□□□□入驻平台□□□实现商品□□□发布和出▼售,在线上实□□现订单的●过程,而只需要□□□□通过线下□□□发货和物□□流信息的▼发布完成□□□□订单,能极大增□□加商家的□□销售渠道★和在时间▽上的便利。
电商平台丨给人们的□□□生活带来□□□了极大的●变化,极大的发□□□挥了消费□□□水平,促进了经▼济发展。在电商平□□□□台上购物□□□□也不受时□□□间和空间□□□上的影响,方便业务◆管理,也解决了★消费者的◎购物问题。1.3 国内外现□□□□状和发展□□趋势网络□□营销的热□□□潮已经席□□卷全球,国内外企□□□□业的生存□□□□竞争空间□□□已经从传□□□统市场转□□□□向网络空◇间市场。网上购物□□□□已经渗透□□到国内外□□□□市场的方□□方面面,极大的改□□变了人们□□□的工作和□□□生活方式。天猫双十□□□□一成交额□□□的逐年变◉化是一个□□最好的提□□□现,从2009年的0.5亿元到现☆在2021年的5403亿元,实现了大□□跳跃。2021年上半年我□□□国网络购□□物用户规□□□□模为8.12亿人,占网民整□□□体的80.3%。人们的生●活已经离◈不开网上□□□□购物,特别是在□□□□如今的疫♦情时期,网络电商□□平台的作□□□□用更加重△要。
在如今互□□□联网的发●展带动下,足不出户□□□的网上购□□□物基本成◆为必需。在未来会□□有越来越□□□多的人们□□□□加入这个□□□□行业。网络电商□□平台也将●会朝着全□□球化,个性化,专业化的□□□□趋势发展□□□和改善,以至于改□□变全球的□□□□经济结构,前途不可□□□□估量。1.4 论文架构•本论文通□□□过七个部□□分详细讲□□□□述综合性B2C电商平台□□□的设计与□□□实现。
第一部分□□前言,分析课题▽背景和国□□内外现状,说明目的□□和意义,表明研究□□内容,简述本文❖架构。
第二部分□□□电商平台□□□□的相关技□□□□术,分别对综□□□合性B2C电商平台◉所运用到□□的相关技□□□术加以介•绍。
第三部分□□是电商平□□台的需求□□□□分析,先后分析□□功能性和□□□非功能性·需求,且加以用▼例图描述。
第四部分□□是电商平□□□□台概要设□□□□计,通过第三★部门的需□□求分析对□□□平台从架◣构搭建到□□各类服务□□组件,从个功能□□□□模块设计□□到数据库□□设计。
第五部分□□□□是电商平□□台详细设•计与实现,从平台架◣构详细设❖计到平台□□□功能详细□□□□设计,展示核心丨功能接口□□□□和部分核□□□心代码,且附上最□□□□终的页面□□效果。
第六部分是电商平台测试,对平台进行细致的功能测试。
综上所有,在论文的最后部分做了相关工作的总结与展望。

[锚点] 2 电商平台的相关技术
[锚点] 2.1分布式服□□□务架构(RPC)互联网的□□□快速发展□□□□下,传统的垂●直应用架◢构已经无□□法满足日□□□渐壮大中□□□的网站规□□模的需要,分布式服◆务和流动□□计算架构□□□就成如今□□□□新的血液,甚至于微□□服务架构。

微服务架构
 
图2-1  开发模式的演变

传统的单□□□一应用架□□□□构,在网站流□□□□量很少的□□情况下,虽然只需□□□□要一个应□□□□用,但是缺点□□□□也很明显。由于所有□□□功能都部□□署在一起,即使成本◎很低,但是在应□□用功能不□□断增多的□□□□情况下,随着代码□□□□量的不断□□□增大,也变得越□□来越难维●护。
垂直应用★架构,为了提高□□□效率将应□□□□用分开成□□□若干个不◥相关的应◎用。但是缺点□□□□也依然是□□□□明显的,在这个架❖构下,相同逻辑□□□□的代码需□□要反复复□□制,不得复用。
分布式服务架构,随着垂直应用的增加,各个应用之间的交互是不可避免的。分布式服务架构分离独立出核心业务服务,构成一个稳定的服务中心,前端的应用程序能够迅速应对变化的市场需求。分布式服务架构的缺点是,服务的增加,各服务地址管理成为必要,调用依赖关系也更为复杂,服务状态不好管理,没法根据实际服务情况进行动态管理。
因此,本平台的□□开发,在分布式◤服务架构□□□的基础上,为了解决□□□□其缺点,结合服务□□□□治理框架dubbo,zookeeper作为注册□□□中心,以达到服□□□□务统一调□□□□度管理的□□目的,解决远程□□调用的难◥题,开发也从□□□□面向对象□□□□跳转到了※面向服务,比以往更□□加的松耦□□合,而实际上◈这个时候□□已经成为□□□了一个微□□□□服务[9]架构。
 
 
 
[锚点] 2.2 RPC协议(Remote Procedure Call Protocol)即不需要□□□□理解底层△网络技术,而是通过□□□网络在远●程计算机□□□程序上请□□□□求程序的□□远程过程□□□□调用协议。RPC协议假设◇存在若干□□传输协议,诸如tcp或udp,在通信程□□□□序之间传□□□□输信息数□□□据。在OSI网络协议□□□□模型中,RPC实现了传□□□输层和应❖用层之间□□□的跨界,从而有助□□□于开发包❖含网络分□□□□布式多程□□□序的应用。
RPC是客户端/服务器模◣式。客户端请□□求程序,服务器提□□□供程序。客户端调□□用进程,向服务进丨程发出调□□□用数据,并等待数□□□□据的响应。服务器在□□呼叫数据※到达之前,最初保持□□□睡眠状态。一个调用□□□□数据到达□□□□的情况下,服务器得□□□□到进程参□□□□数,结算结果,应答数据※返还,其次等待□□下一个数□□□□据,最终客户□□□□端接收应□□□答数据和□□□□结果,继续执行□□调用。
 
图2-2  RPC过程处理示例图
从上图中可以清晰的看出RPC的执行流程。
 
 
 
 
 
[锚点] 2.3服务治理框架Dubbo和注册中心Zookeeper服务治理框架Dubbo[3]:
Dubbo是Alibaba开发推出※的一个远♦程调用框□□□□架。Dubbo具有基于□□□□接口的远□□□□程调用,负载均衡□□和容错,服务的自□□动注册和□□发现三个♦核心功能。在阿里巴◢巴内部,Dubbo得到了广▲泛的应用,很多大型□□互联网公□□司也在用,比如考拉,当当,京东等等。
Dubbo Architecture:
 
图2-3  Dubbo工作原理示例图
节点角色说明:
Provider:服务提供方
Consumer:服务消费方
Register:注册中心
Moniter:监控中心
Container:服务运行容器
调用关系说明:
1.服务容器负责启动、加载、运行服务提供者
2.服务提供者启动并向注册中心注册自身提供的服务
3.服务消费者启动并向注册中心订阅自己所需的服务
4.注册中心列表给消费者返回提供者地址,如果有所变动注册中心会基于长连接发送变动数据给消费者
5.基于软负载均衡算法,消费者在地址列表里选择一台提供者调用,如果失败则调用另一台
6.服务提供□□□者和服务□□□□消费者在□□□□内存中累□□计的调用□□□□次数和调□□□□用时间定□□□时每分钟□□□□发送一次•统计数据□□□□至监控中□□心
注册中心Zookeeper:
Zookeeper作为分布□□□式应用程●序协调服□□□务,开源实现☆了谷歌的Chubby,所提供的□□□功能有:分布式同□□□□步,配置维护,域名服务,租服务等,是一个为□□分布式应□□用提供一□□致性服务□□□的软件。
在本平台▼中,Zookeeper身为服务□□□□注册中心,注册着编▽写的服务□□□供客户端□□□远程调用。
Zookeeper注册中心是Dubbo官方推荐,负责服务地址的注册和发现,也就是目录服务。适合作为Dubbo的服务注册中心在于其适合生产环境且工业强度高。
 
[锚点] 2.4 Spring、SpringMVC和Mybatis框架
[锚点] 2.4.1 Spring框架Spring是为了解□□决企业级□□□应用开发□□□的复杂性,简便Java开发而诞◈生的,是一个由Rod Johnson开发的为□□□□开发者提□□□□供一站式□□□□应用开发□□□□平台的轻□□量级开源Java框架。Spring为Java应用程序□□□□开发提供□□□全面的基□□□础架构支□□持,所以Java开发者可□□□□以致力于□□应用程序▲的开发。在JavaEE开发中,支持POJO和JavaBean开发方式,使应用面□□□向接口开□□发,充分支持OO(面向对象)设计方法;Spring通过IOC容器实现□□对象耦合□□关系的管□□□理,并实现依□□□□赖反转,将对象之□□□□间的依赖□□□□关系交给IOC容器,实现解耦。
Spring丰富的功□□能给企业□□□级开发提▼供极大便□□□□利。依赖注入(DI)和面向切□□□面编程(AOP)是这些功□□能的底层□□□□依赖。Spring框架的核□□□心是IOC容器和AOP模块。通过IOC容器管理POJO对象以及□□他们之间□□□的耦合关·系;通过AOP以动态非▽侵入的方□□□式增强服□□□□务,把遍布于□□□□应用各层□□□□的功能分◢离出来形□□□□成可重用□□□的功能组□□□□件。
 
图2-4  Spring5模块结构图
[锚点] 2.4.2 SpringMVC框架Spring MVC[10]是一个基□□□□于Java的轻量级web框架,它实现了◉请求驱动□□型MVC设计模式。通过分离□□模型视图□□□控制器,解耦web层的职责,将复杂的web应用程序□□划分为几☆个具有清□□□晰逻辑的丨部分,简化了开·发,减少了错□□□误,促进了团·队开发人□□□员之间的□□合作。
Spring MVC中有许多重要组件,如下:
(1)前端控制器 DispatcherServlet
作用:接收请求、响应结果,相当于转♦发器,有了DispatcherServlet 就减少了□□其它组件□□□之间的耦★合度。
(2)处理器映射器HandlerMapping
作用:根据请求的URL来查找Handler
(3)处理器适配器HandlerAdapter
(4)处理器Handler(需要程序员开发)
(5)视图解析器ViewResolver(不需要程序员开发)
作用:进行视图的解析,根据视图逻辑名解析成真正的视图(view)
(6)视图View(需要程序员开发jsp)
View是一个接口,它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)
Spring MVC的工作流程:
 
图2-5  Spring MVC工作流程图
[锚点] 2.4.3 Mybatis框架Mybatis是一款优□□秀的持久□□层框架,一个半 ORM(对象关系◎映射)框架,它支持定□□□制化 SQL、存储过程□□□□以及高级◉映射。Mybatis避免了几○乎所有的 JDBC 代码和手♦动设置参□□□数以及获□□取结果集。
Mybatis在查询关□□□联对象或□□关联集合□□□对象时,需要手动□□编写sql来完成,所以,称之为半□□自动ORM映射工具。ORM(Object Relational Mapping),对象关系□□□□映射,是一种为□□了解决关□□□系型数据□□□库数据与□□简单Java对象(POJO)的映射关□□□□系的技术。Hibernate属于全自♦动ORM映射工具,使用Hibernate查询关联□□对象或者□□关联集合□□□□对象时,可以根据□□□对象关系□□□□模型直接□□获取,所以它是○全自动的。
Mybatis工作原理:
 
图2-6  Mybatis工作原理流程图
[锚点] 2.5 Vsftpd文件服务器和Nginx服务器Vsftpd文件服务器:
Vsftpd是一个运▽行在Unix类操作系♦统上的服□□□务器,也能运行□□□在比如Linux[1],Solaris,Bsd,Irix上。本系统使♦用中,Vsftpd运行在Linux上,它 相比于其□□□□他的ftp服务器提◎供了更多□□□的支持,也是Linux发行版里□□□□广为推荐□□□□的ftp服务器程□□□□序。
本平台使用Vsftpd文件上传服务器,将文件(图片)上传至该服务器上,进行统一的独立管理,需要拿到服务器上文件(图片)的时候,只需要携带地址发出请求即可。
Nginx服务器[8]:
Nginx是一个高丨性能、轻量级的HTTP和反向代◇理web服务器。它也是一□□个电子邮□□□□件服务器,提供IMAP / POP3 / SMTP服务,由俄罗斯□□人Igor sesoyev开发,源代码以□□□□类似BSD许可证的□□□□形式发布。稳定性高,系统资源□□□□消耗低,配置文件□□□□简单,功能集丰□□□富是其优△点,在中国大□□陆得到了□□□广泛的应□□用。
正因为其□□□高性能的□□□□反向代理□□□□和负载均□□□□衡,本平台中◇选择使用Nginx,并将其搭□□□□载在Linux上,配置了三□□台Tomcat[2]服务器的•反向代理□□□□负载均衡。
[锚点] 2.6 Redis缓存数据□□□库Redis[5]是一个ANSI C语言编写,支持网络,可基于内□□□存也可持□□□□久化的日□□志型,Key-Value数据库,而且提供•了许多语□□□□言的API,是一个开□□□源的非关□□系型数据◉库。Redis的诞生实○际上是因※为Mysql数据库的□□低性能,所以一家□□□□意大利公□□司的创始□□□人Salvatore Sanfilippo为了避免□□□这一问题◎而亲自开□□□□发了Redis缓存数据□□库,事实证明,Redis的高性能●是Mysql所无法匹□□及的。
Redis所支持的语言有很多,比如常用的Java,C,C++,Python,Php,Go等等。在数据类型上,Redis支持string,set,hash,list,sorted set这五种。
本平台中Redis正是用于□□数据库缓□□存,存储前台◆数据量庞□□大的数据,是介于持□□久层和服✦务层之间☆的,配置了主※备切换,读写分离。比如前台▼商品分类◉栏,当刷新页□□面时,会先从Redis缓存中查❖询数据,若存在缓□□存则返回□□数据,若不存在□□缓存,这个时候Redis便会访问Mysql数据库得♦到数据返□□□回,并在Redis上相应缓□□□□存。以这种方△式打到减□□□缓Mysql数据库压□□□□力的目的,提升商城□□□平台的整◥体性能。
[锚点] 2.7 Solr搜索引擎Apache Solr是一个独□□□□立的企业□□□级搜索应□□用服务器,其对外提♦供类似Web-service的API接口。用户经过HTTP请求,且得到XML格式的返□□□回结果,而且通过□□用类似REST的HTTP API保证我们□□能可以使□□□用Solr通过几乎□□□任何编程□□□□语言。在如今的•生活里,搜索引擎□□的使用不□□□可或缺,各式各样◇的网站往□□往都有搜◣索功能,而搜索伴□□随的是相□□□当庞大的□□资源消耗,这对于数□□□据库来说□□是相当沉□□□□重的,沉重的加□□□□载难免会□□□拖慢甚至□□拖垮我们□□的应用,因此搜索□□□引擎为我□□□□们解决了□□这一问题。
Solr实际上是□□□□基于Lucene封装的,Lucene同样是一□□□个搜索引□□□□擎工具,Solr和Lucene两者的索□□□引库也是□□公用的。不过因为Solr是基于Lucene封装的,因此Solr的操作更□□□□加的简单□□□□人性化,它是一个□□□□企业级的□□□开源搜索□□□□平台,广泛被用□□□□于构建搜★索应用程○序,是建立在Lucene之上的,具有高速□□可扩展以□□及快速的◤性能。
相比于Mysql,Solr是一个不□□□□同的产品,虽然两者□□都有索引,但是索引□□□的文件并□□□不是同种□□□□文件,前者的查□□□□询和后者□□的搜索也□□□□不是一个□□概念。Mysql为Solr提供了索□□□引数据的□□□来源,Solr从Mysql中存储的□□数据进行□□分析得出丨索引库。
[锚点] 2.8 SSO单点登录SSO单点登录□□□是一种流□□□行的企业□□□业务集成□□解决方案。SSO是在多个◣应用程序□□□系统中定□□义的。用户可以□□通过一次□□□登录访问□□所有相互□□□□信任的应□□用系统。在实现单□□□点登录时,所有应用□□□系统都需◤要共享一□□□□个身份认◥证系统,这是单点□□□□登录的前○提条件之▽一。应用系统□□□应该能够□□□识别并提□□□取票据,当用户首□□□次登录时□□□□能够识别◤登录的用□□户,而认证系□□统应该对❖票据进行□□验证,验证其合□□□□法性。
 
图2-7  SSO实现原理图
如果用户□□□第一次访□□□问应用系□□□统时没有◈登录,则会被定◉向到认证□□系统进行□□□□登录。首先,根据用户□□输入的登□□录信息对□□□用户进行□□□身份验证。如果认证□□通过,经过身份☆验证票将□□返回给用●户,然后用户□□□可以使用□□□□这张票作□□□为身份验□□□□证票访问◥其他应用□□系统,收到票后,应用系统□□将其发送□□给验证确◆认其合法□□性的验证❖系统。一旦通过□□了验证,用户就可□□以访问其□□□□他系统而□□无需再次□□登录。
[锚点] 2.9 RabbitMQ消息队列□□□□消息队列(MQ)在计算机□□科学里是□□□□一种进程◈间通信或□□□□同一进程□□□的不同线□□程间的通□□□□信方式,在软件里◣处理一系□□□□列来自用□□户的输入。MQ的模型是□□□消费者-生产者,一端不断□□□□写入消息□□□□到消息队□□□□列中,另一端订☆阅或读取□□□队列中的♦消息,MQ遵循了AMQP协议,本平台选◈用的RabbitMQ是众多消□□□□息队列开□□□源实现中□□□□的一个。
RabbitMQ是一个开□□源的AMQP实现,以Erlang语言编写□□□□的服务器□□□□端,支持数种❖客户端,比如常用□□□□的JAVA,PYTHON,RUBY,C等等,同时也支□□□持AJAX。因为其在□□□易用性,扩展性,高可用性□□□□等方面表□□现出色,所以被广□□□□泛应用于□□□□分布式系□□□□统中存储□□□□转发信息。
使用RabbitMQ的原因有□□□很多,比如基于AMQP协议,高并发,高性能,高可用,支持插件✦和多语音,由于被广□□□□泛使用,所以有强□□□大的社区□□□□支持。对于AMQP,这是一个□□□高级消息□□□□队列协议,面向消息,队列,路由,可靠性,安全,是应用层▲协议的一◇个开放标□□准,为面向消□□□□息的中间□□□件而设计。
[锚点] 2.10 其他第三方技术支付宝开放平台(Alipay):
使用支付□□□□宝开放平□□□台官方提□□□□供的支付□□□□宝支付API实现商城□□□的在线支□□□付,选择的是•平台里的□□□□沙箱环境◤实现支付□□□宝在线支□□付的集成。
 
图2-8  支付宝开放平台官方主页
邮件发送:
邮件发送上选择的是网易163邮箱,通过开启网易163邮箱里的SMTP服务,然后在系统里编程开发实现注册成功后邮件的发送,发送方是网易163邮箱,接收方是自己输入的存在的邮箱,不限于只是网易163邮箱。
 
图2-9  163邮箱设置截图
GEETEST极验验证:
GEETEST极验验证□□在计算机□□领域里用□□于区别机□□□□器人和自□□然人,通过官方□□□□提供的方□□□□式进行简★单集成,就能给开□□□发者提供□□□安全、便携的云□□端验证服※务。
 
图2-10  GEETEST极验验证官方行为验证截图
 
 
 
 
[锚点] 3 电商平台◆的需求分❖析在本章□□□□中,将会对本□□□电商平台□□的需求进□□□行分析,从功能需□□求和非功□□能需求两♦个角度分□□析。功能需求□□是从用户□□的角度出□□发分析各◣个平台功□□□□能的需求□□□和操作流□□程,非功能需□□求则是分□□析用户和□□平台性能□□□上的使用□□□体验,安全可靠□□□□性等。
这是本次□□□平台开发★最初的一◉环也是最□□重要的,需求分析□□□□能为接下□□去的平台□□□开发提供□□蓝图,给平台开△发设计做•到极大的◈便利。
[锚点] 3.1 平台功能□□□需求简述□□□□后台管理□□□系统和前□□台门户系□□□统。后台完成□□□简单的商◢品管理功◇能,权限属于▽管理员。前台则实□□现完成了□□□□基本的用❖户注册登□□录;首页商品□□的浏览和□□□搜索;订单核对□□□□提交订单;前后台的□□□单点登录□□功能;在购物车□□□□里提交订□□□□单填写需□□□要的信息,并跳转支□□□付页面完□□成在线支□□□付。如图所示:
 
图3-1  系统功能划分图
[锚点] 3.2 平台功能需求分析
[锚点] 3.2.1 注册登录□□□□功能需求□□分析注册□□登录功能▽是电商平□□台上的一□□□□个基础功□□能,注册用户□□□的信息会□□□被得到保□□□存以供平□□□台为用户♦提供相应□□□的服务。在此平台□□□里,未注册的★用户身为□□游客,不拥有查□□看或添加□□□□至购物车,提交订单,在线支付□□等功能。注册登录□□后拥有使❖用前台门丨户系统的·所有功能★的权限,具体如下:
未注册用户:进入首页,需要注册时可以点击“免费注册”按钮跳转至注册页面,填写相应的正确信息之后,进行极验验证和勾选同意协议最后点击进行注册,信息错误的话给予提示以重新填写注册。注册成功后在页面上给用户反馈提示“注册成功”并跳转登录页面,后台发送注册邮件到对应的用户邮箱。
已注册用□□□户:有两种方□□□式可以进□□入到登录□□□□页面,第一种是□□新注册完□□成后的自❖动跳转至□□□□登录页面,第二种则□□□□是可以在※平台首页◈上点击“登录”按钮跳转◣至登录页◈面。进入登录●页面之后,用户根据□□□□页面提示◉输入用户□□□□名和密码,填写正确□□□的话提示“登录成功”并跳转至□□平台首页;填写错误▲的话则提□□□示“用户名或□□密码错误”,重新输入·再次登录。如图所示:
 
[锚点] 图3-2  注册登录功能用例图
[锚点] 3.2.2 后台商品□□管理功能□□□□需求分析□□□□平台管理◥员通过后♦台网址访◥问进入后·台登录页□□□面,在正确输◇入用户名、密码和验□□□证码之后□□□成功登陆※则跳转至□□□□后台首页。后台中有◈商品管理□□□□这一功能□□□□模块,其中分别◤有五个功□□□□能:
商品分类:对商品分□□类实行分□□□级管理,所有商品丨分类被查□□□□询出后分□□级显示在□□□□页面上,管理员可□□□以进行新□□□增分类,编辑修改●分类并保□□□□存,删除分类☆的操作。
商品列表:进入页面□□后所有商□□□□品被后台□□查询出后□□□□分页显示□□□□在页面上,页面处理丨后可以进□□行上下页◉的切换和◉相应页码□□□的跳转。可以通过□□□□选择分类,品牌或者□□□□关键字搜□□□□索出对应☆的商品。管理员可□□以新增商□□□品,编辑和修✦改商品信◤息(包括通用○信息,商品相册,商品模型□□□□等),删除商品。
商品模型:商品模型□□用于规定□□□某一类商□□□□品共有规□□格和属性□□的集合。商品模型□□被后台查□□□询后显示◈在页面上,管理员可★以新增商□□□品模型,编辑和修□□改商品模□□型信息和□□□删除商品◉模型。
商品规格:商品模型□□□下的一个□□□□子集,可以选择□□□□分类筛选□□□□查询规格□□□□显示在页□□面,管理员可□□以新增商□□品规格,编辑修改□□规格信息□□□□和删除规◆格。
商品属性:商品模型□□下的另一□□□□个子集,可以选择□□□分类筛选▲查询属性□□□□显示在页□□面,管理员可□□□以新增商□□□□品属性,编辑修改□□□□属性信息□□和删除属□□□性。如图所示:
 
图3-3  商品管理功能用例图
[锚点] 3.2.3 前台商品□□□搜索功能□□□需求分析□□□前台上的♦搜索框为□□□用户提供◇方便快捷□□□□的商品搜□□□索,这里利用□□□□到的是Solr搜索引擎。用户可以□□通过输入□□□商品关键□□□□字,名称或者◥是品牌来□□□□搜索商品,搜索到的▲商品信息□□□□会返显在□□前台页面□□□上,达到更加□□□方便人性□□化的目的,而不需要•在页面上□□逐个浏览□□□寻找商品。这里的搜□□索功能并□□□不受注册□□□□登录的影丨响,即使是以□□□□游客的身✦份访问前□□台也可以□□使用搜索□□□功能。
流程:用户进入□□□平台首页□□点击搜索◣框,输入关键□□□字,商品名称□□或者品牌□□名称后点◥击“搜索”按钮。如果搜索□□□的商品存□□在则搜索◥成功,相应的商□□□□品返显在□□□页面;如果搜索□□□的商品不●存在则搜□□□索失败,页面显示□□□空白。如图所示:
 
 
 
[锚点] 图3-4  搜索功能用例图
[锚点] 3.2.4 前台购物□□□□车功能需□□□□求分析平□□□台上的购□□□□物车功能□□□□用于存储□□用户想要★购买的商□□□品或者所□□□以喜爱的□□□□商品,购物车列□□表里显示□□这用户所□□□添加的商□□□品信息,包括商品★名称,数量,价格等,用户可以□□□对其进行□□□□相应操作,另外购物□□□车功能不✦支持游客□□□身份使用。
向购物车□□□□添加和保□□□□存物品:用户可以✦通过单击□□□□商品信息◇栏中的购◤物车图标□□□□按钮向购□□□□物车添加※物品,并可以重□□□□复添加。点击页面□□□上的购物▽车按钮,跳转到购□□物车页面,显示用户□□□添加到购□□物车中的□□□所有商品(包括商品○信息、总数量和□□□□总价),用户可以□□修改相应▼商品的数◉量。
删除购物□□□车中的商▽品:用户可以※删除单个□□商品或清□□空购物车,相应的数□□□□量和价格□□□会随着删□□□除而改变。
修改购物□□车中的商□□□品数量:用户可以☆点击“+”“-”按钮来修□□改购物车▼中的商品□□□数量,相应的数□□□量和价格□□也会随着□□□数量的变▲化而变化。
去结算:购物车页□□□面里的去□□结算按钮,结算购物◢车商品并□□□□跳转至订□□□□单页面。
 
 
 
 
 
 
 
[锚点] 图3-5  购物车功能用例图
[锚点] 3.2.5 前台订单功能需求分析提交订单这一功能,一是给用户核对订单信息,包括商品清单,地址信息,价格等等;二是用户点击提交订单按钮跳转至支付页面,这一功能不支持游客身份使用。
用户在购物车点击“去结算”按钮跳转至核对订单页面。
进入核对订单页面后,用户核对商品清单,价格,地址等等信息。
用户确认□□无误后,点击“提交订单”按钮跳转□□□至订单提□□□□交成功页□□□面,于此同时,购物车里□□□的商品需□□□要得到清□□□□空,相应的后□□□□台数据库□□也是,可以点击“去付款”按钮跳转□□□□支付页面。如图所示:
 
 
图3-6  提交订单功能用例图
[锚点] 3.2.6 前台支付□□□功能需求●分析支付□□功能为用□□□户提供虚□□拟的在线□□□支付,采用的是□□□□支付宝开□□□□放平台的▲支付宝在✦线支付体□□验,在登录相❖应支付宝□□□□账号之后□□便可点击□□□支付完成◇购买。
在提交订单成功页面点击“去付款”按钮跳转至支付页面。
登录用户□□□□支付宝账□□□号后,可以进行□□□支付购买,不支付的□□话订单会□□处以未支◉付的状态●在一定时▽间之后消□□除。
支付成功□□□后,自动跳转◣只平台首□□□页,后台相应□□□□生成订单▲信息,支付时间❖等。
 
[锚点] 图3-7  支付功能用例图
[锚点] 3.3 平台非功能需求分析效率性能:
为了给用◆户良好的◥体验,本电商平□□□□台在海量·数据下也□□要具备较□□□高性能的□□□□能力,尽量控制□□用户请求□□□的响应时□□□长相对较□□低,还要做到□□□□高并发量□□满足平台□□□的高并发□□□需求。
安全性[7]:
因为此平台是供用户购物的,所以会有很多的用户信息,比如基本的用户账号密码,邮箱手机号,地址等。需要确保绝对的安全性,以保证用户的相关信息安全保密,避免不必要的非法操作而导致信息泄露造成损失。
可靠性:
本平台是□□□□在分布式□□□架构下开□□发的微服□□□务系统,多个子系□□□统组成。需要确保□□□整个平台□□的可靠性,在某些特·定环境下□□□□也不易出□□□错,还要考虑□□某个子系·统故障时※尽量不影□□□□响其他系△统的使用。
可扩展性:
作为一个□□□□综合的电□□□□商平台,在考虑必□□□要的效率□□和安全可❖靠性能下□□同样也得□□□考虑未来◢后续平台□□的优化升□□□□级。这就需要□□一个良好□□扩展性,减少未来□□□优化升级□□□开发中不□□□必要的麻□□烦,以便更好□□□□的维护平□□□□台。
[锚点] 4 电商平台□□□概要设计□□□本章的概❖要设计面丨向开发者□□□□对用户需□□求从构建□□□□系统的角□□度进行重♦构,包含四部□□□□分。一个是平□□台整体系□□统架构的◎设计;第二个是□□平台相关◆服务器的□□□架构设计;第三个则□□是根据用□□户的功能□□需求进行□□□功能模块□□□□的概要设□□计;最后一个□□□是数据库□□□的设计。
[锚点] 4.1 平台系统□□架构设计丨平台在基□□□于MVC的模式下,在三层架✦构的基础☆下设计分□□□布式服务□□□□架构,做到面向□□□□服务。微服务方□□面使用Dubbo服务治理□□框架和Zookeeper注册中心◢构建RPC框架,实现远程□□调用和服□□务的统一□□□调度管理。如图所示:
 
图4-1  电商平台整体架构设计图
[锚点] 1.表现层:
这是电商□□□□平台的业□□□务控制层,业务上包□□括前台门□□□□户系统,后台管理□□系统,搜索系统▽和订单系□□统。控制层根□□□□据客户端□□□浏览器发□□□□出的不同□□请求调用□□□对应的业□□□务控制模□□块。不同的Controller为不同的◤请求服务,调用服务□□层且以View的形式返•回。
[锚点] 2.服务层:
服务层在□□三层架构□□□中起到一※个承上启□□□□下的作用,对下使用□□持久层的□□□□接口,对上为控◎制层提供□□□□接口,作为业务□□□□逻辑层,一个Service方法完成□□一个功能。
[锚点] 3.持久层:
起到与数☆据库通信□□的作用,且为服务◉层提供接□□□□口,是一个数□□□据访问层。当服务层□□发送请求,持久层接□□收并完成□□□相应的增□□□□删改以及□□数据访问□□□□操作。
[锚点] 4.2 相关服务□□□器架构设※计本电商□□□□平台拥有◎多台服务□□□□器,外加数据□□□库,多数部署◇在部署在VMware虚拟机的Linux环境下。一个Vsftpd文件上传□□□服务器,一个Nginx服务器实□□现反向代□□□□理负载均☆衡,三个Tomcat服务器构□□□成的一个□□□□集群,通过Nginx服务器实□□现集群上□□的反向代□□□理负载均◥衡;数据库上□□□□有两个两□□□□个持久化□□□□的Mysql数据库,一个部署□□在Linux环境下为□□索引库提□□供数据来□□源,一个部署□□□在Window环境下为□□□□整个平台□□提供数据;一个Redis缓存数据★库;一个Solr搜索引擎♦索引库。
Vsftpd文件上传服务器:作为商品图片的存放服务器,通过Nginx反向代理Tomcat服务器携带地址访问Vsftpd上的图片。
Nginx服务器:部署一台Nginx服务器,起到为Tomcat服务器集□□群反向代□□理负载均□□衡的作用,而且对Vsftpd上图片的□□□□访问就是●先通过Nginx服务器的□□□反向代理□□□□到Tomcat服务器上□□的。
Tomcat服务器:三台Tomcat服务器构成一个集群,提供Http请求等。
Redis缓存数据□□□□库:Redis作为缓存◉数据库缓◉存数据,减轻Mysql的压力,是一个非□□□关系型数◢据库。Redis搭载在Linux环境下,有一台主◣机和两台□□□□从机构成□□□□一个集群,实现了主□□□□备切换读□□□写分离,避免以为□□□□宕机而导□□□□致数据丢❖失。
Solr搜索引擎□□索引库:此索引库□□为平台前□□□□台的搜索▲提供服务,加快搜索□□效率的同□□□时减轻Mysql数据库的✦压力,而索引库丨中的数据□□□□来源于Mysql数据库,由Solr索引库自□□□□身整理而□□来。
Mysql数据库[4]:配置两种✦不同环境□□□□下的Mysql为平台服□□□务。一个在Window环境下,存放整个□□□□平台的用□□□□户信息和▽商品信息◈等;另一个在Linux环境下,作用是为Solr搜索引擎□□□索引库提□□□□供数据来○源。
 
[锚点] 4.3平台功能概要设计
[锚点] 4.3.1 前台注册功能概要设计注册页面可从两个地方进入,第一个平台首页的“免费注册”按钮,第二个是登录页面里的“注册新用户”按钮,通过以上两种方式跳转至注册页面。在注册页面的表单里,填写邮箱,用户名和密码,点击极验验证进行行为验证,一切都正确填写之后,点击“提交注册”按钮完成注册。当注册成功时,提示用户“注册成功”随后跳转至登录页面,于此同时后台发送注册邮件到用户所填写的邮箱,如果注册失败则根据提示重新填写注册。其中行为验证用到的是GEETEST极验验证,邮件发送使用的是网易163邮箱的SMTP服务。
[锚点] 4.3.2 登录功能□□概要设计□□□通过点击□□□平台首页□□的“请登录”按钮跳转□□□至登录页△面,输入用户☆名和密码□□□□并进行验□□□□证,验证错误□□□则提示“用户名或□□□□密码错误”,验证成功□□□则跳转至□□□□平台首页。由于本平□□□台属于前◎后台分离,所以登录★功能上做□□□□了SSO单点登录□□□的技术。如果用户◣第一次访◢问应用系□□□□统时没有□□□登录,则会被定□□向到认证◤系统进行□□□□登录。首先,根据用户□□□输入的登□□录信息对□□用户进行□□身份验证。如果认证·通过,经过身份◈验证票将□□□返回给用□□□□户,然后用户□□可以使用□□□□这张票作□□□为身份验□□□证票访问□□□□其他应用□□□□系统,收到票后,应用系统□□□将其发送□□□□给验证确□□认其合法□□□性的验证□□□□系统。一旦通过□□□了验证,用户就可□□□以访问其□□他系统而□□□□无需再次□□□登录。另外,当游客想✦要使用用□□户才具备□□的功能时,比如购物◣车功能等□□等,则把页面□□□□自动跳转□□至登录页□□面提示用□□□□户先登录。
[锚点] 4.3.3 后台商品□□□管理功能□□概要设计▼商品分类:在后台管·理平台点□□击商品管□□理下的“商品分类”按钮进入□□□分类页面,页面上三□□层分级显○示所有的▲商品分类,可以通过□□□点击“展开”“收缩”按钮进行□□分级展开□□和收缩的□□□□操作。点击“新增分类”按钮跳转□□□□新增页面,在页面表□□□□单上正确□□□填写各项▽信息,除了文字□□信息外还□□□有一个图●片上传的□□功能,填写完成□□□后可以点□□□□击“提交”完成新增□□并保存至◢数据库。新增页面◥上还有返□□回分类页✦和重新清□□空表单信□□□息的两个□□□按钮。点击编辑✦图标跳转▽编辑页面□□对相应分□□□类信息进□□□行编辑修丨改。点击删除□□图标则可□□以删除相○应的分类□□信息并清□□理数据库□□的信息。
商品列表:商品列表□□□展示着平△台所有的□□□商品,可以通过□□下拉框选□□择分类或□□□者是平台□□查询商品,也可以通□□□□过关键字□□□□搜索,由于商品✦数量多,实现分页✦技术方便□□□用户使用。商品列表□□里可以添□□加新商品,其中包括□□□□通用信息,商品相册,模型。在列表页,通过点击□□□□编辑和删□□□□除图片,可以进行□□□对应商品□□的编辑修□□□改和删除。
商品模型:由于商品◈模型是规□□□□定一类商□□品公有规•格和属性□□的集合,所以模型□□□页面上在□□□□展示模型✦的同时,设计“属性列表”和“规格列表”两个按钮□□□分别跳转◉至对应页□□□□面。商品模型◈可以通过▲点击按钮□□跳转新增□□□页面新增□□□□模型,也可以点※击编辑和□□删除图标♦进行相应□□□的编辑修□□□□改和删除。
商品规格:作为商品▼模型的一□□个子集,在做到常◈规的规格□□□页面展示□□□□外,可以通过◥下拉框选□□□□择展示某❖个模型下□□□的规格。同样应该□□□就被新增,编辑修改□□和删除按□□□□钮进行对□□应操作。
商品属性:作为商品□□模型的一□□个子集,在做到常□□□规的属性★页面展示□□外,可以通过❖下拉框选□□□择展示某□□个模型下□□的属性。同样应该·就被新增,编辑修改△和删除按□□□钮进行对□□□□应操作。
[锚点] 4.3.4 前台商品□□搜索功能□□□概要设计□□□前台商品□□□□功能的设□□计,搭载Solr搜索引擎,实现快速□□□□的关键字◈搜索,为Mysql数据库减□□轻压力且▽为用户提□□高体验感。在搜索框□□□内输入关□□□键字信息•后,点击“搜索”按钮实现✦商品的搜•索,搜索成功□□□商品展示□□□□至前台首◤页。因为商品□□数量的问□□□□题以及使◇用体验,搜索而展◢示的商品□□□进行分页□□展示。
[锚点] 4.3.5 前台购物◈车功能概□□□要设计前□□□□台购物车❖功能的设□□□计上,页面上每□□件商品都□□□会有一个◢购物车图◈标,用户通过□□点击商品□□□信息栏中○的购物车□□图标按钮□□便可以将□□□商品添加□□□□至购物车,且可重复□□□□添加。点击页面·上的购物□□□□车按钮可□□跳转至购□□□□物车页面,显示着用□□□□户添加至□□购物车的△所有商品(包括商品□□□□信息,总数量及□□□□总价格),用户可以·对相应商□□□□品修改数△量。用户可以□□删除单个◎商品或者□□□□清空购物□□□□车,相应的数□□量和价格□□□也会随着□□□删除而变□□□□化。用户可以※通过点击“+”,“-”按钮修改□□□购物车里□□□商品的数□□□量,同时相应□□的数量和□□价格也会□□□□随着数量△的改变而□□□变化。购物车页□□□面里的去◤结算按钮,结算购物□□□车商品并□□□□跳转至订●单页面。购物车不□□□□属于游客□□□所能使用□□的功能,实现游客□□使用时自♦动跳转至□□□登录页面。
[锚点] 4.3.6 前台订单□□功能概要□□□设计提交□□□□订单功能□□设计上,用户在购□□□□物车点击“去结算”按钮跳转□□至核对订□□□单页面,进入核对▼订单页面□□□□后;点击“提交订单”按钮跳转□□□至订单提□□交成功页△面,于此同时,购物车里□□的商品需△要得到清□□□空,相应的后♦台数据库✦也是,可以点击“去付款”按钮跳转•支付页面。
[锚点] 4.3.7 前台支付□□功能概要丨设计前台□□□支付功能□□□□设计上,使用支付□□□宝开放平□□台沙箱环□□□□境下的支◉付宝在线☆支付体验,页面上通□□□过提交订◥单功能后□□□的“去付款”按钮跳转□□至支付页□□□面。进行支付□□宝在线支●付相关操□□□作之后,设计页面□□□跳转回平□□□台首页,生成订单□□□□信息,未完成支□□付则保留□□□订单一定□□□□时间后清❖除。
[锚点] 4.4 平台数据□□□□库设计本□□□□平台的数□□□据库上选□□用的是Mysql数据库,分别在Window和Linux环境下搭◉载,一个为整丨个平台提□□□供数据,一个为Solr索引库提◤供数据来□□□□源。数据库的□□设计上,严格遵守□□数据库的□□□□设计原则□□□□和规范,根据平台◉实际需求★而设计,做到数据□□□□库的完整□□□性约束,一致性约□□□□束,可扩展性□□□和可修改◆性,借助Navicat可视化工♦具进行操□□作。
数据库E-R图:
 
图4-2  数据库E-R图
数据库表设计:
商品表
表4-1  t_goods
字段 数据类型  字段大小 约束 字段含义
goods_id mediumint  8  主键,非空 商品编号 
cat_id  int 11 非空 分类编号 
goods_name  varchar 120  非空 商品名称 
click_count  int 10 非空 点击次数 
brand_id  smallint 5  非空 品牌编号 
store_count  smallint 5 非空 库存数量 
shop_price  decimal  10 非空 商品价格 
on_time int 10 非空 上架时间 
goods_type  smallint 5 非空 模型编号 
spec_type  smallint 5  非空 规格编号  
商品分类表
表4-2  t_goods_category
字段 数据类型  字段大小 约束 字段含义
id smallint 5  主键,非空 分类编号 
name  varchar 90 非空 分类名称 
level  tinyint  1  默认空  分级 
image  varchar 512  默认空  分类图片 
is_show  tinyint  1  非空 是否显示  
商品模型表
表4-3  t_goods_type
字段 数据类型  字段大小 约束 字段含义
id smallint 5  主键,非空 模型编号 
name  varchar 60 非空 模型名称  
商品属性表
表4-4  t_goods_attribute
字段 数据类型  字段大小 约束 字段含义
attr_id int  11  主键,非空  属性编号 
attr_name varchar 60 非空 属性名称 
type_id  smallint 5  非空 模型编号 
type_name  varchar 60  默认空  模型名称  
商品规格表
表4-5  t_goods_spec
字段 数据类型  字段大小 约束 字段含义
spec_id int  11  主键,非空  规格编号 
spec_name varchar 60 默认空  规格名称 
type_id  smallint 5  默认空  模型编号 
type_name  varchar 60  默认空  模型名称  
订单表
表4-6  t_order
字段 数据类型  字段大小 约束 字段含义
order_id mediumint  8  主键,非空 订单编号 
user_id  mediumint  8 非空 用户编号 
order_status  tinyint  1  非空 订单状态 
pay_status  tinyint  1  非空 支付状态 
consignee varchar 60  非空 收货人 
goods_price  decimal  10 非空 商品总价 
pay_time  int 10 非空 支付时间 
total_amount decimal  10 非空 订单总价  
订单项表
表4-7  t_order_goods
字段 数据类型  字段大小 约束 字段含义
rec_id mediumint  8  主键,非空 表编号 
order_id  mediumint  8 非空 用户编号 
goods_id mediumint  8  非空 商品编号 
goods_name  varchar 120  非空 商品名称 
goods_num smallint  5 非空 购物数量 
goods_price  decimal  10 非空 商品总价 
spec_key varchar 128 非空 规格编号 
spec_key_name varchar 128 非空 规格名称  
用户表
表4-8  t_user
字段 数据类型  字段大小 约束 字段含义
user_id smallint  5  主键,非空 用户编号 
user_name  varchar 60 非空 用户名称 
email  varchar 60 非空 用户邮箱 
password  varchar 32  非空 用户密码
ec_salt varchar 50  非空 密钥
add_time  int 11 非空 注册时间  
 
 
[锚点] 5 电商平台□□详细设计□□□与实现在□□□第四章电□□□商平台的□□概要设计□□基础上,在本章进□□□一步描述□□□电商平台□□的详细设□□计与实现,将从平台□□架构和功□□□□能两个角□□□度进行剖▲析。
[锚点] 5.1 平台架构❖详细设计□□□□本平台的□□□工程架构□□为Maven工程,ego-parent是整个工□□□□程的一个□□□□父工程,其中包括□□□□公共工具◣类系统ego-common,后台系统ego-manager,前台系统ego-portal,服务系统ego-rpc,订单系统ego-order和单点登★录系统ego-sso,除了公共□□工具类系□□统每个子□□系统都拥□□□有自己的pojo和mapper对象,也拥有service层和web层,共同组建□□□□成一个完□□整的平台♦工程,其中各个◤子系统的pojo和mapper是由Mybatis的逆向工□□程generator自动生成,包括pojo,mapper.xml,mapper.java,不需要手□□动编写,大大的提丨高了编程❖效率。
 
图5-1  平台工程架构图
平台的系□□□□统架构是□□在MVC模式的三♦层架构下,利用Dubbo服务治理□□框架和Zookeeper注册中心◉搭建服务□□□系统。利用Nginx分别实现□□前后台系◈统的方向□□□□代理,前后台系□□□□统则通过Dubbo实现服务□□的远程调□□用。
Vsftpd文件上传服务器,安装在Linux环境下,是商品图片的存储地。
Redis服务器安※装在Linux环境下,由一台主□□□□机和两台□□□□从机构成□□一个集群,配置了主☆备切换读◥写分离,用来存储□□一些临时□□□数据或常○用数据。
Solr搜索引擎♦安装在Linux环境下,为前台的□□搜索功能□□□所服务,实现了前□□□□台的关键□□□□字搜索,做到了搜□□索的快速□□高效,Solr的索引库□□□数据源于Linux环境下的Mysql数据库,由Solr自己整理□□□□而来。
 
图5-2  平台执行流程图
 

图1

图2

图3

图4

图5

图6

图7

图8

图9

图10

图11

图12

图13

图14

图15

图16

图17

图18

图19

图20


 
如没特殊注明,文章均为BG大游集团原创,转载请注明来自https://www.yichuanlaw.com/news/6466.html