【实战】8-1 购物车模块开发

功能介绍

  • 加入商品
  • 更新商品数
  • 查询商品数
  • 移除商品
  • 单选/取消
  • 全选/取消
  • 购物车列表

学习目标

  • 购物车模块的设计思想
    有哪些注意要点
  • 如何封装一个高复用的购物车核心方法
    各类功能都会使用这个方法
  • 解决浮点型商业运算中丢失精度的问题
    主要是价格计算,不能有任何问题

数据表设计

之前的章节已经有介绍了,但是我开始怀疑这种关系型数据库对每个人购物车的这种存储方式并不是特别有优秀,这个等我了解一下非关系型数据库再说

购物车接口设计

  1. 购物车List列表
    /cart/list.do
    http://localhost:8080/cart/list.do

注意点:
需要先登录
NEED_LOGIN(10,”NEED_LOGIN”)表示需要登录的错误编码
价格的单位是元,保留小数后2位

request
    无参数,需要登录状态
response
    success
    {
        "status":0,
        "data":{
        "cartProductVolist":{
            {
                "id":1,
                "userId":13,
                "productId":1,
                "quantity":1,
                "productName":"iphone7",
                "productSubtitle":"双十一促销""productMainImage":"mainimage.jpg",
                "productPrice":7199.22,
                "productStatus":1,
                "productTotalPrice":7199.22,
                "productStock":86,
                "productChecked":1,
                "limitQuantity":"LIMIT_NUM_SUCCESS"
            },
                {
                    "id":2,
                "userId":13,
                "productId":2,
                "quantity":1,
                "productName":"oppo R8",
                "productSubtitle":"oppo促销进行中""productMainImage":"mainimage.jpg",
                "productPrice":2999.11,
                "productStatus":1,
                "productTotalPrice":2999.11,
                "productStock":86,
                "productChecked":1,
                "limitQuantity":"LIMIT_NUM_SUCCESS"
                }
            },
            "allChecked":true,
            "cartTotalPrice":10198.33
        }
    }

    fail
    {
        "status":10,
        "msg":"用户未登录,请登录"
    }
  1. 购物车添加商品
    /cart/add.do
    http://localhost:8080/cart/add.do?productId=1&count=10

请注意这个字段,超过库存数量会返回这样的标识”limitQuantity”
失败的:LIMIT_NUM_FAIL 成功的:LIMIT_NUM_SUCCESS
(这里的失败成功标识就不要太纠结了,我也不太喜欢这样,感觉所有接口没有统一的命名方法,公司里面会有更加好的规范吧)

request
    productId,
    count
response
    success
    {
        "status":0,
        "data":{
        "cartProductVolist":{
            {
                "id":1,
                "userId":13,
                "productId":1,
                "quantity":1,
                "productName":"iphone7",
                "productSubtitle":"双十一促销""productMainImage":"mainimage.jpg",
                "productPrice":7199.22,
                "productStatus":1,
                "productTotalPrice":7199.22,
                "productStock":86,
                "productChecked":1,
                "limitQuantity":"LIMIT_NUM_SUCCESS"
            },
                {
                    "id":2,
                "userId":13,
                "productId":2,
                "quantity":1,
                "productName":"oppo R8",
                "productSubtitle":"oppo促销进行中""productMainImage":"mainimage.jpg",
                "productPrice":2999.11,
                "productStatus":1,
                "productTotalPrice":2999.11,
                "productStock":86,
                "productChecked":1,
                "limitQuantity":"LIMIT_NUM_SUCCESS"
                }
            },
            "allChecked":true,
            "cartTotalPrice":10198.33
        }
    }

    fail
    {
        "status":10,
        "msg":"用户未登录,请登录"
    }
  1. 更新购物车某个产品的数量
    /cart/update.do
    http://localhost:8080/cart/update.do?product=1&count=2

相应内容同接口2

request
    productId,
    count
response
    success
    {
        "status":0,
        "data":{
        "cartProductVolist":{
            {
                "id":1,
                "userId":13,
                "productId":1,
                "quantity":1,
                "productName":"iphone7",
                "productSubtitle":"双十一促销""productMainImage":"mainimage.jpg",
                "productPrice":7199.22,
                "productStatus":1,
                "productTotalPrice":7199.22,
                "productStock":86,
                "productChecked":1,
                "limitQuantity":"LIMIT_NUM_SUCCESS"
            },
                {
                    "id":2,
                "userId":13,
                "productId":2,
                "quantity":1,
                "productName":"oppo R8",
                "productSubtitle":"oppo促销进行中""productMainImage":"mainimage.jpg",
                "productPrice":2999.11,
                "productStatus":1,
                "productTotalPrice":2999.11,
                "productStock":86,
                "productChecked":1,
                "limitQuantity":"LIMIT_NUM_SUCCESS"
                }
            },
            "allChecked":true,
            "cartTotalPrice":10198.33
        }
    }

    fail
    {
        "status":10,
        "msg":"用户未登录,请登录"
    }
  1. 移除购物车某个产品
    /cart/delete_product.do
    http://localhost:8080/cart/delete_product.do?productIds=1,3
request
    productIds
response
    success
    {
        "status":0,
        "data":{
        "cartProductVolist":{
                {
                    "id":2,
                "userId":13,
                "productId":2,
                "quantity":1,
                "productName":"oppo R8",
                "productSubtitle":"oppo促销进行中""productMainImage":"mainimage.jpg",
                "productPrice":2999.11,
                "productStatus":1,
                "productTotalPrice":2999.11,
                "productStock":86,
                "productChecked":1,
                "limitQuantity":"LIMIT_NUM_SUCCESS"
                }
            },
            "allChecked":true,
            "cartTotalPrice":2999.11
        }
    }

    fail
    {
        "status":10,
        "msg":"用户未登录,请登录"
    }
  1. 购物车选中某个商品
    /cart/select.do
    http://localhost:8080/cart/select.do?productId=1

选中或者取消选中会引起总价的变化,通过调用高复用核心方法来重新给出VoList

request
    productId
response
    success
    {
        "status":0,
        "data":{
        "cartProductVolist":{
                {
                    "id":2,
                "userId":13,
                "productId":2,
                "quantity":1,
                "productName":"oppo R8",
                "productSubtitle":"oppo促销进行中""productMainImage":"mainimage.jpg",
                "productPrice":2999.11,
                "productStatus":1,
                "productTotalPrice":2999.11,
                "productStock":86,
                "productChecked":1,
                "limitQuantity":"LIMIT_NUM_SUCCESS"
                }
            },
            "allChecked":true,
            "cartTotalPrice":2999.11
        }
    }

    fail
    {
        "status":10,
        "msg":"用户未登录,请登录"
    }
  1. 购物车取消选中某个商品
    /cart/un_select.do
    http://localhost:8080/cart/un_select.do?productId=2

注意返回值中的cartTotalPrice,如果反选之后总价的变化

request
    productId
response
    success
    {
        "status":0,
        "data":{
        "cartProductVolist":{
                {
                    "id":2,
                "userId":13,
                "productId":2,
                "quantity":1,
                "productName":"oppo R8",
                "productSubtitle":"oppo促销进行中""productMainImage":"mainimage.jpg",
                "productPrice":2999.11,
                "productStatus":1,
                "productTotalPrice":2999.11,
                "productStock":86,
                "productChecked":1,
                "limitQuantity":"LIMIT_NUM_SUCCESS"
                }
            },
            "allChecked":true,
            "cartTotalPrice":2999.11
        }
    }

    fail
    {
        "status":10,
        "msg":"用户未登录,请登录"
    }
  1. 查询购物车中里的产品数量
    /cart/get_cart_product_count.do
    http://localhost:8080/cart/get_cart_product_count.do
    未登录返回0
requestresponse
    success
    {
        "status":0,
        "data":0
    }

    fail
    {
        "status":10,
        "msg":"用户未登录,请登录"
    }
  1. 购物车全选
    /cart/select_all.do
    http://localhost:8080/cart/select_all.do
    注意返回值中的cartTotalPrice的变化
requestresponse
    success
    {
        "status":0,
        "data":{
        "cartProductVolist":{
                {
                    "id":2,
                "userId":13,
                "productId":2,
                "quantity":1,
                "productName":"oppo R8",
                "productSubtitle":"oppo促销进行中""productMainImage":"mainimage.jpg",
                "productPrice":2999.11,
                "productStatus":1,
                "productTotalPrice":2999.11,
                "productStock":86,
                "productChecked":1,
                "limitQuantity":"LIMIT_NUM_SUCCESS"
                }
            },
            "allChecked":true,
            "cartTotalPrice":2999.11
        }
    }

    fail
    {
        "status":10,
        "msg":"用户未登录,请登录"
    }
  1. 购物车取消全选
    /cart/un_select_all.do
    http://localhost:8080/cart/un_select_all.do
    注意返回值中的cartTotalPrice的变化
requestresponse
    success
    {
        "status":0,
        "data":{
        "cartProductVolist":{
                {
                    "id":2,
                "userId":13,
                "productId":2,
                "quantity":1,
                "productName":"oppo R8",
                "productSubtitle":"oppo促销进行中""productMainImage":"mainimage.jpg",
                "productPrice":2999.11,
                "productStatus":1,
                "productTotalPrice":2999.11,
                "productStock":86,
                "productChecked":1,
                "limitQuantity":"LIMIT_NUM_SUCCESS"
                }
            },
            "allChecked":false,
            "cartTotalPrice":2999.11
        }
    }

    fail
    {
        "status":10,
        "msg":"用户未登录,请登录"
    }

小结

接口定义完后就可以按照接口来开发了···一样的套路

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值