分布式电子商务系统项目综述

电商资讯 2018-10-29 17:03:00

该商场是一个大型的网上商城系统,部署在分布式架构中,类似于京东商城。该系统分为前端系统和后端系统。前端系统主要负责商城页面的显示功能。这里采用的面向服务模式是pc侧手机终端只负责显示页面,业务逻辑在服务层实现,客户端调用服务器端接口实现显示功能。

在前台系统中,它主要分为:客户端:系统首页显示系统(portal,8082)。

服务器系统:

(1)休息系统(8081):负责调用CMS系统的内容,向页面显示CMS系统的内容(这里的CMS内容管理系统,在后台实现)。

(2)产品搜索系统(8083),当在页面上输入产品信息时,可以搜索产品。这里使用solr技术,使用solr索引库实现。

(3)SSO(单点登录系统,8084),因为商城采用分布式系统部署,整个系统分为几个子系统,所以用户的访问权限是一个问题,如何实现一次登录,其他系统可以免费登录,sso可以解决。

(4)订单系统(8085):订单系统对于在商场购物是必不可少的,因此这是作为独立项目编写的。

后端系统功能:商场的后端系统主要负责货物的分类,添加和规范。 CMS系统(这里主要是分类和添加的广告)。

系统前端接口的设计由easyUI设计。后台使用springMVC,spring,mybatis框架,并使用java语言编程。

步骤分析:

1.项目需求分析:模仿京东商城系统。

2.项目数据库设计:商品信息表,商品信息分类表,商品信息描述表和商品规格参数表。

3. CMS系统内容表和CMS系统内容分类表。

4.用户表单,订单表单和订单的详细列表。

执行: 1.框架的构建:

Maven用于管理整个项目。

两个优点:

1. maven可以管理整个项目项目,促进热部署项目,并促进项目发布。

2,maven管理你的jar包有很大的优势,你可以自动下载所需的jar包,只需定义版本,其他maven自动下载。

因为这个项目比较大,所以有很多子项目,所以我们创建一个pom类型(聚合项目)父项来管理所有jar包的版本,这样其他子项目就依赖于这个项目。版本是统一的,并且由于版本问题没有错误。其次,创建一个特殊的(jar类型)常用工具类,可以将系统中使用的工具类添加到这个类中,其他类也依赖于这个类,可以使用里面的工具。此工具类还依赖于父类。

以下是使用SSM框架构建项目:使用框架构建项目主要分为两个步骤:框架所依赖的jar包,框架的配置文件。很容易弄清楚这两点。

该框架主要分为三层:

Dao层(mybatis)(主要处理数据库),服务层(spring)(主要负责调用dao层,实现业务逻辑的编写),控制器层(springMVC)(这里主要是调用服务层,根据对于jsp页面的内容,将jsp的内容传递给服务层,然后将数据显示给jsp页面)。

所以这里的配置文件是:mybatis SqlMapConfig.xml(主要是它的插件配置,数据库配置放在dao中)。 Spring将mybatis和springMVC与application_context_dao.xml(配置数据源,与数据库的连接),application_context_service.xml(服务包的介绍)集成在一起。 Application_context_transation.xml(此处事务是独立的,主要是事务的配置)

SpringMVC.xml(主要是前端控制器,试图配置解析器)

构建框架后,每个表的mapper.xml和mapper.java文件以及pojo文件都是通过mybatis的逆向工程生成的。

2.特定功能的实现逻辑

(1)后台系统功能实现

(这主要是关于CMS系统的查询,添加,规范参数,分类和添加)

事实上,功能模块的分析有三个要点:

从哪个数据表中获取(主映射器实现);页面传递是否有参数,页面的URL是什么(控制器实现);什么是返回值(即页面显示的格式是什么样的,这是根据jsp使用的框架确定的。例如,这里是easyUI,你可以查询它的api文件并找到它的返回值类型);

A.商品查询逻辑分析:实际上,商品查询主要是从数据库中查询所有商品。这个简单的查询非常简单,但是在显示页面时会出现问题。这是mybatis的分页插件页面。

1,传入参数:Easyui页面默认页面,行参数传递。

2,返回值:easyui格式是datagrid的格式,具体写入相应的pojo类进入特殊工具类,返回格式为此pojo。

3,逻辑:Dao层:用mybatis进行Dao层逆向工程

4,Service调用mapper查询和分页实现逻辑。

5,Controller会传递过去的参数,url是写的

B.产品添加:添加产品时,产品信息将写入数据库。单击提交按钮时,页面提供的内容将直接写入数据库,并且只能填写未包含的字段。

这涉及产品的类别选择,上述图像的上传以及产品的描述。

类别选择首先必须显示类别,这里使用的异步树的格式。查询api查找异步树的返回值的格式。主要思想是根据parentId查询类别表。默认值为0.异步树具有一个功能,即每次获取的ID。如果有子节点,则会再次发送该URL。如果没有子节点,则不会发送请求。所以你可以遍历所有节点。 (这是树的一个特性,自动请求)

1.异步树的特征:从顶层读取,首先读取顶层节点,如果它是关闭的,则向服务器发送请求以读取子节点,子节点的状态取决于父节点,扩展封闭节点时,如果节点未加载子节点,则将节点的id值作为http请求参数并将其命名为id,并通过url将其发送到服务器以检索子节点。因此,在遍历一次之后,如果父节点仍然是父节点(即,存在子节点),则检索以下子节点的内容,并且将子节点的id用作parentId以检索以下节点。如果它不是父节点,请打开下面的列表。也就是说,这些实现都是由异步树自动实现的。我们只需要判断父节点的状态。根据该状态执行以下检索。

2,图片上传功能:由于商城内有很多图片,所以我们在图片服务器中保存了这么多图片,然后将服务器中图片的具体网址写入数据库进行前台调用。该图像可以从前景URL获得。这里是将图像上传到服务器的功能:先生保存图像的名称,然后生成保存图像的格式,然后使用ftpUtil将图像上传到服务器,返回URL链接。

3.产品规格参数,此处使用的规格参数模板的格式:

(1)这里有两个表:

模板表(根据产品分类创建的模板,根据分类ID),演示模板表(根据产品信息写入模板表,根据产品ID查询产品信息) ,然后写入相应的订单模板,然后生成HTML)。

1,商品描述:这里以文字的形式存储,可以书写。富文本编辑器。

2,CMS分类:这里的格式也使用异步树的格式,所以显示方法是一样的。

3,添加分类:只需将数据库插入表中即可。

(2)前端功能实现

在主页上实现大广告位:这是从CMS系统获得的广告位的图片,然后显示在页面上。但正面和背面都是不同的端口。如何从前台访问背景可以以jsonp的形式使用。但是我们的系统使用面向服务的编程,因此使用了rest接口,然后在前台调用该函数。这里使用httpcliet来调用接口。

(3)产品搜索功能的实现:

首先在linux下部署solr服务器,然后将数据库表字段导入solr索引库。然后编写搜索服务接口,然后调用前台的服务接口。

1,休息功能:

产品详情页面显示:写三项服务:根据页面的id显示商品的具体信息,根据id查询产品的内容表,并根据id查询产品的规格参数,即是,向页面显示三个信息。然后单独调用前景。

2,SSO系统:这里涉及拦截器:

这是使用sso的接口文档,即验证接口,注册,登录界面,根据令牌的查询用户界面,以及安全出口界面。调用服务层是以jsonp形式访问的服务接口,以实现跨域访问。客户端都在jsp页面中实现。

3.具体过程:

当用户点击注册时,它会跳转到注册页面,这是保存用户信息的功能。验证用户名是否存在,电话号码和邮箱不能为空。

当用户单击登录按钮时,用户输入用户名和密码,验证数据库中是否存在用户名,然后用户名密码正确。这里的密码是使用spring的MD5加密技术。当一切都成功时,会向用户发出一个令牌令牌(由uuid实现),然后令牌存储在redis中(令牌的密钥是它生成的数字,值是用户的名字),然后在redis的到期时间。这相当于用户的会话。

然后将令牌写入cookie,并通过jsonp调用前台页面。根据cookie中令牌的值,调用sso根据令牌查询用户的服务,检查用户是否有效,如果有效,则用户返回前台页面,首页是由用户获得的。用户名显示在主页上,表示***已登录。

此处的cookie设置为共享域,即所有子系统都可以访问cookie。

当用户登录其他子系统时,从cookie获取令牌信息,根据令牌信息获取用户信息,确定用户信息有效。如果有效,则释放用户。如果它无效,则拦截器用于拦截并跳转到登录页面。当用户再次登录时,刷新redis时间并重置有效期。拦截器拦截,在springMVC.xml中设置拦截的名称。

购物车功能:

购物车功能会注意到该商品已添加到购物车中,购物车已保存在Cookie中。这里使用cookieUtil工具来实现这些保存和删除功能。单击产品详细信息页面上的“添加到购物车”按钮以提交请求。 item id传递给Controller。 Controller接收id。 Controller根据项目ID调用服务查询项目的基本信息。由于项目很多,购物车的项目专门用pojo对象编写。它不在信息购物车内使用。将购物车商品的商品放入饼干中。在添加cookie之前,首先从cookie中取出购物车的商品,以确定当前购物车商品列表中是否有任何商品。如果有数量加1,如果没有添加一项,则数量为1.向用户显示购物车列表。

订单系统:订单系统主要是创建,查询,修改和删除订单的功能。

由于订单系统需要在PC端和移动端都调用此功能模块,订单系统也用作客户端调用的服务接口。

订单服务界面还具有用于基于文档创建订单的界面文档。

创建订单需要用户登录。这里,拦截器可以配置为在springMVC中拦截。

用户成功拦截后,用户登录到商店。这时,要注意在请求中保存用户。目的是根据用户的id查询订单,不同的用户有不同的订单。

然后使用请求get和setAttribute获取值和设置值。为什么我可以从请求中获取它,因为我们的整个商城都是通过http协议访问的。

(1)订单创建逻辑:

点击进入购物车结算时,会显示购物车列表。当选择购物车的商品结算时,显示提交商品之前的一系列信息(即结算页面):数据库的三个表格:订购基本信息表格,订单列表(购买商品信息) ),订单交付(收货人的地址电话信息)

传入参数:因为创建命令是将一系列信息插入到数据库中,并对应于数据库中的三个表,所以根据页面的内容,传入的参数是三个pojo类,然后是页面填写+页面上不在数据库中的字段的完成。所以主要是在数据库中插入三个表。服务接口负责接收这三个pojo类,因此客户端必须弄清楚如何传递这三个pojo类。

根据接口文档,以json格式返回的数据,即三个表的数据是json字符串,所以在这里我们必须找到一种方法来为这三个表创建一个pojo来保存返回值。

收到pojo课程:

这种方法以这种方式巧妙地组合了三个表。

下一步是插入数据。这是在服务层完成的:逐个插入数据库,然后返回一个订单号,即订单的ID。

控制器层传递此pojo类并将其返回给客户端。

客户端还将此pojo类传递给服务接口,并将订单号返回给客户端。提交订单时显示订单提交成功页面时,请查看jsp页面上显示的字段,然后将模型传递给页面。

(2)订单的寻呼查询:

在前面我们在请求中保存了用户,然后得到了用户的id,根据用户的id查询顺序,默认情况下首页传递页面和行,使用mybatis分页查询查询顺序。

传入参数:页面和行

执行操作:根据用户ID,逐页和行

查询订单

返回值:列出订单的信息,即用户的多个订单信息。根据接口文档,我们发现返回的信息是数据中订单表的一部分,因此使用一些字段来形成一个新的pojo来接收返回值。

(3)根据订单ID查询订单:

根据订单ID,订单显示的信息更全面。返回值对应于前三个数据库的表。因此,根据id,分别查询三个表以获得相应的信息。

1,传入参数:订单ID;

2,操作:分别查询三个表;

3,返回值:三个新定义表的Order的Pojo类;

来源:博客公园


随商信息技术(上海)有限公司 b2b2c多用户商城系统是基于PHP技术的企业级电子商务平台系统,系统支持平台自营、招商加盟和多商家入驻、集成微信商城、移动端APP商城、微信小程序于一体。公司主营业务包含商城系统定制开发、新零售系统解决方案、电商平台系统定制开发、商城网站建设服务等等,随商为大、中、小企业提供一个安全、高效、强大的电子商务解决方案,协助企业快速构建、部署和管理其电子商务平台,拓展企业销售渠道,致力于推动PHP技术和电子商务行业的发展而不断努力。

文章关键词   商城系统 电子商务系统

免费体验微信商城系统、微信分销系统、APP商城系统、小程序商城系统,免费商城系统管理中心账号请联系客服人员
© Copyright 2018 开源SuteShop多用户B2B2C商城系统一站式网上商城网站建设服务商 版权所有
沪ICP备18022949号-1