美文网首页
JAVA项目实战开发电商项目案例(八)购物车功能开发

JAVA项目实战开发电商项目案例(八)购物车功能开发

作者: LRyab博客 | 来源:发表于2019-12-30 22:17 被阅读0次

    java商城实践购物车功能是最常见的功能也是相对来说比较复杂,在这里你可能用到session,cookie以及redis技术,还要区分用户未登录添加商品到购物车,以及用户登录了添加购物车的功能,未登录和登录用户购物车合并,频繁的操作不适合存储在数据库中。用户选中购物车商品以及取消移除购物车商品。

    1购物车功能演示

    在这里插入图片描述

    2购物车功能模块分析

    2.1购物车流程

    • 用户未登录点击加入购物车功能按钮,则提示用户登录,让用户强行登录,
      根据用户ID,将货品ID以及货品数量和货品价格添加到购物车数据库表中。

    • 用户选中购物车商品,以及取消选中购物车商品,是根据购物车每一条数据中的是否被选中字段控制。

    • 用户移除购物车商品,根据购物车商品ID,进行删除购物车数据

    • 用户全选购物车商品,则更新购物车数据的选中字段

    • 用户取消选中购物车商品,则更新购物车选中字段为取消

    • 购物车中用户总价需要后台提供一个实时计算的接口,根据用户选中的记录,判断用户选择商品的数量和单价,从而计算出来总价

    2.2 数据库表分析

    在这里插入图片描述

    表名:tb_cart

    字段 中文名
    user_id 用户ID
    product_id 商品ID
    quantity 商品数量
    checked 是否选中
    create_time 创建时间
    update_time 更新时间

    2.3购物车接口分析

    • 购物车添加接口::add 将选择的商品添加到购物车表中
    • 获取用户购物车产品列表信息接口
    • 全选购物车接口
    • 全不选购物车接口
    • 单个选中购物车接口
    • 单个不选购物车接口
    • 删除购物车商品接口: delete
    • 获取用户购物车商品数量接口

    2.4关键代码分析

    @RestController
    @RequestMapping("api")
    @CrossOrigin(allowCredentials="true")
    public class CartController {
    
        @Autowired
         private CartService cartService;
    
        /*****
         *用户将商品加入购物车
         */
        @RequestMapping("/cart/add")
        public CommonResult addCart(TbCart tbCart, HttpServletRequest request){
           HttpSession session= request.getSession();
            System.out.println("seesionID"+session.getId());
            TbMember tbMember= (TbMember) session.getAttribute(Constant.CURRENT_LOGIN_USER);
             String w= (String) session.getAttribute("a");
             System.out.println("w"+w);
            if(tbMember==null){
                //未登录返回0  啊
                return   CommonResult.failed(ResultCode.UNAUTHORIZED);
            }
            /***
             * 暂时不写判断用户是否登录默认 21
             */
             tbCart.setUserId(tbMember.getId().intValue());
            int result= cartService.addCart(tbCart);
            if(result>0){
                return CommonResult.success(result);
            }
            return  CommonResult.failed();
      }
        @RequestMapping("/cart/list")
        public CommonResult<CartVo> addCart(HttpSession session){
            TbMember tbMember= (TbMember) session.getAttribute(Constant.CURRENT_LOGIN_USER);
            if(tbMember==null){
                //未登录返回0  啊
                return   CommonResult.failed(ResultCode.UNAUTHORIZED);
            }
            /***
             * 暂时不写判断用户是否登录默认 21
             */
            CartVo cartvo= cartService.queryUserCartlist(tbMember.getId().intValue());
            return  CommonResult.success(cartvo);
        }
    
        /****
         * 按照商品和登录用户更新
         */
        @RequestMapping("/cart/productchecked")
        public CommonResult<CartVo> productchecked(Integer productId,HttpSession session){
            TbMember tbMember= (TbMember) session.getAttribute(Constant.CURRENT_LOGIN_USER);
            if(tbMember==null){
                //未登录返回0  啊
                return   CommonResult.failed(ResultCode.UNAUTHORIZED);
            }
    
            CartVo cartvo= cartService.productOrchecked(Constant.CartCHECKED,productId,tbMember.getId().intValue());
            //由于前台重新渲染
            return CommonResult.success(cartvo);
        }
    
        @RequestMapping("/cart/productunchecked")
        public CommonResult<CartVo> productunchecked(Integer productId,HttpSession session){
            TbMember tbMember= (TbMember) session.getAttribute(Constant.CURRENT_LOGIN_USER);
            if(tbMember==null){
                //未登录返回0  啊
                return   CommonResult.failed(ResultCode.UNAUTHORIZED);
            }
            CartVo cartvo= cartService.productOrchecked(Constant.CartUNCHECKED,productId,tbMember.getId().intValue());
            //由于前台重新渲染
            return CommonResult.success(cartvo);
        }
    
        @RequestMapping("/cart/checkedall")
        public CommonResult<CartVo> checkedall(HttpSession session){
            TbMember tbMember= (TbMember) session.getAttribute(Constant.CURRENT_LOGIN_USER);
            if(tbMember==null){
                //未登录返回0  啊
                return   CommonResult.failed(ResultCode.UNAUTHORIZED);
            }
            CartVo cartvo= cartService.productOrchecked(Constant.CartCHECKED,null,tbMember.getId().intValue());
            //由于前台重新渲染
            return CommonResult.success(cartvo);
        }
    
        @RequestMapping("/cart/uncheckedall")
        public CommonResult<CartVo> uncheckedall(HttpSession session){
            TbMember tbMember= (TbMember) session.getAttribute(Constant.CURRENT_LOGIN_USER);
            if(tbMember==null){
                //未登录返回0  啊
                return   CommonResult.failed(ResultCode.UNAUTHORIZED);
            }
            CartVo cartvo= cartService.productOrchecked(Constant.CartUNCHECKED,null,tbMember.getId().intValue());
            //由于前台重新渲染
            return CommonResult.success(cartvo);
        }
    
        /**
         * 删除商品
         * @return
         */
        @RequestMapping("/cart/deleteproduct")
        /***
         * 为了前后端接收到一个数组,全改了
         */
        public CommonResult<CartVo> deleteProduct(@RequestBody CartProductReq req,HttpSession session){
            TbMember tbMember= (TbMember) session.getAttribute(Constant.CURRENT_LOGIN_USER);
            if(tbMember==null){
                //未登录返回0  啊
                return   CommonResult.failed(ResultCode.UNAUTHORIZED);
            }
            CartVo cartvo= cartService.deleteProduct(req,tbMember.getId().intValue());
            //由于前台重新渲染
            return CommonResult.success(cartvo);
        }
    
        /***
         *
         * 根据ID 更新表中的数量
         */
    
        @RequestMapping("/cart/updateproductcount")
        public CommonResult<CartVo> updateproductcount(Integer productId,Integer count,HttpSession session){
            TbMember tbMember= (TbMember) session.getAttribute(Constant.CURRENT_LOGIN_USER);
            if(tbMember==null){
                //未登录返回0  啊
                return   CommonResult.failed(ResultCode.UNAUTHORIZED);
            }
            CartVo cartvo= cartService.updateproductcount(productId,count,tbMember.getId().intValue());
            //由于前台重新渲染
            return CommonResult.success(cartvo);
        }
    
        /*****
         * 获取购物车数量
         */
        @RequestMapping("/cart/getcartcount")
        public CommonResult getcartcount(HttpSession session){
            TbMember tbMember= (TbMember) session.getAttribute(Constant.CURRENT_LOGIN_USER);
            if(tbMember==null){
              //未登录返回0  啊
               return   CommonResult.success(0);
            }
           Integer count= cartService.getcartcount(tbMember.getId().intValue());
            //由于前台重新渲染
            return CommonResult.success(count);
        }
    
    

    3个人总结

    在这次商城实战项目开发中,我学到了,前后端分离项目开发的流程,以及如何使用ajax调用后台java spring boot开发的接口,掌握了数据如何传递以及交互,
    掌握了spring boot如何开发项目
    掌握了后台运营管理系统如何开发
    掌握了商城案例程序的开发业务流程
    掌握了支付宝支付,如果对接支付宝支付
    掌握了前端跨域问题,以及如何解决跨域
    掌握了,刚开始连linux什么都不会,学到了如何购买阿里云服务器以及如何搭建自己的个人博客
    学习了如何使用linux安装jdk、mysql、tomcat。
    以及学会了使用nginx进行反向代理映射二级域名访问二级域名网站
    学会了利用linux监控命令监控服务器异常情况,分析tomcat 宕机原因。
    学会了如何监控nginx、tomcat的运行情况,linux定时发现tomcat软件宕机则自启动服务。等等

    4个人说明

    经验是由一点一点积累的,思维也是由一天一天训练出来的。

    5[我的个人网站]

    持续更新分享此项目

    相关文章

      网友评论

          本文标题:JAVA项目实战开发电商项目案例(八)购物车功能开发

          本文链接:https://www.haomeiwen.com/subject/qervoctx.html