jiaweiqi 3 年之前
父节点
当前提交
0b91f50e45

+ 86 - 3
apps/activity/models.py

@@ -9,7 +9,6 @@ from django.conf import settings
 from apps.exceptions import CustomError
 from apps.exceptions import CustomError
 from apps.account.models import Branch
 from apps.account.models import Branch
 from apps.customer.models import Customer
 from apps.customer.models import Customer
-from apps.pay.models import Pay
 from util.wechatpay import WechatPay, WeChatResponse
 from util.wechatpay import WechatPay, WeChatResponse
 
 
 
 
@@ -68,6 +67,92 @@ class Activity(models.Model):
         return instance
         return instance
 
 
 
 
+class Pay(models.Model):
+
+    WAIT = 1
+    CONFIRM = 2
+    CLOSED = 3
+    STATUS_CHOICES = (
+        (WAIT, u'待付款'),
+        (CONFIRM, u'已付款'),
+        (CLOSED, u'已关闭'),
+    )
+
+    branch = models.ForeignKey(Branch, verbose_name=u"门店", on_delete=models.PROTECT, editable=False)
+    no = models.CharField(max_length=64, verbose_name=u"单号")
+    create_time = models.DateTimeField(verbose_name=u"创建时间", default=timezone.now)
+    customer = models.ForeignKey(Customer, verbose_name=u'客户', on_delete=models.PROTECT)
+    status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u"支付状态")
+    precreate_amount = models.BigIntegerField(verbose_name=u"预支付金额")
+    amount = models.BigIntegerField(verbose_name=u"实际支付金额", null=True)
+
+    class Meta:
+        db_table = "pay"
+        verbose_name = u"支付"
+        ordering = ('-id',)
+        index_together = (
+            'create_time',
+            'status',
+        )
+        unique_together = (
+            'no',
+        )
+        default_permissions = ()
+
+    def payClosed(self):
+        if self.status != Pay.WAIT:
+            return
+        self.status = Pay.CLOSED
+        self.save()
+
+    def payConfirm(self, amount):
+        if self.status != Pay.WAIT:
+            return
+
+        self.status = Pay.CONFIRM
+        self.amount = amount
+        self.save()
+        order = Order.objects.filter(pay=self).first()
+        if order:
+            order.status = Order.FINISH
+            order.amount = self.amount
+            order.save()
+
+    @staticmethod
+    def getByNo(no):
+        instance = Pay.objects.filter(no=no).first()
+        if not instance:
+            raise CustomError(u'未找到相应的支付单!')
+        return instance
+
+    @staticmethod
+    def wechatPay(branch, customer, amount, openid):
+        instance = Pay._addnew(branch, customer, amount)
+        return instance, instance._wechatUnifiedOrder(openid)
+
+    @staticmethod
+    def _addnew(branch, customer, amount):
+        if amount <= 0:
+            raise CustomError(u'无效的付款金额!')
+
+        no = timezone.now().strftime('%y%m%d%H%M%S') + str(customer.id)
+        instance = Pay.objects.create(
+            branch=branch,
+            no=no,
+            customer=customer,
+            type=type,
+            status=Pay.WAIT,
+            precreate_amount=amount
+        )
+        return instance
+
+    def _wechatUnifiedOrder(self, openid):
+        wechatpay = WechatPay(settings.APPID, settings.AGENT_NUM, settings.AGENT_KEY)
+        wechatpay.unifiedOrder(self.no, self.precreate_amount, openid)
+        data = wechatpay.getAppString()
+        return data
+
+
 class Order(models.Model):
 class Order(models.Model):
     DEFAULT = 0
     DEFAULT = 0
     FINISH = 1
     FINISH = 1
@@ -116,8 +201,6 @@ class Order(models.Model):
         return data
         return data
 
 
 
 
-
-
 class Coupon(models.Model):
 class Coupon(models.Model):
     FIXED_DATE = 0
     FIXED_DATE = 0
     RECEIVE_TIMING = 1
     RECEIVE_TIMING = 1

+ 1 - 1
apps/api/views.py

@@ -12,7 +12,7 @@ from util.exceptions import CustomError
 from util.wechatpay import WechatPayNotify
 from util.wechatpay import WechatPayNotify
 from util.wx.wechat import WeChat
 from util.wx.wechat import WeChat
 
 
-from apps.pay.models import Pay
+from apps.activity.models import Pay
 from apps.foundation.models import BizLog
 from apps.foundation.models import BizLog
 
 
 
 

+ 1 - 2
apps/customer/order/urls.py

@@ -6,10 +6,9 @@ from rest_framework.routers import SimpleRouter
 from .views import *
 from .views import *
 
 
 urlpatterns = [
 urlpatterns = [
-    url(r'', OrderViewSet.as_view()),
     url(r'^activity_order/$', ActivityOrderListView.as_view()),
     url(r'^activity_order/$', ActivityOrderListView.as_view()),
     url(r'^list/$', OrderListView.as_view()),
     url(r'^list/$', OrderListView.as_view()),
 ]
 ]
 router = SimpleRouter()
 router = SimpleRouter()
-# router.register(r'order', OrderViewSet)
+router.register(r'', OrderViewSet)
 urlpatterns += router.urls
 urlpatterns += router.urls

+ 2 - 1
apps/customer/order/views.py

@@ -18,12 +18,13 @@ from util.exceptions import CustomError
 from apps.foundation.models import BizLog
 from apps.foundation.models import BizLog
 from apps.customer.order.serializers import OrderSerializer, MemberOrderSerializer, ActivityOrderSerializer
 from apps.customer.order.serializers import OrderSerializer, MemberOrderSerializer, ActivityOrderSerializer
 from apps.activity.models import Activity, Order
 from apps.activity.models import Activity, Order
-from apps.pay.models import Pay
+from apps.activity.models import Pay
 from apps.activity.filters import OrderFilter
 from apps.activity.filters import OrderFilter
 
 
 
 
 class OrderViewSet(ModelViewSet):
 class OrderViewSet(ModelViewSet):
     permission_classes = [IsCustomerUser, ]
     permission_classes = [IsCustomerUser, ]
+    queryset = Order.objects.filter()
     serializer_class = OrderSerializer
     serializer_class = OrderSerializer
 
 
     def create(self, request, *args, **kwargs):
     def create(self, request, *args, **kwargs):

+ 0 - 0
apps/pay/__init__.py


+ 0 - 11
apps/pay/filters.py

@@ -1,11 +0,0 @@
-# coding=utf-8
-
-import django_filters
-
-from .models import Pay
-
-class PayFilter(django_filters.FilterSet):
-
-    class Meta:
-        model = Pay
-        fields = '__all__'

+ 0 - 0
apps/pay/migrations/__init__.py


+ 0 - 107
apps/pay/models.py

@@ -1,107 +0,0 @@
-#coding=utf-8
-
-from django.db import models
-from django.utils import timezone
-from django.conf import settings
-
-
-from apps.package_order.models import PackageOrder
-from apps.vehicle_order.models import VehicleOrder
-from apps.vehicle_model.models import Model
-from apps.package.models import Package
-from apps.commission_order.models import CommissionOrder, CommissionOrderPackage
-from apps.tenant.models import Tenant
-from apps.WechatApplet.models import WechatApplet
-from apps.customer.models import CustomerWechat
-from apps.customer.models import Customer
-from apps.activity.models import Order
-from apps.account.models import Branch
-
-from util.exceptions import CustomError
-from util.wechatpay import WechatPay
-
-
-class Pay(models.Model):
-
-    WAIT = 1
-    CONFIRM = 2
-    CLOSED = 3
-    STATUS_CHOICES = (
-        (WAIT, u'待付款'),
-        (CONFIRM, u'已付款'),
-        (CLOSED, u'已关闭'),
-    )
-
-    branch = models.ForeignKey(Branch, verbose_name=u"门店", on_delete=models.PROTECT, editable=False)
-    no = models.CharField(max_length=64, verbose_name=u"单号")
-    create_time = models.DateTimeField(verbose_name=u"创建时间", default=timezone.now)
-    customer = models.ForeignKey(Customer, verbose_name=u'客户', on_delete=models.PROTECT)
-    status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u"支付状态")
-    precreate_amount = models.BigIntegerField(verbose_name=u"预支付金额")
-    amount = models.BigIntegerField(verbose_name=u"实际支付金额", null=True)
-
-    class Meta:
-        db_table = "pay"
-        verbose_name = u"支付"
-        ordering = ('-id',)
-        index_together = (
-            'create_time',
-            'status',
-        )
-        unique_together = (
-            'no',
-        )
-        default_permissions = ()
-
-    def payClosed(self):
-        if self.status != Pay.WAIT:
-            return
-        self.status = Pay.CLOSED
-        self.save()
-
-    def payConfirm(self, amount):
-        if self.status != Pay.WAIT:
-            return
-
-        self.status = Pay.CONFIRM
-        self.amount = amount
-        self.save()
-        order = Order.objects.filter(pay=self).first()
-        if order:
-            order.status = Order.FINISH
-            order.amount = self.amount
-            order.save()
-
-    @staticmethod
-    def getByNo(no):
-        instance = Pay.objects.filter(no=no).first()
-        if not instance:
-            raise CustomError(u'未找到相应的支付单!')
-        return instance
-
-    @staticmethod
-    def wechatPay(branch, customer, amount, openid):
-        instance = Pay._addnew(branch, customer, amount)
-        return instance, instance._wechatUnifiedOrder(openid)
-
-    @staticmethod
-    def _addnew(branch, customer, amount):
-        if amount <= 0:
-            raise CustomError(u'无效的付款金额!')
-
-        no = timezone.now().strftime('%y%m%d%H%M%S') + str(customer.id)
-        instance = Pay.objects.create(
-            branch=branch,
-            no=no,
-            customer=customer,
-            type=type,
-            status=Pay.WAIT,
-            precreate_amount=amount
-        )
-        return instance
-
-    def _wechatUnifiedOrder(self, openid):
-        wechatpay = WechatPay(settings.APPID, settings.AGENT_NUM, settings.AGENT_KEY)
-        wechatpay.unifiedOrder(self.no, self.precreate_amount, openid)
-        data = wechatpay.getAppString()
-        return data