zoukankan      html  css  js  c++  java
  • 对添加购物车流程过程的分析浅解

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

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

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

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

    未登录状态:

    首先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,库存量小购物数量(无货)//设置无货标记

  • 相关阅读:
    js学习总结----js中的三个判断
    js学习总结----js中的变量和数据类型
    js学习总结---js组成和命名规范
    ES6-----学习系列十八(模块化)
    ES6-----学习系列十七(Decorator)
    ES6-----学习系列十六(Generator)
    迭代器和for-of循环 顺便带一下Es5中的.map遍历
    Pc端css初始化
    css3常用属性
    css布局一屏幕的自适应高度
  • 原文地址:https://www.cnblogs.com/wzmd/p/8893126.html
Copyright © 2011-2022 走看看