Ejemplo n.º 1
0
    def check_status(self, request, *args, **kwargs):
        """
        @api {post} /orders/check_status/ 我的订单接口
        @apiName OrderCheckStatus
        @apiGroup Order

        @apiDescription **订单状态**</br>

        @apiParam {int} pay_status 支付状态
        @apiParam {int} log_status 物流状态
        """
        queryset = self.filter_queryset(self.get_queryset())
        try:
            if 'pay_status' in request.query_params and request.query_params[
                    'pay_status']:
                queryset = queryset.filter(
                    pay_status=int(request.query_params['pay_status']))

            if 'log_status' in request.query_params and request.query_params[
                    'log_status']:
                queryset = queryset.filter(
                    log_status=int(request.query_params['log_status']))
            print(queryset)

            page = self.paginate_queryset(queryset)
            if page is not None:
                serializer = self.get_serializer(page, many=True)
                return self.get_paginated_response(serializer.data)

            serializer = self.get_serializer(queryset, many=True)
            return JSONResponse(get_data_format(True, None, serializer.data))
        except ValueError:
            return JSONResponse(get_data_format(msg='传入的参数有误'))
Ejemplo n.º 2
0
    def product_detail(self, request):
        """
        @api {get} /fenggou/products/detail/ 商品详情接口
        @apiName FenggouProductsDetail
        @apiGroup FenggouProducts

        @apiDescription **商品详情**</br>

        @apiParam {int} product_id 商品编号
        """
        if 'product_id' not in request.GET or not request.GET['product_id']:
            return JSONResponse(get_data_format(msg='商品编号不能为空'))

        try:
            product_id = request.GET['product_id']
            product = Product.objects.get(id=product_id)
            p_serializer = ProductSerializer(product,
                                             context={'request': request})

            # filter(**kwargs)返回一个包含对象的集合, 它们满足参数中所给的条件
            pic_list = ProductPic.objects.filter(product=product)
            product_list_serializer = ProductPicSerializer(
                pic_list, many=True, context={'request': request})

            data = {
                'product': p_serializer.data,
                'pic_list': product_list_serializer.data
            }
            return JSONResponse(get_data_format(True, None, data))
        except Product.DoesNotExist:
            return JSONResponse(get_data_format(msg='无该商品'))
        except KeyError:
            return JSONResponse(get_data_format(msg='传入的值有误'))
        except ValueError:
            return JSONResponse(get_data_format(msg='传入的商品格式有误'))
Ejemplo n.º 3
0
    def check_address(self, request):
        """
        @api {get} /users/useraddress/check_address/ 查询收货人地址
        @apiName UserShoppingAddress
        @apiGroup User

        @apiDescription **收货人地址**</br>

        @apiParam {int} a_id 地址编号
        """
        try:
            # queryset = self.filter_queryset(self.get_queryset())
            if 'a_id' not in request.GET or not request.GET['a_id']:
                return Response(get_data_format(msg='无信息'))

            a_id = request.GET['a_id']
            address = UsersShoppingAddress.objects.get(id=a_id)
            a_serializer = self.get_serializer(address)
            return Response(a_serializer.data)
        except UsersShoppingAddress.DoesNotExist:
            return Response(get_data_format(msg='找不到地址'))
        except KeyError:
            return Response(get_data_format(msg='传入的值有误'))
        except ValueError:
            return Response(get_data_format(msg='传入的参数类型不正确'))
Ejemplo n.º 4
0
    def login(self, request, *args, **kwargs):

        if 'phone' not in request.data or not request.data['phone']:
            print(request.data)
            return JSONResponse(get_data_format(msg='手机号码不能为空'))

        if 'password' not in request.data or not request.data['password']:
            return JSONResponse(get_data_format(msg='密码不能为空'))

        try:
            phone = request.data['phone']
            password = request.data['password']
            user = authenticate(username=phone, password=password)
        except User.DoesNotExist:
            return JSONResponse(get_data_format(msg='找不到用户'))
        if user:
            login(request, user)
            try:
                user = UsersProfile.objects.get(user=user)
            except UsersProfile.DoesNotExist:
                user = UsersProfile()
                user.user = user
                user.save()
            serializer = UsersProfileSerializer(user,
                                                context={'request': request})
            print(serializer.data)
            return JSONResponse(get_data_format(True, None, serializer.data))
        else:
            return JSONResponse(get_data_format(msg='输入的账号密码不正确'))
Ejemplo n.º 5
0
    def home(self, request):
        """
        @api {get} /fenggou/products/home/ 商城首页
        @apiName FenggouProductsHome
        @apiGroup FenggouProducts

        @apiDescription **疯购首页**</br>

        @apiParam {int} type_id 商品类型编号

        """
        # 判断是否有这个商品类型编号
        if 'type_id' not in request.query_params or not request.query_params[
                'type_id']:
            return JSONResponse(get_data_format(msg='商品类型编号不能为空'))
        try:
            type_id = int(request.query_params['type_id'])
            pt = ProductType.objects.get(id=type_id)
        except ProductType.DoesNotExist:
            #Response != JSONResponse
            return Response(get_data_format(msg='无该编号的商品类型'))
        except ValueError:
            return Response(get_data_format(msg='传入的参数有误'))

        #创建查询集
        queryset = self.filter_queryset(self.get_queryset())
        queryset = queryset.filter(type=pt)

        pss = Product.objects.filter(level=1)
        pss_serializer = ProductSerializer(pss,
                                           many=True,
                                           context={'request': request})

        data = {'pro_scroll_list': pss_serializer.data}
        page = self.paginate_queryset(queryset)
        if page is not None:
            serializer = self.get_serializer(page, many=True)
            data['pro_list'] = serializer.data
            return self.get_paginated_response(data)

        serializer = self.get_serializer(queryset, many=True)
        data['pro_list'] = serializer.data
        return Response(data)
Ejemplo n.º 6
0
    def product_spec(self, request):
        """
        @api {get} /fenggou/products/spec/ 商品属性规格接口
        @apiName FenggouProductsSpec
        @apiGroup FenggouProducts

        @apiDescription **商品属性规格**</br>

        @apiParam {int} pro_id 商品编号
        """
        queryset = self.filter_queryset(self.get_queryset())
        try:
            if 'pro_id' in request.query_params:
                pro_id = int(request.query_params['pro_id'])
                pro = Product.objects.get(id=pro_id)
                queryset = queryset.filter(product=pro)
        except Product.DoesNotExist:
            return Response(get_data_format(msg='找不到该商品'))
        except ValueError:
            return Response(get_data_format(msg='传入的格式有误'))

        serializer = self.get_serializer(queryset, many=True)
        return Response(get_data_format(True, None, serializer.data))
Ejemplo n.º 7
0
    def add(self, request, *args, **kwargs):
        """
        @api {get} /orders/add/ 添加订单接口
        @apiName OrderAdd
        @apiGroup Order

        @apiDescription **订单状态**</br>

        @apiParam {double} pro_price 商品总价
        @apiParam {double} fare_price 运费
        @apiParam {double} should_pay 应付
        @apiParam {int} pss 商品规格
        @apiParam {double} order_pro_price 商品总价
        @apiParam {double} order_fare_price 运费
        @apiParam {double} order_should_pay 应付
        @apiParam {int} ps_id 商品规格编号
        @apiParam {int} ps_num 商品规格数量
        @apiParam {int} ps_price 商品规格单价
        @apiParam {double} total_price 商品规格小计
        """
        if 'pro_price' not in request.data:
            return Response(get_data_format(msg='商品价格合计不能为空'))

        if 'fare_price' not in request.data:
            return Response(get_data_format(msg='运费合计不能为空'))

        if 'should_pay' not in request.data:
            return Response(get_data_format(msg='应付合计不能为空'))

        if 'pss' not in request.data or not request.data['pss']:
            return Response(get_data_format(msg='商品规格不能为空'))

        try:
            order_pro_price = float(request.data['pro_price'])
            order_fare_price = float(request.data['fare_price'])
            order_should_pay = float(request.data['should_pay'])
            order_pss = request.data['pss']
            if order_should_pay != (order_fare_price + order_pro_price):
                return Response(get_data_format(msg='价格计算有误'))

            # 创建订单
            order = Order()
            order.order_id = generate_order_id()
            order.pro_fee = order_pro_price
            order.log_fee = order_fare_price
            order.all_price = order_pro_price + order_fare_price
            order.should_fee = order_should_pay
            order.actual_fee = order_should_pay
            order.pay_way = 0
            order.pay_status = 0
            order.ord_status = 1
            order.log_status = 0
            order.logistics_number = 0

            order.save()

            # 商品小计 = 商品单价 * 商品数量
            ps_price = request.data['ps_price']
            ps_num = request.data['ps_num']
            ps_total = int(ps_price) * int(ps_num)
            print(ps_total)

            # 添加订单商品
            op = OrderProduct()
            op.order = order
            op.op_spec = order_pss
            op.pro_num = ps_num
            op.pro_total_fee = ps_price
            op.should_fee = ps_total
            op.ord_status = order.ord_status
            op.pro_fee = order_fare_price
            op.log_com = '中通'
            op.log_num = 0

            op.save()
            serializer = OrderSerializer(order, context={'request': request})
            return JSONResponse(get_data_format(serializer.data))
        except KeyError:
            return JSONResponse(get_data_format(msg='传入的值不正确'))
        # except ValueError:
        #     return JSONResponse(get_data_format(msg='传入的参数格式不正确'))
        except Order.DoesNotExist:
            return JSONResponse(get_data_format(msg='找不到该订单的数据'))
        except OrderProduct.DoesNotExist:
            return JSONResponse(get_data_format(msg='找不到该订单商品'))