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

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

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

我的以为相比较而言呢,京东的更人性化一点。因此在一下介绍呢就会以京东的模式做为介绍,json

即分为  登陆状态和 未登陆状态 下添加购物车两种方式。浏览器

未登陆状态:cookie

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

  2.从request获取cookies,this

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

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

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

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

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

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

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

登陆状态:

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

     二、从request中获取cookies

       三、遍历cookies查找购物车

       4 、若是没有购物车 就建立购物车

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

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

       七、清空cookies

      ( 建立cookie设置值为null.

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

       当即失效Cookie.setMaxAge(0)

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

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

)

    八、 转发(重定向)

 

 

在这里用到了redis 因此注入jedis

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

跳转到结算的页面

 未登陆;

  一、从request获取cookies

  二、遍历cookie 找购物车

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

  四、将购物车中装满

  五、回显购物车(model)

  六、跳转到购物车页面。

登陆:

  一、从request获取cookie

  二、遍历cookie 找购物车

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

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

  五、从redis中取出购物车

  六、将购物车中装满

  七、回显购物车(model)

  八、跳转到购物车页面

 

出现的错误及修改

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

  解决:

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

    代码实现;

    重写购物项对象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元

     商品总数:

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

  去结算页面(点击去结算)(再去结算的过程当中判断是否登陆,若是登陆则跳转到结算页面(即支付页面),若是未登陆则跳转到登陆页面进行登陆,登陆以后再跳转到结算页面)

  一、判断用户是否登陆:(SpringMvc拦截器)

    (实现HandlerInterceptor接口)编写prehandler

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

    

  登陆:继续判断

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

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

    不为空:继续判断

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

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

相关文章
相关标签/搜索