浏览代码

订单管理

hujingpei 4 年之前
父节点
当前提交
96bbb33a1e

+ 7 - 1
apps/customer/serializers.py

@@ -3,10 +3,12 @@ import json
 from rest_framework import serializers
 from rest_framework import serializers
 from apps.option.models import Option
 from apps.option.models import Option
 from django.conf import settings
 from django.conf import settings
+
 from utils.exceptions import CustomError
 from utils.exceptions import CustomError
 from utils.booleancharfield import BooleanCharField, TimeCharField, DateCharField
 from utils.booleancharfield import BooleanCharField, TimeCharField, DateCharField
 from utils.format import strftime,strfdate
 from utils.format import strftime,strfdate
 from .models import ReportCustomer,NewCustomer,Review
 from .models import ReportCustomer,NewCustomer,Review
+from apps.order.models import Order
 
 
 class ReportCustomerSerializer(serializers.ModelSerializer):
 class ReportCustomerSerializer(serializers.ModelSerializer):
     gender_text = serializers.CharField(source='get_gender_display', read_only=True)
     gender_text = serializers.CharField(source='get_gender_display', read_only=True)
@@ -159,8 +161,12 @@ class NewCustomerSerializer(serializers.ModelSerializer):
         return instance
         return instance
 
 
     def update(self, instance, validated_data):
     def update(self, instance, validated_data):
-
         instance = super(NewCustomerSerializer, self).update(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
         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.agent',
     'apps.customer',
     'apps.customer',
     'apps.option',
     'apps.option',
+    'apps.order',
 
 
 ]
 ]
 
 

+ 1 - 0
decorate/urls.py

@@ -29,6 +29,7 @@ urlpatterns = [
     url(r'^customer/', include('apps.customer.urls')),
     url(r'^customer/', include('apps.customer.urls')),
     url(r'^option/', include('apps.option.urls')),
     url(r'^option/', include('apps.option.urls')),
     url(r'^agent/', include('apps.agent.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)
 urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)