对添加购物车流程过程的分析浅解

在电商项目上都会涉及到对购物单车添加的功能,首先了解对购物车的流程;

市面上对最大的两个电商平台就是阿里和京东,阿里呢  是必须在登录的状态下才能添加购物车。京东呢 是可以在未登录的状态下添加购物车。

个人觉得相比较而言呢,京东的更人性化一点。所以在一下介绍呢就会以京东的模式作为介绍,

即分为  登录状态和 未登录状态 下添加购物车两种方式。

未登录状态:

首先1.用户添加当前商品到购物车。

  2.从request获取cookies,

  3.遍历cookies  从cookies中找寻购物车。

  4.没有的话就创建购物车,

  5.添加当前商品到购物车,

  6,创建cookies再把购物车放到cookies中

    在这里要设置cookies存活时间默认一个月30天cookie.setMaxAge(60*60*24*30)。

    设置多有项目可以访问cookie.setPath("/")   /表示都可以访问。

7.回显到浏览器(转发、重定向内部转发)

登录状态:

  首先:1、用户添加当前商品到购物车

     2、从request中获取cookies

       3、遍历cookies查找购物车

       4 、如果没有购物车 就创建购物车

       5、 添加当前商品到购物车。

       6、遍历购物车的购物项  追加到redis中。

       7、清空cookies

      ( 创建cookie设置值为null.

       Cookie  cookie  =  new  Cookies(constants.BUYER_CART , null)

       立即失效Cookie.setMaxAge(0)

      都可以访问cookie   cookie.setPath("/")

      把这个cookie写回到浏览器response.addCookie(cookie)  

)

    8、 转发(重定向)

在这里用到了redis 所以注入jedis

放到redis中去用的setBuyerChartToredis()   把数量和库存表的id 和用户名

跳转到结算的页面

未登录;

  1、从request获取cookies

  2、遍历cookie 找购物车

  3、判断是否有购物车,进行下面操作,无则不进行任何操作

  4、将购物车中装满

  5、回显购物车(model)

  6、跳转到购物车页面。

登录:

  1、从request获取cookie

  2、遍历cookie 找购物车

  3、判断是否有购物车,有进行下面操作,无则不进行任何操作

  4、将购物车添加到redis中 清空cookie

  5、从redis中取出购物车

  6、将购物车中装满

  7、回显购物车(model)

  8、跳转到购物车页面

出现的错误及修改

未登录状态下添加同款商品合并(两次添加购物项到购物车显示两条数据)

  解决:

    在添加购物项方法里做判断

    代码实现;

    重写购物项对象BuyerItems的equals  和hashCode 的方法改动的是equals 把最后比较的对象改成比较id

    //添加购物项方法

    public  void  additems(BuyerItems  items){

        //判断购物项集合中是否有和传入的购物项相同的对象

      if(this.items.contains(items)){

        for( Buyeritems  item  :  this.items){

          if(item.getSku().getId().equals(it.getSku().getid())){

            Item.setAmount(item.getAmount()  +    items.getAmount());

          }else{

            this.items.add(items);

          }

        }

      }

    }

(java对象和json 互相转换的时候使用了objectMapper对象,那么这个对象转换的pojo必须是标准的javabean,标准的javabean 必须有属性,还有get/set方法否则会报错)

解决json中有一个注解@jsonIgnore(作用忽略不标准的方法)

   商品总价格; 默认为0元,  + = 遍历购物项通过购物项数量乘以购物项金额的到总金额做累加。

   运费;默认60元以上免邮费收0元,小于收10元

     商品总数:

    总价格: 行频的总价格加上运费

  去结算页面(点击去结算)(再去结算的过程中判断是否登录,如果登录则跳转到结算页面(即支付页面),如果未登录则跳转到登录页面进行登录,登录之后再跳转到结算页面)

  1、判断用户是否登录:(SpringMvc拦截器)

    (实现HandlerInterceptor接口)编写prehandler

    (获取token (令牌)根据令牌查询用户的登录名称,做出判断如果不为空,则已经登录,放行return  true。没有登录则跳转到登录页面进行登录,登陆后跳转到购物车中(response.sendRedirect("路径")))

    

  登录:继续判断

    判断购物车中是否为空()

    为空: 在购物车中进行提购物提示

    不为空:继续判断

        判断购买的商品是否有货:(从redis中取出购物车(username)再从redis中获取登录用户的信息(token令牌))

        设置有货标记默认true(有货判断)判断购物车中的货物是否有货  无货标准  有一件商品无货就算无货,库存量为0,库存量小购物数量(无货)//设置无货标记

原文地址:https://www.cnblogs.com/wzmd/p/8893126.html

时间: 2024-10-09 18:10:31

对添加购物车流程过程的分析浅解的相关文章

在Ceph中创建虚拟机流程改进之分析

作为个人学习笔记分享,有任何问题欢迎交流! 最近在Gerrit中看到一个change:https://review.openstack.org/#/c/94295/ , 它主要是对当前在Ceph中创建虚拟机的流程的改进.如果glance的backend是ceph, 则nova创建虚拟机到RBD的流程是这样的: 通过glance从ceph中下载image --> 本地 --> 复制image到rbd 这个change的目的就是:不需要下载到本地,直接在rbd中复制image,以提高虚拟机创建的速

认识Robotlegs(一)注入过程的分析

提到Robotlegs,很多人都读过一篇叫做<Robotlegs最佳实践>的教程,都知道Robotlegs是一个基于IOC的MVC微框架,其内部的注入机制有三种绑定规则(值绑定.类绑定. 单例绑定),现在我以SwiftSuspenders的视角再来分析一下注入的实现过程. SwiftSuspenders实现注入的过程大致是下面的步骤: 1)创建注入器 2)添加注入规则 3)初始化注入宿主(InjecteeClass) 4)对注入宿主进行注入 (把注入对象注入到宿主内部) 1 /**注入对象*/

网上图书商城项目学习笔记-013 添加购物车及我的购物车

一.流程分析 1.购物车模块 2.我的购物车分析 3.添加条目到购物车 二.代码 1.view层 (1)top.jsp 1 <a href="<c:url value='/CartItemServlet?method=myCart'/>" target="body">我的购物车</a> (2)desc.jsp 1 <form id="form1" action="<c:url value=

Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6633311 在上一篇文章中,我 们分析了Android系统进程间通信机制Binder中的Server在启动过程使用Service Manager的addService接口把自己添加到Service Manager守护过程中接受管理.在这一篇文章中,我们将深入到Binder驱动程序源代码去分析Client是如何通过Service Manager的

【转】Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)

转载请注明出处:http://blog.csdn.net/qinjuning 上篇文章<<Android中measure过程.WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)>>中,我们 了解了View树的转换过程以及如何设置View的LayoutParams的.本文继续沿着既定轨迹继续未完成的job. 主要知识点如下:                 1.MeasureSpc类说明                 2.measure过程详解(揭秘其细节);   

Android应用程序安装过程源代码分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6766010 Android系统在启动的过程中,会启动一个应用程序管理服务PackageManagerService,这个服务 负责扫描系统中特定的目录,找到里面的应用程序文件,即以Apk为后缀的文件,然后对这些文件进解析,得到应用程序的相关信息,完成应用程序的安装过程, 本文将详细分析这个过程. 应用程序管理服务PackageManagerSe

OpenStack_Swift源码分析——创建Ring及添加设备源码详细分析

1 创建Ring 代码详细分析 在OpenStack_Swift--Ring组织架构中我们详细分析了Ring的具体工作过程,下面就Ring中增加设备,删除设备,已经重新平衡的实现过程作详细的介绍. 首先看RingBuilder类 def __init__(self, part_power, replicas, min_part_hours): #why 最大 2**32 if part_power > 32: raise ValueError("part_power must be at

struts2请求过程源代码分析

struts2请求过程源代码分析 Struts2是Struts社区和WebWork社区的共同成果.我们甚至能够说,Struts2是WebWork的升级版.他採用的正是WebWork的核心,所以.Struts2并非一个不成熟的产品,相反.构建在WebWork基础之上的Struts2是一个执行稳定.性能优异.设计成熟的WEB框架. 我这里的struts2源代码是从官网下载的一个最新的struts-2.3.15.1-src.zip.将其解压就可以. 里面的文件夹页文件很的多,我们仅仅须要定位到stru

【京东账户】——Mysql/PHP/Ajax爬坑之添加购物车

一.引言 做京东账户项目中的购物车模块,功能之一就是添加购物车.要用到的是Apach环境,Mysql.PHP以及Ajax. 预计效果:用户点击->"加入购物车"  添加成功  已经2件 二.依据功能创建库.表.记录 创建库:jd 创建表:购物车表 添加多条记录 小坑:购物车表注意尽量少的与产品表重复.只要有:哪个用户?买了哪个商品?买了几个?就够了. 小坑:小计,一般用程序计算,不写死.因为时间不同可能会有打折等变化出现,如果写死,则无法正确得出价格. /***购物车表***/