zoukankan      html  css  js  c++  java
  • 对订单结算理解

    订单结算页面需要购物车勾选的商品

    1. 后端接口设计

    请求方式 : GET /orders/settlement/

    请求参数: 无

    返回数据: JSON

    参数类型是否必须说明
    freight decimal 运费
    skus sku[] 结算的商品列表
    id int 商品id
    name str 商品名称
    default_image_url str 商品默认图片
    price decimal 商品单价
    count int 商品数量

    在orders/serialziers.py中创建序列化器 用于返回商品信息 

    class CartSKUSerializer(serializers.ModelSerializer):
        """
        购物车商品数据序列化器
        """
        count = serializers.IntegerField(label='数量')
    
        class Meta:
            model = SKU
            fields = ('id', 'name', 'default_image_url', 'price', 'count')
    
    
    class OrderSettlementSerializer(serializers.Serializer):
        """
        订单结算数据序列化器
        """
        freight = serializers.DecimalField(label='运费', max_digits=10, decimal_places=2)
        skus = CartSKUSerializer(many=True)

    在orders/views.py中编写视图 执行流程

    设置登录用会权限

    定义get方法

    获取用户

    查询用户所有勾选商品的sku_id

    从SKU数据表中查出对象

    为每个对象添加数量属性

    计算运费

    返回

    class OrderSettlementView(APIView):
        """
        订单结算
        """
        permission_classes = [IsAuthenticated]
    
        def get(self, request):
            """
            获取
            """
            user = request.user
    
            # 从购物车中获取用户勾选要结算的商品信息
            redis_conn = get_redis_connection('cart')
            redis_cart = redis_conn.hgetall('cart_%s' % user.id)
            cart_selected = redis_conn.smembers('cart_selected_%s' % user.id)
    
            cart = {}
            for sku_id in cart_selected:
                cart[int(sku_id)] = int(redis_cart[sku_id])
    
            # 查询商品信息
            skus = SKU.objects.filter(id__in=cart.keys())
            for sku in skus:
                sku.count = cart[sku.id]
    
            # 运费
            freight = Decimal('10.00')
    
            serializer = OrderSettlementSerializer({'freight': freight, 'skus': skus})
            return Response(serializer.data)
  • 相关阅读:
    js数组条件筛选——map()
    (转)适用微信小程序的table表格(带隔行变色)
    nodejs学习笔记<七> 路由
    酷我音乐(在线试听)下载方法
    nodejs学习笔记<二> 使用node创建基础服务器
    JS BOM 窗口中的使用
    JS DOM
    JS 寄生 继承
    JS字面量创建方式的优缺点
    JS 构造函数
  • 原文地址:https://www.cnblogs.com/whigym/p/10066828.html
Copyright © 2011-2022 走看看