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

在前台系统中主要分为:客户端:系统前台页面显示系统(portal,8082)。服务端系统:(1)rest系统(8081):负责调用CMS系统的内容,将CMS系统的内容显示到页面,(这里的CMS内容管理系统,在后台实现)。(2)商品的搜索系统(8083),当在页面输入商品信息时,可以搜索商品。这里用到了solr技术,利用solr索引库来实现。(3)SSO(单点登陆系统,8084),因为商城采用分布式的系统部署,将整个系统划分为几个子系统,所以对于用户的访问权限是一个问题,如何实现一次登陆即其他系统都可以免登陆,sso可以解决。(4)订单系统(8085):商城购物少不了订单系统,所以将此作为一个独立工程编写。

后台系统功能:商城的后台系统主要是负责商品的分类,添加、规格参数。CMS系统(这里主要是广告的分类、添加)。

本系统前台界面设计采用的easyUI的设计,后台采用springMVC、spring、mybatis框架,擦用java语言编程。

后台系统功能实现

(这里主要讲商品的查询、添加、规格参数、CMS系统的分类、添加)

其实对于功能模块的分析主要有三点:

从哪个数据表获取(主要mapper实现);页面传递是否有参数,页面的url是什么(controller实现);返回值是什么(即页面展示的格式是什么样子的,这个根据jsp使用的框架来决定,比如这里的easyUI,可以查询它的api文档,找到其返回值类型);

A、商品的查询逻辑分析:其实对于商品的查询主要就是从数据库中将所有商品查询出来。这简单的查询很简单,可是在页面分页显示出来这就是一个问题了。这里到了mybatis的分页插件pageHelper来实现。

传入参数:Easyui页面默认有page、rows参数传递。

返回值:easyui的格式即datagrid的格式,专门编写一个对应的pojo类放入专门工具类中使用,返回格式即这个pojo。

逻辑:Dao层:Dao层用mybatis的逆向工程

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

Controller即将参数传递过去,url写好

B、商品添加:商品添加即将商品信息写入数据库,页面传递的内容当点击提交按钮时直接写入数据库,只需补全没有的字段即可。

这里涉及到商品的类目选择、上面的图片上传、商品的描述信息。

类目选择首先得将类目展示出来,这里使用的异步树的格式。查询api发现异步树的返回值的格式。主要思路是:根据parentId来查询类目表,默认从0开始,异步树有个特点,就是每次获取到的id,如果有子节点,会发送url再次请求,如果没有子节点则不发送请求,所以可以都遍历到所有节点。(这个是tree的特点,自动请求)

异步树的特点:从最顶层开始读取,先读顶层节点,如果是闭合状态,发送请求给服务器读取子节点,子节点的状态依赖于父节点,当展开一个封闭的节点时,如果节点没有加载子节点,它将会把节点的id的值作为http请求参数并命名为id,通过url发送到服务器上检索子节点。所以遍历一次后,如果父节点还是父节点(即存在子节点)则检索下面的子节点的内容,将子节点的id作为parentId来检索下面的节点。如果不是父节点了,则打开下面列表。也就是说这些实现都是 异步树自动实现的,我们只需要判断父节点的状态即可,下面的检索根据这个状态进行。

图片上传功能:因为商城的图片非常多,所以我们将这么多的图片保存在图片服务器中,然后将图片在服务器中的具体url写入数据库,供前台调用。前台获取到这个url既可获取到这个图片。这里图片上传到服务器的功能:先生存图片的名称,然后生成图片保存的格式,然后利用ftpUtil将图片上传到服务器,返回一个url链接。

商品规格参数,这里采用的规格参数模板的形式。:

这里有两个表:一个模板表(根据商品的分类建立的模板,根据分类id),一个展示模板表(根据商品的信息写入模板表,根据商品id查询商品信息,然后写入对应订单模板中,然后生成HTML)。

商品的描述:这里采用文本的形式存储的,写入即可。富文本编辑器。

(2)前台功能实现

首页大广告位的实现:这里是从CMS系统中获取广告位的图片,然后展示在页面。但是前台跟后台是不一样的端口,如何从前台访问后台呢,可以使用jsonp的形式。但是我们这里系统是采用面向服务的编程,所以采用rest接口的方式然后功能前台调用,这里用的httpcliet来调用接口。

商品搜索功能的实现:

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

Rest功能:

商品详情页面展示:写三个服务:根据id查询商品的具体信息显示到页面,根据id查询商品的内容表,根据id查询商品的规格参数,即将三个信息展示到页面。然后前台分别调用。

SSO系统:这里涉及到拦截器。

这里是利用了sso的接口文档,即校验接口、注册、登录接口、根据token查询用户接口、安全退出接口。

这个的调用服务层是利用jsonp的形式访问的服务接口,实现跨域访问。客户端全部在jsp页面实现的。

具体流程:

当用户点击注册的时候,跳转到注册页面,即用户信息的保存功能。检验用户名是否存在、手机号和邮箱不能为空。

当用户点击登录按钮的时候,用户输入用户名和密码,检验用户名是否在数据库中存在,然后用户名密码是否正确。这里的密码是用了spring的MD5加密技术。当全部成功后,给用户颁发一个token令牌(利用uuid实现),然后将token存入到redis中(token的key是它生成的号,值是用户的名字),然后设置在redis的过期时间。这相当于用户的session。

然后将token写入cookie中,前台页面利用jsonp调用,根据cookie中的token的值,调用sso的根据token查询用户的服务,查看用户是否有效,如果有效则将用户返回前台页面,前台页面获取用户的用户名显示在首页,表示***已登陆。

这里的cookie是设置了共享域,即全部子系统都可以访问到cookie。

当用户登录其他子系统时,先从从cookie中获取token信息,根据token信息获取用户信息,判断用户信息是否有效,如果有效则放行,如果无效,则利用拦截器拦截跳转到登录页面。用户再次登录的时候刷新redis的时间,重新设置有效期。

拦截器的拦截,在springMVC.xml中设置拦截的名称。

购物车功能:

购物车功能注意到这里商品加入购物车,是将购物车保存在cookie中。这里用到cookieUtil工具来实现这些保存删除功能。在商品详情页面点击“加入购物车”按钮提交一个请求吧商品id传递给Controller,Controller接收id,Controller调用Service根据商品id查询商品基本信息,购物车的商品专门写一个pojo对象,因为商品的很多信息购物车里面用不到。将购物车的商品的pojo,把商品写入cookie中,加入cookie之前先从cookie中把购物车的商品取出来判断当前购物车商品列表中是否有此商品,如果有数量加一,如果没有添加一个商品,数量为1。展示给用户购物车列表。

淘淘商城分布式电商系统项目总结相关推荐

  1. 大型分布式电商系统架构是如何从0开始演进

    大型分布式电商系统架构是如何从0开始演进的?本文是学习大型分布式网站架构的技术总结.对架构一个高性能.高可用.可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考.文中一部分为读书笔记,一部 ...

  2. 分布式电商网络项目BitCherry受邀出席越南河内创新峰会,积极建设越南社区

    2019年8月29日至8月30日,为期两天的"Hanoi Innovation Summit 2019"创新峰会在越南河内国家会议中心召开. 近年来,越南政府积极拥抱区块链技术,这 ...

  3. vue mysql 电商_mei-shopone: nuxt(vue)+node(egg.js)+mysql晒点风格极简商城,电商系统。适合入门全栈开发,槑先森工作室。...

    mei-shopone 前言 此项目是基于nuxt+egg+mysql开发的在线商城系统全栈模板,目前前端部分已适配移动端.面向开发人员友好,快速,轻巧,干净,并包含W3有效源代码.后台管理系统基于v ...

  4. 芸众商城社交电商系统V2.2.64

    介绍: 打造属于自己品牌的移动社交电商系统 芸众商城系统,H5+公众号+小程序+APP 数十款营销插件.O2O多商户.聚合供应链.分销.带货直播! 版本号:2.2.64 – 标准版 [更新后必须通过框 ...

  5. 基于微服务的分布式电商系统-妖猫商城

    妖猫商城是一个采用微服务框架springcloud 实现的电商项目. 本项目实现了权限管理.商品管理(商品.属性.品牌.类目)等,并实现了商品详情页到支付的整个流程. 主要采用的技术如下: redis ...

  6. 大型分布式电商系统架构是如何从0开始演进的?

    2019独角兽企业重金招聘Python工程师标准>>> 本文是学习大型分布式网站架构的技术总结.对架构一个高性能.高可用.可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参 ...

  7. 详解 | 大型分布式电商系统架构

    本文是学习大型分布式网站架构的技术总结.对架构一个高性能.高可用.可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考.文中一部分为读书笔记,一部分是个人经验总结,对大型分布式网站架构有较好 ...

  8. 10分钟速解 | 大型分布式电商系统架构

    关注公众号"Java后端技术全栈" 回复"电子书"获取程序员必备电子书 hi,大家好,今天是周四了,明天就开始国庆长假了. 提前祝大家国庆快乐!也祝祖国繁荣富强 ...

  9. 大型分布式电商系统架构是如何从 0 开始演进的?

    本文是学习大型分布式网站架构的技术总结.对架构一个高性能.高可用.可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考.文中一部分为读书笔记,一部分是个人经验总结,对大型分布式网站架构有较好 ...

最新文章

  1. Centos 常用系统命令
  2. websocket检测服务器是否断开_websocket – 如何检测用户是否因网络断开而离开Phoenix通道?...
  3. Java 邮箱判断 正则表达式
  4. 专题:区块链与数据共享(上)
  5. Process Explorer工具介绍
  6. 洛谷P3382 【模板】三分法
  7. 如何利用卡诺云系统管理早教机构?昆明收银系统还有此妙用!
  8. windows系统镜像修复计算机,分享win10用镜像文件修复系统的方法
  9. 解决:金山词霸界面太小
  10. python 实现 i18n 多语言国际化
  11. 1000瓶水里有1瓶毒药,10只老鼠能试出来吗?
  12. CentOS7 好日子到头了,如何优雅的抛弃 CentOS7?
  13. Hadoop完全分布式安装教程
  14. 机器学习之ID3算法(小白入门级别)
  15. 企业公众号做内容输出有哪些要点
  16. 壁纸 | iOS 14 内置这几张壁纸,你喜欢吗?
  17. 如何解决计算机黑屏问题,电脑黑屏怎么处理(三个键教您解决黑屏问题)
  18. 【开源免费】国产10万级etl作业调度软件 taskctl 6.0 永久授权
  19. 通达信指标公式常用绘图函数(4)——颜色、线形粗细、线型等修饰函数
  20. 孩子过敏源检测,如何避免被坑?

热门文章

  1. 宜家app android,IKEA宜家家居下载
  2. 廖金菊——湖南高尔夫旅游职业学院文化社诗人
  3. die、exit()和return区别
  4. 微前端 - qiankun
  5. 归并排序非递归——C语言讲解
  6. 《计算机视觉工程师养成计划 》·数字图像处理·数字图像特征·链码
  7. testin云测操作
  8. 虚拟机正在应用计算机设置,vmware虚拟机安装windows 10 technical preview卡在“正在准备设置50%”的解决办法-网络教程与技术 -亦是美网络...
  9. 用Python实现序列帧播放器
  10. python查找文字在图片中的位置_如何快速提取出图片中文字,强烈推荐这款免费软件!...