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='传入的参数有误'))
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='传入的商品格式有误'))
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='传入的参数类型不正确'))
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='输入的账号密码不正确'))
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)
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))
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='找不到该订单商品'))