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

文章目录

  • 1购物车功能演示
  • 2购物车功能模块分析
    • 2.1购物车流程
    • 2.2 数据库表分析
    • 2.3购物车接口分析
    • 2.4关键代码分析
  • 3个人总结
  • 4个人说明
  • 5[我的个人网站](http://www.liph.fun)

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

1购物车功能演示


在线体验地址:体验地址

2购物车功能模块分析

2.1购物车流程

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

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

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

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

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

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

2.2 数据库表分析

JAVA项目实战开发电商项目案例(八)购物车功能开发_第1张图片
表名: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我的个人网站

持续更新分享此项目电商在线演示地址为:演示地址

你可能感兴趣的:(工作总结,项目架构分析,项目实战开发,SSM增删改查,java开发购物车功能,java商城购物车,spring,boot微服务)