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

1. 购物车功能分析

1.1 购物车流程

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

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

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

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

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

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

1.2 数据库分析

表名:tb_cart

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

1.3 购物车接口分析

1. 购物车添加接口::add 将选择的商品添加到购物车表中

2. 获取用户购物车产品列表信息接口

3. 全选购物车接口

4. 全不选购物车接口

5. 单个选中购物车接口

6. 单个不选购物车接口

7. 删除购物车商品接口: delete

8. 获取用户购物车商品数量接口

1.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);
    }

2. 个人总结

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

3. 个人说明

不积跬步,无以至千里;不积小流,无以成江海。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值