wushaodong 3 lat temu
rodzic
commit
0e0920f958
3 zmienionych plików z 16 dodań i 10 usunięć
  1. 2 2
      apps/order/models.py
  2. 1 1
      apps/order/serializers.py
  3. 13 7
      apps/order/views.py

+ 2 - 2
apps/order/models.py

@@ -133,9 +133,8 @@ class Order(models.Model):
 
     no = models.CharField(max_length=50, verbose_name=u'订单号', blank=True)
     pay = models.ForeignKey(Pay, verbose_name='支付信息', on_delete=models.PROTECT, null=True, editable=False)
-    coupon = models.ForeignKey(Coupon, verbose_name='优惠券', on_delete=models.PROTECT, null=True)
+    coupon = models.ForeignKey(Coupon, verbose_name='优惠券', editable=False, on_delete=models.PROTECT, null=True)
 
-    payment = models.PositiveSmallIntegerField(choices=PAYMENT_CHOICES, verbose_name=u'付款方式', default=ONLINE_PAY)
     status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u"订单状态", default=WAIT_PAY)
     notes = models.CharField(max_length=500, verbose_name=u"备注", null=True)
     create_user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='order_create_user', verbose_name=u"添加人",
@@ -144,6 +143,7 @@ class Order(models.Model):
     student = models.ForeignKey(Student, verbose_name=u'学生', related_name='customer_order_student',
                                 on_delete=models.PROTECT, null=True)
 
+    count = models.BigIntegerField(verbose_name=u'数量', default=0)
     total_amount = models.BigIntegerField(verbose_name=u'总金额', editable=False, default=0)
     coupon_deduction = models.BigIntegerField(verbose_name=u'优惠券抵扣', editable=False, default=0)
     actual_amount = models.BigIntegerField(verbose_name=u'实付金额', editable=False, default=0)

+ 1 - 1
apps/order/serializers.py

@@ -44,7 +44,7 @@ class ShoppingCartSerializer(serializers.ModelSerializer):
     images = serializers.SerializerMethodField()
 
     def get_price(self, obj):
-        return Formater.formatAmountShow(obj.commodity.price * obj.commodity.discount)
+        return Formater.formatPriceShow(obj.commodity.price * obj.commodity.discount/100)
 
     def get_images(self, obj):
         if obj.commodity.main_image:

+ 13 - 7
apps/order/views.py

@@ -67,24 +67,28 @@ class OrderViewSet(CustomModelViewSet):
         commodity_id = request.POST.get('commodity')
         openid = request.POST.get('openid')
         appid = request.POST.get('appid')
-        balance = request.POST.get('balance')
+        coupon = request.POST.get('coupon')
+        count = request.POST.get('count')
 
         try:
             # if request.user.id != 17 and  request.user.id != 18:
             #     raise CustomError(u'系统升级中,请稍后再试!')
-            commodity = Commodity.objects.filter(id=commodity_id, status=settings.ONLINE).first()
+            count = int(count)
+            commodity = Commodity.objects.filter(id=commodity_id, status=settings.ONLINE, stock__gte=count).first()
             if not commodity:
-                raise CustomError(u'当前商品信息有误,请退出重试!')
+                raise CustomError(u'当前商品库存不足!')
 
             with transaction.atomic():
                 serializer = self.get_serializer(data=request.data)
                 if serializer.is_valid(raise_exception=True):
                     instance = serializer.save()
 
-                    instance.name = commodity.name
-                    instance.price = commodity.price
-                    instance.total_amount = commodity.amount
-                    actual_amount = commodity.amount
+                    instance.total_amount = count * commodity.price * commodity.discount/100
+                    actual_amount = instance.total_amount
+                    if coupon:
+                        coupon = Coupon.objects.filter(id=coupon).first()
+                        actual_amount -= coupon.amount
+                        instance.coupon = coupon
 
                     data = ''
                     if actual_amount:
@@ -95,6 +99,8 @@ class OrderViewSet(CustomModelViewSet):
                                                             Formater.formatPriceShow(actual_amount))
                         instance.pay = pay
                     instance.save()
+                    commodity.stock -= count
+                    commodity.save()
                     BizLog.objects.addnew(self.request.user, BizLog.INSERT,
                                           u'添加订单[%s],id=%d' % (instance.no, instance.id), request.data)
                     return response_ok(data)