瀏覽代碼

订单管理

hujingpei 4 年之前
父節點
當前提交
96bbb33a1e

+ 7 - 1
apps/customer/serializers.py

@@ -3,10 +3,12 @@ import json
 from rest_framework import serializers
 from apps.option.models import Option
 from django.conf import settings
+
 from utils.exceptions import CustomError
 from utils.booleancharfield import BooleanCharField, TimeCharField, DateCharField
 from utils.format import strftime,strfdate
 from .models import ReportCustomer,NewCustomer,Review
+from apps.order.models import Order
 
 class ReportCustomerSerializer(serializers.ModelSerializer):
     gender_text = serializers.CharField(source='get_gender_display', read_only=True)
@@ -159,8 +161,12 @@ class NewCustomerSerializer(serializers.ModelSerializer):
         return instance
 
     def update(self, instance, validated_data):
-
         instance = super(NewCustomerSerializer, self).update(instance, validated_data)
+        # order = Order.objects.filter(customer=instance)
+        # if not order:
+        #     Order.objects.create(customer=instance, service_user_id=instance.track_user.id)
+        # if order:
+        #     Order.objects.filter(customer=instance)
         return instance
 
 

+ 13 - 0
apps/order/filters.py

@@ -0,0 +1,13 @@
+# coding=utf-8
+import django_filters
+
+from .models import Order
+
+
+class OrderFilter(django_filters.FilterSet):
+    name = django_filters.CharFilter(field_name='customer__name', lookup_expr='icontains')
+    tel = django_filters.CharFilter(field_name='customer__tel', lookup_expr='icontains')
+
+    class Meta:
+        model = Order
+        fields = '__all__'

+ 1 - 0
apps/order/migrations/__init__.py

@@ -0,0 +1 @@
+# coding=utf-8

+ 31 - 0
apps/order/models.py

@@ -0,0 +1,31 @@
+# coding=utf-8
+from django.db import models
+from django.conf import settings
+
+from apps.option.models import Option
+from apps.customer.models import NewCustomer
+
+
+class Order(models.Model):
+    NORMAL = 1
+    ABANDONED = 2
+    STATUS_CHOICES = (
+        (NORMAL, u'正常'),
+        (ABANDONED, u'放弃'),
+    )
+
+    customer = models.ForeignKey(NewCustomer, related_name='order_customer', verbose_name=u"订单客户",
+                                 on_delete=models.PROTECT)
+    service_user = models.ForeignKey(settings.AUTH_USER_MODEL,related_name='order_service_user', verbose_name=u"服务人员",
+                                     on_delete=models.PROTECT)
+    create_time = models.DateTimeField(verbose_name=u'下单时间', auto_now_add=True, editable=False)
+    status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u"订单状态", default=NORMAL)
+
+    class Meta:
+        db_table = "order"
+        verbose_name = u"订单管理"
+        ordering = ('-id',)
+        default_permissions = ()
+        permissions = [
+            ('view_order', u'查看'),
+        ]

+ 24 - 0
apps/order/serializers.py

@@ -0,0 +1,24 @@
+# coding=utf-8
+from rest_framework import serializers
+from .models import Order
+from utils.booleancharfield import TimeCharField
+
+
+class OrderSerializer(serializers.ModelSerializer):
+    service_user_text = serializers.CharField(source='service_user.name', read_only=True)
+    create_time_f = TimeCharField(source='create_time', read_only=True)
+
+    name = serializers.CharField(source='customer.name', read_only=True)
+    tel = serializers.CharField(source='customer.tel', read_only=True)
+    village = serializers.CharField(source='customer.village', read_only=True)
+    address = serializers.CharField(source='customer.address', read_only=True)
+    stage_progress_text = serializers.CharField(source='customer.stage_progress.name', read_only=True)
+    project_text = serializers.SerializerMethodField()
+
+    def get_project_text(self, obj):
+        project = obj.customer.project.all()
+        return ','.join(project.values_list('name', flat=True))
+
+    class Meta:
+        model = Order
+        fields = '__all__'

+ 13 - 0
apps/order/urls.py

@@ -0,0 +1,13 @@
+# coding=utf-8
+from django.conf.urls import url, include
+from rest_framework.routers import SimpleRouter
+
+from .views import *
+
+urlpatterns = [
+
+]
+
+router = SimpleRouter()
+router.register(r'', OrderViewSet)
+urlpatterns += router.urls

+ 19 - 0
apps/order/views.py

@@ -0,0 +1,19 @@
+# coding=utf-8
+from utils.custom_modelviewset import CustomModelViewSet
+from rest_framework.views import APIView
+from .models import Order
+from .serializers import OrderSerializer
+from .filters import OrderFilter
+from apps.log.models import BizLog
+from utils import response_ok
+from utils.permission import isLogin, permission_required
+
+
+class OrderViewSet(CustomModelViewSet):
+    queryset = Order.objects.filter()
+    serializer_class = OrderSerializer
+
+    def filter_queryset(self, queryset):
+        queryset = queryset.filter()
+        f = OrderFilter(self.request.GET, queryset=queryset)
+        return f.qs

+ 1 - 0
decorate/settings.py

@@ -50,6 +50,7 @@ INSTALLED_APPS = [
     'apps.agent',
     'apps.customer',
     'apps.option',
+    'apps.order',
 
 ]
 

+ 1 - 0
decorate/urls.py

@@ -29,6 +29,7 @@ urlpatterns = [
     url(r'^customer/', include('apps.customer.urls')),
     url(r'^option/', include('apps.option.urls')),
     url(r'^agent/', include('apps.agent.urls')),
+    url(r'^order/', include('apps.order.urls')),
 ]
 
 urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)