商城——购物车

本文介绍了使用Java Servlet实现购物车的增删查改、全选与单选操作的详细思路,包括API设计,涉及用户登录验证、商品信息获取、库存判断及购物车商品状态管理。
摘要由CSDN通过智能技术生成

购物车的增删查改、全选与单选

API设计

功能 添加购物车
请求方式 POST
请求地址 /goods/user/cart/
POST参数 productID: this.productID
headers参数 token:用户jwt
成功 1.添加购物车成功
{
    “code”:200,
    “msg”:“新加入购物车成功”,
    “shoppingCartData”:{
        id: “”, // 购物车id, 如cart_1
        productID: “”, // 商品id
        productName: “”, // 商品名称
        productImg: “”, // 商品图片
        price: “”, // 商品价格
        num: “”, // 购物车中该商品数量
        maxNum: “”, // 商品限购数量,即库存
        check: false // 是否勾选
         }
}
2.加购
{“code”:201, “msg”:“该商品已经在购物车,数量+1”}
失败 {”code“:202, “msg”:“加购达到限购数量!”}
{’code‘:203, ‘msg’:‘库存不足,无法购买!’}
{“code”:204, “msg”:’其他异常‘}

思路分析:

  • 判断用户是否登录
  • 获取商品信息
  • 判断是否有库存
  • 判断购物车是否存在该商品
    • a) 新增商品到购物车
    • b)加购
      • I)加购成功,数量+1
      • II):"加购达到限购数量
class UserCart(APIView):
    def post(self,request):
        # 1.判断用户是否登录
        try:
            user_info=request.user_info
            user = User.objects.get(id=user_info.get("id"))
        except Exception as e:
            print(e)
            return Response({
   'msg': '用户不存在或未登录', 'code': 204})
        # 2.获取商品id
        good_id=request.data.get('productID')
        good_data=Goods.objects.get(id=good_id)
        # 拼接购物车 键
        cart_key=f'cart_{
     user.username}'
        # 添加购物车的商品自动选中
        cart_selected_key=f'cart_selected_{
     user.username}'
        # 3.判断库存
        if good_data.stock<=0:
            return Response({
   'msg': '库存不足', 'code': 203})
        # 4.判断购物车是否存在此商品
        r=redis.Redis(host='localhost',port=6379,db=0)
        # 获取商品在购物车中的数量
        num=r.hget(cart_key,good_id)
        if num: #购物车已存在该商品
            num=int(num.decode())+1
            if num>good_data.stock:
                r.close()
                return Response({
   'msg': '加购达到限购数量', 'code': 202})
            r.hset(cart_key,good_id,str(num)) #购物车数量+1
            r.sadd(cart_selected_key,good_id) #选中商品
            return Response({
   'msg': '此商品已存在,数量+1', 'code&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值